0 info it worked if it ends with ok 1 verbose cli [ 'node', 1 verbose cli '/usr/local/bin/npm', 1 verbose cli 'install', 1 verbose cli 'grunt-contrib-jshint', 1 verbose cli '--save-dev' ] 2 info using npm@1.2.18 3 info using node@v0.10.4 4 verbose read json /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/package.json 5 warn package.json sideProject@0.0.0 No README.md file found! 6 verbose read json /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt/package.json 7 verbose read json /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-autoprefixer/package.json 8 verbose read json /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-compass/package.json 9 verbose read json /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-concat/package.json 10 verbose read json /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-connect/package.json 11 verbose read json /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-watch/package.json 12 verbose read json /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-csscomb/package.json 13 verbose from cache /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/package.json 14 verbose readDependencies using package.json deps 15 verbose cache add [ 'grunt-contrib-jshint', null ] 16 verbose cache add name=undefined spec="grunt-contrib-jshint" args=["grunt-contrib-jshint",null] 17 verbose parsed url { protocol: null, 17 verbose parsed url slashes: null, 17 verbose parsed url auth: null, 17 verbose parsed url host: null, 17 verbose parsed url port: null, 17 verbose parsed url hostname: null, 17 verbose parsed url hash: null, 17 verbose parsed url search: null, 17 verbose parsed url query: null, 17 verbose parsed url pathname: 'grunt-contrib-jshint', 17 verbose parsed url path: 'grunt-contrib-jshint', 17 verbose parsed url href: 'grunt-contrib-jshint' } 18 silly lockFile 0324b488-grunt-contrib-jshint grunt-contrib-jshint 19 verbose lock grunt-contrib-jshint /Users/hiro/.npm/0324b488-grunt-contrib-jshint.lock 20 silly lockFile 0324b488-grunt-contrib-jshint grunt-contrib-jshint 21 silly lockFile 0324b488-grunt-contrib-jshint grunt-contrib-jshint 22 verbose addNamed [ 'grunt-contrib-jshint', '' ] 23 verbose addNamed [ null, '' ] 24 silly lockFile c28ce841-grunt-contrib-jshint grunt-contrib-jshint@ 25 verbose lock grunt-contrib-jshint@ /Users/hiro/.npm/c28ce841-grunt-contrib-jshint.lock 26 silly addNameRange { name: 'grunt-contrib-jshint', range: '', hasData: false } 27 verbose url raw grunt-contrib-jshint 28 verbose url resolving [ 'https://registry.npmjs.org/', './grunt-contrib-jshint' ] 29 verbose url resolved https://registry.npmjs.org/grunt-contrib-jshint 30 info trying registry request attempt 1 at 20:22:20 31 verbose etag "CUX94ZJP7GU9VZKCZ2BG9UW7G" 32 http GET https://registry.npmjs.org/grunt-contrib-jshint 33 http 304 https://registry.npmjs.org/grunt-contrib-jshint 34 silly registry.get cb [ 304, 34 silly registry.get { date: 'Fri, 30 May 2014 11:22:21 GMT', 34 silly registry.get server: 'Apache', 34 silly registry.get via: '1.1 varnish', 34 silly registry.get 'last-modified': 'Fri, 30 May 2014 09:18:26 GMT', 34 silly registry.get 'cache-control': 'max-age=1', 34 silly registry.get etag: '"CUX94ZJP7GU9VZKCZ2BG9UW7G"', 34 silly registry.get 'x-served-by': 'cache-ty67-TYO', 34 silly registry.get 'x-cache': 'HIT', 34 silly registry.get 'x-cache-hits': '4', 34 silly registry.get 'x-timer': 'S1401448941.592076,VS0,VE162', 34 silly registry.get vary: 'Accept', 34 silly registry.get 'content-length': '0', 34 silly registry.get 'keep-alive': 'timeout=10, max=50', 34 silly registry.get connection: 'Keep-Alive' } ] 35 verbose etag grunt-contrib-jshint from cache 36 silly addNameRange number 2 { name: 'grunt-contrib-jshint', range: '', hasData: true } 37 silly addNameRange versions [ 'grunt-contrib-jshint', 37 silly addNameRange [ '0.1.0', 37 silly addNameRange '0.1.1', 37 silly addNameRange '0.2.0', 37 silly addNameRange '0.3.0', 37 silly addNameRange '0.4.0', 37 silly addNameRange '0.4.1', 37 silly addNameRange '0.4.2', 37 silly addNameRange '0.4.3', 37 silly addNameRange '0.5.0', 37 silly addNameRange '0.5.1', 37 silly addNameRange '0.5.2', 37 silly addNameRange '0.5.3', 37 silly addNameRange '0.5.4', 37 silly addNameRange '0.6.0', 37 silly addNameRange '0.6.1', 37 silly addNameRange '0.6.2', 37 silly addNameRange '0.6.3', 37 silly addNameRange '0.6.4', 37 silly addNameRange '0.6.5', 37 silly addNameRange '0.7.0', 37 silly addNameRange '0.7.1', 37 silly addNameRange '0.7.2', 37 silly addNameRange '0.8.0', 37 silly addNameRange '0.9.0', 37 silly addNameRange '0.9.1', 37 silly addNameRange '0.9.2', 37 silly addNameRange '0.10.0', 37 silly addNameRange '0.1.1-rc5', 37 silly addNameRange '0.1.1-rc6' ] ] 38 verbose addNamed [ 'grunt-contrib-jshint', '0.10.0' ] 39 verbose addNamed [ '0.10.0', '0.10.0' ] 40 silly lockFile af8d4102-grunt-contrib-jshint-0-10-0 grunt-contrib-jshint@0.10.0 41 verbose lock grunt-contrib-jshint@0.10.0 /Users/hiro/.npm/af8d4102-grunt-contrib-jshint-0-10-0.lock 42 verbose read json /Users/hiro/.npm/grunt-contrib-jshint/0.10.0/package/package.json 43 silly lockFile af8d4102-grunt-contrib-jshint-0-10-0 grunt-contrib-jshint@0.10.0 44 silly lockFile af8d4102-grunt-contrib-jshint-0-10-0 grunt-contrib-jshint@0.10.0 45 silly lockFile c28ce841-grunt-contrib-jshint grunt-contrib-jshint@ 46 silly lockFile c28ce841-grunt-contrib-jshint grunt-contrib-jshint@ 47 silly resolved [ { name: 'grunt-contrib-jshint', 47 silly resolved description: 'Validate files with JSHint.', 47 silly resolved version: '0.10.0', 47 silly resolved homepage: 'https://github.com/gruntjs/grunt-contrib-jshint', 47 silly resolved author: { name: 'Grunt Team', url: 'http://gruntjs.com/' }, 47 silly resolved repository: 47 silly resolved { type: 'git', 47 silly resolved url: 'git://github.com/gruntjs/grunt-contrib-jshint.git' }, 47 silly resolved bugs: { url: 'https://github.com/gruntjs/grunt-contrib-jshint/issues' }, 47 silly resolved licenses: [ [Object] ], 47 silly resolved engines: { node: '>= 0.8.0' }, 47 silly resolved scripts: { test: 'grunt test' }, 47 silly resolved dependencies: { jshint: '~2.5.0', hooker: '~0.2.3' }, 47 silly resolved devDependencies: 47 silly resolved { 'grunt-contrib-nodeunit': '~0.3.1', 47 silly resolved 'grunt-contrib-internal': '~0.4.8', 47 silly resolved grunt: '~0.4.0' }, 47 silly resolved peerDependencies: { grunt: '~0.4.0' }, 47 silly resolved keywords: [ 'gruntplugin' ], 47 silly resolved files: [ 'tasks', 'LICENSE-MIT' ], 47 silly resolved readme: '# grunt-contrib-jshint v0.10.0 [![Build Status](https://travis-ci.org/gruntjs/grunt-contrib-jshint.png?branch=master)](https://travis-ci.org/gruntjs/grunt-contrib-jshint)\n\n> Validate files with JSHint.\n\n\n\n## Getting Started\nThis plugin requires Grunt `~0.4.0`\n\nIf you haven\'t used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you\'re familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-contrib-jshint --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks(\'grunt-contrib-jshint\');\n```\n\n\n\n\n## Jshint task\n_Run this task with the `grunt jshint` command._\n\nTask targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide.\n\nFor more explanations of the lint errors JSHint will throw at you please visit [jslinterrors.com](http://jslinterrors.com/).\n\n### Options\n\nAny specified option will be passed through directly to [JSHint][], thus you can specify any option that JSHint supports. See the [JSHint documentation][] for a list of supported options.\n\n[JSHint]: http://www.jshint.com/\n[JSHint documentation]: http://www.jshint.com/docs/\n\nA few additional options are supported:\n\n\n#### globals\n\nType: `Object` \nDefault: `null`\n\nA map of global variables, with keys as names and a boolean value to determine if they are assignable. This is not a standard JSHint option, but is passed into the `JSHINT` function as its third argument. See the [JSHint documentation][] for more information.\n\n\n#### jshintrc\n\nType: `String` or `true` \nDefault: `null`\n\nIf set to `true`, no config will be sent to jshint and jshint will search for `.jshintrc` files relative to the files being linted.\n\nIf a filename is specified, options and globals defined therein will be used. The `jshintrc` file must be valid JSON and looks something like this:\n\n```json\n{\n "curly": true,\n "eqnull": true,\n "eqeqeq": true,\n "undef": true,\n "globals": {\n "jQuery": true\n }\n}\n```\n\n*Be aware that `jshintrc` settings are not merged with your Grunt options.*\n\n\n#### extensions\n\nType: `String` \nDefault: `\'\'`\n\nA list of non-dot-js extensions to check.\n\n\n#### ignores\n\nType: `Array` \nDefault: `null`\n\nA list of files and dirs to ignore. This will override your `.jshintignore` file if set and does not merge.\n\n\n#### force\n\nType: `Boolean` \nDefault: `false`\n\nSet `force` to `true` to report JSHint errors but not fail the task.\n\n\n#### reporter\n\nType: `String` \nDefault: `null`\n\nAllows you to modify this plugins output. By default it will use a built-in Grunt reporter. Set the path to your own custom reporter or to one of the built-in JSHint reporters: `jslint` or `checkstyle`.\n\nSee also: [Writing your own JSHint reporter.](http://jshint.com/docs/reporters/)\n\nYou can also use an external reporter. For example [jshint-stylish](https://github.com/sindresorhus/jshint-stylish):\n\n```\n$ npm install --save-dev jshint-stylish\n```\n\n```js\noptions: {\n reporter: require(\'jshint-stylish\')\n}\n```\n\n#### reporterOutput\n\nType: `String` \nDefault: `null`\n\nSpecify a filepath to output the results of a reporter. If `reporterOutput` is specified then all output will be written to the given filepath instead of printed to stdout.\n\n### Usage examples\n\n#### Wildcards\nIn this example, running `grunt jshint:all` (or `grunt jshint` because `jshint` is a [multi task](http://gruntjs.com/configuring-tasks#task-configuration-and-targets)) will lint the project\'s Gruntfile as well as all JavaScript files in the `lib` and `test` directories and their subdirectores, using the default JSHint options.\n\n```js\n// Project configuration.\ngrunt.initConfig({\n jshint: {\n all: [\'Gruntfile.js\', \'lib/**/*.js\', \'test/**/*.js\']\n }\n});\n```\n\n#### Linting before and after concatenating\nIn this example, running `grunt jshint` will lint both the "beforeconcat" set and "afterconcat" sets of files. This is not ideal, because `dist/output.js` may get linted before it gets created via the [grunt-contrib-concat plugin](https://github.com/gruntjs/grunt-contrib-concat) `concat` task.\n\nIn this case, you should lint the "beforeconcat" files first, then concat, then lint the "afterconcat" files, by running `grunt jshint:beforeconcat concat jshint:afterconcat`.\n\n```js\n// Project configuration.\ngrunt.initConfig({\n concat: {\n dist: {\n src: [\'src/foo.js\', \'src/bar.js\'],\n dest: \'dist/output.js\'\n }\n },\n jshint: {\n beforeconcat: [\'src/foo.js\', \'src/bar.js\'],\n afterconcat: [\'dist/output.js\']\n }\n});\n```\n\n#### Specifying JSHint options and globals\n\nIn this example, custom JSHint options are specified. Note that when `grunt jshint:uses_defaults` is run, those files are linted using the default options, but when `grunt jshint:with_overrides` is run, those files are linted using _merged_ task/target options.\n\n```js\n// Project configuration.\ngrunt.initConfig({\n jshint: {\n options: {\n curly: true,\n eqeqeq: true,\n eqnull: true,\n browser: true,\n globals: {\n jQuery: true\n },\n },\n uses_defaults: [\'dir1/**/*.js\', \'dir2/**/*.js\'],\n with_overrides: {\n options: {\n curly: false,\n undef: true,\n },\n files: {\n src: [\'dir3/**/*.js\', \'dir4/**/*.js\']\n },\n }\n },\n});\n```\n\n#### Ignoring specific warnings\n\nIf you would like to ignore a specific warning:\n\n```shell\n[L24:C9] W015: Expected \'}\' to have an indentation at 11 instead at 9.\n```\n\nYou can toggle it by prepending `-` to the warning id as an option:\n\n```js\ngrunt.initConfig({\n jshint: {\n ignore_warning: {\n options: {\n \'-W015\': true,\n },\n src: [\'**/*.js\'],\n },\n },\n});\n```\n\n\n## Release History\n\n * 2014-04-02   v0.10.0   Update to JSHint 2.5.0.\n * 2014-03-12   v0.9.2   Fixes a bug where reporterOutput was still passed to jshint.\n * 2014-03-12   v0.9.1   Don\'t pass reporterOutput option to jshint.\n * 2014-03-12   v0.9.0   Replace deprecated grunt.util._.clone with Object.create() Replace deprecated grunt.util.hooker with hooker lib Enhancing the readability of the output. Reporter output is relative to the output file. Pass jshint options to the external reporter.\n * 2013-12-25   v0.8.0   Update to jshint 2.4.0.\n * 2013-11-16   v0.7.2   Only print file name once per error.\n * 2013-10-31   v0.7.1   Ability to set jshintrc option to true to use jshint\'s native ability for finding .jshintrc files relative to the linted files.\n * 2013-10-23   v0.7.0   Update to jshint 2.3.0.\n * 2013-10-23   v0.6.5   Fix output when maxerr is low.\n * 2013-08-29   v0.6.4   jshintrc now loaded by jshint allowing comments.\n * 2013-08-15   v0.6.3   Fix module location for jshint 2.1.10.\n * 2013-07-29   v0.6.2   Update to jshint 2.1.7.\n * 2013-07-27   v0.6.1   Peg jshint to 2.1.4 until breaking changes in 2.1.5 are fixed.\n * 2013-06-02   v0.6.0   Dont always succeed the task when using a custom reporter. Bump jshint to 2.1.3.\n * 2013-05-22   v0.5.4   Fix default reporter to show offending file.\n * 2013-05-19   v0.5.3   Performance: Execute the reporter once rather than per file.\n * 2013-05-18   v0.5.2   Fix printing too many erroneous ignored file errors.\n * 2013-05-17   v0.5.1   Fix for when only 1 file is lint free.\n * 2013-05-17   v0.5.0   Bump to jshint 2.0. Add support for .jshintignore files and ignores option Add support for extensions option. Add support for custom reporters and output report to a file.\n * 2013-04-08   v0.4.3   Fix evaluation of predef option when it\'s an object.\n * 2013-04-08   v0.4.2   Avoid wiping force option when jshintrc is used.\n * 2013-04-06   v0.4.1   Fix to allow object type for deprecated predef.\n * 2013-04-04   v0.4.0   Revert task level options to override jshintrc files.\n * 2013-03-13   v0.3.0   Bump to JSHint 1.1.0. Add force option to report JSHint errors but not fail the task. Add error/warning code to message. Allow task level options to override jshintrc file.\n * 2013-02-26   v0.2.0   Bump to JSHint 1.0\n * 2013-02-15   v0.1.1   First official release for Grunt 0.4.0.\n * 2013-01-18   v0.1.1rc6   Updating grunt/gruntplugin dependencies to rc6. Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions.\n * 2013-01-09   v0.1.1rc5   Updating to work with grunt v0.4.0rc5. Switching to this.filesSrc api.\n * 2012-10-18   v0.1.0   Work in progress, not yet officially released.\n\n---\n\nTask submitted by ["Cowboy" Ben Alman](http://benalman.com/)\n\n*This file was generated on Wed Apr 02 2014 09:05:43.*\n', 47 silly resolved readmeFilename: 'README.md', 47 silly resolved _id: 'grunt-contrib-jshint@0.10.0', 47 silly resolved _from: 'grunt-contrib-jshint@' } ] 48 info install grunt-contrib-jshint@0.10.0 into /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot 49 info installOne grunt-contrib-jshint@0.10.0 50 verbose from cache /Users/hiro/.npm/grunt-contrib-jshint/0.10.0/package/package.json 51 info /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint unbuild 52 verbose read json /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/package.json 53 verbose tar unpack /Users/hiro/.npm/grunt-contrib-jshint/0.10.0/package.tgz 54 silly lockFile 439e6322-ode-modules-grunt-contrib-jshint /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint 55 verbose lock /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint /Users/hiro/.npm/439e6322-ode-modules-grunt-contrib-jshint.lock 56 silly lockFile b5af6830-ontrib-jshint-0-10-0-package-tgz /Users/hiro/.npm/grunt-contrib-jshint/0.10.0/package.tgz 57 verbose lock /Users/hiro/.npm/grunt-contrib-jshint/0.10.0/package.tgz /Users/hiro/.npm/b5af6830-ontrib-jshint-0-10-0-package-tgz.lock 58 silly gunzTarPerm modes [ '755', '644' ] 59 silly gunzTarPerm extractEntry package.json 60 silly gunzTarPerm extractEntry README.md 61 silly gunzTarPerm extractEntry LICENSE-MIT 62 silly gunzTarPerm extractEntry tasks/jshint.js 63 silly gunzTarPerm extractEntry tasks/lib/jshint.js 64 verbose read json /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/package.json 65 silly lockFile 439e6322-ode-modules-grunt-contrib-jshint /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint 66 silly lockFile 439e6322-ode-modules-grunt-contrib-jshint /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint 67 silly lockFile b5af6830-ontrib-jshint-0-10-0-package-tgz /Users/hiro/.npm/grunt-contrib-jshint/0.10.0/package.tgz 68 silly lockFile b5af6830-ontrib-jshint-0-10-0-package-tgz /Users/hiro/.npm/grunt-contrib-jshint/0.10.0/package.tgz 69 info preinstall grunt-contrib-jshint@0.10.0 70 verbose from cache /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/package.json 71 verbose readDependencies using package.json deps 72 verbose from cache /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/package.json 73 verbose readDependencies using package.json deps 74 verbose cache add [ 'jshint@~2.5.0', null ] 75 verbose cache add name=undefined spec="jshint@~2.5.0" args=["jshint@~2.5.0",null] 76 verbose parsed url { protocol: null, 76 verbose parsed url slashes: null, 76 verbose parsed url auth: null, 76 verbose parsed url host: null, 76 verbose parsed url port: null, 76 verbose parsed url hostname: null, 76 verbose parsed url hash: null, 76 verbose parsed url search: null, 76 verbose parsed url query: null, 76 verbose parsed url pathname: 'jshint@~2.5.0', 76 verbose parsed url path: 'jshint@~2.5.0', 76 verbose parsed url href: 'jshint@~2.5.0' } 77 verbose cache add name="jshint" spec="~2.5.0" args=["jshint","~2.5.0"] 78 verbose parsed url { protocol: null, 78 verbose parsed url slashes: null, 78 verbose parsed url auth: null, 78 verbose parsed url host: null, 78 verbose parsed url port: null, 78 verbose parsed url hostname: null, 78 verbose parsed url hash: null, 78 verbose parsed url search: null, 78 verbose parsed url query: null, 78 verbose parsed url pathname: '~2.5.0', 78 verbose parsed url path: '~2.5.0', 78 verbose parsed url href: '~2.5.0' } 79 verbose addNamed [ 'jshint', '~2.5.0' ] 80 verbose addNamed [ null, '>=2.5.0- <2.6.0-' ] 81 silly lockFile 0b5a3cd2-jshint-2-5-0 jshint@~2.5.0 82 verbose lock jshint@~2.5.0 /Users/hiro/.npm/0b5a3cd2-jshint-2-5-0.lock 83 verbose cache add [ 'hooker@~0.2.3', null ] 84 verbose cache add name=undefined spec="hooker@~0.2.3" args=["hooker@~0.2.3",null] 85 verbose parsed url { protocol: null, 85 verbose parsed url slashes: null, 85 verbose parsed url auth: null, 85 verbose parsed url host: null, 85 verbose parsed url port: null, 85 verbose parsed url hostname: null, 85 verbose parsed url hash: null, 85 verbose parsed url search: null, 85 verbose parsed url query: null, 85 verbose parsed url pathname: 'hooker@~0.2.3', 85 verbose parsed url path: 'hooker@~0.2.3', 85 verbose parsed url href: 'hooker@~0.2.3' } 86 verbose cache add name="hooker" spec="~0.2.3" args=["hooker","~0.2.3"] 87 verbose parsed url { protocol: null, 87 verbose parsed url slashes: null, 87 verbose parsed url auth: null, 87 verbose parsed url host: null, 87 verbose parsed url port: null, 87 verbose parsed url hostname: null, 87 verbose parsed url hash: null, 87 verbose parsed url search: null, 87 verbose parsed url query: null, 87 verbose parsed url pathname: '~0.2.3', 87 verbose parsed url path: '~0.2.3', 87 verbose parsed url href: '~0.2.3' } 88 verbose addNamed [ 'hooker', '~0.2.3' ] 89 verbose addNamed [ null, '>=0.2.3- <0.3.0-' ] 90 silly lockFile 2bcd1457-hooker-0-2-3 hooker@~0.2.3 91 verbose lock hooker@~0.2.3 /Users/hiro/.npm/2bcd1457-hooker-0-2-3.lock 92 silly addNameRange { name: 'jshint', range: '>=2.5.0- <2.6.0-', hasData: false } 93 silly addNameRange { name: 'hooker', range: '>=0.2.3- <0.3.0-', hasData: false } 94 verbose url raw jshint 95 verbose url resolving [ 'https://registry.npmjs.org/', './jshint' ] 96 verbose url resolved https://registry.npmjs.org/jshint 97 info trying registry request attempt 1 at 20:22:20 98 verbose etag "C4FOH83KN1CPZRIQLYICB3OV1" 99 http GET https://registry.npmjs.org/jshint 100 verbose url raw hooker 101 verbose url resolving [ 'https://registry.npmjs.org/', './hooker' ] 102 verbose url resolved https://registry.npmjs.org/hooker 103 info trying registry request attempt 1 at 20:22:20 104 verbose etag "AN4YLJQRT6XSCVFEC6PSGV8IK" 105 http GET https://registry.npmjs.org/hooker 106 http 304 https://registry.npmjs.org/hooker 107 silly registry.get cb [ 304, 107 silly registry.get { date: 'Fri, 30 May 2014 11:22:21 GMT', 107 silly registry.get server: 'Apache', 107 silly registry.get via: '1.1 varnish', 107 silly registry.get 'last-modified': 'Fri, 30 May 2014 09:19:51 GMT', 107 silly registry.get 'cache-control': 'max-age=1', 107 silly registry.get etag: '"AN4YLJQRT6XSCVFEC6PSGV8IK"', 107 silly registry.get 'x-served-by': 'cache-ty67-TYO', 107 silly registry.get 'x-cache': 'HIT', 107 silly registry.get 'x-cache-hits': '16', 107 silly registry.get 'x-timer': 'S1401448941.919855,VS0,VE163', 107 silly registry.get vary: 'Accept', 107 silly registry.get 'content-length': '0', 107 silly registry.get 'keep-alive': 'timeout=10, max=50', 107 silly registry.get connection: 'Keep-Alive' } ] 108 verbose etag hooker from cache 109 silly addNameRange number 2 { name: 'hooker', range: '>=0.2.3- <0.3.0-', hasData: true } 110 silly addNameRange versions [ 'hooker', [ '0.2.3' ] ] 111 verbose addNamed [ 'hooker', '0.2.3' ] 112 verbose addNamed [ '0.2.3', '0.2.3' ] 113 silly lockFile 97e6505f-hooker-0-2-3 hooker@0.2.3 114 verbose lock hooker@0.2.3 /Users/hiro/.npm/97e6505f-hooker-0-2-3.lock 115 verbose read json /Users/hiro/.npm/hooker/0.2.3/package/package.json 116 http 304 https://registry.npmjs.org/jshint 117 silly registry.get cb [ 304, 117 silly registry.get { date: 'Fri, 30 May 2014 11:22:21 GMT', 117 silly registry.get server: 'Apache', 117 silly registry.get via: '1.1 varnish', 117 silly registry.get 'last-modified': 'Fri, 30 May 2014 09:19:51 GMT', 117 silly registry.get 'cache-control': 'max-age=1', 117 silly registry.get etag: '"C4FOH83KN1CPZRIQLYICB3OV1"', 117 silly registry.get 'x-served-by': 'cache-ty67-TYO', 117 silly registry.get 'x-cache': 'HIT', 117 silly registry.get 'x-cache-hits': '2', 117 silly registry.get 'x-timer': 'S1401448941.913330,VS0,VE174', 117 silly registry.get vary: 'Accept', 117 silly registry.get 'content-length': '0', 117 silly registry.get 'keep-alive': 'timeout=10, max=50', 117 silly registry.get connection: 'Keep-Alive' } ] 118 verbose etag jshint from cache 119 silly lockFile 97e6505f-hooker-0-2-3 hooker@0.2.3 120 silly lockFile 97e6505f-hooker-0-2-3 hooker@0.2.3 121 silly lockFile 2bcd1457-hooker-0-2-3 hooker@~0.2.3 122 silly lockFile 2bcd1457-hooker-0-2-3 hooker@~0.2.3 123 silly addNameRange number 2 { name: 'jshint', range: '>=2.5.0- <2.6.0-', hasData: true } 124 silly addNameRange versions [ 'jshint', 124 silly addNameRange [ '0.1.8', 124 silly addNameRange '0.1.9', 124 silly addNameRange '0.2.0', 124 silly addNameRange '0.2.1', 124 silly addNameRange '0.2.2', 124 silly addNameRange '0.2.3', 124 silly addNameRange '0.3.0', 124 silly addNameRange '0.3.1', 124 silly addNameRange '0.4.0', 124 silly addNameRange '0.5.0', 124 silly addNameRange '0.5.1', 124 silly addNameRange '0.5.2', 124 silly addNameRange '0.5.3', 124 silly addNameRange '0.5.4', 124 silly addNameRange '0.5.5', 124 silly addNameRange '0.5.6', 124 silly addNameRange '0.5.7', 124 silly addNameRange '0.5.8', 124 silly addNameRange '0.5.9', 124 silly addNameRange '0.6.0', 124 silly addNameRange '0.6.1', 124 silly addNameRange '0.6.2', 124 silly addNameRange '0.6.3', 124 silly addNameRange '0.7.0', 124 silly addNameRange '0.7.1', 124 silly addNameRange '0.7.2', 124 silly addNameRange '0.7.3', 124 silly addNameRange '0.8.0', 124 silly addNameRange '0.8.1', 124 silly addNameRange '0.8.2', 124 silly addNameRange '0.9.0', 124 silly addNameRange '0.9.1', 124 silly addNameRange '1.0.0', 124 silly addNameRange '1.1.0', 124 silly addNameRange '2.0.0', 124 silly addNameRange '2.0.1', 124 silly addNameRange '2.1.0', 124 silly addNameRange '2.1.1', 124 silly addNameRange '2.1.2', 124 silly addNameRange '2.1.3', 124 silly addNameRange '2.1.4', 124 silly addNameRange '2.1.5', 124 silly addNameRange '2.1.6', 124 silly addNameRange '2.1.7', 124 silly addNameRange '2.1.8', 124 silly addNameRange '2.1.9', 124 silly addNameRange '2.1.10', 124 silly addNameRange '2.1.11', 124 silly addNameRange '2.2.0', 124 silly addNameRange '2.3.0', 124 silly addNameRange '2.4.0', 124 silly addNameRange '2.4.1', 124 silly addNameRange '2.4.2', 124 silly addNameRange '2.4.3', 124 silly addNameRange '2.4.4', 124 silly addNameRange '2.5.0', 124 silly addNameRange '2.5.1' ] ] 125 verbose addNamed [ 'jshint', '2.5.1' ] 126 verbose addNamed [ '2.5.1', '2.5.1' ] 127 silly lockFile f2bb41eb-jshint-2-5-1 jshint@2.5.1 128 verbose lock jshint@2.5.1 /Users/hiro/.npm/f2bb41eb-jshint-2-5-1.lock 129 verbose read json /Users/hiro/.npm/jshint/2.5.1/package/package.json 130 silly lockFile f2bb41eb-jshint-2-5-1 jshint@2.5.1 131 silly lockFile f2bb41eb-jshint-2-5-1 jshint@2.5.1 132 silly lockFile 0b5a3cd2-jshint-2-5-0 jshint@~2.5.0 133 silly lockFile 0b5a3cd2-jshint-2-5-0 jshint@~2.5.0 134 silly resolved [ { name: 'hooker', 134 silly resolved description: 'Monkey-patch (hook) functions for debugging and stuff.', 134 silly resolved version: '0.2.3', 134 silly resolved homepage: 'http://github.com/cowboy/javascript-hooker', 134 silly resolved author: { name: '"Cowboy" Ben Alman', url: 'http://benalman.com/' }, 134 silly resolved repository: 134 silly resolved { type: 'git', 134 silly resolved url: 'git://github.com/cowboy/javascript-hooker.git' }, 134 silly resolved bugs: { url: 'https://github.com/cowboy/javascript-hooker/issues' }, 134 silly resolved licenses: [ [Object] ], 134 silly resolved dependencies: {}, 134 silly resolved devDependencies: { grunt: '~0.2.1' }, 134 silly resolved keywords: [ 'patch', 'hook', 'function', 'debug', 'aop' ], 134 silly resolved engines: { node: '*' }, 134 silly resolved main: 'lib/hooker', 134 silly resolved scripts: { test: 'grunt test' }, 134 silly resolved readme: '# JavaScript Hooker\n\nMonkey-patch (hook) functions for debugging and stuff.\n\n## Getting Started\n\nThis code should work just fine in Node.js:\n\nFirst, install the module with: `npm install hooker`\n\n```javascript\nvar hooker = require(\'hooker\');\nhooker.hook(Math, "max", function() {\n console.log(arguments.length + " arguments passed");\n});\nMath.max(5, 6, 7) // logs: "3 arguments passed", returns 7\n```\n\nOr in the browser:\n\n```html\n\n\n```\n\nIn the browser, you can attach Hooker\'s methods to any object.\n\n```html\n\n\n\n```\n\n## Documentation\n\n### hooker.hook\nMonkey-patch (hook) one or more methods of an object.\n#### Signature:\n`hooker.hook(object, [ props, ] [options | prehookFunction])`\n#### `props`\nThe optional `props` argument can be a method name, array of method names or null. If null (or omitted), all enumerable methods of `object` will be hooked.\n#### `options`\n* `pre` - (Function) a pre-hook function to be executed before the original function. Arguments passed into the method will be passed into the pre-hook function as well.\n* `post` - (Function) a post-hook function to be executed after the original function. The original function\'s result is passed into the post-hook function as its first argument, followed by the method arguments.\n* `once` - (Boolean) if true, auto-unhook the function after the first execution.\n* `passName` - (Boolean) if true, pass the name of the method into the pre-hook function as its first arg (preceding all other arguments), and into the post-hook function as the second arg (after result but preceding all other arguments).\n\n#### Returns:\nAn array of hooked method names.\n\n### hooker.unhook\nUn-monkey-patch (unhook) one or more methods of an object.\n#### Signature:\n`hooker.unhook(object [, props ])`\n#### `props`\nThe optional `props` argument can be a method name, array of method names or null. If null (or omitted), all methods of `object` will be unhooked.\n#### Returns:\nAn array of unhooked method names.\n\n### hooker.orig\nGet a reference to the original method from a hooked function.\n#### Signature:\n`hooker.orig(object, props)`\n\n### hooker.override\nWhen a pre- or post-hook returns the result of this function, the value\npassed will be used in place of the original function\'s return value. Any\npost-hook override value will take precedence over a pre-hook override value.\n#### Signature:\n`hooker.override(value)`\n\n### hooker.preempt\nWhen a pre-hook returns the result of this function, the value passed will\nbe used in place of the original function\'s return value, and the original\nfunction will NOT be executed.\n#### Signature:\n`hooker.preempt(value)`\n\n### hooker.filter\nWhen a pre-hook returns the result of this function, the context and\narguments passed will be applied into the original function.\n#### Signature:\n`hooker.filter(context, arguments)`\n\n\n## Examples\nSee the unit tests for more examples.\n\n```javascript\nvar hooker = require(\'hooker\');\n// Simple logging.\nhooker.hook(Math, "max", function() {\n console.log(arguments.length + " arguments passed");\n});\nMath.max(5, 6, 7) // logs: "3 arguments passed", returns 7\n\nhooker.unhook(Math, "max"); // (This is assumed between all further examples)\nMath.max(5, 6, 7) // 7\n\n// Returning hooker.override(value) overrides the original value.\nhooker.hook(Math, "max", function() {\n if (arguments.length === 0) {\n return hooker.override(9000);\n }\n});\nMath.max(5, 6, 7) // 7\nMath.max() // 9000\n\n// Auto-unhook after one execution.\nhooker.hook(Math, "max", {\n once: true,\n pre: function() {\n console.log("Init something here");\n }\n});\nMath.max(5, 6, 7) // logs: "Init something here", returns 7\nMath.max(5, 6, 7) // 7\n\n// Filter `this` and arguments through a pre-hook function.\nhooker.hook(Math, "max", {\n pre: function() {\n var args = [].map.call(arguments, function(num) {\n return num * 2;\n });\n return hooker.filter(this, args); // thisValue, arguments\n }\n});\nMath.max(5, 6, 7) // 14\n\n// Modify the original function\'s result with a post-hook function.\nhooker.hook(Math, "max", {\n post: function(result) {\n return hooker.override(result * 100);\n }\n});\nMath.max(5, 6, 7) // 700\n\n// Hook every Math method. Note: if Math\'s methods were enumerable, the second\n// argument could be omitted. Since they aren\'t, an array of properties to hook\n// must be explicitly passed. Non-method properties will be skipped.\n// See a more generic example here: http://bit.ly/vvJlrS\nhooker.hook(Math, Object.getOwnPropertyNames(Math), {\n passName: true,\n pre: function(name) {\n console.log("=> Math." + name, [].slice.call(arguments, 1));\n },\n post: function(result, name) {\n console.log("<= Math." + name, result);\n }\n});\n\nvar result = Math.max(5, 6, 7);\n// => Math.max [ 5, 6, 7 ]\n// <= Math.max 7\nresult // 7\n\nresult = Math.ceil(3.456);\n// => Math.ceil [ 3.456 ]\n// <= Math.ceil 4\nresult // 4\n```\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/cowboy/grunt).\n\n_Also, please don\'t edit files in the "dist" subdirectory as they are generated via grunt. You\'ll find source code in the "lib" subdirectory!_\n\n## Release History\n2012/01/09 - v0.2.3 - First official release.\n\n## License\nCopyright (c) 2012 "Cowboy" Ben Alman \nLicensed under the MIT license. \n\n', 134 silly resolved readmeFilename: 'README.md', 134 silly resolved _id: 'hooker@0.2.3', 134 silly resolved _from: 'hooker@~0.2.3' }, 134 silly resolved { name: 'jshint', 134 silly resolved version: '2.5.1', 134 silly resolved homepage: 'http://jshint.com/', 134 silly resolved description: 'Static analysis tool for JavaScript', 134 silly resolved author: 134 silly resolved { name: 'Anton Kovalyov', 134 silly resolved email: 'anton@kovalyov.net', 134 silly resolved url: 'http://anton.kovalyov.net/' }, 134 silly resolved repository: { type: 'git', url: 'https://github.com/jshint/jshint.git' }, 134 silly resolved bugs: { url: 'https://github.com/jshint/jshint/issues' }, 134 silly resolved bin: { jshint: './bin/jshint' }, 134 silly resolved scripts: 134 silly resolved { data: 'node scripts/generate-identifier-data', 134 silly resolved build: 'node bin/build', 134 silly resolved test: 'nodeunit tests tests/regression tests/unit', 134 silly resolved pretest: 'jshint src' }, 134 silly resolved main: './src/jshint.js', 134 silly resolved dependencies: 134 silly resolved { shelljs: '0.3.x', 134 silly resolved underscore: '1.6.x', 134 silly resolved cli: '0.6.x', 134 silly resolved minimatch: '0.x.x', 134 silly resolved htmlparser2: '3.7.x', 134 silly resolved 'console-browserify': '1.1.x', 134 silly resolved exit: '0.1.x', 134 silly resolved 'strip-json-comments': '0.1.x' }, 134 silly resolved devDependencies: 134 silly resolved { jshint: '2.5.x', 134 silly resolved browserify: '4.x', 134 silly resolved coveraje: '0.2.x', 134 silly resolved nodeunit: '0.9.x', 134 silly resolved sinon: '1.9.x', 134 silly resolved 'unicode-6.3.0': '0.1.x', 134 silly resolved regenerate: '0.6.x' }, 134 silly resolved licenses: [ [Object] ], 134 silly resolved preferGlobal: true, 134 silly resolved files: [ 'bin', 'src', 'data', 'dist' ], 134 silly resolved readme: 'JSHint, A Static Code Analysis Tool for JavaScript\n--------------------------------------------------\n\n\\[ [Use it online](http://jshint.com/) • [About](http://jshint.com/about/) •\n[Docs](http://jshint.com/docs/) • [FAQ](http://jshint.com/docs/faq) •\n[Install](http://jshint.com/install/) • [Hack](http://jshint.com/hack/) •\n[Blog](http://jshint.com/blog/) • [Twitter](https://twitter.com/jshint/) \\]\n\n[![Build Status](https://travis-ci.org/jshint/jshint.svg?branch=master)](https://travis-ci.org/jshint/jshint)\n[![NPM version](https://badge.fury.io/js/jshint.svg)](http://badge.fury.io/js/jshint)\n\nJSHint is a community-driven tool to detect errors and potential problems\nin JavaScript code. It is very flexible so you can easily adjust it to your\nparticular coding guidelines and the environment you expect your code to\nexecute in.\n\n#### Reporting a bug\n\nTo report a bug simply create a\n[new GitHub Issue](https://github.com/jshint/jshint/issues/new) and describe\nyour problem or suggestion. We welcome all kind of feedback regarding\nJSHint including but not limited to:\n\n * When JSHint doesn\'t work as expected\n * When JSHint complains about valid JavaScript code that works in all browsers\n * When you simply want a new option or feature\n\nBefore reporting a bug look around to see if there are any open or closed tickets\nthat cover your issue. And remember the wisdom: pull request > bug report > tweet.\n\n#### Issue Priority\n\n- *P1:* Something is throwing exceptions; broken JSHint backward compatibility.\n- *P2:* Something is not being parsed correctly.\n- *P3:* Features that the core team will work on once P2s and P1s are done.\n- *P4:* Patches welcome; The request is good, but low priority.\n\n\n#### License\n\nJSHint is distributed under the MIT License. One file and one file only\n(src/stable/jshint.js) is distributed under the slightly modified MIT License.\n\n\n#### Thank you!\n\nWe really appreciate all kind of feedback and contributions. Thanks for using and supporting JSHint!\n', 134 silly resolved readmeFilename: 'README.md', 134 silly resolved _id: 'jshint@2.5.1', 134 silly resolved _from: 'jshint@~2.5.0' } ] 135 info install hooker@0.2.3 into /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint 136 info install jshint@2.5.1 into /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint 137 info installOne hooker@0.2.3 138 info installOne jshint@2.5.1 139 verbose from cache /Users/hiro/.npm/hooker/0.2.3/package/package.json 140 info /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/hooker unbuild 141 verbose read json /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/hooker/package.json 142 verbose from cache /Users/hiro/.npm/jshint/2.5.1/package/package.json 143 info /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/jshint unbuild 144 verbose read json /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/jshint/package.json 145 verbose tar unpack /Users/hiro/.npm/hooker/0.2.3/package.tgz 146 silly lockFile b3b3ecac-ntrib-jshint-node-modules-hooker /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/hooker 147 verbose lock /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/hooker /Users/hiro/.npm/b3b3ecac-ntrib-jshint-node-modules-hooker.lock 148 silly lockFile 618a6991-iro-npm-hooker-0-2-3-package-tgz /Users/hiro/.npm/hooker/0.2.3/package.tgz 149 verbose lock /Users/hiro/.npm/hooker/0.2.3/package.tgz /Users/hiro/.npm/618a6991-iro-npm-hooker-0-2-3-package-tgz.lock 150 verbose tar unpack /Users/hiro/.npm/jshint/2.5.1/package.tgz 151 silly lockFile 80e15a98-ntrib-jshint-node-modules-jshint /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/jshint 152 verbose lock /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/jshint /Users/hiro/.npm/80e15a98-ntrib-jshint-node-modules-jshint.lock 153 silly lockFile 435ba993-iro-npm-jshint-2-5-1-package-tgz /Users/hiro/.npm/jshint/2.5.1/package.tgz 154 verbose lock /Users/hiro/.npm/jshint/2.5.1/package.tgz /Users/hiro/.npm/435ba993-iro-npm-jshint-2-5-1-package-tgz.lock 155 silly gunzTarPerm modes [ '755', '644' ] 156 silly gunzTarPerm modes [ '755', '644' ] 157 silly gunzTarPerm extractEntry package.json 158 silly gunzTarPerm extractEntry package.json 159 silly gunzTarPerm extractEntry README.md 160 silly gunzTarPerm extractEntry child.js 161 silly gunzTarPerm extractEntry README.md 162 silly gunzTarPerm extractEntry bin/apply 163 silly gunzTarPerm extractEntry grunt.js 164 silly gunzTarPerm extractEntry parent.js 165 silly gunzTarPerm extractEntry bin/build 166 silly gunzTarPerm extractEntry bin/changelog 167 silly gunzTarPerm extractEntry bin/jshint 168 silly gunzTarPerm extractEntry bin/land 169 silly gunzTarPerm extractEntry LICENSE-MIT 170 silly gunzTarPerm extractEntry dist/ba-hooker.js 171 silly gunzTarPerm extractEntry dist/ba-hooker.min.js 172 silly gunzTarPerm extractEntry lib/hooker.js 173 silly gunzTarPerm extractEntry test/hooker_test.js 174 silly gunzTarPerm extractEntry data/ascii-identifier-data.js 175 silly gunzTarPerm extractEntry data/non-ascii-identifier-part-only.js 176 silly gunzTarPerm extractEntry data/non-ascii-identifier-start.js 177 silly gunzTarPerm extractEntry dist/jshint-rhino.js 178 silly gunzTarPerm extractEntry dist/jshint.js 179 verbose read json /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/hooker/package.json 180 silly lockFile b3b3ecac-ntrib-jshint-node-modules-hooker /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/hooker 181 silly lockFile b3b3ecac-ntrib-jshint-node-modules-hooker /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/hooker 182 silly lockFile 618a6991-iro-npm-hooker-0-2-3-package-tgz /Users/hiro/.npm/hooker/0.2.3/package.tgz 183 silly lockFile 618a6991-iro-npm-hooker-0-2-3-package-tgz /Users/hiro/.npm/hooker/0.2.3/package.tgz 184 info preinstall hooker@0.2.3 185 verbose from cache /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/hooker/package.json 186 verbose readDependencies using package.json deps 187 verbose from cache /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/hooker/package.json 188 verbose readDependencies using package.json deps 189 silly resolved [] 190 verbose about to build /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/hooker 191 info build /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/hooker 192 verbose from cache /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/hooker/package.json 193 verbose linkStuff [ false, 193 verbose linkStuff false, 193 verbose linkStuff false, 193 verbose linkStuff '/Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules' ] 194 info linkStuff hooker@0.2.3 195 verbose linkBins hooker@0.2.3 196 verbose linkMans hooker@0.2.3 197 verbose rebuildBundles hooker@0.2.3 198 info install hooker@0.2.3 199 info postinstall hooker@0.2.3 200 silly gunzTarPerm extractEntry src/cli.js 201 silly gunzTarPerm extractEntry src/jshint.js 202 silly gunzTarPerm extractEntry src/lex.js 203 silly gunzTarPerm extractEntry src/messages.js 204 silly gunzTarPerm extractEntry src/reg.js 205 silly gunzTarPerm extractEntry src/state.js 206 silly gunzTarPerm extractEntry src/style.js 207 silly gunzTarPerm extractEntry src/vars.js 208 silly gunzTarPerm extractEntry src/platforms/rhino.js 209 silly gunzTarPerm extractEntry src/reporters/checkstyle.js 210 silly gunzTarPerm extractEntry src/reporters/default.js 211 silly gunzTarPerm extractEntry src/reporters/jslint_xml.js 212 silly gunzTarPerm extractEntry src/reporters/non_error.js 213 verbose read json /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/jshint/package.json 214 silly lockFile 80e15a98-ntrib-jshint-node-modules-jshint /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/jshint 215 silly lockFile 80e15a98-ntrib-jshint-node-modules-jshint /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/jshint 216 silly lockFile 435ba993-iro-npm-jshint-2-5-1-package-tgz /Users/hiro/.npm/jshint/2.5.1/package.tgz 217 silly lockFile 435ba993-iro-npm-jshint-2-5-1-package-tgz /Users/hiro/.npm/jshint/2.5.1/package.tgz 218 info preinstall jshint@2.5.1 219 verbose from cache /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/jshint/package.json 220 verbose readDependencies using package.json deps 221 verbose from cache /Users/hiro/Dropbox/project/social-works/social_partner/app/webroot/node_modules/grunt-contrib-jshint/node_modules/jshint/package.json 222 verbose readDependencies using package.json deps 223 verbose cache add [ 'shelljs@0.3.x', null ] 224 verbose cache add name=undefined spec="shelljs@0.3.x" args=["shelljs@0.3.x",null] 225 verbose parsed url { protocol: null, 225 verbose parsed url slashes: null, 225 verbose parsed url auth: null, 225 verbose parsed url host: null, 225 verbose parsed url port: null, 225 verbose parsed url hostname: null, 225 verbose parsed url hash: null, 225 verbose parsed url search: null, 225 verbose parsed url query: null, 225 verbose parsed url pathname: 'shelljs@0.3.x', 225 verbose parsed url path: 'shelljs@0.3.x', 225 verbose parsed url href: 'shelljs@0.3.x' } 226 verbose cache add name="shelljs" spec="0.3.x" args=["shelljs","0.3.x"] 227 verbose parsed url { protocol: null, 227 verbose parsed url slashes: null, 227 verbose parsed url auth: null, 227 verbose parsed url host: null, 227 verbose parsed url port: null, 227 verbose parsed url hostname: null, 227 verbose parsed url hash: null, 227 verbose parsed url search: null, 227 verbose parsed url query: null, 227 verbose parsed url pathname: '0.3.x', 227 verbose parsed url path: '0.3.x', 227 verbose parsed url href: '0.3.x' } 228 verbose addNamed [ 'shelljs', '0.3.x' ] 229 verbose addNamed [ null, '>=0.3.0- <0.4.0-' ] 230 silly lockFile f803acf0-shelljs-0-3-x shelljs@0.3.x 231 verbose lock shelljs@0.3.x /Users/hiro/.npm/f803acf0-shelljs-0-3-x.lock 232 verbose cache add [ 'underscore@1.6.x', null ] 233 verbose cache add name=undefined spec="underscore@1.6.x" args=["underscore@1.6.x",null] 234 verbose parsed url { protocol: null, 234 verbose parsed url slashes: null, 234 verbose parsed url auth: null, 234 verbose parsed url host: null, 234 verbose parsed url port: null, 234 verbose parsed url hostname: null, 234 verbose parsed url hash: null, 234 verbose parsed url search: null, 234 verbose parsed url query: null, 234 verbose parsed url pathname: 'underscore@1.6.x', 234 verbose parsed url path: 'underscore@1.6.x', 234 verbose parsed url href: 'underscore@1.6.x' } 235 verbose cache add name="underscore" spec="1.6.x" args=["underscore","1.6.x"] 236 verbose parsed url { protocol: null, 236 verbose parsed url slashes: null, 236 verbose parsed url auth: null, 236 verbose parsed url host: null, 236 verbose parsed url port: null, 236 verbose parsed url hostname: null, 236 verbose parsed url hash: null, 236 verbose parsed url search: null, 236 verbose parsed url query: null, 236 verbose parsed url pathname: '1.6.x', 236 verbose parsed url path: '1.6.x', 236 verbose parsed url href: '1.6.x' } 237 verbose addNamed [ 'underscore', '1.6.x' ] 238 verbose addNamed [ null, '>=1.6.0- <1.7.0-' ] 239 silly lockFile 7996e604-underscore-1-6-x underscore@1.6.x 240 verbose lock underscore@1.6.x /Users/hiro/.npm/7996e604-underscore-1-6-x.lock 241 silly addNameRange { name: 'shelljs', range: '>=0.3.0- <0.4.0-', hasData: false } 242 verbose cache add [ 'minimatch@0.x.x', null ] 243 verbose cache add name=undefined spec="minimatch@0.x.x" args=["minimatch@0.x.x",null] 244 verbose parsed url { protocol: null, 244 verbose parsed url slashes: null, 244 verbose parsed url auth: null, 244 verbose parsed url host: null, 244 verbose parsed url port: null, 244 verbose parsed url hostname: null, 244 verbose parsed url hash: null, 244 verbose parsed url search: null, 244 verbose parsed url query: null, 244 verbose parsed url pathname: 'minimatch@0.x.x', 244 verbose parsed url path: 'minimatch@0.x.x', 244 verbose parsed url href: 'minimatch@0.x.x' } 245 verbose cache add name="minimatch" spec="0.x.x" args=["minimatch","0.x.x"] 246 verbose parsed url { protocol: null, 246 verbose parsed url slashes: null, 246 verbose parsed url auth: null, 246 verbose parsed url host: null, 246 verbose parsed url port: null, 246 verbose parsed url hostname: null, 246 verbose parsed url hash: null, 246 verbose parsed url search: null, 246 verbose parsed url query: null, 246 verbose parsed url pathname: '0.x.x', 246 verbose parsed url path: '0.x.x', 246 verbose parsed url href: '0.x.x' } 247 verbose addNamed [ 'minimatch', '0.x.x' ] 248 verbose addNamed [ null, '>=0.0.0- <1.0.0-' ] 249 silly lockFile 38c78372-minimatch-0-x-x minimatch@0.x.x 250 verbose lock minimatch@0.x.x /Users/hiro/.npm/38c78372-minimatch-0-x-x.lock 251 verbose cache add [ 'cli@0.6.x', null ] 252 verbose cache add name=undefined spec="cli@0.6.x" args=["cli@0.6.x",null] 253 verbose parsed url { protocol: null, 253 verbose parsed url slashes: null, 253 verbose parsed url auth: null, 253 verbose parsed url host: null, 253 verbose parsed url port: null, 253 verbose parsed url hostname: null, 253 verbose parsed url hash: null, 253 verbose parsed url search: null, 253 verbose parsed url query: null, 253 verbose parsed url pathname: 'cli@0.6.x', 253 verbose parsed url path: 'cli@0.6.x', 253 verbose parsed url href: 'cli@0.6.x' } 254 verbose cache add name="cli" spec="0.6.x" args=["cli","0.6.x"] 255 verbose parsed url { protocol: null, 255 verbose parsed url slashes: null, 255 verbose parsed url auth: null, 255 verbose parsed url host: null, 255 verbose parsed url port: null, 255 verbose parsed url hostname: null, 255 verbose parsed url hash: null, 255 verbose parsed url search: null, 255 verbose parsed url query: null, 255 verbose parsed url pathname: '0.6.x', 255 verbose parsed url path: '0.6.x', 255 verbose parsed url href: '0.6.x' } 256 verbose addNamed [ 'cli', '0.6.x' ] 257 verbose addNamed [ null, '>=0.6.0- <0.7.0-' ] 258 silly lockFile 83193756-cli-0-6-x cli@0.6.x 259 verbose lock cli@0.6.x /Users/hiro/.npm/83193756-cli-0-6-x.lock 260 verbose cache add [ 'htmlparser2@3.7.x', null ] 261 verbose cache add name=undefined spec="htmlparser2@3.7.x" args=["htmlparser2@3.7.x",null] 262 verbose parsed url { protocol: null, 262 verbose parsed url slashes: null, 262 verbose parsed url auth: null, 262 verbose parsed url host: null, 262 verbose parsed url port: null, 262 verbose parsed url hostname: null, 262 verbose parsed url hash: null, 262 verbose parsed url search: null, 262 verbose parsed url query: null, 262 verbose parsed url pathname: 'htmlparser2@3.7.x', 262 verbose parsed url path: 'htmlparser2@3.7.x', 262 verbose parsed url href: 'htmlparser2@3.7.x' } 263 verbose cache add name="htmlparser2" spec="3.7.x" args=["htmlparser2","3.7.x"] 264 verbose parsed url { protocol: null, 264 verbose parsed url slashes: null, 264 verbose parsed url auth: null, 264 verbose parsed url host: null, 264 verbose parsed url port: null, 264 verbose parsed url hostname: null, 264 verbose parsed url hash: null, 264 verbose parsed url search: null, 264 verbose parsed url query: null, 264 verbose parsed url pathname: '3.7.x', 264 verbose parsed url path: '3.7.x', 264 verbose parsed url href: '3.7.x' } 265 verbose addNamed [ 'htmlparser2', '3.7.x' ] 266 verbose addNamed [ null, '>=3.7.0- <3.8.0-' ] 267 silly lockFile 0313d826-htmlparser2-3-7-x htmlparser2@3.7.x 268 verbose lock htmlparser2@3.7.x /Users/hiro/.npm/0313d826-htmlparser2-3-7-x.lock 269 verbose cache add [ 'console-browserify@1.1.x', null ] 270 verbose cache add name=undefined spec="console-browserify@1.1.x" args=["console-browserify@1.1.x",null] 271 verbose parsed url { protocol: null, 271 verbose parsed url slashes: null, 271 verbose parsed url auth: null, 271 verbose parsed url host: null, 271 verbose parsed url port: null, 271 verbose parsed url hostname: null, 271 verbose parsed url hash: null, 271 verbose parsed url search: null, 271 verbose parsed url query: null, 271 verbose parsed url pathname: 'console-browserify@1.1.x', 271 verbose parsed url path: 'console-browserify@1.1.x', 271 verbose parsed url href: 'console-browserify@1.1.x' } 272 verbose cache add name="console-browserify" spec="1.1.x" args=["console-browserify","1.1.x"] 273 verbose parsed url { protocol: null, 273 verbose parsed url slashes: null, 273 verbose parsed url auth: null, 273 verbose parsed url host: null, 273 verbose parsed url port: null, 273 verbose parsed url hostname: null, 273 verbose parsed url hash: null, 273 verbose parsed url search: null, 273 verbose parsed url query: null, 273 verbose parsed url pathname: '1.1.x', 273 verbose parsed url path: '1.1.x', 273 verbose parsed url href: '1.1.x' } 274 verbose addNamed [ 'console-browserify', '1.1.x' ] 275 verbose addNamed [ null, '>=1.1.0- <1.2.0-' ] 276 silly lockFile cbb09dcf-console-browserify-1-1-x console-browserify@1.1.x 277 verbose lock console-browserify@1.1.x /Users/hiro/.npm/cbb09dcf-console-browserify-1-1-x.lock 278 verbose cache add [ 'exit@0.1.x', null ] 279 verbose cache add name=undefined spec="exit@0.1.x" args=["exit@0.1.x",null] 280 verbose parsed url { protocol: null, 280 verbose parsed url slashes: null, 280 verbose parsed url auth: null, 280 verbose parsed url host: null, 280 verbose parsed url port: null, 280 verbose parsed url hostname: null, 280 verbose parsed url hash: null, 280 verbose parsed url search: null, 280 verbose parsed url query: null, 280 verbose parsed url pathname: 'exit@0.1.x', 280 verbose parsed url path: 'exit@0.1.x', 280 verbose parsed url href: 'exit@0.1.x' } 281 verbose cache add name="exit" spec="0.1.x" args=["exit","0.1.x"] 282 verbose parsed url { protocol: null, 282 verbose parsed url slashes: null, 282 verbose parsed url auth: null, 282 verbose parsed url host: null, 282 verbose parsed url port: null, 282 verbose parsed url hostname: null, 282 verbose parsed url hash: null, 282 verbose parsed url search: null, 282 verbose parsed url query: null, 282 verbose parsed url pathname: '0.1.x', 282 verbose parsed url path: '0.1.x', 282 verbose parsed url href: '0.1.x' } 283 verbose addNamed [ 'exit', '0.1.x' ] 284 verbose addNamed [ null, '>=0.1.0- <0.2.0-' ] 285 silly lockFile 3dbd9d2f-exit-0-1-x exit@0.1.x 286 verbose lock exit@0.1.x /Users/hiro/.npm/3dbd9d2f-exit-0-1-x.lock 287 silly addNameRange { name: 'underscore', range: '>=1.6.0- <1.7.0-', hasData: false } 288 silly addNameRange { name: 'minimatch', range: '>=0.0.0- <1.0.0-', hasData: false } 289 silly addNameRange { name: 'cli', range: '>=0.6.0- <0.7.0-', hasData: false } 290 silly addNameRange { name: 'htmlparser2', 290 silly addNameRange range: '>=3.7.0- <3.8.0-', 290 silly addNameRange hasData: false } 291 verbose cache add [ 'strip-json-comments@0.1.x', null ] 292 verbose cache add name=undefined spec="strip-json-comments@0.1.x" args=["strip-json-comments@0.1.x",null] 293 verbose parsed url { protocol: null, 293 verbose parsed url slashes: null, 293 verbose parsed url auth: null, 293 verbose parsed url host: null, 293 verbose parsed url port: null, 293 verbose parsed url hostname: null, 293 verbose parsed url hash: null, 293 verbose parsed url search: null, 293 verbose parsed url query: null, 293 verbose parsed url pathname: 'strip-json-comments@0.1.x', 293 verbose parsed url path: 'strip-json-comments@0.1.x', 293 verbose parsed url href: 'strip-json-comments@0.1.x' } 294 verbose cache add name="strip-json-comments" spec="0.1.x" args=["strip-json-comments","0.1.x"] 295 verbose parsed url { protocol: null, 295 verbose parsed url slashes: null, 295 verbose parsed url auth: null, 295 verbose parsed url host: null, 295 verbose parsed url port: null, 295 verbose parsed url hostname: null, 295 verbose parsed url hash: null, 295 verbose parsed url search: null, 295 verbose parsed url query: null, 295 verbose parsed url pathname: '0.1.x', 295 verbose parsed url path: '0.1.x', 295 verbose parsed url href: '0.1.x' } 296 verbose addNamed [ 'strip-json-comments', '0.1.x' ] 297 verbose addNamed [ null, '>=0.1.0- <0.2.0-' ] 298 silly lockFile 3b74c8e8-strip-json-comments-0-1-x strip-json-comments@0.1.x 299 verbose lock strip-json-comments@0.1.x /Users/hiro/.npm/3b74c8e8-strip-json-comments-0-1-x.lock 300 silly addNameRange { name: 'console-browserify', 300 silly addNameRange range: '>=1.1.0- <1.2.0-', 300 silly addNameRange hasData: false } 301 silly addNameRange { name: 'exit', range: '>=0.1.0- <0.2.0-', hasData: false } 302 silly addNameRange { name: 'strip-json-comments', 302 silly addNameRange range: '>=0.1.0- <0.2.0-', 302 silly addNameRange hasData: false } 303 verbose url raw shelljs 304 verbose url resolving [ 'https://registry.npmjs.org/', './shelljs' ] 305 verbose url resolved https://registry.npmjs.org/shelljs 306 info trying registry request attempt 1 at 20:22:21 307 verbose etag "4M4FM2JIUHZWD50V8ZG9OI81B" 308 http GET https://registry.npmjs.org/shelljs 309 verbose url raw underscore 310 verbose url resolving [ 'https://registry.npmjs.org/', './underscore' ] 311 verbose url resolved https://registry.npmjs.org/underscore 312 info trying registry request attempt 1 at 20:22:21 313 verbose etag "EFPOC8D4R9EJD6TYAD6XTDJJU" 314 http GET https://registry.npmjs.org/underscore 315 verbose url raw minimatch 316 verbose url resolving [ 'https://registry.npmjs.org/', './minimatch' ] 317 verbose url resolved https://registry.npmjs.org/minimatch 318 info trying registry request attempt 1 at 20:22:21 319 verbose etag "64HZ0LR2MPZLWRRTTBF60QUIU" 320 http GET https://registry.npmjs.org/minimatch 321 verbose url raw cli 322 verbose url resolving [ 'https://registry.npmjs.org/', './cli' ] 323 verbose url resolved https://registry.npmjs.org/cli 324 info trying registry request attempt 1 at 20:22:21 325 verbose etag "BR7EHTJW0XXGQDT67UFZ4HR4T" 326 http GET https://registry.npmjs.org/cli 327 verbose url raw htmlparser2 328 verbose url resolving [ 'https://registry.npmjs.org/', './htmlparser2' ] 329 verbose url resolved https://registry.npmjs.org/htmlparser2 330 info trying registry request attempt 1 at 20:22:21 331 verbose etag "H09JA7KGYAP11UU3WIO7TFCB" 332 http GET https://registry.npmjs.org/htmlparser2 333 verbose url raw console-browserify 334 verbose url resolving [ 'https://registry.npmjs.org/', './console-browserify' ] 335 verbose url resolved https://registry.npmjs.org/console-browserify 336 info trying registry request attempt 1 at 20:22:21 337 verbose etag "1Q8V5LMWXPIS81SBEJTWCW77R" 338 http GET https://registry.npmjs.org/console-browserify 339 verbose url raw exit 340 verbose url resolving [ 'https://registry.npmjs.org/', './exit' ] 341 verbose url resolved https://registry.npmjs.org/exit 342 info trying registry request attempt 1 at 20:22:21 343 verbose etag "7PMTUAYK2EXLIVTEBAUSVFFB9" 344 http GET https://registry.npmjs.org/exit 345 verbose url raw strip-json-comments 346 verbose url resolving [ 'https://registry.npmjs.org/', './strip-json-comments' ] 347 verbose url resolved https://registry.npmjs.org/strip-json-comments 348 info trying registry request attempt 1 at 20:22:21 349 verbose etag "302XWVSTUC0Y2I37JDQGIHIVR" 350 http GET https://registry.npmjs.org/strip-json-comments 351 http 304 https://registry.npmjs.org/shelljs 352 silly registry.get cb [ 304, 352 silly registry.get { date: 'Fri, 30 May 2014 11:22:22 GMT', 352 silly registry.get server: 'Apache', 352 silly registry.get via: '1.1 varnish', 352 silly registry.get 'last-modified': 'Fri, 30 May 2014 11:22:22 GMT', 352 silly registry.get 'cache-control': 'max-age=1', 352 silly registry.get etag: '"4M4FM2JIUHZWD50V8ZG9OI81B"', 352 silly registry.get 'x-served-by': 'cache-ty66-TYO', 352 silly registry.get 'x-cache': 'HIT', 352 silly registry.get 'x-cache-hits': '1', 352 silly registry.get 'x-timer': 'S1401448942.635719,VS0,VE162', 352 silly registry.get vary: 'Accept', 352 silly registry.get 'content-length': '0', 352 silly registry.get 'keep-alive': 'timeout=10, max=50', 352 silly registry.get connection: 'Keep-Alive' } ] 353 verbose etag shelljs from cache 354 silly addNameRange number 2 { name: 'shelljs', range: '>=0.3.0- <0.4.0-', hasData: true } 355 silly addNameRange versions [ 'shelljs', 355 silly addNameRange [ '0.0.1', 355 silly addNameRange '0.0.2', 355 silly addNameRange '0.0.3', 355 silly addNameRange '0.0.4', 355 silly addNameRange '0.0.5', 355 silly addNameRange '0.0.6', 355 silly addNameRange '0.0.7', 355 silly addNameRange '0.0.8', 355 silly addNameRange '0.0.9', 355 silly addNameRange '0.1.0', 355 silly addNameRange '0.1.1', 355 silly addNameRange '0.1.2', 355 silly addNameRange '0.1.3', 355 silly addNameRange '0.1.4', 355 silly addNameRange '0.2.0', 355 silly addNameRange '0.2.1', 355 silly addNameRange '0.2.2', 355 silly addNameRange '0.2.3', 355 silly addNameRange '0.2.4', 355 silly addNameRange '0.2.5', 355 silly addNameRange '0.2.6', 355 silly addNameRange '0.3.0', 355 silly addNameRange '0.0.1-alpha1', 355 silly addNameRange '0.0.2-pre1', 355 silly addNameRange '0.0.4-pre1', 355 silly addNameRange '0.0.5-pre1', 355 silly addNameRange '0.0.5-pre2', 355 silly addNameRange '0.0.5-pre3', 355 silly addNameRange '0.0.5-pre4', 355 silly addNameRange '0.0.6-pre1', 355 silly addNameRange '0.0.6-pre2' ] ] 356 verbose addNamed [ 'shelljs', '0.3.0' ] 357 verbose addNamed [ '0.3.0', '0.3.0' ] 358 silly lockFile 7d3918b1-shelljs-0-3-0 shelljs@0.3.0 359 verbose lock shelljs@0.3.0 /Users/hiro/.npm/7d3918b1-shelljs-0-3-0.lock 360 verbose read json /Users/hiro/.npm/shelljs/0.3.0/package/package.json 361 silly lockFile 7d3918b1-shelljs-0-3-0 shelljs@0.3.0 362 silly lockFile 7d3918b1-shelljs-0-3-0 shelljs@0.3.0 363 silly lockFile f803acf0-shelljs-0-3-x shelljs@0.3.x 364 silly lockFile f803acf0-shelljs-0-3-x shelljs@0.3.x 365 http 304 https://registry.npmjs.org/underscore 366 silly registry.get cb [ 304, 366 silly registry.get { date: 'Fri, 30 May 2014 11:22:22 GMT', 366 silly registry.get server: 'Apache', 366 silly registry.get via: '1.1 varnish', 366 silly registry.get 'last-modified': 'Fri, 30 May 2014 11:22:22 GMT', 366 silly registry.get 'cache-control': 'max-age=1', 366 silly registry.get etag: '"EFPOC8D4R9EJD6TYAD6XTDJJU"', 366 silly registry.get 'x-served-by': 'cache-ty68-TYO', 366 silly registry.get 'x-cache': 'HIT', 366 silly registry.get 'x-cache-hits': '1', 366 silly registry.get 'x-timer': 'S1401448942.640004,VS0,VE171', 366 silly registry.get vary: 'Accept', 366 silly registry.get 'content-length': '0', 366 silly registry.get 'keep-alive': 'timeout=10, max=50', 366 silly registry.get connection: 'Keep-Alive' } ] 367 verbose etag underscore from cache 368 silly addNameRange number 2 { name: 'underscore', range: '>=1.6.0- <1.7.0-', hasData: true } 369 silly addNameRange versions [ 'underscore', 369 silly addNameRange [ '1.0.3', 369 silly addNameRange '1.0.4', 369 silly addNameRange '1.1.0', 369 silly addNameRange '1.1.1', 369 silly addNameRange '1.1.2', 369 silly addNameRange '1.1.3', 369 silly addNameRange '1.1.4', 369 silly addNameRange '1.1.5', 369 silly addNameRange '1.1.6', 369 silly addNameRange '1.1.7', 369 silly addNameRange '1.2.0', 369 silly addNameRange '1.2.1', 369 silly addNameRange '1.2.2', 369 silly addNameRange '1.2.3', 369 silly addNameRange '1.2.4', 369 silly addNameRange '1.3.0', 369 silly addNameRange '1.3.1', 369 silly addNameRange '1.3.2', 369 silly addNameRange '1.3.3', 369 silly addNameRange '1.4.0', 369 silly addNameRange '1.4.1', 369 silly addNameRange '1.4.2', 369 silly addNameRange '1.4.3', 369 silly addNameRange '1.4.4', 369 silly addNameRange '1.5.0', 369 silly addNameRange '1.5.1', 369 silly addNameRange '1.5.2', 369 silly addNameRange '1.6.0' ] ] 370 verbose addNamed [ 'underscore', '1.6.0' ] 371 verbose addNamed [ '1.6.0', '1.6.0' ] 372 silly lockFile 96960ed1-underscore-1-6-0 underscore@1.6.0 373 verbose lock underscore@1.6.0 /Users/hiro/.npm/96960ed1-underscore-1-6-0.lock 374 verbose read json /Users/hiro/.npm/underscore/1.6.0/package/package.json 375 silly lockFile 96960ed1-underscore-1-6-0 underscore@1.6.0 376 silly lockFile 96960ed1-underscore-1-6-0 underscore@1.6.0 377 silly lockFile 7996e604-underscore-1-6-x underscore@1.6.x 378 silly lockFile 7996e604-underscore-1-6-x underscore@1.6.x 379 http 304 https://registry.npmjs.org/minimatch 380 silly registry.get cb [ 304, 380 silly registry.get { date: 'Fri, 30 May 2014 11:22:22 GMT', 380 silly registry.get server: 'Apache', 380 silly registry.get via: '1.1 varnish', 380 silly registry.get 'last-modified': 'Fri, 30 May 2014 11:22:22 GMT', 380 silly registry.get 'cache-control': 'max-age=1', 380 silly registry.get etag: '"64HZ0LR2MPZLWRRTTBF60QUIU"', 380 silly registry.get 'x-served-by': 'cache-ty68-TYO', 380 silly registry.get 'x-cache': 'HIT', 380 silly registry.get 'x-cache-hits': '1', 380 silly registry.get 'x-timer': 'S1401448942.634829,VS0,VE183', 380 silly registry.get vary: 'Accept', 380 silly registry.get 'content-length': '0', 380 silly registry.get 'keep-alive': 'timeout=10, max=50', 380 silly registry.get connection: 'Keep-Alive' } ] 381 verbose etag minimatch from cache 382 http 304 https://registry.npmjs.org/htmlparser2 383 silly registry.get cb [ 304, 383 silly registry.get { date: 'Fri, 30 May 2014 11:22:22 GMT', 383 silly registry.get server: 'Apache', 383 silly registry.get via: '1.1 varnish', 383 silly registry.get 'last-modified': 'Fri, 30 May 2014 11:22:22 GMT', 383 silly registry.get 'cache-control': 'max-age=1', 383 silly registry.get etag: '"H09JA7KGYAP11UU3WIO7TFCB"', 383 silly registry.get 'x-served-by': 'cache-ty66-TYO', 383 silly registry.get 'x-cache': 'HIT', 383 silly registry.get 'x-cache-hits': '1', 383 silly registry.get 'x-timer': 'S1401448942.650526,VS0,VE173', 383 silly registry.get vary: 'Accept', 383 silly registry.get 'content-length': '0', 383 silly registry.get 'keep-alive': 'timeout=10, max=50', 383 silly registry.get connection: 'Keep-Alive' } ] 384 verbose etag htmlparser2 from cache 385 silly addNameRange number 2 { name: 'minimatch', range: '>=0.0.0- <1.0.0-', hasData: true } 386 silly addNameRange versions [ 'minimatch', 386 silly addNameRange [ '0.0.1', 386 silly addNameRange '0.0.2', 386 silly addNameRange '0.0.4', 386 silly addNameRange '0.0.5', 386 silly addNameRange '0.1.1', 386 silly addNameRange '0.1.2', 386 silly addNameRange '0.1.3', 386 silly addNameRange '0.1.4', 386 silly addNameRange '0.1.5', 386 silly addNameRange '0.2.0', 386 silly addNameRange '0.2.2', 386 silly addNameRange '0.2.3', 386 silly addNameRange '0.2.4', 386 silly addNameRange '0.2.5', 386 silly addNameRange '0.2.6', 386 silly addNameRange '0.2.7', 386 silly addNameRange '0.2.8', 386 silly addNameRange '0.2.9', 386 silly addNameRange '0.2.10', 386 silly addNameRange '0.2.11', 386 silly addNameRange '0.2.12', 386 silly addNameRange '0.2.13', 386 silly addNameRange '0.2.14', 386 silly addNameRange '0.3.0' ] ] 387 verbose addNamed [ 'minimatch', '0.3.0' ] 388 verbose addNamed [ '0.3.0', '0.3.0' ] 389 silly lockFile fbcfe8c1-minimatch-0-3-0 minimatch@0.3.0 390 verbose lock minimatch@0.3.0 /Users/hiro/.npm/fbcfe8c1-minimatch-0-3-0.lock 391 silly addNameRange number 2 { name: 'htmlparser2', range: '>=3.7.0- <3.8.0-', hasData: true } 392 silly addNameRange versions [ 'htmlparser2', 392 silly addNameRange [ '1.0.0', 392 silly addNameRange '1.1.0', 392 silly addNameRange '1.5.0', 392 silly addNameRange '2.0.0', 392 silly addNameRange '2.0.1', 392 silly addNameRange '2.1.0', 392 silly addNameRange '2.1.1', 392 silly addNameRange '2.1.2', 392 silly addNameRange '2.1.3', 392 silly addNameRange '2.2.0', 392 silly addNameRange '2.2.2', 392 silly addNameRange '2.2.3', 392 silly addNameRange '2.2.4', 392 silly addNameRange '2.2.5', 392 silly addNameRange '2.2.6', 392 silly addNameRange '2.2.7', 392 silly addNameRange '2.2.8', 392 silly addNameRange '2.2.9', 392 silly addNameRange '2.3.0', 392 silly addNameRange '2.5.0', 392 silly addNameRange '2.5.1', 392 silly addNameRange '2.5.2', 392 silly addNameRange '2.6.0', 392 silly addNameRange '3.0.0', 392 silly addNameRange '3.0.1', 392 silly addNameRange '3.0.2', 392 silly addNameRange '3.0.3', 392 silly addNameRange '3.0.4', 392 silly addNameRange '3.0.5', 392 silly addNameRange '3.1.1', 392 silly addNameRange '3.1.2', 392 silly addNameRange '3.1.3', 392 silly addNameRange '3.1.4', 392 silly addNameRange '3.1.5', 392 silly addNameRange '3.1.6', 392 silly addNameRange '3.2.0', 392 silly addNameRange '3.2.1', 392 silly addNameRange '3.2.2', 392 silly addNameRange '3.2.3', 392 silly addNameRange '3.2.4', 392 silly addNameRange '3.2.5', 392 silly addNameRange '3.3.0', 392 silly addNameRange '3.4.0', 392 silly addNameRange '3.5.0', 392 silly addNameRange '3.5.1', 392 silly addNameRange '3.6.0', 392 silly addNameRange '3.7.0', 392 silly addNameRange '3.7.1', 392 silly addNameRange '3.7.2' ] ] 393 verbose addNamed [ 'htmlparser2', '3.7.2' ] 394 verbose addNamed [ '3.7.2', '3.7.2' ] 395 silly lockFile fed6b915-htmlparser2-3-7-2 htmlparser2@3.7.2 396 verbose lock htmlparser2@3.7.2 /Users/hiro/.npm/fed6b915-htmlparser2-3-7-2.lock 397 verbose read json /Users/hiro/.npm/minimatch/0.3.0/package/package.json 398 verbose read json /Users/hiro/.npm/htmlparser2/3.7.2/package/package.json 399 silly lockFile fbcfe8c1-minimatch-0-3-0 minimatch@0.3.0 400 silly lockFile fbcfe8c1-minimatch-0-3-0 minimatch@0.3.0 401 silly lockFile fed6b915-htmlparser2-3-7-2 htmlparser2@3.7.2 402 silly lockFile fed6b915-htmlparser2-3-7-2 htmlparser2@3.7.2 403 silly lockFile 38c78372-minimatch-0-x-x minimatch@0.x.x 404 silly lockFile 38c78372-minimatch-0-x-x minimatch@0.x.x 405 silly lockFile 0313d826-htmlparser2-3-7-x htmlparser2@3.7.x 406 silly lockFile 0313d826-htmlparser2-3-7-x htmlparser2@3.7.x 407 http 304 https://registry.npmjs.org/cli 408 silly registry.get cb [ 304, 408 silly registry.get { date: 'Fri, 30 May 2014 11:22:22 GMT', 408 silly registry.get server: 'Apache', 408 silly registry.get via: '1.1 varnish', 408 silly registry.get 'last-modified': 'Fri, 30 May 2014 11:22:22 GMT', 408 silly registry.get 'cache-control': 'max-age=1', 408 silly registry.get etag: '"BR7EHTJW0XXGQDT67UFZ4HR4T"', 408 silly registry.get 'x-served-by': 'cache-ty66-TYO', 408 silly registry.get 'x-cache': 'HIT', 408 silly registry.get 'x-cache-hits': '1', 408 silly registry.get 'x-timer': 'S1401448942.636549,VS0,VE260', 408 silly registry.get vary: 'Accept', 408 silly registry.get 'content-length': '0', 408 silly registry.get 'keep-alive': 'timeout=10, max=50', 408 silly registry.get connection: 'Keep-Alive' } ] 409 verbose etag cli from cache 410 silly addNameRange number 2 { name: 'cli', range: '>=0.6.0- <0.7.0-', hasData: true } 411 silly addNameRange versions [ 'cli', 411 silly addNameRange [ '0.1.0', 411 silly addNameRange '0.1.1', 411 silly addNameRange '0.1.3', 411 silly addNameRange '0.1.4', 411 silly addNameRange '0.1.5', 411 silly addNameRange '0.1.6', 411 silly addNameRange '0.1.7', 411 silly addNameRange '0.1.8', 411 silly addNameRange '0.1.9', 411 silly addNameRange '0.2.0', 411 silly addNameRange '0.2.1-1', 411 silly addNameRange '0.2.2-1', 411 silly addNameRange '0.2.3-1', 411 silly addNameRange '0.2.3-2', 411 silly addNameRange '0.2.3-3', 411 silly addNameRange '0.2.3-4', 411 silly addNameRange '0.2.3-5', 411 silly addNameRange '0.2.4-1', 411 silly addNameRange '0.2.4-2', 411 silly addNameRange '0.2.5', 411 silly addNameRange '0.2.6', 411 silly addNameRange '0.2.7', 411 silly addNameRange '0.2.8', 411 silly addNameRange '0.3.0', 411 silly addNameRange '0.3.1', 411 silly addNameRange '0.3.2', 411 silly addNameRange '0.3.3', 411 silly addNameRange '0.3.4', 411 silly addNameRange '0.3.5', 411 silly addNameRange '0.3.6', 411 silly addNameRange '0.3.7', 411 silly addNameRange '0.3.8', 411 silly addNameRange '0.3.9', 411 silly addNameRange '0.4.0', 411 silly addNameRange '0.4.1', 411 silly addNameRange '0.4.2', 411 silly addNameRange '0.4.3', 411 silly addNameRange '0.4.4', 411 silly addNameRange '0.4.4-1', 411 silly addNameRange '0.4.4-2', 411 silly addNameRange '0.4.5', 411 silly addNameRange '0.5.0', 411 silly addNameRange '0.6.0', 411 silly addNameRange '0.6.2' ] ] 412 verbose addNamed [ 'cli', '0.6.2' ] 413 verbose addNamed [ '0.6.2', '0.6.2' ] 414 silly lockFile b97a2186-cli-0-6-2 cli@0.6.2 415 verbose lock cli@0.6.2 /Users/hiro/.npm/b97a2186-cli-0-6-2.lock 416 verbose read json /Users/hiro/.npm/cli/0.6.2/package/package.json 417 silly lockFile b97a2186-cli-0-6-2 cli@0.6.2 418 silly lockFile b97a2186-cli-0-6-2 cli@0.6.2 419 silly lockFile 83193756-cli-0-6-x cli@0.6.x 420 silly lockFile 83193756-cli-0-6-x cli@0.6.x 421 http 304 https://registry.npmjs.org/console-browserify 422 silly registry.get cb [ 304, 422 silly registry.get { date: 'Fri, 30 May 2014 11:22:22 GMT', 422 silly registry.get server: 'Apache', 422 silly registry.get via: '1.1 varnish', 422 silly registry.get 'last-modified': 'Fri, 30 May 2014 11:22:22 GMT', 422 silly registry.get 'cache-control': 'max-age=1', 422 silly registry.get etag: '"1Q8V5LMWXPIS81SBEJTWCW77R"', 422 silly registry.get 'x-served-by': 'cache-ty66-TYO', 422 silly registry.get 'x-cache': 'HIT', 422 silly registry.get 'x-cache-hits': '1', 422 silly registry.get 'x-timer': 'S1401448942.818864,VS0,VE171', 422 silly registry.get vary: 'Accept', 422 silly registry.get 'content-length': '0', 422 silly registry.get 'keep-alive': 'timeout=10, max=49', 422 silly registry.get connection: 'Keep-Alive' } ] 423 verbose etag console-browserify from cache 424 silly addNameRange number 2 { name: 'console-browserify', 424 silly addNameRange range: '>=1.1.0- <1.2.0-', 424 silly addNameRange hasData: true } 425 silly addNameRange versions [ 'console-browserify', 425 silly addNameRange [ '0.1.0', 425 silly addNameRange '0.1.1', 425 silly addNameRange '0.1.2', 425 silly addNameRange '0.1.3', 425 silly addNameRange '0.1.4', 425 silly addNameRange '0.1.5', 425 silly addNameRange '0.1.6', 425 silly addNameRange '1.0.1', 425 silly addNameRange '1.0.2', 425 silly addNameRange '1.0.3', 425 silly addNameRange '1.1.0' ] ] 426 verbose addNamed [ 'console-browserify', '1.1.0' ] 427 verbose addNamed [ '1.1.0', '1.1.0' ] 428 silly lockFile 61b10c6e-console-browserify-1-1-0 console-browserify@1.1.0 429 verbose lock console-browserify@1.1.0 /Users/hiro/.npm/61b10c6e-console-browserify-1-1-0.lock 430 verbose read json /Users/hiro/.npm/console-browserify/1.1.0/package/package.json 431 silly lockFile 61b10c6e-console-browserify-1-1-0 console-browserify@1.1.0 432 silly lockFile 61b10c6e-console-browserify-1-1-0 console-browserify@1.1.0 433 silly lockFile cbb09dcf-console-browserify-1-1-x console-browserify@1.1.x 434 silly lockFile cbb09dcf-console-browserify-1-1-x console-browserify@1.1.x 435 http 304 https://registry.npmjs.org/exit 436 silly registry.get cb [ 304, 436 silly registry.get { date: 'Fri, 30 May 2014 11:22:22 GMT', 436 silly registry.get server: 'Apache', 436 silly registry.get via: '1.1 varnish', 436 silly registry.get 'last-modified': 'Fri, 30 May 2014 11:22:23 GMT', 436 silly registry.get 'cache-control': 'max-age=1', 436 silly registry.get etag: '"7PMTUAYK2EXLIVTEBAUSVFFB9"', 436 silly registry.get 'x-served-by': 'cache-ty68-TYO', 436 silly registry.get 'x-cache': 'HIT', 436 silly registry.get 'x-cache-hits': '1', 436 silly registry.get 'x-timer': 'S1401448942.830094,VS0,VE196', 436 silly registry.get vary: 'Accept', 436 silly registry.get 'content-length': '0', 436 silly registry.get 'keep-alive': 'timeout=10, max=49', 436 silly registry.get connection: 'Keep-Alive' } ] 437 verbose etag exit from cache 438 silly addNameRange number 2 { name: 'exit', range: '>=0.1.0- <0.2.0-', hasData: true } 439 silly addNameRange versions [ 'exit', [ '0.1.0', '0.1.1', '0.1.2' ] ] 440 verbose addNamed [ 'exit', '0.1.2' ] 441 verbose addNamed [ '0.1.2', '0.1.2' ] 442 silly lockFile 7dd65db3-exit-0-1-2 exit@0.1.2 443 verbose lock exit@0.1.2 /Users/hiro/.npm/7dd65db3-exit-0-1-2.lock 444 verbose read json /Users/hiro/.npm/exit/0.1.2/package/package.json 445 silly lockFile 7dd65db3-exit-0-1-2 exit@0.1.2 446 silly lockFile 7dd65db3-exit-0-1-2 exit@0.1.2 447 silly lockFile 3dbd9d2f-exit-0-1-x exit@0.1.x 448 silly lockFile 3dbd9d2f-exit-0-1-x exit@0.1.x 449 http 304 https://registry.npmjs.org/strip-json-comments 450 silly registry.get cb [ 304, 450 silly registry.get { date: 'Fri, 30 May 2014 11:22:22 GMT', 450 silly registry.get server: 'Apache', 450 silly registry.get via: '1.1 varnish', 450 silly registry.get 'last-modified': 'Fri, 30 May 2014 11:22:23 GMT', 450 silly registry.get 'cache-control': 'max-age=1', 450 silly registry.get etag: '"302XWVSTUC0Y2I37JDQGIHIVR"', 450 silly registry.get 'x-served-by': 'cache-ty68-TYO', 450 silly registry.get 'x-cache': 'MISS', 450 silly registry.get 'x-cache-hits': '0', 450 silly registry.get 'x-timer': 'S1401448942.856358,VS0,VE265', 450 silly registry.get vary: 'Accept', 450 silly registry.get 'content-length': '0', 450 silly registry.get 'keep-alive': 'timeout=10, max=49', 450 silly registry.get connection: 'Keep-Alive' } ] 451 verbose etag strip-json-comments from cache 452 silly addNameRange number 2 { name: 'strip-json-comments', 452 silly addNameRange range: '>=0.1.0- <0.2.0-', 452 silly addNameRange hasData: true } 453 silly addNameRange versions [ 'strip-json-comments', 453 silly addNameRange [ '0.1.0', '0.1.1', '0.1.2', '0.1.3' ] ] 454 verbose addNamed [ 'strip-json-comments', '0.1.3' ] 455 verbose addNamed [ '0.1.3', '0.1.3' ] 456 silly lockFile d41b126a-strip-json-comments-0-1-3 strip-json-comments@0.1.3 457 verbose lock strip-json-comments@0.1.3 /Users/hiro/.npm/d41b126a-strip-json-comments-0-1-3.lock 458 verbose read json /Users/hiro/.npm/strip-json-comments/0.1.3/package/package.json 459 silly lockFile d41b126a-strip-json-comments-0-1-3 strip-json-comments@0.1.3 460 silly lockFile d41b126a-strip-json-comments-0-1-3 strip-json-comments@0.1.3 461 silly lockFile 3b74c8e8-strip-json-comments-0-1-x strip-json-comments@0.1.x 462 silly lockFile 3b74c8e8-strip-json-comments-0-1-x strip-json-comments@0.1.x 463 silly resolved [ { name: 'shelljs', 463 silly resolved version: '0.3.0', 463 silly resolved author: { name: 'Artur Adib', email: 'aadib@mozilla.com' }, 463 silly resolved description: 'Portable Unix shell commands for Node.js', 463 silly resolved keywords: [ 'unix', 'shell', 'makefile', 'make', 'jake', 'synchronous' ], 463 silly resolved repository: { type: 'git', url: 'git://github.com/arturadib/shelljs.git' }, 463 silly resolved license: 'BSD*', 463 silly resolved homepage: 'http://github.com/arturadib/shelljs', 463 silly resolved main: './shell.js', 463 silly resolved scripts: { test: 'node scripts/run-tests' }, 463 silly resolved bin: { shjs: './bin/shjs' }, 463 silly resolved dependencies: {}, 463 silly resolved devDependencies: { jshint: '~2.1.11' }, 463 silly resolved optionalDependencies: {}, 463 silly resolved engines: { node: '>=0.8.0' }, 463 silly resolved readme: '# ShellJS - Unix shell commands for Node.js [![Build Status](https://secure.travis-ci.org/arturadib/shelljs.png)](http://travis-ci.org/arturadib/shelljs)\n\nShellJS is a portable **(Windows/Linux/OS X)** implementation of Unix shell commands on top of the Node.js API. You can use it to eliminate your shell script\'s dependency on Unix while still keeping its familiar and powerful commands. You can also install it globally so you can run it from outside Node projects - say goodbye to those gnarly Bash scripts!\n\nThe project is [unit-tested](http://travis-ci.org/arturadib/shelljs) and battled-tested in projects like:\n\n+ [PDF.js](http://github.com/mozilla/pdf.js) - Firefox\'s next-gen PDF reader\n+ [Firebug](http://getfirebug.com/) - Firefox\'s infamous debugger\n+ [JSHint](http://jshint.com) - Most popular JavaScript linter\n+ [Zepto](http://zeptojs.com) - jQuery-compatible JavaScript library for modern browsers\n+ [Yeoman](http://yeoman.io/) - Web application stack and development tool\n+ [Deployd.com](http://deployd.com) - Open source PaaS for quick API backend generation\n\nand [many more](https://npmjs.org/browse/depended/shelljs).\n\n## Installing\n\nVia npm:\n\n```bash\n$ npm install [-g] shelljs\n```\n\nIf the global option `-g` is specified, the binary `shjs` will be installed. This makes it possible to\nrun ShellJS scripts much like any shell script from the command line, i.e. without requiring a `node_modules` folder:\n\n```bash\n$ shjs my_script\n```\n\nYou can also just copy `shell.js` into your project\'s directory, and `require()` accordingly.\n\n\n## Examples\n\n### JavaScript\n\n```javascript\nrequire(\'shelljs/global\');\n\nif (!which(\'git\')) {\n echo(\'Sorry, this script requires git\');\n exit(1);\n}\n\n// Copy files to release dir\nmkdir(\'-p\', \'out/Release\');\ncp(\'-R\', \'stuff/*\', \'out/Release\');\n\n// Replace macros in each .js file\ncd(\'lib\');\nls(\'*.js\').forEach(function(file) {\n sed(\'-i\', \'BUILD_VERSION\', \'v0.1.2\', file);\n sed(\'-i\', /.*REMOVE_THIS_LINE.*\\n/, \'\', file);\n sed(\'-i\', /.*REPLACE_LINE_WITH_MACRO.*\\n/, cat(\'macro.js\'), file);\n});\ncd(\'..\');\n\n// Run external tool synchronously\nif (exec(\'git commit -am "Auto-commit"\').code !== 0) {\n echo(\'Error: Git commit failed\');\n exit(1);\n}\n```\n\n### CoffeeScript\n\n```coffeescript\nrequire \'shelljs/global\'\n\nif not which \'git\'\n echo \'Sorry, this script requires git\'\n exit 1\n\n# Copy files to release dir\nmkdir \'-p\', \'out/Release\'\ncp \'-R\', \'stuff/*\', \'out/Release\'\n\n# Replace macros in each .js file\ncd \'lib\'\nfor file in ls \'*.js\'\n sed \'-i\', \'BUILD_VERSION\', \'v0.1.2\', file\n sed \'-i\', /.*REMOVE_THIS_LINE.*\\n/, \'\', file\n sed \'-i\', /.*REPLACE_LINE_WITH_MACRO.*\\n/, cat \'macro.js\', file\ncd \'..\'\n\n# Run external tool synchronously\nif (exec \'git commit -am "Auto-commit"\').code != 0\n echo \'Error: Git commit failed\'\n exit 1\n```\n\n## Global vs. Local\n\nThe example above uses the convenience script `shelljs/global` to reduce verbosity. If polluting your global namespace is not desirable, simply require `shelljs`.\n\nExample:\n\n```javascript\nvar shell = require(\'shelljs\');\nshell.echo(\'hello world\');\n```\n\n## Make tool\n\nA convenience script `shelljs/make` is also provided to mimic the behavior of a Unix Makefile. In this case all shell objects are global, and command line arguments will cause the script to execute only the corresponding function in the global `target` object. To avoid redundant calls, target functions are executed only once per script.\n\nExample (CoffeeScript):\n\n```coffeescript\nrequire \'shelljs/make\'\n\ntarget.all = ->\n target.bundle()\n target.docs()\n\ntarget.bundle = ->\n cd __dirname\n mkdir \'build\'\n cd \'lib\'\n (cat \'*.js\').to \'../build/output.js\'\n\ntarget.docs = ->\n cd __dirname\n mkdir \'docs\'\n cd \'lib\'\n for file in ls \'*.js\'\n text = grep \'//@\', file # extract special comments\n text.replace \'//@\', \'\' # remove comment tags\n text.to \'docs/my_docs.md\'\n```\n\nTo run the target `all`, call the above script without arguments: `$ node make`. To run the target `docs`: `$ node make docs`, and so on.\n\n\n\n\n\n\n## Command reference\n\n\nAll commands run synchronously, unless otherwise stated.\n\n\n### cd(\'dir\')\nChanges to directory `dir` for the duration of the script\n\n\n### pwd()\nReturns the current directory.\n\n\n### ls([options ,] path [,path ...])\n### ls([options ,] path_array)\nAvailable options:\n\n+ `-R`: recursive\n+ `-A`: all files (include files beginning with `.`, except for `.` and `..`)\n\nExamples:\n\n```javascript\nls(\'projs/*.js\');\nls(\'-R\', \'/users/me\', \'/tmp\');\nls(\'-R\', [\'/users/me\', \'/tmp\']); // same as above\n```\n\nReturns array of files in the given path, or in current directory if no path provided.\n\n\n### find(path [,path ...])\n### find(path_array)\nExamples:\n\n```javascript\nfind(\'src\', \'lib\');\nfind([\'src\', \'lib\']); // same as above\nfind(\'.\').filter(function(file) { return file.match(/\\.js$/); });\n```\n\nReturns array of all files (however deep) in the given paths.\n\nThe main difference from `ls(\'-R\', path)` is that the resulting file names\ninclude the base directories, e.g. `lib/resources/file1` instead of just `file1`.\n\n\n### cp([options ,] source [,source ...], dest)\n### cp([options ,] source_array, dest)\nAvailable options:\n\n+ `-f`: force\n+ `-r, -R`: recursive\n\nExamples:\n\n```javascript\ncp(\'file1\', \'dir1\');\ncp(\'-Rf\', \'/tmp/*\', \'/usr/local/*\', \'/home/tmp\');\ncp(\'-Rf\', [\'/tmp/*\', \'/usr/local/*\'], \'/home/tmp\'); // same as above\n```\n\nCopies files. The wildcard `*` is accepted.\n\n\n### rm([options ,] file [, file ...])\n### rm([options ,] file_array)\nAvailable options:\n\n+ `-f`: force\n+ `-r, -R`: recursive\n\nExamples:\n\n```javascript\nrm(\'-rf\', \'/tmp/*\');\nrm(\'some_file.txt\', \'another_file.txt\');\nrm([\'some_file.txt\', \'another_file.txt\']); // same as above\n```\n\nRemoves files. The wildcard `*` is accepted.\n\n\n### mv(source [, source ...], dest\')\n### mv(source_array, dest\')\nAvailable options:\n\n+ `f`: force\n\nExamples:\n\n```javascript\nmv(\'-f\', \'file\', \'dir/\');\nmv(\'file1\', \'file2\', \'dir/\');\nmv([\'file1\', \'file2\'], \'dir/\'); // same as above\n```\n\nMoves files. The wildcard `*` is accepted.\n\n\n### mkdir([options ,] dir [, dir ...])\n### mkdir([options ,] dir_array)\nAvailable options:\n\n+ `p`: full path (will create intermediate dirs if necessary)\n\nExamples:\n\n```javascript\nmkdir(\'-p\', \'/tmp/a/b/c/d\', \'/tmp/e/f/g\');\nmkdir(\'-p\', [\'/tmp/a/b/c/d\', \'/tmp/e/f/g\']); // same as above\n```\n\nCreates directories.\n\n\n### test(expression)\nAvailable expression primaries:\n\n+ `\'-b\', \'path\'`: true if path is a block device\n+ `\'-c\', \'path\'`: true if path is a character device\n+ `\'-d\', \'path\'`: true if path is a directory\n+ `\'-e\', \'path\'`: true if path exists\n+ `\'-f\', \'path\'`: true if path is a regular file\n+ `\'-L\', \'path\'`: true if path is a symboilc link\n+ `\'-p\', \'path\'`: true if path is a pipe (FIFO)\n+ `\'-S\', \'path\'`: true if path is a socket\n\nExamples:\n\n```javascript\nif (test(\'-d\', path)) { /* do something with dir */ };\nif (!test(\'-f\', path)) continue; // skip if it\'s a regular file\n```\n\nEvaluates expression using the available primaries and returns corresponding value.\n\n\n### cat(file [, file ...])\n### cat(file_array)\n\nExamples:\n\n```javascript\nvar str = cat(\'file*.txt\');\nvar str = cat(\'file1\', \'file2\');\nvar str = cat([\'file1\', \'file2\']); // same as above\n```\n\nReturns a string containing the given file, or a concatenated string\ncontaining the files if more than one file is given (a new line character is\nintroduced between each file). Wildcard `*` accepted.\n\n\n### \'string\'.to(file)\n\nExamples:\n\n```javascript\ncat(\'input.txt\').to(\'output.txt\');\n```\n\nAnalogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as\nthose returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_\n\n\n### \'string\'.toEnd(file)\n\nExamples:\n\n```javascript\ncat(\'input.txt\').toEnd(\'output.txt\');\n```\n\nAnalogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as\nthose returned by `cat`, `grep`, etc).\n\n\n### sed([options ,] search_regex, replacement, file)\nAvailable options:\n\n+ `-i`: Replace contents of \'file\' in-place. _Note that no backups will be created!_\n\nExamples:\n\n```javascript\nsed(\'-i\', \'PROGRAM_VERSION\', \'v0.1.3\', \'source.js\');\nsed(/.*DELETE_THIS_LINE.*\\n/, \'\', \'source.js\');\n```\n\nReads an input string from `file` and performs a JavaScript `replace()` on the input\nusing the given search regex and replacement string or function. Returns the new string after replacement.\n\n\n### grep([options ,] regex_filter, file [, file ...])\n### grep([options ,] regex_filter, file_array)\nAvailable options:\n\n+ `-v`: Inverse the sense of the regex and print the lines not matching the criteria.\n\nExamples:\n\n```javascript\ngrep(\'-v\', \'GLOBAL_VARIABLE\', \'*.js\');\ngrep(\'GLOBAL_VARIABLE\', \'*.js\');\n```\n\nReads input string from given files and returns a string containing all lines of the\nfile that match the given `regex_filter`. Wildcard `*` accepted.\n\n\n### which(command)\n\nExamples:\n\n```javascript\nvar nodeExec = which(\'node\');\n```\n\nSearches for `command` in the system\'s PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions.\nReturns string containing the absolute path to the command.\n\n\n### echo(string [,string ...])\n\nExamples:\n\n```javascript\necho(\'hello world\');\nvar str = echo(\'hello world\');\n```\n\nPrints string to stdout, and returns string with additional utility methods\nlike `.to()`.\n\n\n### pushd([options,] [dir | \'-N\' | \'+N\'])\n\nAvailable options:\n\n+ `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated.\n\nArguments:\n\n+ `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`.\n+ `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.\n+ `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack.\n\nExamples:\n\n```javascript\n// process.cwd() === \'/usr\'\npushd(\'/etc\'); // Returns /etc /usr\npushd(\'+1\'); // Returns /usr /etc\n```\n\nSave the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack.\n\n### popd([options,] [\'-N\' | \'+N\'])\n\nAvailable options:\n\n+ `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated.\n\nArguments:\n\n+ `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero.\n+ `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero.\n\nExamples:\n\n```javascript\necho(process.cwd()); // \'/usr\'\npushd(\'/etc\'); // \'/etc /usr\'\necho(process.cwd()); // \'/etc\'\npopd(); // \'/usr\'\necho(process.cwd()); // \'/usr\'\n```\n\nWhen no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack.\n\n### dirs([options | \'+N\' | \'-N\'])\n\nAvailable options:\n\n+ `-c`: Clears the directory stack by deleting all of the elements.\n\nArguments:\n\n+ `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero.\n+ `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero.\n\nDisplay the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified.\n\nSee also: pushd, popd\n\n\n### ln(options, source, dest)\n### ln(source, dest)\nAvailable options:\n\n+ `s`: symlink\n+ `f`: force\n\nExamples:\n\n```javascript\nln(\'file\', \'newlink\');\nln(\'-sf\', \'file\', \'existing\');\n```\n\nLinks source to dest. Use -f to force the link, should dest already exist.\n\n\n### exit(code)\nExits the current process with the given exit code.\n\n### env[\'VAR_NAME\']\nObject containing environment variables (both getter and setter). Shortcut to process.env.\n\n### exec(command [, options] [, callback])\nAvailable options (all `false` by default):\n\n+ `async`: Asynchronous execution. Defaults to true if a callback is provided.\n+ `silent`: Do not echo program output to console.\n\nExamples:\n\n```javascript\nvar version = exec(\'node --version\', {silent:true}).output;\n\nvar child = exec(\'some_long_running_process\', {async:true});\nchild.stdout.on(\'data\', function(data) {\n /* ... do something with data ... */\n});\n\nexec(\'some_long_running_process\', function(code, output) {\n console.log(\'Exit code:\', code);\n console.log(\'Program output:\', output);\n});\n```\n\nExecutes the given `command` _synchronously_, unless otherwise specified.\nWhen in synchronous mode returns the object `{ code:..., output:... }`, containing the program\'s\n`output` (stdout + stderr) and its exit `code`. Otherwise returns the child process object, and\nthe `callback` gets the arguments `(code, output)`.\n\n**Note:** For long-lived processes, it\'s best to run `exec()` asynchronously as\nthe current synchronous implementation uses a lot of CPU. This should be getting\nfixed soon.\n\n\n### chmod(octal_mode || octal_string, file)\n### chmod(symbolic_mode, file)\n\nAvailable options:\n\n+ `-v`: output a diagnostic for every file processed\n+ `-c`: like verbose but report only when a change is made\n+ `-R`: change files and directories recursively\n\nExamples:\n\n```javascript\nchmod(755, \'/Users/brandon\');\nchmod(\'755\', \'/Users/brandon\'); // same as above\nchmod(\'u+x\', \'/Users/brandon\');\n```\n\nAlters the permissions of a file or directory by either specifying the\nabsolute permissions in octal form or expressing the changes in symbols.\nThis command tries to mimic the POSIX behavior as much as possible.\nNotable exceptions:\n\n+ In symbolic modes, \'a-r\' and \'-r\' are identical. No consideration is\n given to the umask.\n+ There is no "quiet" option since default behavior is to run silent.\n\n\n## Non-Unix commands\n\n\n### tempdir()\n\nExamples:\n\n```javascript\nvar tmp = tempdir(); // "/tmp" for most *nix platforms\n```\n\nSearches and returns string containing a writeable, platform-dependent temporary directory.\nFollows Python\'s [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir).\n\n\n### error()\nTests if error occurred in the last command. Returns `null` if no error occurred,\notherwise returns string explaining the error\n\n\n## Configuration\n\n\n### config.silent\nExample:\n\n```javascript\nvar silentState = config.silent; // save old silent state\nconfig.silent = true;\n/* ... */\nconfig.silent = silentState; // restore old silent state\n```\n\nSuppresses all command output if `true`, except for `echo()` calls.\nDefault is `false`.\n\n### config.fatal\nExample:\n\n```javascript\nconfig.fatal = true;\ncp(\'this_file_does_not_exist\', \'/dev/null\'); // dies here\n/* more commands... */\n```\n\nIf `true` the script will die on errors. Default is `false`.\n', 463 silly resolved readmeFilename: 'README.md', 463 silly resolved _id: 'shelljs@0.3.0', 463 silly resolved _from: 'shelljs@0.3.x' }, 463 silly resolved { name: 'underscore', 463 silly resolved description: 'JavaScript\'s functional programming helper library.', 463 silly resolved homepage: 'http://underscorejs.org', 463 silly resolved keywords: [ 'util', 'functional', 'server', 'client', 'browser' ], 463 silly resolved author: { name: 'Jeremy Ashkenas', email: 'jeremy@documentcloud.org' }, 463 silly resolved repository: 463 silly resolved { type: 'git', 463 silly resolved url: 'git://github.com/jashkenas/underscore.git' }, 463 silly resolved main: 'underscore.js', 463 silly resolved version: '1.6.0', 463 silly resolved devDependencies: { docco: '0.6.x', phantomjs: '1.9.0-1', 'uglify-js': '2.4.x' }, 463 silly resolved scripts: 463 silly resolved { test: 'phantomjs test/vendor/runner.js test/index.html?noglobals=true', 463 silly resolved build: 'uglifyjs underscore.js -c "evaluate=false" --comments "/ .*/" -m --source-map underscore-min.map -o underscore-min.js', 463 silly resolved doc: 'docco underscore.js' }, 463 silly resolved licenses: [ [Object] ], 463 silly resolved files: [ 'underscore.js', 'underscore-min.js', 'LICENSE' ], 463 silly resolved readme: ' __\n /\\ \\ __\n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____\n /\\ \\/\\ \\ /\' _ `\\ /\'_ \\ /\'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/\'__`\\ \\/\\ \\ /\',__\\\n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n \\ \\____/\n \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nUnderscore is an open-sourced component of DocumentCloud:\nhttps://github.com/documentcloud\n\nMany thanks to our contributors:\nhttps://github.com/jashkenas/underscore/contributors\n', 463 silly resolved readmeFilename: 'README.md', 463 silly resolved _id: 'underscore@1.6.0', 463 silly resolved _from: 'underscore@1.6.x' }, 463 silly resolved { author: 463 silly resolved { name: 'Isaac Z. Schlueter', 463 silly resolved email: 'i@izs.me', 463 silly resolved url: 'http://blog.izs.me' }, 463 silly resolved name: 'minimatch', 463 silly resolved description: 'a glob matcher in javascript', 463 silly resolved version: '0.3.0', 463 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/minimatch.git' }, 463 silly resolved main: 'minimatch.js', 463 silly resolved scripts: { test: 'tap test/*.js' }, 463 silly resolved engines: { node: '*' }, 463 silly resolved dependencies: { 'lru-cache': '2', sigmund: '~1.0.0' }, 463 silly resolved devDependencies: { tap: '' }, 463 silly resolved license: 463 silly resolved { type: 'MIT', 463 silly resolved url: 'http://github.com/isaacs/minimatch/raw/master/LICENSE' }, 463 silly resolved readme: '# minimatch\n\nA minimal matching utility.\n\n[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch)\n\n\nThis is the matching library used internally by npm.\n\nEventually, it will replace the C binding in node-glob.\n\nIt works by converting glob expressions into JavaScript `RegExp`\nobjects.\n\n## Usage\n\n```javascript\nvar minimatch = require("minimatch")\n\nminimatch("bar.foo", "*.foo") // true!\nminimatch("bar.foo", "*.bar") // false!\nminimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy!\n```\n\n## Features\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* "Globstar" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n\n## Minimatch Class\n\nCreate a minimatch object by instanting the `minimatch.Minimatch` class.\n\n```javascript\nvar Minimatch = require("minimatch").Minimatch\nvar mm = new Minimatch(pattern, options)\n```\n\n### Properties\n\n* `pattern` The original pattern the minimatch object represents.\n* `options` The options supplied to the constructor.\n* `set` A 2-dimensional array of regexp or string expressions.\n Each row in the\n array corresponds to a brace-expanded pattern. Each item in the row\n corresponds to a single path-part. For example, the pattern\n `{a,b/c}/d` would expand to a set of patterns like:\n\n [ [ a, d ]\n , [ b, c, d ] ]\n\n If a portion of the pattern doesn\'t have any "magic" in it\n (that is, it\'s something like `"foo"` rather than `fo*o?`), then it\n will be left as a string rather than converted to a regular\n expression.\n\n* `regexp` Created by the `makeRe` method. A single regular expression\n expressing the entire pattern. This is useful in cases where you wish\n to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.\n* `negate` True if the pattern is negated.\n* `comment` True if the pattern is a comment.\n* `empty` True if the pattern is `""`.\n\n### Methods\n\n* `makeRe` Generate the `regexp` member if necessary, and return it.\n Will return `false` if the pattern is invalid.\n* `match(fname)` Return true if the filename matches the pattern, or\n false otherwise.\n* `matchOne(fileArray, patternArray, partial)` Take a `/`-split\n filename, and match it against a single row in the `regExpSet`. This\n method is mainly for internal use, but is exposed so that it can be\n used by a glob-walker that needs to avoid excessive filesystem calls.\n\nAll other methods are internal, and will be called as necessary.\n\n## Functions\n\nThe top-level exported function has a `cache` property, which is an LRU\ncache set to store 100 items. So, calling these methods repeatedly\nwith the same pattern and options will use the same Minimatch object,\nsaving the cost of parsing it multiple times.\n\n### minimatch(path, pattern, options)\n\nMain export. Tests a path against the pattern using the options.\n\n```javascript\nvar isJS = minimatch(file, "*.js", { matchBase: true })\n```\n\n### minimatch.filter(pattern, options)\n\nReturns a function that tests its\nsupplied argument, suitable for use with `Array.filter`. Example:\n\n```javascript\nvar javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true}))\n```\n\n### minimatch.match(list, pattern, options)\n\nMatch against the list of\nfiles, in the style of fnmatch or glob. If nothing is matched, and\noptions.nonull is set, then return a list containing the pattern itself.\n\n```javascript\nvar javascripts = minimatch.match(fileList, "*.js", {matchBase: true}))\n```\n\n### minimatch.makeRe(pattern, options)\n\nMake a regular expression object from the pattern.\n\n## Options\n\nAll options are `false` by default.\n\n### debug\n\nDump a ton of stuff to stderr.\n\n### nobrace\n\nDo not expand `{a,b}` and `{1..3}` brace sets.\n\n### noglobstar\n\nDisable `**` matching against multiple folder names.\n\n### dot\n\nAllow patterns to match filenames starting with a period, even if\nthe pattern does not explicitly have a period in that spot.\n\nNote that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`\nis set.\n\n### noext\n\nDisable "extglob" style patterns like `+(a|b)`.\n\n### nocase\n\nPerform a case-insensitive match.\n\n### nonull\n\nWhen a match is not found by `minimatch.match`, return a list containing\nthe pattern itself if this option is set. When not set, an empty list\nis returned if there are no matches.\n\n### matchBase\n\nIf set, then patterns without slashes will be matched\nagainst the basename of the path if it contains slashes. For example,\n`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.\n\n### nocomment\n\nSuppress the behavior of treating `#` at the start of a pattern as a\ncomment.\n\n### nonegate\n\nSuppress the behavior of treating a leading `!` character as negation.\n\n### flipNegate\n\nReturns from negate expressions the same as if they were not negated.\n(Ie, true on a hit, false on a miss.)\n\n\n## Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between minimatch and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated. Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally. This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`. Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything. Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set. This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part. That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not.\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen minimatch.match returns the pattern as-provided, rather than\ninterpreting the character escapes. For example,\n`minimatch.match([], "\\\\*a\\\\?")` will return `"\\\\*a\\\\?"` rather than\n`"*a?"`. This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern. Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity. Since those two are valid, matching proceeds.\n', 463 silly resolved readmeFilename: 'README.md', 463 silly resolved _id: 'minimatch@0.3.0', 463 silly resolved _from: 'minimatch@0.x.x' }, 463 silly resolved { name: 'htmlparser2', 463 silly resolved description: 'Fast & forgiving HTML/XML/RSS parser', 463 silly resolved version: '3.7.2', 463 silly resolved author: { name: 'Felix Boehm', email: 'me@feedic.com' }, 463 silly resolved keywords: [ 'html', 'parser', 'streams', 'xml', 'dom', 'rss', 'feed', 'atom' ], 463 silly resolved repository: { type: 'git', url: 'git://github.com/fb55/htmlparser2.git' }, 463 silly resolved bugs: 463 silly resolved { mail: 'me@feedic.com', 463 silly resolved url: 'http://github.com/fb55/htmlparser2/issues' }, 463 silly resolved directories: { lib: 'lib/' }, 463 silly resolved main: 'lib/index.js', 463 silly resolved scripts: 463 silly resolved { lcov: 'istanbul cover _mocha --report lcovonly -- -R spec', 463 silly resolved coveralls: 'npm run lint && npm run lcov && (cat coverage/lcov.info | coveralls || exit 0)', 463 silly resolved test: 'mocha && npm run lint', 463 silly resolved lint: 'jshint {lib,test}/*.js test/*/*.js' }, 463 silly resolved dependencies: 463 silly resolved { domhandler: '2.2', 463 silly resolved domutils: '1.5', 463 silly resolved domelementtype: '1', 463 silly resolved 'readable-stream': '1.1', 463 silly resolved entities: '1.0' }, 463 silly resolved devDependencies: 463 silly resolved { mocha: '1', 463 silly resolved 'mocha-lcov-reporter': '*', 463 silly resolved coveralls: '*', 463 silly resolved istanbul: '*', 463 silly resolved jshint: '2' }, 463 silly resolved license: 'MIT', 463 silly resolved jshintConfig: 463 silly resolved { eqeqeq: true, 463 silly resolved freeze: true, 463 silly resolved latedef: 'nofunc', 463 silly resolved noarg: true, 463 silly resolved nonbsp: true, 463 silly resolved quotmark: 'double', 463 silly resolved undef: true, 463 silly resolved unused: true, 463 silly resolved trailing: true, 463 silly resolved eqnull: true, 463 silly resolved proto: true, 463 silly resolved smarttabs: true, 463 silly resolved node: true, 463 silly resolved globals: [Object] }, 463 silly resolved readme: '#htmlparser2 [![NPM version](http://img.shields.io/npm/v/htmlparser2.svg)](https://npmjs.org/package/htmlparser2) [![Downloads](https://img.shields.io/npm/dm/htmlparser2.svg)](https://npmjs.org/package/htmlparser2)\n\n[![Build Status](https://travis-ci.org/fb55/htmlparser2.svg)](http://travis-ci.org/fb55/htmlparser2) [![Coverage](http://img.shields.io/coveralls/fb55/htmlparser2.svg)](https://coveralls.io/r/fb55/htmlparser2)\n\nA forgiving HTML/XML/RSS parser written in JS for NodeJS. The parser can handle streams (chunked data) and supports custom handlers for writing custom DOMs/output.\n\n##Installing\n\tnpm install htmlparser2\n\t\nA live demo of htmlparser2 is available at http://demos.forbeslindesay.co.uk/htmlparser2/\n\n##Usage\n\n```javascript\nvar htmlparser = require("htmlparser2");\nvar parser = new htmlparser.Parser({\n\tonopentag: function(name, attribs){\n\t\tif(name === "script" && attribs.type === "text/javascript"){\n\t\t\tconsole.log("JS! Hooray!");\n\t\t}\n\t},\n\tontext: function(text){\n\t\tconsole.log("-->", text);\n\t},\n\tonclosetag: function(tagname){\n\t\tif(tagname === "script"){\n\t\t\tconsole.log("That\'s it?!");\n\t\t}\n\t}\n});\nparser.write("Xyz