Skip to content

Instantly share code, notes, and snippets.

@jheimbach
Created November 13, 2013 21:26
Show Gist options
  • Select an option

  • Save jheimbach/7456689 to your computer and use it in GitHub Desktop.

Select an option

Save jheimbach/7456689 to your computer and use it in GitHub Desktop.
npm-debug.log for dalekjs-browser-chrome
0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'install' ]
2 info using npm@1.3.14
3 info using node@v0.10.22
4 verbose node symlink /usr/bin/node
5 verbose readDependencies using package.json deps
6 verbose install where, deps [ '/var/www/dalekjs_testcase',
6 verbose install [ 'grunt',
6 verbose install 'matchdep',
6 verbose install 'grunt-contrib-connect',
6 verbose install 'dalekjs',
6 verbose install 'grunt-shell',
6 verbose install 'dalek-browser-firefox',
6 verbose install 'dalek-browser-chrome' ] ]
7 info preinstall dalekjs_testcase@0.1.0
8 verbose readDependencies using package.json deps
9 verbose already installed skipping dalekjs@0.0.8 /var/www/dalekjs_testcase
10 verbose already installed skipping grunt@~0.4.1 /var/www/dalekjs_testcase
11 verbose already installed skipping matchdep@~0.1.1 /var/www/dalekjs_testcase
12 verbose already installed skipping grunt-contrib-connect@~0.5.0 /var/www/dalekjs_testcase
13 verbose already installed skipping grunt-shell@~0.3.1 /var/www/dalekjs_testcase
14 verbose already installed skipping dalek-browser-firefox@0.0.5 /var/www/dalekjs_testcase
15 verbose cache add [ 'dalek-browser-chrome@~0.0.8', null ]
16 verbose cache add name=undefined spec="dalek-browser-chrome@~0.0.8" args=["dalek-browser-chrome@~0.0.8",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: 'dalek-browser-chrome@~0.0.8',
17 verbose parsed url path: 'dalek-browser-chrome@~0.0.8',
17 verbose parsed url href: 'dalek-browser-chrome@~0.0.8' }
18 verbose cache add name="dalek-browser-chrome" spec="~0.0.8" args=["dalek-browser-chrome","~0.0.8"]
19 verbose parsed url { protocol: null,
19 verbose parsed url slashes: null,
19 verbose parsed url auth: null,
19 verbose parsed url host: null,
19 verbose parsed url port: null,
19 verbose parsed url hostname: null,
19 verbose parsed url hash: null,
19 verbose parsed url search: null,
19 verbose parsed url query: null,
19 verbose parsed url pathname: '~0.0.8',
19 verbose parsed url path: '~0.0.8',
19 verbose parsed url href: '~0.0.8' }
20 verbose addNamed [ 'dalek-browser-chrome', '~0.0.8' ]
21 verbose addNamed [ null, '>=0.0.8-0 <0.1.0-0' ]
22 silly lockFile ecf439e6-dalek-browser-chrome-0-0-8 dalek-browser-chrome@~0.0.8
23 verbose lock dalek-browser-chrome@~0.0.8 /home/dev/.npm/ecf439e6-dalek-browser-chrome-0-0-8.lock
24 silly addNameRange { name: 'dalek-browser-chrome',
24 silly addNameRange range: '>=0.0.8-0 <0.1.0-0',
24 silly addNameRange hasData: false }
25 verbose url raw dalek-browser-chrome
26 verbose url resolving [ 'https://registry.npmjs.org/', './dalek-browser-chrome' ]
27 verbose url resolved https://registry.npmjs.org/dalek-browser-chrome
28 info trying registry request attempt 1 at 22:18:38
29 verbose etag "1DJ2BUMVO13GVVKGN86T7WKY4"
30 http GET https://registry.npmjs.org/dalek-browser-chrome
31 http 304 https://registry.npmjs.org/dalek-browser-chrome
32 silly registry.get cb [ 304,
32 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
32 silly registry.get etag: '"1DJ2BUMVO13GVVKGN86T7WKY4"',
32 silly registry.get date: 'Wed, 13 Nov 2013 21:18:38 GMT',
32 silly registry.get 'content-length': '0' } ]
33 verbose etag dalek-browser-chrome from cache
34 silly addNameRange number 2 { name: 'dalek-browser-chrome',
34 silly addNameRange range: '>=0.0.8-0 <0.1.0-0',
34 silly addNameRange hasData: true }
35 silly addNameRange versions [ 'dalek-browser-chrome',
35 silly addNameRange [ '0.0.1',
35 silly addNameRange '0.0.2',
35 silly addNameRange '0.0.3',
35 silly addNameRange '0.0.4',
35 silly addNameRange '0.0.5',
35 silly addNameRange '0.0.6',
35 silly addNameRange '0.0.7',
35 silly addNameRange '0.0.8' ] ]
36 verbose addNamed [ 'dalek-browser-chrome', '0.0.8' ]
37 verbose addNamed [ '0.0.8', '0.0.8' ]
38 silly lockFile 3651a1a6-dalek-browser-chrome-0-0-8 dalek-browser-chrome@0.0.8
39 verbose lock dalek-browser-chrome@0.0.8 /home/dev/.npm/3651a1a6-dalek-browser-chrome-0-0-8.lock
40 silly lockFile 3651a1a6-dalek-browser-chrome-0-0-8 dalek-browser-chrome@0.0.8
41 silly lockFile 3651a1a6-dalek-browser-chrome-0-0-8 dalek-browser-chrome@0.0.8
42 silly lockFile ecf439e6-dalek-browser-chrome-0-0-8 dalek-browser-chrome@~0.0.8
43 silly lockFile ecf439e6-dalek-browser-chrome-0-0-8 dalek-browser-chrome@~0.0.8
44 silly resolved [ { name: 'dalek-browser-chrome',
44 silly resolved version: '0.0.8',
44 silly resolved description: 'Google Chrome bindings for DalekJS',
44 silly resolved homepage: 'http://dalekjs.com',
44 silly resolved main: './index.js',
44 silly resolved dependencies:
44 silly resolved { 'adm-zip': '~0.4.3',
44 silly resolved kew: '~0.3.0',
44 silly resolved ncp: '~0.4.2',
44 silly resolved npmconf: '~0.1.5',
44 silly resolved rimraf: '~2.2.2',
44 silly resolved q: '~0.9.7',
44 silly resolved portscanner: '~0.1.3' },
44 silly resolved devDependencies:
44 silly resolved { grunt: '~0.4.1',
44 silly resolved 'grunt-contrib-clean': '~0.5.0',
44 silly resolved 'grunt-contrib-jshint': '~0.7.1',
44 silly resolved 'grunt-contrib-yuidoc': '~0.5.0',
44 silly resolved 'grunt-contrib-compress': '~0.5.2',
44 silly resolved 'grunt-mocha-test': '~0.7.0',
44 silly resolved 'grunt-complexity': '~0.1.3',
44 silly resolved 'grunt-plato': '~0.2.1',
44 silly resolved 'grunt-documantix': '~0.0.4',
44 silly resolved 'grunt-include-replace': '~1.1.1',
44 silly resolved 'grunt-git-contributors': '~0.1.5',
44 silly resolved 'grunt-conventional-changelog': '~1.0.0',
44 silly resolved 'grunt-concurrent': '~0.4.1',
44 silly resolved 'grunt-bump': '~0.0.11',
44 silly resolved 'load-grunt-tasks': '~0.2.0',
44 silly resolved 'dalek-build-tools': '~0.0.2',
44 silly resolved 'time-grunt': '~0.2.1',
44 silly resolved blanket: '~1.1.5',
44 silly resolved chai: '~1.8.1' },
44 silly resolved scripts: { test: 'grunt test', install: 'node install.js' },
44 silly resolved repository:
44 silly resolved { type: 'git',
44 silly resolved url: 'https://github.com/dalekjs/dalek-browser-chrome.git' },
44 silly resolved bugs: { url: 'https://github.com/dalekjs/dalek-browser-chrome/issues' },
44 silly resolved keywords: [ 'dalekjs', 'dalek-browser-plugin', 'chrome' ],
44 silly resolved author:
44 silly resolved { name: 'Sebastian Golasch',
44 silly resolved email: 'public@asciidisco.com',
44 silly resolved url: 'http://asciidisco.com' },
44 silly resolved licenses: [ [Object] ],
44 silly resolved engine: { node: '>=0.8' },
44 silly resolved readme: 'dalek-browser-chrome\n=====================\n\n> DalekJS browser plugin for Google Chrome\n\n[![Build Status](https://travis-ci.org/dalekjs/dalek-browser-chrome.png)](https://travis-ci.org/dalekjs/dalek-browser-chrome)\n[![Build Status](https://drone.io/github.com/dalekjs/dalek-browser-chrome/status.png)](https://drone.io/github.com/dalekjs/dalek-browser-chrome/latest)\n[![Dependency Status](https://david-dm.org/dalekjs/dalek-browser-chrome.png)](https://david-dm.org/dalekjs/dalek-browser-chrome)\n[![devDependency Status](https://david-dm.org/dalekjs/dalek-browser-chrome/dev-status.png)](https://david-dm.org/dalekjs/dalek-browser-chrome#info=devDependencies)\n[![NPM version](https://badge.fury.io/js/dalek-browser-chrome.png)](http://badge.fury.io/js/dalek-browser-chrome)\n[![Coverage](http://dalekjs.com/package/dalek-browser-chrome/master/coverage/coverage.png)](http://dalekjs.com/package/dalek-browser-chrome/master/coverage/index.html)\n[![unstable](https://rawgithub.com/hughsk/stability-badges/master/dist/unstable.svg)](https://github.com/hughsk/stability-badges)\n\n[![NPM](https://nodei.co/npm/dalek-browser-chrome.png)](https://nodei.co/npm/dalek-browser-chrome/)\n[![NPM](https://nodei.co/npm-dl/dalek-browser-chrome.png)](https://nodei.co/npm/dalek-browser-chrome/)\n\n## Ressources\n\n[API Docs](http://dalekjs.com/package/dalek-browser-chrome/master/api/index.html) -\n[Trello](https://trello.com/b/xhw6Jv7A/dalek-browser-chrome) -\n[Code coverage](http://dalekjs.com/package/dalek-browser-chrome/master/coverage/index.html) -\n[Code complexity](http://dalekjs.com/package/dalek-browser-chrome/master/complexity/index.html) -\n[Contributing](https://github.com/dalekjs/dalek-browser-chrome/blob/master/CONTRIBUTING.md) -\n[User Docs](http://dalekjs.com/docs/chrome.html) -\n[Homepage](http://dalekjs.com) -\n[Twitter](http://twitter.com/dalekjs)\n\n## Docs\n\nThis module is a browser plugin for [DalekJS](//github.com/dalekjs/dalek).\nIt provides all a WebDriverServer & browser launcher for Google Chrome.\n\nThe browser plugin can be installed with the following command:\n\n```\n$ npm install dalek-browser-chrome --save-dev\n```\n\nYou can use the browser plugin by adding a config option to the your [Dalekfile](/pages/config.html)\n\n```\n"browser": ["chrome"]\n```\n\nOr you can tell Dalek that it should test in this browser via the command line:\n\n```\n$ dalek mytest.js -b chrome\n```\n\nThe Webdriver Server tries to open Port 9002 by default,\nif this port is blocked, it tries to use a port between 9003 & 9092\nYou can specifiy a different port from within your [Dalekfile](/pages/config.html) like so:\n\n```\n"browsers": {\n "chrome": {\n "port": 5555 \n }\n}\n```\n\nIt is also possible to specify a range of ports:\n\n```\n"browsers": {\n "chrome": {\n "portRange": [6100, 6120] \n }\n}\n```\n\nIf you would like to test Chrome Canary oder Chromium releases, you can simply apply a snd. argument,\nwhich defines the browser type:\n\n```\n$ dalek mytest.js -b chrome:canary\n```\n\nfor canary, and if you would like to use chromium, just append `:chromium`:\n\n```\n$ dalek mytest.js -b chrome:chromium\n```\n\nThis will only work if you installed your browser in the default locations,\nif the browsers binary is located in a non default location, you are able to specify\nits location in your [Dalekfile](/pages/config.html):\n\n```javascript\n"browsers": {\n "chrome": {\n "binary": "/Applications/Custom Located Chrome.app/MacOS/Contents/Chrome" \n }\n}\n```\n\nThis also works for the canary & chromium builds\n\n```javascript\n"browsers": {\n "chrome": {\n "binary": "/Applications/Custom Located Chrome.app/MacOS/Contents/Chrome" \n }\n}\n```\n\n```\n$ dalek mytest.js -b chrome\n```\n\n## Help Is Just A Click Away\n\n### #dalekjs on FreeNode.net IRC\n\nJoin the `#daleksjs` channel on [FreeNode.net](http://freenode.net) to ask questions and get help.\n\n### [Google Group Mailing List](https://groups.google.com/forum/#!forum/dalekjs)\n\nGet announcements for new releases, share your projects and ideas that are\nusing DalekJS, and join in open-ended discussion that does not fit in\nto the Github issues list or StackOverflow Q&A.\n\n**For help with syntax, specific questions on how to implement a feature\nusing DalekJS, and other Q&A items, use StackOverflow.**\n\n### [StackOverflow](http://stackoverflow.com/questions/tagged/dalekjs)\n\nAsk questions about using DalekJS in specific scenarios, with\nspecific features. For example, help with syntax, understanding how a feature works and\nhow to override that feature, browser specific problems and so on.\n\nQuestions on StackOverflow often turn in to blog posts or issues.\n\n### [Github Issues](//github.com/dalekjs/dalek-browser-chrome/issues)\n\nReport issues with DalekJS, submit pull requests to fix problems, or to\ncreate summarized and documented feature requests (preferably with pull\nrequests that implement the feature).\n\n**Please don\'t ask questions or seek help in the issues list.** There are\nother, better channels for seeking assistance, like StackOverflow and the\nGoogle Groups mailing list.\n\n![DalekJS](https://raw.github.com/dalekjs/dalekjs.com/master/img/logo.png)\n\n## Legal FooBar (MIT License)\n\nCopyright (c) 2013 Sebastian Golasch\n\nDistributed under [MIT license](https://github.com/dalekjs/dalek-browser-chrome/blob/master/LICENSE-MIT)\n\n',
44 silly resolved readmeFilename: 'README.md',
44 silly resolved _id: 'dalek-browser-chrome@0.0.8',
44 silly resolved _from: 'dalek-browser-chrome@~0.0.8' } ]
45 info install dalek-browser-chrome@0.0.8 into /var/www/dalekjs_testcase
46 info installOne dalek-browser-chrome@0.0.8
47 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome unbuild
48 verbose tar unpack /home/dev/.npm/dalek-browser-chrome/0.0.8/package.tgz
49 silly lockFile 13223c66-ode-modules-dalek-browser-chrome tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome
50 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome /home/dev/.npm/13223c66-ode-modules-dalek-browser-chrome.lock
51 silly lockFile 5571ae80-browser-chrome-0-0-8-package-tgz tar:///home/dev/.npm/dalek-browser-chrome/0.0.8/package.tgz
52 verbose lock tar:///home/dev/.npm/dalek-browser-chrome/0.0.8/package.tgz /home/dev/.npm/5571ae80-browser-chrome-0-0-8-package-tgz.lock
53 silly gunzTarPerm modes [ '755', '644' ]
54 silly gunzTarPerm extractEntry package.json
55 silly gunzTarPerm extractEntry .npmignore
56 silly gunzTarPerm extractEntry README.md
57 silly gunzTarPerm extractEntry Gruntfile.js
58 silly gunzTarPerm extractEntry index.js
59 silly gunzTarPerm extractEntry install.js
60 silly gunzTarPerm extractEntry CONTRIBUTING.md
61 silly gunzTarPerm extractEntry CONTRIBUTORS.md
62 silly gunzTarPerm extractEntry .gitattributes
63 silly gunzTarPerm extractEntry LICENSE-MIT
64 silly gunzTarPerm extractEntry .jshintrc
65 silly gunzTarPerm extractEntry .editorconfig
66 silly gunzTarPerm extractEntry .travis.yml
67 silly gunzTarPerm extractEntry lib/chromedriver.js
68 silly gunzTarPerm extractEntry lib/bin/info.txt
69 silly gunzTarPerm extractEntry CHANGELOG.md
70 silly gunzTarPerm extractEntry test/index_TEST.js
71 silly lockFile 13223c66-ode-modules-dalek-browser-chrome tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome
72 silly lockFile 13223c66-ode-modules-dalek-browser-chrome tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome
73 silly lockFile 5571ae80-browser-chrome-0-0-8-package-tgz tar:///home/dev/.npm/dalek-browser-chrome/0.0.8/package.tgz
74 silly lockFile 5571ae80-browser-chrome-0-0-8-package-tgz tar:///home/dev/.npm/dalek-browser-chrome/0.0.8/package.tgz
75 info preinstall dalek-browser-chrome@0.0.8
76 verbose readDependencies using package.json deps
77 verbose readDependencies using package.json deps
78 verbose cache add [ 'adm-zip@~0.4.3', null ]
79 verbose cache add name=undefined spec="adm-zip@~0.4.3" args=["adm-zip@~0.4.3",null]
80 verbose parsed url { protocol: null,
80 verbose parsed url slashes: null,
80 verbose parsed url auth: null,
80 verbose parsed url host: null,
80 verbose parsed url port: null,
80 verbose parsed url hostname: null,
80 verbose parsed url hash: null,
80 verbose parsed url search: null,
80 verbose parsed url query: null,
80 verbose parsed url pathname: 'adm-zip@~0.4.3',
80 verbose parsed url path: 'adm-zip@~0.4.3',
80 verbose parsed url href: 'adm-zip@~0.4.3' }
81 verbose cache add name="adm-zip" spec="~0.4.3" args=["adm-zip","~0.4.3"]
82 verbose parsed url { protocol: null,
82 verbose parsed url slashes: null,
82 verbose parsed url auth: null,
82 verbose parsed url host: null,
82 verbose parsed url port: null,
82 verbose parsed url hostname: null,
82 verbose parsed url hash: null,
82 verbose parsed url search: null,
82 verbose parsed url query: null,
82 verbose parsed url pathname: '~0.4.3',
82 verbose parsed url path: '~0.4.3',
82 verbose parsed url href: '~0.4.3' }
83 verbose addNamed [ 'adm-zip', '~0.4.3' ]
84 verbose addNamed [ null, '>=0.4.3-0 <0.5.0-0' ]
85 silly lockFile fd654770-adm-zip-0-4-3 adm-zip@~0.4.3
86 verbose lock adm-zip@~0.4.3 /home/dev/.npm/fd654770-adm-zip-0-4-3.lock
87 verbose cache add [ 'kew@~0.3.0', null ]
88 verbose cache add name=undefined spec="kew@~0.3.0" args=["kew@~0.3.0",null]
89 verbose parsed url { protocol: null,
89 verbose parsed url slashes: null,
89 verbose parsed url auth: null,
89 verbose parsed url host: null,
89 verbose parsed url port: null,
89 verbose parsed url hostname: null,
89 verbose parsed url hash: null,
89 verbose parsed url search: null,
89 verbose parsed url query: null,
89 verbose parsed url pathname: 'kew@~0.3.0',
89 verbose parsed url path: 'kew@~0.3.0',
89 verbose parsed url href: 'kew@~0.3.0' }
90 verbose cache add name="kew" spec="~0.3.0" args=["kew","~0.3.0"]
91 verbose parsed url { protocol: null,
91 verbose parsed url slashes: null,
91 verbose parsed url auth: null,
91 verbose parsed url host: null,
91 verbose parsed url port: null,
91 verbose parsed url hostname: null,
91 verbose parsed url hash: null,
91 verbose parsed url search: null,
91 verbose parsed url query: null,
91 verbose parsed url pathname: '~0.3.0',
91 verbose parsed url path: '~0.3.0',
91 verbose parsed url href: '~0.3.0' }
92 verbose addNamed [ 'kew', '~0.3.0' ]
93 verbose addNamed [ null, '>=0.3.0-0 <0.4.0-0' ]
94 silly lockFile fab8cae9-kew-0-3-0 kew@~0.3.0
95 verbose lock kew@~0.3.0 /home/dev/.npm/fab8cae9-kew-0-3-0.lock
96 verbose cache add [ 'ncp@~0.4.2', null ]
97 verbose cache add name=undefined spec="ncp@~0.4.2" args=["ncp@~0.4.2",null]
98 verbose parsed url { protocol: null,
98 verbose parsed url slashes: null,
98 verbose parsed url auth: null,
98 verbose parsed url host: null,
98 verbose parsed url port: null,
98 verbose parsed url hostname: null,
98 verbose parsed url hash: null,
98 verbose parsed url search: null,
98 verbose parsed url query: null,
98 verbose parsed url pathname: 'ncp@~0.4.2',
98 verbose parsed url path: 'ncp@~0.4.2',
98 verbose parsed url href: 'ncp@~0.4.2' }
99 verbose cache add name="ncp" spec="~0.4.2" args=["ncp","~0.4.2"]
100 verbose parsed url { protocol: null,
100 verbose parsed url slashes: null,
100 verbose parsed url auth: null,
100 verbose parsed url host: null,
100 verbose parsed url port: null,
100 verbose parsed url hostname: null,
100 verbose parsed url hash: null,
100 verbose parsed url search: null,
100 verbose parsed url query: null,
100 verbose parsed url pathname: '~0.4.2',
100 verbose parsed url path: '~0.4.2',
100 verbose parsed url href: '~0.4.2' }
101 verbose addNamed [ 'ncp', '~0.4.2' ]
102 verbose addNamed [ null, '>=0.4.2-0 <0.5.0-0' ]
103 silly lockFile 1f31aeaa-ncp-0-4-2 ncp@~0.4.2
104 verbose lock ncp@~0.4.2 /home/dev/.npm/1f31aeaa-ncp-0-4-2.lock
105 verbose cache add [ 'npmconf@~0.1.5', null ]
106 verbose cache add name=undefined spec="npmconf@~0.1.5" args=["npmconf@~0.1.5",null]
107 verbose parsed url { protocol: null,
107 verbose parsed url slashes: null,
107 verbose parsed url auth: null,
107 verbose parsed url host: null,
107 verbose parsed url port: null,
107 verbose parsed url hostname: null,
107 verbose parsed url hash: null,
107 verbose parsed url search: null,
107 verbose parsed url query: null,
107 verbose parsed url pathname: 'npmconf@~0.1.5',
107 verbose parsed url path: 'npmconf@~0.1.5',
107 verbose parsed url href: 'npmconf@~0.1.5' }
108 verbose cache add name="npmconf" spec="~0.1.5" args=["npmconf","~0.1.5"]
109 verbose parsed url { protocol: null,
109 verbose parsed url slashes: null,
109 verbose parsed url auth: null,
109 verbose parsed url host: null,
109 verbose parsed url port: null,
109 verbose parsed url hostname: null,
109 verbose parsed url hash: null,
109 verbose parsed url search: null,
109 verbose parsed url query: null,
109 verbose parsed url pathname: '~0.1.5',
109 verbose parsed url path: '~0.1.5',
109 verbose parsed url href: '~0.1.5' }
110 verbose addNamed [ 'npmconf', '~0.1.5' ]
111 verbose addNamed [ null, '>=0.1.5-0 <0.2.0-0' ]
112 silly lockFile 932a0911-npmconf-0-1-5 npmconf@~0.1.5
113 verbose lock npmconf@~0.1.5 /home/dev/.npm/932a0911-npmconf-0-1-5.lock
114 silly addNameRange { name: 'adm-zip', range: '>=0.4.3-0 <0.5.0-0', hasData: false }
115 silly addNameRange { name: 'kew', range: '>=0.3.0-0 <0.4.0-0', hasData: false }
116 verbose cache add [ 'rimraf@~2.2.2', null ]
117 verbose cache add name=undefined spec="rimraf@~2.2.2" args=["rimraf@~2.2.2",null]
118 verbose parsed url { protocol: null,
118 verbose parsed url slashes: null,
118 verbose parsed url auth: null,
118 verbose parsed url host: null,
118 verbose parsed url port: null,
118 verbose parsed url hostname: null,
118 verbose parsed url hash: null,
118 verbose parsed url search: null,
118 verbose parsed url query: null,
118 verbose parsed url pathname: 'rimraf@~2.2.2',
118 verbose parsed url path: 'rimraf@~2.2.2',
118 verbose parsed url href: 'rimraf@~2.2.2' }
119 verbose cache add name="rimraf" spec="~2.2.2" args=["rimraf","~2.2.2"]
120 verbose parsed url { protocol: null,
120 verbose parsed url slashes: null,
120 verbose parsed url auth: null,
120 verbose parsed url host: null,
120 verbose parsed url port: null,
120 verbose parsed url hostname: null,
120 verbose parsed url hash: null,
120 verbose parsed url search: null,
120 verbose parsed url query: null,
120 verbose parsed url pathname: '~2.2.2',
120 verbose parsed url path: '~2.2.2',
120 verbose parsed url href: '~2.2.2' }
121 verbose addNamed [ 'rimraf', '~2.2.2' ]
122 verbose addNamed [ null, '>=2.2.2-0 <2.3.0-0' ]
123 silly lockFile 6c46433c-rimraf-2-2-2 rimraf@~2.2.2
124 verbose lock rimraf@~2.2.2 /home/dev/.npm/6c46433c-rimraf-2-2-2.lock
125 verbose cache add [ 'q@~0.9.7', null ]
126 verbose cache add name=undefined spec="q@~0.9.7" args=["q@~0.9.7",null]
127 verbose parsed url { protocol: null,
127 verbose parsed url slashes: null,
127 verbose parsed url auth: null,
127 verbose parsed url host: null,
127 verbose parsed url port: null,
127 verbose parsed url hostname: null,
127 verbose parsed url hash: null,
127 verbose parsed url search: null,
127 verbose parsed url query: null,
127 verbose parsed url pathname: 'q@~0.9.7',
127 verbose parsed url path: 'q@~0.9.7',
127 verbose parsed url href: 'q@~0.9.7' }
128 verbose cache add name="q" spec="~0.9.7" args=["q","~0.9.7"]
129 verbose parsed url { protocol: null,
129 verbose parsed url slashes: null,
129 verbose parsed url auth: null,
129 verbose parsed url host: null,
129 verbose parsed url port: null,
129 verbose parsed url hostname: null,
129 verbose parsed url hash: null,
129 verbose parsed url search: null,
129 verbose parsed url query: null,
129 verbose parsed url pathname: '~0.9.7',
129 verbose parsed url path: '~0.9.7',
129 verbose parsed url href: '~0.9.7' }
130 verbose addNamed [ 'q', '~0.9.7' ]
131 verbose addNamed [ null, '>=0.9.7-0 <0.10.0-0' ]
132 silly lockFile 9ea2316a-q-0-9-7 q@~0.9.7
133 verbose lock q@~0.9.7 /home/dev/.npm/9ea2316a-q-0-9-7.lock
134 verbose cache add [ 'portscanner@~0.1.3', null ]
135 verbose cache add name=undefined spec="portscanner@~0.1.3" args=["portscanner@~0.1.3",null]
136 verbose parsed url { protocol: null,
136 verbose parsed url slashes: null,
136 verbose parsed url auth: null,
136 verbose parsed url host: null,
136 verbose parsed url port: null,
136 verbose parsed url hostname: null,
136 verbose parsed url hash: null,
136 verbose parsed url search: null,
136 verbose parsed url query: null,
136 verbose parsed url pathname: 'portscanner@~0.1.3',
136 verbose parsed url path: 'portscanner@~0.1.3',
136 verbose parsed url href: 'portscanner@~0.1.3' }
137 verbose cache add name="portscanner" spec="~0.1.3" args=["portscanner","~0.1.3"]
138 verbose parsed url { protocol: null,
138 verbose parsed url slashes: null,
138 verbose parsed url auth: null,
138 verbose parsed url host: null,
138 verbose parsed url port: null,
138 verbose parsed url hostname: null,
138 verbose parsed url hash: null,
138 verbose parsed url search: null,
138 verbose parsed url query: null,
138 verbose parsed url pathname: '~0.1.3',
138 verbose parsed url path: '~0.1.3',
138 verbose parsed url href: '~0.1.3' }
139 verbose addNamed [ 'portscanner', '~0.1.3' ]
140 verbose addNamed [ null, '>=0.1.3-0 <0.2.0-0' ]
141 silly lockFile 683f6042-portscanner-0-1-3 portscanner@~0.1.3
142 verbose lock portscanner@~0.1.3 /home/dev/.npm/683f6042-portscanner-0-1-3.lock
143 silly addNameRange { name: 'ncp', range: '>=0.4.2-0 <0.5.0-0', hasData: false }
144 silly addNameRange { name: 'npmconf', range: '>=0.1.5-0 <0.2.0-0', hasData: false }
145 silly addNameRange { name: 'rimraf', range: '>=2.2.2-0 <2.3.0-0', hasData: false }
146 silly addNameRange { name: 'q', range: '>=0.9.7-0 <0.10.0-0', hasData: false }
147 silly addNameRange { name: 'portscanner',
147 silly addNameRange range: '>=0.1.3-0 <0.2.0-0',
147 silly addNameRange hasData: false }
148 verbose url raw adm-zip
149 verbose url resolving [ 'https://registry.npmjs.org/', './adm-zip' ]
150 verbose url resolved https://registry.npmjs.org/adm-zip
151 info trying registry request attempt 1 at 22:18:39
152 verbose etag "DEWMC58B79MYHNRIX3C4LEL47"
153 http GET https://registry.npmjs.org/adm-zip
154 verbose url raw kew
155 verbose url resolving [ 'https://registry.npmjs.org/', './kew' ]
156 verbose url resolved https://registry.npmjs.org/kew
157 info trying registry request attempt 1 at 22:18:39
158 verbose etag "5SV7WZ87MHUC7OYS8TNRWXH24"
159 http GET https://registry.npmjs.org/kew
160 verbose url raw ncp
161 verbose url resolving [ 'https://registry.npmjs.org/', './ncp' ]
162 verbose url resolved https://registry.npmjs.org/ncp
163 info trying registry request attempt 1 at 22:18:39
164 verbose etag "856X78QJAOSFALTQIHC5I7U6O"
165 http GET https://registry.npmjs.org/ncp
166 verbose url raw npmconf
167 verbose url resolving [ 'https://registry.npmjs.org/', './npmconf' ]
168 verbose url resolved https://registry.npmjs.org/npmconf
169 info trying registry request attempt 1 at 22:18:39
170 verbose etag "38OG1QX12534PF0RQFHXHAJO4"
171 http GET https://registry.npmjs.org/npmconf
172 verbose url raw rimraf
173 verbose url resolving [ 'https://registry.npmjs.org/', './rimraf' ]
174 verbose url resolved https://registry.npmjs.org/rimraf
175 info trying registry request attempt 1 at 22:18:39
176 verbose etag "BO8JLBC2TKAXGJCA5T3URAII3"
177 http GET https://registry.npmjs.org/rimraf
178 verbose url raw q
179 verbose url resolving [ 'https://registry.npmjs.org/', './q' ]
180 verbose url resolved https://registry.npmjs.org/q
181 info trying registry request attempt 1 at 22:18:39
182 verbose etag "DW40JR1WN1WA0MKZFYSRCGV0O"
183 http GET https://registry.npmjs.org/q
184 verbose url raw portscanner
185 verbose url resolving [ 'https://registry.npmjs.org/', './portscanner' ]
186 verbose url resolved https://registry.npmjs.org/portscanner
187 info trying registry request attempt 1 at 22:18:39
188 verbose etag "E79PIPL9PA23VWR7VVM7ZA399"
189 http GET https://registry.npmjs.org/portscanner
190 http 304 https://registry.npmjs.org/rimraf
191 silly registry.get cb [ 304,
191 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
191 silly registry.get etag: '"BO8JLBC2TKAXGJCA5T3URAII3"',
191 silly registry.get date: 'Wed, 13 Nov 2013 21:18:40 GMT',
191 silly registry.get 'content-length': '0' } ]
192 verbose etag rimraf from cache
193 http 304 https://registry.npmjs.org/ncp
194 silly registry.get cb [ 304,
194 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
194 silly registry.get etag: '"856X78QJAOSFALTQIHC5I7U6O"',
194 silly registry.get date: 'Wed, 13 Nov 2013 21:18:40 GMT',
194 silly registry.get 'content-length': '0' } ]
195 verbose etag ncp from cache
196 http 304 https://registry.npmjs.org/adm-zip
197 silly registry.get cb [ 304,
197 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
197 silly registry.get etag: '"DEWMC58B79MYHNRIX3C4LEL47"',
197 silly registry.get date: 'Wed, 13 Nov 2013 21:18:40 GMT',
197 silly registry.get 'content-length': '0' } ]
198 verbose etag adm-zip from cache
199 http 304 https://registry.npmjs.org/npmconf
200 silly registry.get cb [ 304,
200 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
200 silly registry.get etag: '"38OG1QX12534PF0RQFHXHAJO4"',
200 silly registry.get date: 'Wed, 13 Nov 2013 21:18:40 GMT',
200 silly registry.get 'content-length': '0' } ]
201 verbose etag npmconf from cache
202 http 304 https://registry.npmjs.org/kew
203 silly registry.get cb [ 304,
203 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
203 silly registry.get etag: '"5SV7WZ87MHUC7OYS8TNRWXH24"',
203 silly registry.get date: 'Wed, 13 Nov 2013 21:18:40 GMT',
203 silly registry.get 'content-length': '0' } ]
204 verbose etag kew from cache
205 silly addNameRange number 2 { name: 'rimraf', range: '>=2.2.2-0 <2.3.0-0', hasData: true }
206 silly addNameRange versions [ 'rimraf',
206 silly addNameRange [ '1.0.0',
206 silly addNameRange '1.0.1',
206 silly addNameRange '1.0.2',
206 silly addNameRange '1.0.4',
206 silly addNameRange '1.0.5',
206 silly addNameRange '1.0.6',
206 silly addNameRange '1.0.7',
206 silly addNameRange '1.0.8',
206 silly addNameRange '1.0.9',
206 silly addNameRange '2.0.0',
206 silly addNameRange '2.0.1',
206 silly addNameRange '2.0.2',
206 silly addNameRange '2.0.3',
206 silly addNameRange '2.1.0',
206 silly addNameRange '2.1.1',
206 silly addNameRange '2.1.2',
206 silly addNameRange '2.1.3',
206 silly addNameRange '2.1.4',
206 silly addNameRange '2.2.0',
206 silly addNameRange '2.2.1',
206 silly addNameRange '2.2.2' ] ]
207 verbose addNamed [ 'rimraf', '2.2.2' ]
208 verbose addNamed [ '2.2.2', '2.2.2' ]
209 silly lockFile aab0fa5b-rimraf-2-2-2 rimraf@2.2.2
210 verbose lock rimraf@2.2.2 /home/dev/.npm/aab0fa5b-rimraf-2-2-2.lock
211 silly addNameRange number 2 { name: 'ncp', range: '>=0.4.2-0 <0.5.0-0', hasData: true }
212 silly addNameRange versions [ 'ncp',
212 silly addNameRange [ '0.0.0',
212 silly addNameRange '0.0.1',
212 silly addNameRange '0.0.2',
212 silly addNameRange '0.1.0',
212 silly addNameRange '0.1.1',
212 silly addNameRange '0.1.2',
212 silly addNameRange '0.2.0',
212 silly addNameRange '0.2.1',
212 silly addNameRange '0.2.2',
212 silly addNameRange '0.2.3',
212 silly addNameRange '0.2.4',
212 silly addNameRange '0.2.5',
212 silly addNameRange '0.2.6',
212 silly addNameRange '0.3.0',
212 silly addNameRange '0.4.0',
212 silly addNameRange '0.2.7',
212 silly addNameRange '0.4.1',
212 silly addNameRange '0.4.2' ] ]
213 verbose addNamed [ 'ncp', '0.4.2' ]
214 verbose addNamed [ '0.4.2', '0.4.2' ]
215 silly lockFile e43cb36a-ncp-0-4-2 ncp@0.4.2
216 verbose lock ncp@0.4.2 /home/dev/.npm/e43cb36a-ncp-0-4-2.lock
217 silly addNameRange number 2 { name: 'adm-zip', range: '>=0.4.3-0 <0.5.0-0', hasData: true }
218 silly addNameRange versions [ 'adm-zip',
218 silly addNameRange [ '0.1.1',
218 silly addNameRange '0.1.2',
218 silly addNameRange '0.1.3',
218 silly addNameRange '0.1.4',
218 silly addNameRange '0.1.5',
218 silly addNameRange '0.1.6',
218 silly addNameRange '0.1.7',
218 silly addNameRange '0.1.8',
218 silly addNameRange '0.1.9',
218 silly addNameRange '0.2.0',
218 silly addNameRange '0.2.1',
218 silly addNameRange '0.4.3' ] ]
219 verbose addNamed [ 'adm-zip', '0.4.3' ]
220 verbose addNamed [ '0.4.3', '0.4.3' ]
221 silly lockFile db902cdf-adm-zip-0-4-3 adm-zip@0.4.3
222 verbose lock adm-zip@0.4.3 /home/dev/.npm/db902cdf-adm-zip-0-4-3.lock
223 silly addNameRange number 2 { name: 'npmconf', range: '>=0.1.5-0 <0.2.0-0', hasData: true }
224 silly addNameRange versions [ 'npmconf',
224 silly addNameRange [ '0.0.1',
224 silly addNameRange '0.0.2',
224 silly addNameRange '0.0.3',
224 silly addNameRange '0.0.4',
224 silly addNameRange '0.0.5',
224 silly addNameRange '0.0.6',
224 silly addNameRange '0.0.7',
224 silly addNameRange '0.0.8',
224 silly addNameRange '0.0.9',
224 silly addNameRange '0.0.10',
224 silly addNameRange '0.0.11',
224 silly addNameRange '0.0.12',
224 silly addNameRange '0.0.14',
224 silly addNameRange '0.0.15',
224 silly addNameRange '0.0.16',
224 silly addNameRange '0.0.17',
224 silly addNameRange '0.0.18',
224 silly addNameRange '0.0.19',
224 silly addNameRange '0.0.20',
224 silly addNameRange '0.0.21',
224 silly addNameRange '0.0.22',
224 silly addNameRange '0.0.23',
224 silly addNameRange '0.0.24',
224 silly addNameRange '0.0.25',
224 silly addNameRange '0.1.0',
224 silly addNameRange '0.1.1',
224 silly addNameRange '0.1.2',
224 silly addNameRange '0.1.3',
224 silly addNameRange '0.1.4',
224 silly addNameRange '0.1.5' ] ]
225 verbose addNamed [ 'npmconf', '0.1.5' ]
226 verbose addNamed [ '0.1.5', '0.1.5' ]
227 silly lockFile 63a090a9-npmconf-0-1-5 npmconf@0.1.5
228 verbose lock npmconf@0.1.5 /home/dev/.npm/63a090a9-npmconf-0-1-5.lock
229 silly addNameRange number 2 { name: 'kew', range: '>=0.3.0-0 <0.4.0-0', hasData: true }
230 silly addNameRange versions [ 'kew',
230 silly addNameRange [ '0.0.1',
230 silly addNameRange '0.0.2',
230 silly addNameRange '0.0.3',
230 silly addNameRange '0.0.4',
230 silly addNameRange '0.1.0',
230 silly addNameRange '0.1.1',
230 silly addNameRange '0.1.2',
230 silly addNameRange '0.1.3',
230 silly addNameRange '0.1.4',
230 silly addNameRange '0.1.5',
230 silly addNameRange '0.1.6',
230 silly addNameRange '0.1.7',
230 silly addNameRange '0.2.1',
230 silly addNameRange '0.2.2',
230 silly addNameRange '0.3.0' ] ]
231 verbose addNamed [ 'kew', '0.3.0' ]
232 verbose addNamed [ '0.3.0', '0.3.0' ]
233 silly lockFile af329d48-kew-0-3-0 kew@0.3.0
234 verbose lock kew@0.3.0 /home/dev/.npm/af329d48-kew-0-3-0.lock
235 silly lockFile aab0fa5b-rimraf-2-2-2 rimraf@2.2.2
236 silly lockFile aab0fa5b-rimraf-2-2-2 rimraf@2.2.2
237 silly lockFile e43cb36a-ncp-0-4-2 ncp@0.4.2
238 silly lockFile e43cb36a-ncp-0-4-2 ncp@0.4.2
239 silly lockFile db902cdf-adm-zip-0-4-3 adm-zip@0.4.3
240 silly lockFile db902cdf-adm-zip-0-4-3 adm-zip@0.4.3
241 silly lockFile 63a090a9-npmconf-0-1-5 npmconf@0.1.5
242 silly lockFile 63a090a9-npmconf-0-1-5 npmconf@0.1.5
243 silly lockFile 6c46433c-rimraf-2-2-2 rimraf@~2.2.2
244 silly lockFile 6c46433c-rimraf-2-2-2 rimraf@~2.2.2
245 silly lockFile 1f31aeaa-ncp-0-4-2 ncp@~0.4.2
246 silly lockFile 1f31aeaa-ncp-0-4-2 ncp@~0.4.2
247 silly lockFile fd654770-adm-zip-0-4-3 adm-zip@~0.4.3
248 silly lockFile fd654770-adm-zip-0-4-3 adm-zip@~0.4.3
249 silly lockFile 932a0911-npmconf-0-1-5 npmconf@~0.1.5
250 silly lockFile 932a0911-npmconf-0-1-5 npmconf@~0.1.5
251 silly lockFile af329d48-kew-0-3-0 kew@0.3.0
252 silly lockFile af329d48-kew-0-3-0 kew@0.3.0
253 silly lockFile fab8cae9-kew-0-3-0 kew@~0.3.0
254 silly lockFile fab8cae9-kew-0-3-0 kew@~0.3.0
255 http 304 https://registry.npmjs.org/q
256 silly registry.get cb [ 304,
256 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
256 silly registry.get etag: '"DW40JR1WN1WA0MKZFYSRCGV0O"',
256 silly registry.get date: 'Wed, 13 Nov 2013 21:18:40 GMT',
256 silly registry.get 'content-length': '0' } ]
257 verbose etag q from cache
258 silly addNameRange number 2 { name: 'q', range: '>=0.9.7-0 <0.10.0-0', hasData: true }
259 silly addNameRange versions [ 'q',
259 silly addNameRange [ '0.0.0',
259 silly addNameRange '0.0.1',
259 silly addNameRange '0.0.2',
259 silly addNameRange '0.0.3',
259 silly addNameRange '0.1.0',
259 silly addNameRange '0.1.1',
259 silly addNameRange '0.1.2',
259 silly addNameRange '0.1.3',
259 silly addNameRange '0.1.4',
259 silly addNameRange '0.1.5',
259 silly addNameRange '0.1.6',
259 silly addNameRange '0.1.7',
259 silly addNameRange '0.1.8',
259 silly addNameRange '0.1.9',
259 silly addNameRange '0.2.0-rc1',
259 silly addNameRange '0.2.0',
259 silly addNameRange '0.2.1',
259 silly addNameRange '0.2.2',
259 silly addNameRange '0.2.3',
259 silly addNameRange '0.2.4',
259 silly addNameRange '0.2.5',
259 silly addNameRange '0.2.6',
259 silly addNameRange '0.2.7',
259 silly addNameRange '0.2.8',
259 silly addNameRange '0.2.9',
259 silly addNameRange '0.3.0',
259 silly addNameRange '0.2.10',
259 silly addNameRange '0.4.0',
259 silly addNameRange '0.4.1',
259 silly addNameRange '0.4.2',
259 silly addNameRange '0.4.4',
259 silly addNameRange '0.5.0',
259 silly addNameRange '0.5.1',
259 silly addNameRange '0.5.2',
259 silly addNameRange '0.5.3',
259 silly addNameRange '0.6.0',
259 silly addNameRange '0.7.0',
259 silly addNameRange '0.7.1',
259 silly addNameRange '0.7.2',
259 silly addNameRange '0.8.0',
259 silly addNameRange '0.8.1',
259 silly addNameRange '0.8.2',
259 silly addNameRange '0.8.3',
259 silly addNameRange '0.8.4',
259 silly addNameRange '0.8.5',
259 silly addNameRange '0.8.6',
259 silly addNameRange '0.8.7',
259 silly addNameRange '0.8.8',
259 silly addNameRange '0.8.9',
259 silly addNameRange '0.8.10',
259 silly addNameRange '0.8.11',
259 silly addNameRange '0.8.12',
259 silly addNameRange '0.9.0',
259 silly addNameRange '0.9.1',
259 silly addNameRange '0.9.2',
259 silly addNameRange '0.9.3',
259 silly addNameRange '0.9.4',
259 silly addNameRange '0.9.5',
259 silly addNameRange '0.9.6',
259 silly addNameRange '0.9.7' ] ]
260 verbose addNamed [ 'q', '0.9.7' ]
261 verbose addNamed [ '0.9.7', '0.9.7' ]
262 silly lockFile cc8e51ee-q-0-9-7 q@0.9.7
263 verbose lock q@0.9.7 /home/dev/.npm/cc8e51ee-q-0-9-7.lock
264 silly lockFile cc8e51ee-q-0-9-7 q@0.9.7
265 silly lockFile cc8e51ee-q-0-9-7 q@0.9.7
266 silly lockFile 9ea2316a-q-0-9-7 q@~0.9.7
267 silly lockFile 9ea2316a-q-0-9-7 q@~0.9.7
268 http 304 https://registry.npmjs.org/portscanner
269 silly registry.get cb [ 304,
269 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
269 silly registry.get etag: '"E79PIPL9PA23VWR7VVM7ZA399"',
269 silly registry.get date: 'Wed, 13 Nov 2013 21:18:40 GMT',
269 silly registry.get 'content-length': '0' } ]
270 verbose etag portscanner from cache
271 silly addNameRange number 2 { name: 'portscanner',
271 silly addNameRange range: '>=0.1.3-0 <0.2.0-0',
271 silly addNameRange hasData: true }
272 silly addNameRange versions [ 'portscanner', [ '0.1.0', '0.1.1', '0.1.2', '0.1.3' ] ]
273 verbose addNamed [ 'portscanner', '0.1.3' ]
274 verbose addNamed [ '0.1.3', '0.1.3' ]
275 silly lockFile 78d00fc8-portscanner-0-1-3 portscanner@0.1.3
276 verbose lock portscanner@0.1.3 /home/dev/.npm/78d00fc8-portscanner-0-1-3.lock
277 silly lockFile 78d00fc8-portscanner-0-1-3 portscanner@0.1.3
278 silly lockFile 78d00fc8-portscanner-0-1-3 portscanner@0.1.3
279 silly lockFile 683f6042-portscanner-0-1-3 portscanner@~0.1.3
280 silly lockFile 683f6042-portscanner-0-1-3 portscanner@~0.1.3
281 silly resolved [ { name: 'rimraf',
281 silly resolved version: '2.2.2',
281 silly resolved main: 'rimraf.js',
281 silly resolved description: 'A deep deletion module for node (like `rm -rf`)',
281 silly resolved author:
281 silly resolved { name: 'Isaac Z. Schlueter',
281 silly resolved email: 'i@izs.me',
281 silly resolved url: 'http://blog.izs.me/' },
281 silly resolved license:
281 silly resolved { type: 'MIT',
281 silly resolved url: 'https://github.com/isaacs/rimraf/raw/master/LICENSE' },
281 silly resolved optionalDependencies: { 'graceful-fs': '~2' },
281 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/rimraf.git' },
281 silly resolved scripts: { test: 'cd test && bash run.sh' },
281 silly resolved bin: { rimraf: './bin.js' },
281 silly resolved contributors: [ [Object], [Object], [Object], [Object], [Object] ],
281 silly resolved readme: 'A `rm -rf` for node.\n\nInstall with `npm install rimraf`, or just drop rimraf.js somewhere.\n\n## API\n\n`rimraf(f, callback)`\n\nThe callback will be called with an error if there is one. Certain\nerrors are handled for you:\n\n* `EBUSY` - rimraf will back off a maximum of opts.maxBusyTries times\n before giving up.\n* `EMFILE` - If too many file descriptors get opened, rimraf will\n patiently wait until more become available.\n\n\n## rimraf.sync\n\nIt can remove stuff synchronously, too. But that\'s not so good. Use\nthe async API. It\'s better.\n\n## CLI\n\nIf installed with `npm install rimraf -g` it can be used as a global\ncommand `rimraf <path>` which is useful for cross platform support.\n',
281 silly resolved readmeFilename: 'README.md',
281 silly resolved bugs: { url: 'https://github.com/isaacs/rimraf/issues' },
281 silly resolved homepage: 'https://github.com/isaacs/rimraf',
281 silly resolved dependencies: { 'graceful-fs': '~2' },
281 silly resolved _id: 'rimraf@2.2.2',
281 silly resolved _from: 'rimraf@~2.2.2' },
281 silly resolved { name: 'ncp',
281 silly resolved version: '0.4.2',
281 silly resolved author: { name: 'AvianFlu', email: 'charlie@charlieistheman.com' },
281 silly resolved description: 'Asynchronous recursive file copy utility.',
281 silly resolved bin: { ncp: './bin/ncp' },
281 silly resolved devDependencies: { vows: '0.6.x', rimraf: '1.0.x', 'read-dir-files': '0.0.x' },
281 silly resolved main: './lib/ncp.js',
281 silly resolved repository: { type: 'git', url: 'https://github.com/AvianFlu/ncp.git' },
281 silly resolved keywords: [ 'cli', 'copy' ],
281 silly resolved license: 'MIT',
281 silly resolved engine: { node: '>=0.4' },
281 silly resolved scripts: { test: 'vows --isolate --spec' },
281 silly resolved readme: '# ncp - Asynchronous recursive file & directory copying\n\n[![Build Status](https://secure.travis-ci.org/AvianFlu/ncp.png)](http://travis-ci.org/AvianFlu/ncp)\n\nThink `cp -r`, but pure node, and asynchronous. `ncp` can be used both as a CLI tool and programmatically.\n\n## Command Line usage\n\nUsage is simple: `ncp [source] [dest] [--limit=concurrency limit]\n[--filter=filter] --stopOnErr`\n\nThe \'filter\' is a Regular Expression - matched files will be copied.\n\nThe \'concurrency limit\' is an integer that represents how many pending file system requests `ncp` has at a time.\n\n\'stopOnErr\' is a boolean flag that will tell `ncp` to stop immediately if any\nerrors arise, rather than attempting to continue while logging errors.\n\nIf there are no errors, `ncp` will output `done.` when complete. If there are errors, the error messages will be logged to `stdout` and to `./ncp-debug.log`, and the copy operation will attempt to continue.\n\n## Programmatic usage\n\nProgrammatic usage of `ncp` is just as simple. The only argument to the completion callback is a possible error. \n\n```javascript\nvar ncp = require(\'ncp\').ncp;\n\nncp.limit = 16;\n\nncp(source, destination, function (err) {\n if (err) {\n return console.error(err);\n }\n console.log(\'done!\');\n});\n```\n\nYou can also call ncp like `ncp(source, destination, options, callback)`. \n`options` should be a dictionary. Currently, such options are available:\n\n * `options.filter` - a `RegExp` instance, against which each file name is\n tested to determine whether to copy it or not, or a function taking single\n parameter: copied file name, returning `true` or `false`, determining\n whether to copy file or not.\n\n * `options.transform` - a function: `function (read, write) { read.pipe(write) }`\n used to apply streaming transforms while copying.\n\n * `options.clobber` - boolean=true. if set to false, `ncp` will not overwrite \n destination files that already exist.\n\nPlease open an issue if any bugs arise. As always, I accept (working) pull requests, and refunds are available at `/dev/null`.\n',
281 silly resolved readmeFilename: 'README.md',
281 silly resolved bugs: { url: 'https://github.com/AvianFlu/ncp/issues' },
281 silly resolved homepage: 'https://github.com/AvianFlu/ncp',
281 silly resolved _id: 'ncp@0.4.2',
281 silly resolved _from: 'ncp@~0.4.2' },
281 silly resolved { name: 'adm-zip',
281 silly resolved version: '0.4.3',
281 silly resolved description: 'A Javascript implementation of zip for nodejs. Allows user to create or extract zip files both in memory or to/from disk',
281 silly resolved keywords: [ 'zip', 'methods', 'archive', 'unzip' ],
281 silly resolved homepage: 'https://github.com/cthackers/adm-zip',
281 silly resolved author:
281 silly resolved { name: 'Nasca Iacob',
281 silly resolved email: 'sy@another-d-mention.ro',
281 silly resolved url: 'https://github.com/cthackers' },
281 silly resolved bugs:
281 silly resolved { url: 'https://github.com/cthackers/adm-zip/issues',
281 silly resolved email: 'sy@another-d-mention.ro' },
281 silly resolved licenses: [ [Object] ],
281 silly resolved main: 'adm-zip.js',
281 silly resolved repository: { type: 'git', url: 'https://github.com/cthackers/adm-zip.git' },
281 silly resolved engines: { node: '>=0.3.0' },
281 silly resolved readme: '# ADM-ZIP for NodeJS\r\n\r\nADM-ZIP is a pure JavaScript implementation for zip data compression for [NodeJS](http://nodejs.org/). \r\n\r\n# Installation\r\n\r\nWith [npm](http://npmjs.org) do:\r\n\r\n $ npm install adm-zip\r\n\t\r\n## What is it good for?\r\nThe library allows you to:\r\n\r\n* decompress zip files directly to disk or in memory buffers\r\n* compress files and store them to disk in .zip format or in compressed buffers\r\n* update content of/add new/delete files from an existing .zip\r\n\r\n# Dependencies\r\nThere are no other nodeJS libraries that ADM-ZIP is dependent of\r\n\r\n# Examples\r\n\r\n## Basic usage\r\n```javascript\r\n\r\n\tvar AdmZip = require(\'adm-zip\');\r\n\r\n\t// reading archives\r\n\tvar zip = new AdmZip("./my_file.zip");\r\n\tvar zipEntries = zip.getEntries(); // an array of ZipEntry records\r\n\r\n\tzipEntries.forEach(function(zipEntry) {\r\n\t console.log(zipEntry.toString()); // outputs zip entries information\r\n\t\tif (zipEntry.entryName == "my_file.txt") {\r\n\t\t console.log(zipEntry.data.toString(\'utf8\')); \r\n\t\t}\r\n\t});\r\n\t// outputs the content of some_folder/my_file.txt\r\n\tconsole.log(zip.readAsText("some_folder/my_file.txt")); \r\n\t// extracts the specified file to the specified location\r\n\tzip.extractEntryTo(/*entry name*/"some_folder/my_file.txt", /*target path*/"/home/me/tempfolder", /*overwrite*/true)\r\n\t// extracts everything\r\n\tzip.extractAllTo(/*target path*/"/home/me/zipcontent/", /*overwrite*/true);\r\n\t\r\n\t\r\n\t// creating archives\r\n\tvar zip = new AdmZip();\r\n\t\r\n\t// add file directly\r\n\tzip.addFile("test.txt", new Buffer("inner content of the file"), "entry comment goes here");\r\n\t// add local file\r\n\tzip.addLocalFile("/home/me/some_picture.png");\r\n\t// get everything as a buffer\r\n\tvar willSendthis = zip.toBuffer();\r\n\t// or write everything to disk\r\n\tzip.writeZip(/*target file name*/"/home/me/files.zip");\r\n\t\r\n\t\r\n\t// ... more examples in the wiki\r\n```\r\n\r\nFor more detailed information please check out the [wiki](https://github.com/cthackers/adm-zip/wiki).\n\n[![build status](https://secure.travis-ci.org/cthackers/adm-zip.png)](http://travis-ci.org/cthackers/adm-zip)',
281 silly resolved readmeFilename: 'README.md',
281 silly resolved _id: 'adm-zip@0.4.3',
281 silly resolved _from: 'adm-zip@~0.4.3' },
281 silly resolved { name: 'npmconf',
281 silly resolved version: '0.1.5',
281 silly resolved description: 'The config thing npm uses',
281 silly resolved main: 'npmconf.js',
281 silly resolved directories: { test: 'test' },
281 silly resolved dependencies:
281 silly resolved { 'config-chain': '~1.1.8',
281 silly resolved inherits: '~2.0.0',
281 silly resolved once: '~1.3.0',
281 silly resolved mkdirp: '~0.3.3',
281 silly resolved osenv: '0.0.3',
281 silly resolved nopt: '2',
281 silly resolved semver: '2',
281 silly resolved ini: '~1.1.0' },
281 silly resolved devDependencies: { tap: '~0.4.0' },
281 silly resolved scripts: { test: 'tap test/*.js' },
281 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/npmconf' },
281 silly resolved keywords: [ 'npm', 'config', 'config-chain', 'conf', 'ini' ],
281 silly resolved author:
281 silly resolved { name: 'Isaac Z. Schlueter',
281 silly resolved email: 'i@izs.me',
281 silly resolved url: 'http://blog.izs.me' },
281 silly resolved license: 'BSD',
281 silly resolved readme: '# npmconf\n\nThe config thing npm uses\n\nIf you are interested in interacting with the config settings that npm\nuses, then use this module.\n\nHowever, if you are writing a new Node.js program, and want\nconfiguration functionality similar to what npm has, but for your\nown thing, then I\'d recommend using [rc](https://github.com/dominictarr/rc),\nwhich is probably what you want.\n\nIf I were to do it all over again, that\'s what I\'d do for npm. But,\nalas, there are many systems depending on many of the particulars of\nnpm\'s configuration setup, so it\'s not worth the cost of changing.\n\n## USAGE\n\n```javascript\nvar npmconf = require(\'npmconf\')\n\n// pass in the cli options that you read from the cli\n// or whatever top-level configs you want npm to use for now.\nnpmconf.load({some:\'configs\'}, function (er, conf) {\n // do stuff with conf\n conf.get(\'some\', \'cli\') // \'configs\'\n conf.get(\'username\') // \'joebobwhatevers\'\n conf.set(\'foo\', \'bar\', \'user\')\n conf.save(\'user\', function (er) {\n // foo = bar is now saved to ~/.npmrc or wherever\n })\n})\n```\n',
281 silly resolved readmeFilename: 'README.md',
281 silly resolved bugs: { url: 'https://github.com/isaacs/npmconf/issues' },
281 silly resolved homepage: 'https://github.com/isaacs/npmconf',
281 silly resolved _id: 'npmconf@0.1.5',
281 silly resolved _from: 'npmconf@~0.1.5' },
281 silly resolved { name: 'kew',
281 silly resolved description: 'a lightweight promise library for node',
281 silly resolved version: '0.3.0',
281 silly resolved homepage: 'https://github.com/Obvious/kew',
281 silly resolved authors: [ 'Jeremy Stanley <github@azulus.com> (https://github.com/azulus)' ],
281 silly resolved contributors: [],
281 silly resolved keywords: [ 'kew', 'promises' ],
281 silly resolved main: './kew.js',
281 silly resolved repository: { type: 'git', url: 'https://github.com/Obvious/kew.git' },
281 silly resolved dependencies: {},
281 silly resolved devDependencies: { q: '0.9.7', nodeunit: '0.8.1' },
281 silly resolved scripts: { test: './node_modules/nodeunit/bin/nodeunit test' },
281 silly resolved readme: 'kew: a lightweight (and super fast) promise/deferred framework for node.js\n==================================\n\n**kew** is a lightweight promise framework with an aim of providing a base set of functionality similar to that provided by the [Q library](https://github.com/kriskowal/q "Q").\n\nA few answers (for a few questions)\n-------\n\n*Why\'d we write it?*\n\nDuring our initial usage of **Q** we found that it was consuming 80% of the cpu under load (primarily in chained database callbacks). We spent some time looking at patching **Q** and ultimately found that creating our own lightweight library for server-usage would suit our needs better than figuring out how to make a large cross-platform library more performant on one very specific platform.\n\n*So this does everything Q does?*\n\nNope! **Q** is still an awesome library and does *way* more than **kew**. We support a tiny subset of the **Q** functionality (the subset that we happen to use in our actual use cases).\n\nWhat are Promises?\n-------\n\nAt its core, a *Promise* is a promise to return a value at some point in the future. A *Promise* represents a value that will be (or may return an error if something goes wrong). *Promises* heavily reduce the complexity of asynchronous coding in node.js-like environments. Example:\n\n```javascript\n// assuming the getUrlContent() function exists and retrieves the content of a url\nvar htmlPromise = getUrlContent(myUrl)\n\n// we can then filter that through an http parser (our imaginary parseHtml() function) asynchronously (or maybe synchronously, who knows)\nvar tagsPromise = htmlPromise.then(parseHtml)\n\n// and then filter it through another function (getLinks()) which retrieves only the link tags\nvar linksPromise = tagsPromise.then(getLinks)\n\n// and then parses the actual urls from the links (using parseUrlsFromLinks())\nvar urlsPromise = linksPromise.then(parseUrlsFromLinks)\n\n// finally, we have a promise that should only provide us with the urls and will run once all the previous steps have ran\nurlsPromise.then(function (urls) {\n // do something with the urls\n})\n```\n\nHow do I use **kew**?\n-------\n\nAs a precursor to all the examples, the following code must be at the top of your page:\n\n```javascript\nvar Q = require(\'kew\')\n```\n\n### Convert a literal into a promise\n\nThe easiest way to start a promise chain is by creating a new promise with a specified literal using Q.resolve() or Q.reject()\n\n```javascript\n// create a promise which passes a value to the next then() call\nvar successPromise = Q.resolve(val)\n\n// create a promise which throws an error to be caught by the next fail() call\nvar failPromise = Q.reject(err)\n```\n\nIn addition, you can create deferreds which can be used if you need to create a promise but resolve it later:\n\n```javascript\n// create the deferreds\nvar successDefer = Q.defer()\nvar failDefer = Q.defer()\n\n// resolve or reject the defers in 1 second\nsetTimeout(function () {\n successDefer.resolve("ok")\n failDefer.reject(new Error("this failed"))\n}, 1000)\n\n// extract promises from the deferreds\nvar successPromise = successDefer.promise\nvar failPromise = failDefer.promise\n```\n\nIf you have a node-style callback (taking an **Error** as the first parameter and a response as the second), you can call the magic `makeNodeResolver()` function on a defer to allow the defer to handle the callbacks:\n\n```javascript\n// create the deferred\nvar defer = Q.defer()\n\n// some node-style function\ngetObjectFromDatabase(myObjectId, defer.makeNodeResolver())\n\n// grab the output\ndefer.promise\n .then(function (obj) {\n // successfully retrieved the object\n })\n .fail(function (e) {\n // failed retrieving the object\n })\n```\n\n### Handling successful results with `.then()`\n\nWhen a promise is resolved, you may call the `.then()` method to retrieve the value of the promise:\n\n```javascript\npromise.then(function (result) {\n // do something with the result here\n})\n```\n\n`.then()` will in turn return a promise which will return the results of whatever it returns (asynchronously or not), allowing it to be chained indefinitely:\n\n```javascript\nQ.resolve(\'a\')\n .then(function (result) {\n return result + \'b\'\n })\n .then(function (result) {\n return result + \'c\'\n })\n .then(function (result) {\n // result should be \'abc\'\n })\n```\n\nIn addition, `.then()` calls may return promises themselves, allowing for complex nesting of asynchronous calls in a flat manner:\n\n```javascript\nvar htmlPromise = getUrlContent(myUrl)\n\nvar tagsPromise = htmlPromise.then(function (html) {\n if (!validHtml(html)) throw new Error("Invalid HTML")\n\n // pretend that parseHtml() returns a promise and is asynchronous\n return parseHtml(html)\n})\n```\n\n### Handling errors with `.fail()`\n\nIf a promise is rejected for some reason, you may handle the failure case with the `.fail()` function:\n\n```javascript\ngetObjectPromise\n .fail(function (e) {\n console.error("Failed to retrieve object", e)\n })\n```\n\nLike `.then()`, `.fail()` also returns a promise. If the `.fail()` call does not throw an error, it will pass the return value of the `.fail()` handler to any `.then()` calls chained to it:\n\n```javascript\ngetObjectPromise\n .fail(function (e) {\n return retryGetObject(objId)\n })\n .then(function (obj) {\n // yay, we received an object\n })\n .fail(function (e) {\n // the retry failed :(\n console.error("Retrieving the object \'" + objId + "\' failed")\n })\n})\n```\n\nIf you\'ve reached the end of your promise chain, you may call `.end()` which signifies that the promise chain is ended and any errors should be thrown in whatever scope the code is currently in:\n\n```javascript\ngetObjectPromise\n // this will throw an error to the uncaught exception handler if the getObjectPromise call is asynchronous\n .end()\n```\n\n### `.fin()` when things are finished\n\nYou may attach a handler to a promise which will be ran regardless of whether the promise was resolved or rejected (but will only run upon completion). This is useful in the cases where you may have set up resources to run a request and wish to tear them down afterwards. `.fin()` will return the promise it is called upon:\n\n```javascript\nvar connection = db.connect()\n\nvar itemPromise = db.getItem(itemId)\n .fin(function () {\n db.close()\n })\n```\n\nOther utility methods\n-------\n\n### `.all()` for many things\n\nIf you\'re waiting for multiple promises to return, you may pass them (mixed in with literals if you desire) into `.all()` which will create a promise that resolves successfully with an array of the results of the promises:\n\n```javascript\nvar promises = []\npromises.push(getUrlContent(url1))\npromises.push(getUrlContent(url2))\npromises.push(getUrlContent(url3))\n\nQ.all(promises)\n .then(function (content) {\n // content[0] === content for url 1\n // content[1] === content for url 2\n // content[2] === content for url 3\n })\n```\n\nIf any of the promises fail, Q.all will fail as well (so make sure to guard your promises with a `.fail()` call beforehand if you don\'t care whether they succeed or not):\n\n```javascript\nvar promises = []\npromises.push(getUrlContent(url1))\npromises.push(getUrlContent(url2))\npromises.push(getUrlContent(url3))\n\nQ.all(promises)\n .fail(function (e) {\n console.log("Failed retrieving a url", e)\n })\n```\n\n### `.delay()` for future promises\n\nIf you need a little bit of delay (such as retrying a method call to a service that is "eventually consistent") before doing something else, ``Q.delay()`` is your friend:\n\n```javascript\ngetUrlContent(url1)\n.fail(function () {\n // Retry again after 200 milisseconds\n return Q.delay(200).then(function () {\n return getUrlContent(url1)\n })\n})\n```\n\n### `.fcall()` for delaying a function invocation until the next tick:\n```javascript\n// Assume someFn() is a synchronous 2 argument function you want to delay.\nQ.fcall(someFn, arg1, arg2)\n .then(function (result) {\n console.log(\'someFn(\' + arg1 + \', \' + arg2 + \') = \' + result)\n })\n```\n\nYou can also use ``Q.fcall()`` with functions that return promises.\n\n### `.nfcall()` for Node.js callbacks\n\n``Q.nfcall()`` can be used to convert node-style callbacks into promises:\n\n```javascript\nQ.nfcall(fs.writeFile, \'/tmp/myFile\', \'content\')\n .then(function () {\n console.log(\'File written successfully\')\n })\n .fail(function (err) {\n console.log(\'Failed to write file\', err)\n })\n```\n\n\nContributing\n------------\n\nQuestions, comments, bug reports, and pull requests are all welcome.\nSubmit them at [the project on GitHub](https://github.com/Obvious/kew/).\n\nBug reports that include steps-to-reproduce (including code) are the\nbest. Even better, make them in the form of pull requests that update\nthe test suite. Thanks!\n\n\nAuthor\n------\n\n[Jeremy Stanley](https://github.com/azulus)\nsupported by\n[The Obvious Corporation](http://obvious.com/).\n\n\nLicense\n-------\n\nCopyright 2013 [The Obvious Corporation](http://obvious.com/).\n\nLicensed under the Apache License, Version 2.0.\nSee the top-level file `LICENSE.TXT` and\n(http://www.apache.org/licenses/LICENSE-2.0).\n',
281 silly resolved readmeFilename: 'README.md',
281 silly resolved bugs: { url: 'https://github.com/Obvious/kew/issues' },
281 silly resolved _id: 'kew@0.3.0',
281 silly resolved _from: 'kew@~0.3.0' },
281 silly resolved { name: 'q',
281 silly resolved version: '0.9.7',
281 silly resolved description: 'A library for promises (CommonJS/Promises/A,B,D)',
281 silly resolved homepage: 'https://github.com/kriskowal/q',
281 silly resolved author:
281 silly resolved { name: 'Kris Kowal',
281 silly resolved email: 'kris@cixar.com',
281 silly resolved url: 'https://github.com/kriskowal' },
281 silly resolved keywords:
281 silly resolved [ 'q',
281 silly resolved 'promise',
281 silly resolved 'promises',
281 silly resolved 'promises-a',
281 silly resolved 'promises-aplus',
281 silly resolved 'deferred',
281 silly resolved 'future',
281 silly resolved 'async',
281 silly resolved 'flow control',
281 silly resolved 'fluent',
281 silly resolved 'browser',
281 silly resolved 'node' ],
281 silly resolved contributors: [ [Object], [Object], [Object] ],
281 silly resolved bugs: { url: 'https://github.com/kriskowal/q/issues' },
281 silly resolved license:
281 silly resolved { type: 'MIT',
281 silly resolved url: 'https://github.com/kriskowal/q/raw/master/LICENSE' },
281 silly resolved main: 'q.js',
281 silly resolved repository: { type: 'git', url: 'git://github.com/kriskowal/q.git' },
281 silly resolved engines: { node: '>=0.6.0', teleport: '>=0.2.0' },
281 silly resolved dependencies: {},
281 silly resolved devDependencies:
281 silly resolved { jshint: '~2.1.9',
281 silly resolved cover: '*',
281 silly resolved 'jasmine-node': '1.11.0',
281 silly resolved opener: '*',
281 silly resolved 'promises-aplus-tests': '1.x',
281 silly resolved grunt: '~0.4.1',
281 silly resolved 'grunt-cli': '~0.1.9',
281 silly resolved 'grunt-contrib-uglify': '~0.2.2',
281 silly resolved matcha: '~0.2.0' },
281 silly resolved scripts:
281 silly resolved { test: 'jasmine-node spec && promises-aplus-tests spec/aplus-adapter',
281 silly resolved 'test-browser': 'opener spec/q-spec.html',
281 silly resolved benchmark: 'matcha',
281 silly resolved lint: 'jshint q.js',
281 silly resolved cover: 'cover run node_modules/jasmine-node/bin/jasmine-node spec && cover report html && opener cover_html/index.html',
281 silly resolved minify: 'grunt',
281 silly resolved prepublish: 'grunt' },
281 silly resolved overlay: { teleport: [Object] },
281 silly resolved directories: { test: './spec' },
281 silly resolved readme: '[![Build Status](https://secure.travis-ci.org/kriskowal/q.png?branch=master)](http://travis-ci.org/kriskowal/q)\n\n<a href="http://promises-aplus.github.com/promises-spec">\n <img src="http://promises-aplus.github.com/promises-spec/assets/logo-small.png"\n align="right" alt="Promises/A+ logo" />\n</a>\n\nIf a function cannot return a value or throw an exception without\nblocking, it can return a promise instead. A promise is an object\nthat represents the return value or the thrown exception that the\nfunction may eventually provide. A promise can also be used as a\nproxy for a [remote object][Q-Connection] to overcome latency.\n\n[Q-Connection]: https://github.com/kriskowal/q-connection\n\nOn the first pass, promises can mitigate the “[Pyramid of\nDoom][POD]”: the situation where code marches to the right faster\nthan it marches forward.\n\n[POD]: http://calculist.org/blog/2011/12/14/why-coroutines-wont-work-on-the-web/\n\n```javascript\nstep1(function (value1) {\n step2(value1, function(value2) {\n step3(value2, function(value3) {\n step4(value3, function(value4) {\n // Do something with value4\n });\n });\n });\n});\n```\n\nWith a promise library, you can flatten the pyramid.\n\n```javascript\nQ.fcall(promisedStep1)\n.then(promisedStep2)\n.then(promisedStep3)\n.then(promisedStep4)\n.then(function (value4) {\n // Do something with value4\n})\n.catch(function (error) {\n // Handle any error from all above steps\n})\n.done();\n```\n\nWith this approach, you also get implicit error propagation, just like `try`,\n`catch`, and `finally`. An error in `promisedStep1` will flow all the way to\nthe `catch` function, where it’s caught and handled. (Here `promisedStepN` is\na version of `stepN` that returns a promise.)\n\nThe callback approach is called an “inversion of control”.\nA function that accepts a callback instead of a return value\nis saying, “Don’t call me, I’ll call you.”. Promises\n[un-invert][IOC] the inversion, cleanly separating the input\narguments from control flow arguments. This simplifies the\nuse and creation of API’s, particularly variadic,\nrest and spread arguments.\n\n[IOC]: http://www.slideshare.net/domenicdenicola/callbacks-promises-and-coroutines-oh-my-the-evolution-of-asynchronicity-in-javascript\n\n\n## Getting Started\n\nThe Q module can be loaded as:\n\n- A ``<script>`` tag (creating a ``Q`` global variable): ~2.5 KB minified and\n gzipped.\n- A Node.js and CommonJS module, available in [npm](https://npmjs.org/) as\n the [q](https://npmjs.org/package/q) package\n- An AMD module\n- A [component](https://github.com/component/component) as ``microjs/q``\n- Using [bower](http://bower.io/) as ``q``\n- Using [NuGet](http://nuget.org/) as [Q](https://nuget.org/packages/q)\n\nQ can exchange promises with jQuery, Dojo, When.js, WinJS, and more.\n\n## Resources\n\nOur [wiki][] contains a number of useful resources, including:\n\n- A method-by-method [Q API reference][reference].\n- A growing [examples gallery][examples], showing how Q can be used to make\n everything better. From XHR to database access to accessing the Flickr API,\n Q is there for you.\n- There are many libraries that produce and consume Q promises for everything\n from file system/database access or RPC to templating. For a list of some of\n the more popular ones, see [Libraries][].\n- If you want materials that introduce the promise concept generally, and the\n below tutorial isn\'t doing it for you, check out our collection of\n [presentations, blog posts, and podcasts][resources].\n- A guide for those [coming from jQuery\'s `$.Deferred`][jquery].\n\nWe\'d also love to have you join the Q-Continuum [mailing list][].\n\n[wiki]: https://github.com/kriskowal/q/wiki\n[reference]: https://github.com/kriskowal/q/wiki/API-Reference\n[examples]: https://github.com/kriskowal/q/wiki/Examples-Gallery\n[Libraries]: https://github.com/kriskowal/q/wiki/Libraries\n[resources]: https://github.com/kriskowal/q/wiki/General-Promise-Resources\n[jquery]: https://github.com/kriskowal/q/wiki/Coming-from-jQuery\n[mailing list]: https://groups.google.com/forum/#!forum/q-continuum\n\n\n## Tutorial\n\nPromises have a ``then`` method, which you can use to get the eventual\nreturn value (fulfillment) or thrown exception (rejection).\n\n```javascript\npromiseMeSomething()\n.then(function (value) {\n}, function (reason) {\n});\n```\n\nIf ``promiseMeSomething`` returns a promise that gets fulfilled later\nwith a return value, the first function (the fulfillment handler) will be\ncalled with the value. However, if the ``promiseMeSomething`` function\ngets rejected later by a thrown exception, the second function (the\nrejection handler) will be called with the exception.\n\nNote that resolution of a promise is always asynchronous: that is, the\nfulfillment or rejection handler will always be called in the next turn of the\nevent loop (i.e. `process.nextTick` in Node). This gives you a nice\nguarantee when mentally tracing the flow of your code, namely that\n``then`` will always return before either handler is executed.\n\nIn this tutorial, we begin with how to consume and work with promises. We\'ll\ntalk about how to create them, and thus create functions like\n`promiseMeSomething` that return promises, [below](#the-beginning).\n\n\n### Propagation\n\nThe ``then`` method returns a promise, which in this example, I’m\nassigning to ``outputPromise``.\n\n```javascript\nvar outputPromise = getInputPromise()\n.then(function (input) {\n}, function (reason) {\n});\n```\n\nThe ``outputPromise`` variable becomes a new promise for the return\nvalue of either handler. Since a function can only either return a\nvalue or throw an exception, only one handler will ever be called and it\nwill be responsible for resolving ``outputPromise``.\n\n- If you return a value in a handler, ``outputPromise`` will get\n fulfilled.\n\n- If you throw an exception in a handler, ``outputPromise`` will get\n rejected.\n\n- If you return a **promise** in a handler, ``outputPromise`` will\n “become” that promise. Being able to become a new promise is useful\n for managing delays, combining results, or recovering from errors.\n\nIf the ``getInputPromise()`` promise gets rejected and you omit the\nrejection handler, the **error** will go to ``outputPromise``:\n\n```javascript\nvar outputPromise = getInputPromise()\n.then(function (value) {\n});\n```\n\nIf the input promise gets fulfilled and you omit the fulfillment handler, the\n**value** will go to ``outputPromise``:\n\n```javascript\nvar outputPromise = getInputPromise()\n.then(null, function (error) {\n});\n```\n\nQ promises provide a ``fail`` shorthand for ``then`` when you are only\ninterested in handling the error:\n\n```javascript\nvar outputPromise = getInputPromise()\n.fail(function (error) {\n});\n```\n\nIf you are writing JavaScript for modern engines only or using\nCoffeeScript, you may use `catch` instead of `fail`.\n\nPromises also have a ``fin`` function that is like a ``finally`` clause.\nThe final handler gets called, with no arguments, when the promise\nreturned by ``getInputPromise()`` either returns a value or throws an\nerror. The value returned or error thrown by ``getInputPromise()``\npasses directly to ``outputPromise`` unless the final handler fails, and\nmay be delayed if the final handler returns a promise.\n\n```javascript\nvar outputPromise = getInputPromise()\n.fin(function () {\n // close files, database connections, stop servers, conclude tests\n});\n```\n\n- If the handler returns a value, the value is ignored\n- If the handler throws an error, the error passes to ``outputPromise``\n- If the handler returns a promise, ``outputPromise`` gets postponed. The\n eventual value or error has the same effect as an immediate return\n value or thrown error: a value would be ignored, an error would be\n forwarded.\n\nIf you are writing JavaScript for modern engines only or using\nCoffeeScript, you may use `finally` instead of `fin`.\n\n### Chaining\n\nThere are two ways to chain promises. You can chain promises either\ninside or outside handlers. The next two examples are equivalent.\n\n```javascript\nreturn getUsername()\n.then(function (username) {\n return getUser(username)\n .then(function (user) {\n // if we get here without an error,\n // the value returned here\n // or the exception thrown here\n // resolves the promise returned\n // by the first line\n })\n});\n```\n\n```javascript\nreturn getUsername()\n.then(function (username) {\n return getUser(username);\n})\n.then(function (user) {\n // if we get here without an error,\n // the value returned here\n // or the exception thrown here\n // resolves the promise returned\n // by the first line\n});\n```\n\nThe only difference is nesting. It’s useful to nest handlers if you\nneed to capture multiple input values in your closure.\n\n```javascript\nfunction authenticate() {\n return getUsername()\n .then(function (username) {\n return getUser(username);\n })\n // chained because we will not need the user name in the next event\n .then(function (user) {\n return getPassword()\n // nested because we need both user and password next\n .then(function (password) {\n if (user.passwordHash !== hash(password)) {\n throw new Error("Can\'t authenticate");\n }\n });\n });\n}\n```\n\n\n### Combination\n\nYou can turn an array of promises into a promise for the whole,\nfulfilled array using ``all``.\n\n```javascript\nreturn Q.all([\n eventualAdd(2, 2),\n eventualAdd(10, 20)\n]);\n```\n\nIf you have a promise for an array, you can use ``spread`` as a\nreplacement for ``then``. The ``spread`` function “spreads” the\nvalues over the arguments of the fulfillment handler. The rejection handler\nwill get called at the first sign of failure. That is, whichever of\nthe recived promises fails first gets handled by the rejection handler.\n\n```javascript\nfunction eventualAdd(a, b) {\n return Q.spread([a, b], function (a, b) {\n return a + b;\n })\n}\n```\n\nBut ``spread`` calls ``all`` initially, so you can skip it in chains.\n\n```javascript\nreturn getUsername()\n.then(function (username) {\n return [username, getUser(username)];\n})\n.spread(function (username, user) {\n});\n```\n\nThe ``all`` function returns a promise for an array of values. When this\npromise is fulfilled, the array contains the fulfillment values of the original\npromises, in the same order as those promises. If one of the given promises\nis rejected, the returned promise is immediately rejected, not waiting for the\nrest of the batch. If you want to wait for all of the promises to either be\nfulfilled or rejected, you can use ``allSettled``.\n\n```javascript\nQ.allSettled(promises)\n.then(function (results) {\n results.forEach(function (result) {\n if (result.state === "fulfilled") {\n var value = result.value;\n } else {\n var reason = result.reason;\n }\n });\n});\n```\n\n\n### Sequences\n\nIf you have a number of promise-producing functions that need\nto be run sequentially, you can of course do so manually:\n\n```javascript\nreturn foo(initialVal).then(bar).then(baz).then(qux);\n```\n\nHowever, if you want to run a dynamically constructed sequence of\nfunctions, you\'ll want something like this:\n\n```javascript\nvar funcs = [foo, bar, baz, qux];\n\nvar result = Q(initialVal);\nfuncs.forEach(function (f) {\n result = result.then(f);\n});\nreturn result;\n```\n\nYou can make this slightly more compact using `reduce`:\n\n```javascript\nreturn funcs.reduce(function (soFar, f) {\n return soFar.then(f);\n}, Q(initialVal));\n```\n\nOr, you could use th ultra-compact version:\n\n```javascript\nreturn funcs.reduce(Q.when, Q());\n```\n\n### Handling Errors\n\nOne sometimes-unintuive aspect of promises is that if you throw an\nexception in the fulfillment handler, it will not be be caught by the error\nhandler.\n\n```javascript\nreturn foo()\n.then(function (value) {\n throw new Error("Can\'t bar.");\n}, function (error) {\n // We only get here if "foo" fails\n});\n```\n\nTo see why this is, consider the parallel between promises and\n``try``/``catch``. We are ``try``-ing to execute ``foo()``: the error\nhandler represents a ``catch`` for ``foo()``, while the fulfillment handler\nrepresents code that happens *after* the ``try``/``catch`` block.\nThat code then needs its own ``try``/``catch`` block.\n\nIn terms of promises, this means chaining your rejection handler:\n\n```javascript\nreturn foo()\n.then(function (value) {\n throw new Error("Can\'t bar.");\n})\n.fail(function (error) {\n // We get here with either foo\'s error or bar\'s error\n});\n```\n\n### Progress Notification\n\nIt\'s possible for promises to report their progress, e.g. for tasks that take a\nlong time like a file upload. Not all promises will implement progress\nnotifications, but for those that do, you can consume the progress values using\na third parameter to ``then``:\n\n```javascript\nreturn uploadFile()\n.then(function () {\n // Success uploading the file\n}, function (err) {\n // There was an error, and we get the reason for error\n}, function (progress) {\n // We get notified of the upload\'s progress as it is executed\n});\n```\n\nLike `fail`, Q also provides a shorthand for progress callbacks\ncalled `progress`:\n\n```javascript\nreturn uploadFile().progress(function (progress) {\n // We get notified of the upload\'s progress\n});\n```\n\n### The End\n\nWhen you get to the end of a chain of promises, you should either\nreturn the last promise or end the chain. Since handlers catch\nerrors, it’s an unfortunate pattern that the exceptions can go\nunobserved.\n\nSo, either return it,\n\n```javascript\nreturn foo()\n.then(function () {\n return "bar";\n});\n```\n\nOr, end it.\n\n```javascript\nfoo()\n.then(function () {\n return "bar";\n})\n.done();\n```\n\nEnding a promise chain makes sure that, if an error doesn’t get\nhandled before the end, it will get rethrown and reported.\n\nThis is a stopgap. We are exploring ways to make unhandled errors\nvisible without any explicit handling.\n\n\n### The Beginning\n\nEverything above assumes you get a promise from somewhere else. This\nis the common case. Every once in a while, you will need to create a\npromise from scratch.\n\n#### Using ``Q.fcall``\n\nYou can create a promise from a value using ``Q.fcall``. This returns a\npromise for 10.\n\n```javascript\nreturn Q.fcall(function () {\n return 10;\n});\n```\n\nYou can also use ``fcall`` to get a promise for an exception.\n\n```javascript\nreturn Q.fcall(function () {\n throw new Error("Can\'t do it");\n});\n```\n\nAs the name implies, ``fcall`` can call functions, or even promised\nfunctions. This uses the ``eventualAdd`` function above to add two\nnumbers.\n\n```javascript\nreturn Q.fcall(eventualAdd, 2, 2);\n```\n\n\n#### Using Deferreds\n\nIf you have to interface with asynchronous functions that are callback-based\ninstead of promise-based, Q provides a few shortcuts (like ``Q.nfcall`` and\nfriends). But much of the time, the solution will be to use *deferreds*.\n\n```javascript\nvar deferred = Q.defer();\nFS.readFile("foo.txt", "utf-8", function (error, text) {\n if (error) {\n deferred.reject(new Error(error));\n } else {\n deferred.resolve(text);\n }\n});\nreturn deferred.promise;\n```\n\nNote that a deferred can be resolved with a value or a promise. The\n``reject`` function is a shorthand for resolving with a rejected\npromise.\n\n```javascript\n// this:\ndeferred.reject(new Error("Can\'t do it"));\n\n// is shorthand for:\nvar rejection = Q.fcall(function () {\n throw new Error("Can\'t do it");\n});\ndeferred.resolve(rejection);\n```\n\nThis is a simplified implementation of ``Q.delay``.\n\n```javascript\nfunction delay(ms) {\n var deferred = Q.defer();\n setTimeout(deferred.resolve, ms);\n return deferred.promise;\n}\n```\n\nThis is a simplified implementation of ``Q.timeout``\n\n```javascript\nfunction timeout(promise, ms) {\n var deferred = Q.defer();\n Q.when(promise, deferred.resolve);\n delay(ms).then(function () {\n deferred.reject(new Error("Timed out"));\n });\n return deferred.promise;\n}\n```\n\nFinally, you can send a progress notification to the promise with\n``deferred.notify``.\n\nFor illustration, this is a wrapper for XML HTTP requests in the browser. Note\nthat a more [thorough][XHR] implementation would be in order in practice.\n\n[XHR]: https://github.com/montagejs/mr/blob/71e8df99bb4f0584985accd6f2801ef3015b9763/browser.js#L29-L73\n\n```javascript\nfunction requestOkText(url) {\n var request = new XMLHttpRequest();\n var deferred = Q.defer();\n\n request.open("GET", url, true);\n request.onload = onload;\n request.onerror = onerror;\n request.onprogress = onprogress;\n request.send();\n\n function onload() {\n if (request.status === 200) {\n deferred.resolve(request.responseText);\n } else {\n deferred.reject(new Error("Status code was " + request.status));\n }\n }\n\n function onerror() {\n deferred.reject(new Error("Can\'t XHR " + JSON.stringify(url)));\n }\n\n function onprogress(event) {\n deferred.notify(event.loaded / event.total);\n }\n\n return deferred.promise;\n}\n```\n\nBelow is an example of how to use this ``requestOkText`` function:\n\n```javascript\nrequestOkText("http://localhost:3000")\n.then(function (responseText) {\n // If the HTTP response returns 200 OK, log the response text.\n console.log(responseText);\n}, function (error) {\n // If there\'s an error or a non-200 status code, log the error.\n console.error(error);\n}, function (progress) {\n // Log the progress as it comes in.\n console.log("Request progress: " + Math.round(progress * 100) + "%");\n});\n```\n\n### The Middle\n\nIf you are using a function that may return a promise, but just might\nreturn a value if it doesn’t need to defer, you can use the “static”\nmethods of the Q library.\n\nThe ``when`` function is the static equivalent for ``then``.\n\n```javascript\nreturn Q.when(valueOrPromise, function (value) {\n}, function (error) {\n});\n```\n\nAll of the other methods on a promise have static analogs with the\nsame name.\n\nThe following are equivalent:\n\n```javascript\nreturn Q.all([a, b]);\n```\n\n```javascript\nreturn Q.fcall(function () {\n return [a, b];\n})\n.all();\n```\n\nWhen working with promises provided by other libraries, you should\nconvert it to a Q promise. Not all promise libraries make the same\nguarantees as Q and certainly don’t provide all of the same methods.\nMost libraries only provide a partially functional ``then`` method.\nThis thankfully is all we need to turn them into vibrant Q promises.\n\n```javascript\nreturn Q($.ajax(...))\n.then(function () {\n});\n```\n\nIf there is any chance that the promise you receive is not a Q promise\nas provided by your library, you should wrap it using a Q function.\nYou can even use ``Q.invoke`` as a shorthand.\n\n```javascript\nreturn Q.invoke($, \'ajax\', ...)\n.then(function () {\n});\n```\n\n\n### Over the Wire\n\nA promise can serve as a proxy for another object, even a remote\nobject. There are methods that allow you to optimistically manipulate\nproperties or call functions. All of these interactions return\npromises, so they can be chained.\n\n```\ndirect manipulation using a promise as a proxy\n-------------------------- -------------------------------\nvalue.foo promise.get("foo")\nvalue.foo = value promise.put("foo", value)\ndelete value.foo promise.del("foo")\nvalue.foo(...args) promise.post("foo", [args])\nvalue.foo(...args) promise.invoke("foo", ...args)\nvalue(...args) promise.fapply([args])\nvalue(...args) promise.fcall(...args)\n```\n\nIf the promise is a proxy for a remote object, you can shave\nround-trips by using these functions instead of ``then``. To take\nadvantage of promises for remote objects, check out [Q-Connection][].\n\n[Q-Connection]: https://github.com/kriskowal/q-connection\n\nEven in the case of non-remote objects, these methods can be used as\nshorthand for particularly-simple fulfillment handlers. For example, you\ncan replace\n\n```javascript\nreturn Q.fcall(function () {\n return [{ foo: "bar" }, { foo: "baz" }];\n})\n.then(function (value) {\n return value[0].foo;\n});\n```\n\nwith\n\n```javascript\nreturn Q.fcall(function () {\n return [{ foo: "bar" }, { foo: "baz" }];\n})\n.get(0)\n.get("foo");\n```\n\n\n### Adapting Node\n\nIf you\'re working with functions that make use of the Node.js callback pattern,\nwhere callbacks are in the form of `function(err, result)`, Q provides a few\nuseful utility functions for converting between them. The most straightforward\nare probably `Q.nfcall` and `Q.nfapply` ("Node function call/apply") for calling\nNode.js-style functions and getting back a promise:\n\n```javascript\nreturn Q.nfcall(FS.readFile, "foo.txt", "utf-8");\nreturn Q.nfapply(FS.readFile, ["foo.txt", "utf-8"]);\n```\n\nIf you are working with methods, instead of simple functions, you can easily\nrun in to the usual problems where passing a method to another function—like\n`Q.nfcall`—"un-binds" the method from its owner. To avoid this, you can either\nuse `Function.prototype.bind` or some nice shortcut methods we provide:\n\n```javascript\nreturn Q.ninvoke(redisClient, "get", "user:1:id");\nreturn Q.npost(redisClient, "get", ["user:1:id"]);\n```\n\nYou can also create reusable wrappers with `Q.denodeify` or `Q.nbind`:\n\n```javascript\nvar readFile = Q.denodeify(FS.readFile);\nreturn readFile("foo.txt", "utf-8");\n\nvar redisClientGet = Q.nbind(redisClient.get, redisClient);\nreturn redisClientGet("user:1:id");\n```\n\nFinally, if you\'re working with raw deferred objects, there is a\n`makeNodeResolver` method on deferreds that can be handy:\n\n```javascript\nvar deferred = Q.defer();\nFS.readFile("foo.txt", "utf-8", deferred.makeNodeResolver());\nreturn deferred.promise;\n```\n\n### Long Stack Traces\n\nQ comes with optional support for “long stack traces,” wherein the `stack`\nproperty of `Error` rejection reasons is rewritten to be traced along\nasynchronous jumps instead of stopping at the most recent one. As an example:\n\n```js\nfunction theDepthsOfMyProgram() {\n Q.delay(100).done(function explode() {\n throw new Error("boo!");\n });\n}\n\ntheDepthsOfMyProgram();\n```\n\nusually would give a rather unhelpful stack trace looking something like\n\n```\nError: boo!\n at explode (/path/to/test.js:3:11)\n at _fulfilled (/path/to/test.js:q:54)\n at resolvedValue.promiseDispatch.done (/path/to/q.js:823:30)\n at makePromise.promise.promiseDispatch (/path/to/q.js:496:13)\n at pending (/path/to/q.js:397:39)\n at process.startup.processNextTick.process._tickCallback (node.js:244:9)\n```\n\nBut, if you turn this feature on by setting\n\n```js\nQ.longStackSupport = true;\n```\n\nthen the above code gives a nice stack trace to the tune of\n\n```\nError: boo!\n at explode (/path/to/test.js:3:11)\nFrom previous event:\n at theDepthsOfMyProgram (/path/to/test.js:2:16)\n at Object.<anonymous> (/path/to/test.js:7:1)\n```\n\nNote how you can see the the function that triggered the async operation in the\nstack trace! This is very helpful for debugging, as otherwise you end up getting\nonly the first line, plus a bunch of Q internals, with no sign of where the\noperation started.\n\nThis feature does come with somewhat-serious performance and memory overhead,\nhowever. If you\'re working with lots of promises, or trying to scale a server\nto many users, you should probably keep it off. But in development, go for it!\n\n## Tests\n\nYou can view the results of the Q test suite [in your browser][tests]!\n\n[tests]: https://rawgithub.com/kriskowal/q/master/spec/q-spec.html\n\n## License\n\nCopyright 2009–2013 Kristopher Michael Kowal\nMIT License (enclosed)\n\n',
281 silly resolved readmeFilename: 'README.md',
281 silly resolved _id: 'q@0.9.7',
281 silly resolved _from: 'q@~0.9.7' },
281 silly resolved { name: 'portscanner',
281 silly resolved description: 'Asynchronous port scanner for Node.js',
281 silly resolved keywords: [ 'portscanner', 'port', 'scanner', 'checker', 'status' ],
281 silly resolved version: '0.1.3',
281 silly resolved preferGlobal: false,
281 silly resolved homepage: 'https://github.com/baalexander/node-portscanner',
281 silly resolved author:
281 silly resolved { name: 'Brandon Alexander',
281 silly resolved email: 'baalexander@gmail.com',
281 silly resolved url: 'https://github.com/baalexander' },
281 silly resolved repository:
281 silly resolved { type: 'git',
281 silly resolved url: 'git://github.com/baalexander/node-portscanner.git' },
281 silly resolved bugs: { url: 'https://github.com/baalexander/node-portscanner/issues' },
281 silly resolved directories: { lib: './lib' },
281 silly resolved main: './lib/portscanner.js',
281 silly resolved dependencies: { async: '0.1.15' },
281 silly resolved devDependencies: {},
281 silly resolved engines: { node: '>=0.4', npm: '>=1.0.0' },
281 silly resolved licenses: [ [Object] ],
281 silly resolved readme: '\n## The What\n\nThe portscanner module is an asynchronous JavaScript port scanner for Node.js.\n\nPortscanner can check a port, or range of ports, for \'open\' or \'closed\'\nstatuses.\n\n## The How\n\n### To Install\n\n```bash\nnpm install portscanner\n```\n\n### To Use\n\nA brief example:\n\n```javascript\nvar portscanner = require(\'portscanner\')\n\n// Checks the status of a single port\nportscanner.checkPortStatus(3000, \'localhost\', function(error, status) {\n // Status is \'open\' if currently in use or \'closed\' if available\n console.log(status)\n})\n\n// Find the first available port. Asynchronously checks, so first port\n// determined as available is returned.\nportscanner.findAPortNotInUse(3000, 3010, \'localhost\', function(error, port) {\n console.log(\'AVAILABLE PORT AT: \' + port)\n})\n\n// Find the first port in use or blocked. Asynchronously checks, so first port\n// to respond is returned.\nportscanner.findAPortInUse(3000, 3010, \'localhost\', function(error, port) {\n console.log(\'PORT IN USE AT: \' + port)\n})\n```\n\nThe example directory contains a more detailed example.\n\n### To Test\n\nBleh. I am a fan of testing, but currently looking into an easier way to test\nseveral HTTP connections. If any ideas, please message me.\n\n## The Future\n\nPlease create issues, or better yet, pull requests, for port scanning related\nfeatures you\'d like to see included.\n\n## The License (MIT)\n\nReleased under the MIT license. See the LICENSE file for the complete wording.\n\n',
281 silly resolved readmeFilename: 'README.md',
281 silly resolved _id: 'portscanner@0.1.3',
281 silly resolved _from: 'portscanner@~0.1.3' } ]
282 info install rimraf@2.2.2 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome
283 info install ncp@0.4.2 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome
284 info install adm-zip@0.4.3 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome
285 info install npmconf@0.1.5 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome
286 info install kew@0.3.0 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome
287 info install q@0.9.7 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome
288 info install portscanner@0.1.3 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome
289 info installOne rimraf@2.2.2
290 info installOne ncp@0.4.2
291 info installOne adm-zip@0.4.3
292 info installOne npmconf@0.1.5
293 info installOne kew@0.3.0
294 info installOne q@0.9.7
295 info installOne portscanner@0.1.3
296 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf unbuild
297 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/ncp unbuild
298 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/adm-zip unbuild
299 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf unbuild
300 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/kew unbuild
301 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/q unbuild
302 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner unbuild
303 verbose tar unpack /home/dev/.npm/rimraf/2.2.2/package.tgz
304 silly lockFile 8c0a4db8-owser-chrome-node-modules-rimraf tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf
305 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf /home/dev/.npm/8c0a4db8-owser-chrome-node-modules-rimraf.lock
306 silly lockFile b339d2ef-dev-npm-rimraf-2-2-2-package-tgz tar:///home/dev/.npm/rimraf/2.2.2/package.tgz
307 verbose lock tar:///home/dev/.npm/rimraf/2.2.2/package.tgz /home/dev/.npm/b339d2ef-dev-npm-rimraf-2-2-2-package-tgz.lock
308 verbose tar unpack /home/dev/.npm/ncp/0.4.2/package.tgz
309 silly lockFile 8ba2b6e3--browser-chrome-node-modules-ncp tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/ncp
310 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/ncp /home/dev/.npm/8ba2b6e3--browser-chrome-node-modules-ncp.lock
311 silly lockFile 744fc9a0-me-dev-npm-ncp-0-4-2-package-tgz tar:///home/dev/.npm/ncp/0.4.2/package.tgz
312 verbose lock tar:///home/dev/.npm/ncp/0.4.2/package.tgz /home/dev/.npm/744fc9a0-me-dev-npm-ncp-0-4-2-package-tgz.lock
313 verbose tar unpack /home/dev/.npm/adm-zip/0.4.3/package.tgz
314 silly lockFile 72115ff5-wser-chrome-node-modules-adm-zip tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/adm-zip
315 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/adm-zip /home/dev/.npm/72115ff5-wser-chrome-node-modules-adm-zip.lock
316 silly lockFile f9c0ff22-ev-npm-adm-zip-0-4-3-package-tgz tar:///home/dev/.npm/adm-zip/0.4.3/package.tgz
317 verbose lock tar:///home/dev/.npm/adm-zip/0.4.3/package.tgz /home/dev/.npm/f9c0ff22-ev-npm-adm-zip-0-4-3-package-tgz.lock
318 verbose tar unpack /home/dev/.npm/npmconf/0.1.5/package.tgz
319 silly lockFile ee1c4b4b-wser-chrome-node-modules-npmconf tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf
320 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf /home/dev/.npm/ee1c4b4b-wser-chrome-node-modules-npmconf.lock
321 silly lockFile 392d754d-ev-npm-npmconf-0-1-5-package-tgz tar:///home/dev/.npm/npmconf/0.1.5/package.tgz
322 verbose lock tar:///home/dev/.npm/npmconf/0.1.5/package.tgz /home/dev/.npm/392d754d-ev-npm-npmconf-0-1-5-package-tgz.lock
323 verbose tar unpack /home/dev/.npm/kew/0.3.0/package.tgz
324 silly lockFile e5688771--browser-chrome-node-modules-kew tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/kew
325 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/kew /home/dev/.npm/e5688771--browser-chrome-node-modules-kew.lock
326 silly lockFile af7c764e-me-dev-npm-kew-0-3-0-package-tgz tar:///home/dev/.npm/kew/0.3.0/package.tgz
327 verbose lock tar:///home/dev/.npm/kew/0.3.0/package.tgz /home/dev/.npm/af7c764e-me-dev-npm-kew-0-3-0-package-tgz.lock
328 verbose tar unpack /home/dev/.npm/q/0.9.7/package.tgz
329 silly lockFile 4f99792b-ek-browser-chrome-node-modules-q tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/q
330 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/q /home/dev/.npm/4f99792b-ek-browser-chrome-node-modules-q.lock
331 silly lockFile 54f564a0-home-dev-npm-q-0-9-7-package-tgz tar:///home/dev/.npm/q/0.9.7/package.tgz
332 verbose lock tar:///home/dev/.npm/q/0.9.7/package.tgz /home/dev/.npm/54f564a0-home-dev-npm-q-0-9-7-package-tgz.lock
333 verbose tar unpack /home/dev/.npm/portscanner/0.1.3/package.tgz
334 silly lockFile b77e4e9f--chrome-node-modules-portscanner tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner
335 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner /home/dev/.npm/b77e4e9f--chrome-node-modules-portscanner.lock
336 silly lockFile 8e415b87-pm-portscanner-0-1-3-package-tgz tar:///home/dev/.npm/portscanner/0.1.3/package.tgz
337 verbose lock tar:///home/dev/.npm/portscanner/0.1.3/package.tgz /home/dev/.npm/8e415b87-pm-portscanner-0-1-3-package-tgz.lock
338 silly gunzTarPerm modes [ '755', '644' ]
339 silly gunzTarPerm modes [ '755', '644' ]
340 silly gunzTarPerm modes [ '755', '644' ]
341 silly gunzTarPerm modes [ '755', '644' ]
342 silly gunzTarPerm modes [ '755', '644' ]
343 silly gunzTarPerm modes [ '755', '644' ]
344 silly gunzTarPerm modes [ '755', '644' ]
345 silly gunzTarPerm extractEntry package.json
346 silly gunzTarPerm extractEntry package.json
347 silly gunzTarPerm extractEntry package.json
348 silly gunzTarPerm extractEntry package.json
349 silly gunzTarPerm extractEntry package.json
350 silly gunzTarPerm extractEntry package.json
351 silly gunzTarPerm extractEntry package.json
352 silly gunzTarPerm extractEntry README.md
353 silly gunzTarPerm extractEntry LICENSE
354 silly gunzTarPerm extractEntry .npmignore
355 silly gunzTarPerm extractEntry README.md
356 silly gunzTarPerm extractEntry README.md
357 silly gunzTarPerm extractEntry adm-zip.js
358 silly gunzTarPerm extractEntry .npmignore
359 silly gunzTarPerm extractEntry README.md
360 silly gunzTarPerm extractEntry .npmignore
361 silly gunzTarPerm extractEntry README.md
362 silly gunzTarPerm extractEntry README.md
363 silly gunzTarPerm extractEntry LICENSE
364 silly gunzTarPerm extractEntry q.js
365 silly gunzTarPerm extractEntry queue.js
366 silly gunzTarPerm extractEntry CONTRIBUTING.md
367 silly gunzTarPerm extractEntry benchmark/compare-with-callbacks.js
368 silly gunzTarPerm extractEntry benchmark/scenarios.js
369 silly gunzTarPerm extractEntry .npmignore
370 silly gunzTarPerm extractEntry README.md
371 silly gunzTarPerm extractEntry bin.js
372 silly gunzTarPerm extractEntry rimraf.js
373 silly gunzTarPerm extractEntry .travis.yml
374 silly gunzTarPerm extractEntry LICENSE.md
375 silly gunzTarPerm extractEntry zipEntry.js
376 silly gunzTarPerm extractEntry LICENSE
377 silly gunzTarPerm extractEntry config-defs.js
378 silly gunzTarPerm extractEntry kew.js
379 silly gunzTarPerm extractEntry LICENSE.TXT
380 silly gunzTarPerm extractEntry test/chain.js
381 silly gunzTarPerm extractEntry test/context.js
382 silly gunzTarPerm extractEntry test/defer.js
383 silly gunzTarPerm extractEntry test/static.js
384 silly gunzTarPerm extractEntry LICENSE
385 silly gunzTarPerm extractEntry lib/portscanner.js
386 silly gunzTarPerm extractEntry AUTHORS
387 silly gunzTarPerm extractEntry test/test-async.js
388 silly gunzTarPerm extractEntry bin/ncp
389 silly gunzTarPerm extractEntry lib/ncp.js
390 silly gunzTarPerm extractEntry npmconf.js
391 silly gunzTarPerm extractEntry zipFile.js
392 silly gunzTarPerm extractEntry MIT-LICENSE.txt
393 silly gunzTarPerm extractEntry test/test-sync.js
394 silly gunzTarPerm extractEntry test/run.sh
395 silly gunzTarPerm extractEntry test/00-setup.js
396 silly gunzTarPerm extractEntry test/basic.js
397 silly gunzTarPerm extractEntry test/ncp-test.js
398 silly gunzTarPerm extractEntry test/fixtures/src/a
399 silly gunzTarPerm extractEntry test/fixtures/src/b
400 silly gunzTarPerm extractEntry test/fixtures/src/c
401 silly gunzTarPerm extractEntry test/fixtures/src/d
402 silly gunzTarPerm extractEntry test/fixtures/src/e
403 silly gunzTarPerm extractEntry test/fixtures/src/f
404 silly gunzTarPerm extractEntry test/fixtures/src/sub/a
405 silly gunzTarPerm extractEntry test/fixtures/src/sub/b
406 silly gunzTarPerm extractEntry test/setup.sh
407 silly gunzTarPerm extractEntry test/builtin.js
408 silly gunzTarPerm extractEntry test/save.js
409 silly gunzTarPerm extractEntry headers/entryHeader.js
410 silly gunzTarPerm extractEntry headers/index.js
411 silly lockFile b77e4e9f--chrome-node-modules-portscanner tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner
412 silly lockFile b77e4e9f--chrome-node-modules-portscanner tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner
413 silly lockFile 8e415b87-pm-portscanner-0-1-3-package-tgz tar:///home/dev/.npm/portscanner/0.1.3/package.tgz
414 silly lockFile 8e415b87-pm-portscanner-0-1-3-package-tgz tar:///home/dev/.npm/portscanner/0.1.3/package.tgz
415 info preinstall portscanner@0.1.3
416 verbose readDependencies using package.json deps
417 verbose readDependencies using package.json deps
418 verbose cache add [ 'async@0.1.15', null ]
419 verbose cache add name=undefined spec="async@0.1.15" args=["async@0.1.15",null]
420 verbose parsed url { protocol: null,
420 verbose parsed url slashes: null,
420 verbose parsed url auth: null,
420 verbose parsed url host: null,
420 verbose parsed url port: null,
420 verbose parsed url hostname: null,
420 verbose parsed url hash: null,
420 verbose parsed url search: null,
420 verbose parsed url query: null,
420 verbose parsed url pathname: 'async@0.1.15',
420 verbose parsed url path: 'async@0.1.15',
420 verbose parsed url href: 'async@0.1.15' }
421 verbose cache add name="async" spec="0.1.15" args=["async","0.1.15"]
422 verbose parsed url { protocol: null,
422 verbose parsed url slashes: null,
422 verbose parsed url auth: null,
422 verbose parsed url host: null,
422 verbose parsed url port: null,
422 verbose parsed url hostname: null,
422 verbose parsed url hash: null,
422 verbose parsed url search: null,
422 verbose parsed url query: null,
422 verbose parsed url pathname: '0.1.15',
422 verbose parsed url path: '0.1.15',
422 verbose parsed url href: '0.1.15' }
423 verbose addNamed [ 'async', '0.1.15' ]
424 verbose addNamed [ '0.1.15', '0.1.15' ]
425 silly lockFile 483e6353-async-0-1-15 async@0.1.15
426 verbose lock async@0.1.15 /home/dev/.npm/483e6353-async-0-1-15.lock
427 silly gunzTarPerm extractEntry test/fixtures/builtin
428 silly gunzTarPerm extractEntry test/fixtures/globalconfig
429 verbose url raw async/0.1.15
430 verbose url resolving [ 'https://registry.npmjs.org/', './async/0.1.15' ]
431 verbose url resolved https://registry.npmjs.org/async/0.1.15
432 info trying registry request attempt 1 at 22:18:41
433 verbose etag "2B1Y1C2HQ67I3WVSBVWN4MMV1"
434 http GET https://registry.npmjs.org/async/0.1.15
435 silly gunzTarPerm extractEntry headers/mainHeader.js
436 silly gunzTarPerm extractEntry methods/deflater.js
437 silly gunzTarPerm extractEntry test/fixtures/userconfig
438 silly lockFile 8c0a4db8-owser-chrome-node-modules-rimraf tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf
439 silly lockFile 8c0a4db8-owser-chrome-node-modules-rimraf tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf
440 silly lockFile b339d2ef-dev-npm-rimraf-2-2-2-package-tgz tar:///home/dev/.npm/rimraf/2.2.2/package.tgz
441 silly lockFile b339d2ef-dev-npm-rimraf-2-2-2-package-tgz tar:///home/dev/.npm/rimraf/2.2.2/package.tgz
442 silly gunzTarPerm extractEntry methods/index.js
443 silly gunzTarPerm extractEntry methods/inflater.js
444 info preinstall rimraf@2.2.2
445 verbose readDependencies using package.json deps
446 verbose readDependencies using package.json deps
447 silly gunzTarPerm extractEntry test/index.js
448 silly gunzTarPerm extractEntry test/assets/attributes_test/New folder/hidden.txt
449 verbose cache add [ 'graceful-fs@~2', null ]
450 verbose cache add name=undefined spec="graceful-fs@~2" args=["graceful-fs@~2",null]
451 verbose parsed url { protocol: null,
451 verbose parsed url slashes: null,
451 verbose parsed url auth: null,
451 verbose parsed url host: null,
451 verbose parsed url port: null,
451 verbose parsed url hostname: null,
451 verbose parsed url hash: null,
451 verbose parsed url search: null,
451 verbose parsed url query: null,
451 verbose parsed url pathname: 'graceful-fs@~2',
451 verbose parsed url path: 'graceful-fs@~2',
451 verbose parsed url href: 'graceful-fs@~2' }
452 verbose cache add name="graceful-fs" spec="~2" args=["graceful-fs","~2"]
453 verbose parsed url { protocol: null,
453 verbose parsed url slashes: null,
453 verbose parsed url auth: null,
453 verbose parsed url host: null,
453 verbose parsed url port: null,
453 verbose parsed url hostname: null,
453 verbose parsed url hash: null,
453 verbose parsed url search: null,
453 verbose parsed url query: null,
453 verbose parsed url pathname: '~2',
453 verbose parsed url path: '~2',
453 verbose parsed url href: '~2' }
454 verbose addNamed [ 'graceful-fs', '~2' ]
455 verbose addNamed [ null, '>=2.0.0-0 <3.0.0-0' ]
456 silly lockFile 8099b76c-graceful-fs-2 graceful-fs@~2
457 verbose lock graceful-fs@~2 /home/dev/.npm/8099b76c-graceful-fs-2.lock
458 silly addNameRange { name: 'graceful-fs',
458 silly addNameRange range: '>=2.0.0-0 <3.0.0-0',
458 silly addNameRange hasData: false }
459 verbose url raw graceful-fs
460 verbose url resolving [ 'https://registry.npmjs.org/', './graceful-fs' ]
461 verbose url resolved https://registry.npmjs.org/graceful-fs
462 info trying registry request attempt 1 at 22:18:41
463 verbose etag "8VTIGE3KHXX4861152PVTWGF8"
464 http GET https://registry.npmjs.org/graceful-fs
465 silly gunzTarPerm extractEntry test/assets/attributes_test/New folder/hidden_readonly.txt
466 silly gunzTarPerm extractEntry test/assets/attributes_test/New folder/readonly.txt
467 silly gunzTarPerm extractEntry test/assets/attributes_test/New folder/somefile.txt
468 silly gunzTarPerm extractEntry test/assets/attributes_test/asd/New Text Document.txt
469 silly lockFile 8ba2b6e3--browser-chrome-node-modules-ncp tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/ncp
470 silly lockFile 8ba2b6e3--browser-chrome-node-modules-ncp tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/ncp
471 silly lockFile 744fc9a0-me-dev-npm-ncp-0-4-2-package-tgz tar:///home/dev/.npm/ncp/0.4.2/package.tgz
472 silly lockFile 744fc9a0-me-dev-npm-ncp-0-4-2-package-tgz tar:///home/dev/.npm/ncp/0.4.2/package.tgz
473 silly gunzTarPerm extractEntry test/assets/attributes_test/blank file.txt
474 silly gunzTarPerm extractEntry test/assets/attributes_test.zip
475 info preinstall ncp@0.4.2
476 verbose readDependencies using package.json deps
477 verbose readDependencies using package.json deps
478 silly resolved []
479 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/ncp
480 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/ncp
481 verbose linkStuff [ false,
481 verbose linkStuff false,
481 verbose linkStuff false,
481 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules' ]
482 info linkStuff ncp@0.4.2
483 verbose linkBins ncp@0.4.2
484 verbose link bins [ { ncp: './bin/ncp' },
484 verbose link bins '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/.bin',
484 verbose link bins false ]
485 verbose linkMans ncp@0.4.2
486 verbose rebuildBundles ncp@0.4.2
487 info install ncp@0.4.2
488 silly lockFile ee1c4b4b-wser-chrome-node-modules-npmconf tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf
489 silly lockFile ee1c4b4b-wser-chrome-node-modules-npmconf tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf
490 info postinstall ncp@0.4.2
491 silly lockFile 392d754d-ev-npm-npmconf-0-1-5-package-tgz tar:///home/dev/.npm/npmconf/0.1.5/package.tgz
492 silly lockFile 392d754d-ev-npm-npmconf-0-1-5-package-tgz tar:///home/dev/.npm/npmconf/0.1.5/package.tgz
493 silly lockFile e5688771--browser-chrome-node-modules-kew tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/kew
494 silly lockFile e5688771--browser-chrome-node-modules-kew tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/kew
495 silly lockFile af7c764e-me-dev-npm-kew-0-3-0-package-tgz tar:///home/dev/.npm/kew/0.3.0/package.tgz
496 silly lockFile af7c764e-me-dev-npm-kew-0-3-0-package-tgz tar:///home/dev/.npm/kew/0.3.0/package.tgz
497 info preinstall npmconf@0.1.5
498 verbose readDependencies using package.json deps
499 info preinstall kew@0.3.0
500 verbose readDependencies using package.json deps
501 verbose readDependencies using package.json deps
502 verbose cache add [ 'config-chain@~1.1.8', null ]
503 verbose cache add name=undefined spec="config-chain@~1.1.8" args=["config-chain@~1.1.8",null]
504 verbose parsed url { protocol: null,
504 verbose parsed url slashes: null,
504 verbose parsed url auth: null,
504 verbose parsed url host: null,
504 verbose parsed url port: null,
504 verbose parsed url hostname: null,
504 verbose parsed url hash: null,
504 verbose parsed url search: null,
504 verbose parsed url query: null,
504 verbose parsed url pathname: 'config-chain@~1.1.8',
504 verbose parsed url path: 'config-chain@~1.1.8',
504 verbose parsed url href: 'config-chain@~1.1.8' }
505 verbose cache add name="config-chain" spec="~1.1.8" args=["config-chain","~1.1.8"]
506 verbose parsed url { protocol: null,
506 verbose parsed url slashes: null,
506 verbose parsed url auth: null,
506 verbose parsed url host: null,
506 verbose parsed url port: null,
506 verbose parsed url hostname: null,
506 verbose parsed url hash: null,
506 verbose parsed url search: null,
506 verbose parsed url query: null,
506 verbose parsed url pathname: '~1.1.8',
506 verbose parsed url path: '~1.1.8',
506 verbose parsed url href: '~1.1.8' }
507 verbose addNamed [ 'config-chain', '~1.1.8' ]
508 verbose addNamed [ null, '>=1.1.8-0 <1.2.0-0' ]
509 silly lockFile 24c95d3c-config-chain-1-1-8 config-chain@~1.1.8
510 verbose lock config-chain@~1.1.8 /home/dev/.npm/24c95d3c-config-chain-1-1-8.lock
511 verbose cache add [ 'inherits@~2.0.0', null ]
512 verbose cache add name=undefined spec="inherits@~2.0.0" args=["inherits@~2.0.0",null]
513 verbose parsed url { protocol: null,
513 verbose parsed url slashes: null,
513 verbose parsed url auth: null,
513 verbose parsed url host: null,
513 verbose parsed url port: null,
513 verbose parsed url hostname: null,
513 verbose parsed url hash: null,
513 verbose parsed url search: null,
513 verbose parsed url query: null,
513 verbose parsed url pathname: 'inherits@~2.0.0',
513 verbose parsed url path: 'inherits@~2.0.0',
513 verbose parsed url href: 'inherits@~2.0.0' }
514 verbose cache add name="inherits" spec="~2.0.0" args=["inherits","~2.0.0"]
515 verbose parsed url { protocol: null,
515 verbose parsed url slashes: null,
515 verbose parsed url auth: null,
515 verbose parsed url host: null,
515 verbose parsed url port: null,
515 verbose parsed url hostname: null,
515 verbose parsed url hash: null,
515 verbose parsed url search: null,
515 verbose parsed url query: null,
515 verbose parsed url pathname: '~2.0.0',
515 verbose parsed url path: '~2.0.0',
515 verbose parsed url href: '~2.0.0' }
516 verbose addNamed [ 'inherits', '~2.0.0' ]
517 verbose addNamed [ null, '>=2.0.0-0 <2.1.0-0' ]
518 silly lockFile e2566bb4-inherits-2-0-0 inherits@~2.0.0
519 verbose lock inherits@~2.0.0 /home/dev/.npm/e2566bb4-inherits-2-0-0.lock
520 verbose readDependencies using package.json deps
521 silly resolved []
522 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/kew
523 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/kew
524 verbose linkStuff [ false,
524 verbose linkStuff false,
524 verbose linkStuff false,
524 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules' ]
525 info linkStuff kew@0.3.0
526 verbose linkBins kew@0.3.0
527 verbose linkMans kew@0.3.0
528 verbose rebuildBundles kew@0.3.0
529 verbose cache add [ 'mkdirp@~0.3.3', null ]
530 verbose cache add name=undefined spec="mkdirp@~0.3.3" args=["mkdirp@~0.3.3",null]
531 verbose parsed url { protocol: null,
531 verbose parsed url slashes: null,
531 verbose parsed url auth: null,
531 verbose parsed url host: null,
531 verbose parsed url port: null,
531 verbose parsed url hostname: null,
531 verbose parsed url hash: null,
531 verbose parsed url search: null,
531 verbose parsed url query: null,
531 verbose parsed url pathname: 'mkdirp@~0.3.3',
531 verbose parsed url path: 'mkdirp@~0.3.3',
531 verbose parsed url href: 'mkdirp@~0.3.3' }
532 verbose cache add name="mkdirp" spec="~0.3.3" args=["mkdirp","~0.3.3"]
533 verbose parsed url { protocol: null,
533 verbose parsed url slashes: null,
533 verbose parsed url auth: null,
533 verbose parsed url host: null,
533 verbose parsed url port: null,
533 verbose parsed url hostname: null,
533 verbose parsed url hash: null,
533 verbose parsed url search: null,
533 verbose parsed url query: null,
533 verbose parsed url pathname: '~0.3.3',
533 verbose parsed url path: '~0.3.3',
533 verbose parsed url href: '~0.3.3' }
534 verbose addNamed [ 'mkdirp', '~0.3.3' ]
535 verbose addNamed [ null, '>=0.3.3-0 <0.4.0-0' ]
536 silly lockFile 284959b2-mkdirp-0-3-3 mkdirp@~0.3.3
537 verbose lock mkdirp@~0.3.3 /home/dev/.npm/284959b2-mkdirp-0-3-3.lock
538 verbose cache add [ 'once@~1.3.0', null ]
539 verbose cache add name=undefined spec="once@~1.3.0" args=["once@~1.3.0",null]
540 verbose parsed url { protocol: null,
540 verbose parsed url slashes: null,
540 verbose parsed url auth: null,
540 verbose parsed url host: null,
540 verbose parsed url port: null,
540 verbose parsed url hostname: null,
540 verbose parsed url hash: null,
540 verbose parsed url search: null,
540 verbose parsed url query: null,
540 verbose parsed url pathname: 'once@~1.3.0',
540 verbose parsed url path: 'once@~1.3.0',
540 verbose parsed url href: 'once@~1.3.0' }
541 verbose cache add name="once" spec="~1.3.0" args=["once","~1.3.0"]
542 verbose parsed url { protocol: null,
542 verbose parsed url slashes: null,
542 verbose parsed url auth: null,
542 verbose parsed url host: null,
542 verbose parsed url port: null,
542 verbose parsed url hostname: null,
542 verbose parsed url hash: null,
542 verbose parsed url search: null,
542 verbose parsed url query: null,
542 verbose parsed url pathname: '~1.3.0',
542 verbose parsed url path: '~1.3.0',
542 verbose parsed url href: '~1.3.0' }
543 verbose addNamed [ 'once', '~1.3.0' ]
544 verbose addNamed [ null, '>=1.3.0-0 <1.4.0-0' ]
545 silly lockFile 078063e6-once-1-3-0 once@~1.3.0
546 verbose lock once@~1.3.0 /home/dev/.npm/078063e6-once-1-3-0.lock
547 verbose cache add [ 'osenv@0.0.3', null ]
548 verbose cache add name=undefined spec="osenv@0.0.3" args=["osenv@0.0.3",null]
549 verbose parsed url { protocol: null,
549 verbose parsed url slashes: null,
549 verbose parsed url auth: null,
549 verbose parsed url host: null,
549 verbose parsed url port: null,
549 verbose parsed url hostname: null,
549 verbose parsed url hash: null,
549 verbose parsed url search: null,
549 verbose parsed url query: null,
549 verbose parsed url pathname: 'osenv@0.0.3',
549 verbose parsed url path: 'osenv@0.0.3',
549 verbose parsed url href: 'osenv@0.0.3' }
550 verbose cache add name="osenv" spec="0.0.3" args=["osenv","0.0.3"]
551 verbose parsed url { protocol: null,
551 verbose parsed url slashes: null,
551 verbose parsed url auth: null,
551 verbose parsed url host: null,
551 verbose parsed url port: null,
551 verbose parsed url hostname: null,
551 verbose parsed url hash: null,
551 verbose parsed url search: null,
551 verbose parsed url query: null,
551 verbose parsed url pathname: '0.0.3',
551 verbose parsed url path: '0.0.3',
551 verbose parsed url href: '0.0.3' }
552 verbose addNamed [ 'osenv', '0.0.3' ]
553 verbose addNamed [ '0.0.3', '0.0.3' ]
554 silly lockFile 4085d016-osenv-0-0-3 osenv@0.0.3
555 verbose lock osenv@0.0.3 /home/dev/.npm/4085d016-osenv-0-0-3.lock
556 info install kew@0.3.0
557 silly addNameRange { name: 'config-chain',
557 silly addNameRange range: '>=1.1.8-0 <1.2.0-0',
557 silly addNameRange hasData: false }
558 silly addNameRange { name: 'inherits', range: '>=2.0.0-0 <2.1.0-0', hasData: false }
559 verbose cache add [ 'nopt@2', null ]
560 verbose cache add name=undefined spec="nopt@2" args=["nopt@2",null]
561 verbose parsed url { protocol: null,
561 verbose parsed url slashes: null,
561 verbose parsed url auth: null,
561 verbose parsed url host: null,
561 verbose parsed url port: null,
561 verbose parsed url hostname: null,
561 verbose parsed url hash: null,
561 verbose parsed url search: null,
561 verbose parsed url query: null,
561 verbose parsed url pathname: 'nopt@2',
561 verbose parsed url path: 'nopt@2',
561 verbose parsed url href: 'nopt@2' }
562 verbose cache add name="nopt" spec="2" args=["nopt","2"]
563 verbose parsed url { protocol: null,
563 verbose parsed url slashes: null,
563 verbose parsed url auth: null,
563 verbose parsed url host: null,
563 verbose parsed url port: null,
563 verbose parsed url hostname: null,
563 verbose parsed url hash: null,
563 verbose parsed url search: null,
563 verbose parsed url query: null,
563 verbose parsed url pathname: '2',
563 verbose parsed url path: '2',
563 verbose parsed url href: '2' }
564 verbose addNamed [ 'nopt', '2' ]
565 verbose addNamed [ null, '>=2.0.0-0 <3.0.0-0' ]
566 silly lockFile 64594a3f-nopt-2 nopt@2
567 verbose lock nopt@2 /home/dev/.npm/64594a3f-nopt-2.lock
568 verbose cache add [ 'semver@2', null ]
569 verbose cache add name=undefined spec="semver@2" args=["semver@2",null]
570 verbose parsed url { protocol: null,
570 verbose parsed url slashes: null,
570 verbose parsed url auth: null,
570 verbose parsed url host: null,
570 verbose parsed url port: null,
570 verbose parsed url hostname: null,
570 verbose parsed url hash: null,
570 verbose parsed url search: null,
570 verbose parsed url query: null,
570 verbose parsed url pathname: 'semver@2',
570 verbose parsed url path: 'semver@2',
570 verbose parsed url href: 'semver@2' }
571 verbose cache add name="semver" spec="2" args=["semver","2"]
572 verbose parsed url { protocol: null,
572 verbose parsed url slashes: null,
572 verbose parsed url auth: null,
572 verbose parsed url host: null,
572 verbose parsed url port: null,
572 verbose parsed url hostname: null,
572 verbose parsed url hash: null,
572 verbose parsed url search: null,
572 verbose parsed url query: null,
572 verbose parsed url pathname: '2',
572 verbose parsed url path: '2',
572 verbose parsed url href: '2' }
573 verbose addNamed [ 'semver', '2' ]
574 verbose addNamed [ null, '>=2.0.0-0 <3.0.0-0' ]
575 silly lockFile b604fbc6-semver-2 semver@2
576 verbose lock semver@2 /home/dev/.npm/b604fbc6-semver-2.lock
577 verbose cache add [ 'ini@~1.1.0', null ]
578 verbose cache add name=undefined spec="ini@~1.1.0" args=["ini@~1.1.0",null]
579 verbose parsed url { protocol: null,
579 verbose parsed url slashes: null,
579 verbose parsed url auth: null,
579 verbose parsed url host: null,
579 verbose parsed url port: null,
579 verbose parsed url hostname: null,
579 verbose parsed url hash: null,
579 verbose parsed url search: null,
579 verbose parsed url query: null,
579 verbose parsed url pathname: 'ini@~1.1.0',
579 verbose parsed url path: 'ini@~1.1.0',
579 verbose parsed url href: 'ini@~1.1.0' }
580 verbose cache add name="ini" spec="~1.1.0" args=["ini","~1.1.0"]
581 verbose parsed url { protocol: null,
581 verbose parsed url slashes: null,
581 verbose parsed url auth: null,
581 verbose parsed url host: null,
581 verbose parsed url port: null,
581 verbose parsed url hostname: null,
581 verbose parsed url hash: null,
581 verbose parsed url search: null,
581 verbose parsed url query: null,
581 verbose parsed url pathname: '~1.1.0',
581 verbose parsed url path: '~1.1.0',
581 verbose parsed url href: '~1.1.0' }
582 verbose addNamed [ 'ini', '~1.1.0' ]
583 verbose addNamed [ null, '>=1.1.0-0 <1.2.0-0' ]
584 silly lockFile d6a0c59d-ini-1-1-0 ini@~1.1.0
585 verbose lock ini@~1.1.0 /home/dev/.npm/d6a0c59d-ini-1-1-0.lock
586 silly addNameRange { name: 'mkdirp', range: '>=0.3.3-0 <0.4.0-0', hasData: false }
587 silly addNameRange { name: 'once', range: '>=1.3.0-0 <1.4.0-0', hasData: false }
588 info postinstall kew@0.3.0
589 silly addNameRange { name: 'nopt', range: '>=2.0.0-0 <3.0.0-0', hasData: false }
590 silly addNameRange { name: 'semver', range: '>=2.0.0-0 <3.0.0-0', hasData: false }
591 silly addNameRange { name: 'ini', range: '>=1.1.0-0 <1.2.0-0', hasData: false }
592 verbose url raw config-chain
593 verbose url resolving [ 'https://registry.npmjs.org/', './config-chain' ]
594 verbose url resolved https://registry.npmjs.org/config-chain
595 info trying registry request attempt 1 at 22:18:41
596 verbose etag "9TQAD0HUAM1QUBF9LFRCMRVR7"
597 http GET https://registry.npmjs.org/config-chain
598 verbose url raw inherits
599 verbose url resolving [ 'https://registry.npmjs.org/', './inherits' ]
600 verbose url resolved https://registry.npmjs.org/inherits
601 info trying registry request attempt 1 at 22:18:41
602 verbose etag "3BB9CXXI1GQW1OTCNLR8KNUQW"
603 http GET https://registry.npmjs.org/inherits
604 verbose url raw mkdirp
605 verbose url resolving [ 'https://registry.npmjs.org/', './mkdirp' ]
606 verbose url resolved https://registry.npmjs.org/mkdirp
607 info trying registry request attempt 1 at 22:18:41
608 verbose etag "6A3HQJJS800XM6HY1G91KHAHX"
609 http GET https://registry.npmjs.org/mkdirp
610 verbose url raw once
611 verbose url resolving [ 'https://registry.npmjs.org/', './once' ]
612 verbose url resolved https://registry.npmjs.org/once
613 info trying registry request attempt 1 at 22:18:41
614 verbose etag "5EVD9F3N8WC7PWWZT58JF8JR6"
615 http GET https://registry.npmjs.org/once
616 verbose url raw osenv/0.0.3
617 verbose url resolving [ 'https://registry.npmjs.org/', './osenv/0.0.3' ]
618 verbose url resolved https://registry.npmjs.org/osenv/0.0.3
619 info trying registry request attempt 1 at 22:18:41
620 verbose etag "988AFYLFBQBVSXZR0VKXG5JLY"
621 http GET https://registry.npmjs.org/osenv/0.0.3
622 verbose url raw nopt
623 verbose url resolving [ 'https://registry.npmjs.org/', './nopt' ]
624 verbose url resolved https://registry.npmjs.org/nopt
625 info trying registry request attempt 1 at 22:18:41
626 verbose etag "3XYNN1DM5K7F9CX72UU5XRP7T"
627 http GET https://registry.npmjs.org/nopt
628 verbose url raw semver
629 verbose url resolving [ 'https://registry.npmjs.org/', './semver' ]
630 verbose url resolved https://registry.npmjs.org/semver
631 info trying registry request attempt 1 at 22:18:41
632 verbose etag "1BRH1SB8YF6367PHYJQ39UKTP"
633 http GET https://registry.npmjs.org/semver
634 verbose url raw ini
635 verbose url resolving [ 'https://registry.npmjs.org/', './ini' ]
636 verbose url resolved https://registry.npmjs.org/ini
637 info trying registry request attempt 1 at 22:18:41
638 verbose etag "ZJNRPZ9SLUUIQB56VZSG1X63"
639 http GET https://registry.npmjs.org/ini
640 silly lockFile 4f99792b-ek-browser-chrome-node-modules-q tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/q
641 silly lockFile 4f99792b-ek-browser-chrome-node-modules-q tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/q
642 silly lockFile 54f564a0-home-dev-npm-q-0-9-7-package-tgz tar:///home/dev/.npm/q/0.9.7/package.tgz
643 silly lockFile 54f564a0-home-dev-npm-q-0-9-7-package-tgz tar:///home/dev/.npm/q/0.9.7/package.tgz
644 info preinstall q@0.9.7
645 verbose readDependencies using package.json deps
646 verbose readDependencies using package.json deps
647 silly resolved []
648 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/q
649 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/q
650 verbose linkStuff [ false,
650 verbose linkStuff false,
650 verbose linkStuff false,
650 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules' ]
651 info linkStuff q@0.9.7
652 verbose linkBins q@0.9.7
653 verbose linkMans q@0.9.7
654 verbose rebuildBundles q@0.9.7
655 info install q@0.9.7
656 info postinstall q@0.9.7
657 silly gunzTarPerm extractEntry test/assets/fast.zip
658 silly gunzTarPerm extractEntry test/assets/fastest.zip
659 silly gunzTarPerm extractEntry test/assets/linux_arc.zip
660 silly gunzTarPerm extractEntry test/assets/maximum.zip
661 silly gunzTarPerm extractEntry test/assets/normal.zip
662 silly gunzTarPerm extractEntry test/assets/store.zip
663 silly gunzTarPerm extractEntry test/assets/ultra.zip
664 silly gunzTarPerm extractEntry util/constants.js
665 silly gunzTarPerm extractEntry util/errors.js
666 silly gunzTarPerm extractEntry util/fattr.js
667 silly gunzTarPerm extractEntry util/index.js
668 silly gunzTarPerm extractEntry util/utils.js
669 silly lockFile 72115ff5-wser-chrome-node-modules-adm-zip tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/adm-zip
670 silly lockFile 72115ff5-wser-chrome-node-modules-adm-zip tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/adm-zip
671 silly lockFile f9c0ff22-ev-npm-adm-zip-0-4-3-package-tgz tar:///home/dev/.npm/adm-zip/0.4.3/package.tgz
672 silly lockFile f9c0ff22-ev-npm-adm-zip-0-4-3-package-tgz tar:///home/dev/.npm/adm-zip/0.4.3/package.tgz
673 info preinstall adm-zip@0.4.3
674 verbose readDependencies using package.json deps
675 verbose readDependencies using package.json deps
676 silly resolved []
677 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/adm-zip
678 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/adm-zip
679 verbose linkStuff [ false,
679 verbose linkStuff false,
679 verbose linkStuff false,
679 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules' ]
680 info linkStuff adm-zip@0.4.3
681 verbose linkBins adm-zip@0.4.3
682 verbose linkMans adm-zip@0.4.3
683 verbose rebuildBundles adm-zip@0.4.3
684 info install adm-zip@0.4.3
685 info postinstall adm-zip@0.4.3
686 http 304 https://registry.npmjs.org/async/0.1.15
687 silly registry.get cb [ 304,
687 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
687 silly registry.get etag: '"2B1Y1C2HQ67I3WVSBVWN4MMV1"',
687 silly registry.get date: 'Wed, 13 Nov 2013 21:18:41 GMT',
687 silly registry.get 'content-length': '0' } ]
688 verbose etag async/0.1.15 from cache
689 silly lockFile 483e6353-async-0-1-15 async@0.1.15
690 silly lockFile 483e6353-async-0-1-15 async@0.1.15
691 silly resolved [ { name: 'async',
691 silly resolved description: 'Higher-order functions and common patterns for asynchronous code',
691 silly resolved main: './index',
691 silly resolved author: { name: 'Caolan McMahon' },
691 silly resolved version: '0.1.15',
691 silly resolved repository: { type: 'git', url: 'https://github.com/caolan/async.git' },
691 silly resolved bugs: { url: 'https://github.com/caolan/async/issues' },
691 silly resolved licenses: [ [Object] ],
691 silly resolved readme: '# Async.js\n\nAsync is a utility module which provides straight-forward, powerful functions\nfor working with asynchronous JavaScript. Although originally designed for\nuse with [node.js](http://nodejs.org), it can also be used directly in the\nbrowser.\n\nAsync provides around 20 functions that include the usual \'functional\'\nsuspects (map, reduce, filter, forEach…) as well as some common patterns\nfor asynchronous control flow (parallel, series, waterfall…). All these\nfunctions assume you follow the node.js convention of providing a single\ncallback as the last argument of your async function.\n\n\n## Quick Examples\n\n async.map([\'file1\',\'file2\',\'file3\'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n });\n\n async.filter([\'file1\',\'file2\',\'file3\'], path.exists, function(results){\n // results now equals an array of the existing files\n });\n\n async.parallel([\n function(){ ... },\n function(){ ... }\n ], callback);\n\n async.series([\n function(){ ... },\n function(){ ... }\n ]);\n\nThere are many more functions available so take a look at the docs below for a\nfull list. This module aims to be comprehensive, so if you feel anything is\nmissing please create a GitHub issue for it.\n\n\n## Download\n\nReleases are available for download from\n[GitHub](https://github.com/caolan/async/downloads).\nAlternatively, you can install using Node Package Manager (npm):\n\n npm install async\n\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 17.5kb Uncompressed\n\n__Production:__ [async.min.js](https://github.com/caolan/async/raw/master/dist/async.min.js) - 1.7kb Packed and Gzipped\n\n\n## In the Browser\n\nSo far its been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:\n\n <script type="text/javascript" src="async.js"></script>\n <script type="text/javascript">\n\n async.map(data, asyncProcess, function(err, results){\n alert(results);\n });\n\n </script>\n\n\n## Documentation\n\n### Collections\n\n* [forEach](#forEach)\n* [map](#map)\n* [filter](#filter)\n* [reject](#reject)\n* [reduce](#reduce)\n* [detect](#detect)\n* [sortBy](#sortBy)\n* [some](#some)\n* [every](#every)\n* [concat](#concat)\n\n### Control Flow\n\n* [series](#series)\n* [parallel](#parallel)\n* [whilst](#whilst)\n* [until](#until)\n* [waterfall](#waterfall)\n* [queue](#queue)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n\n### Utils\n\n* [memoize](#memoize)\n* [unmemoize](#unmemoize)\n* [log](#log)\n* [dir](#dir)\n* [noConflict](#noConflict)\n\n\n## Collections\n\n<a name="forEach" />\n### forEach(arr, iterator, callback)\n\nApplies an iterator function to each item in an array, in parallel.\nThe iterator is called with an item from the list and a callback for when it\nhas finished. If the iterator passes an error to this callback, the main\ncallback for the forEach function is immediately called with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n // assuming openFiles is an array of file names and saveFile is a function\n // to save the modified contents of that file:\n\n async.forEach(openFiles, saveFile, function(err){\n // if any of the saves produced an error, err would equal that error\n });\n\n---------------------------------------\n\n<a name="forEachSeries" />\n### forEachSeries(arr, iterator, callback)\n\nThe same as forEach only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. This means the iterator functions will complete in order.\n\n\n---------------------------------------\n\n<a name="forEachLimit" />\n### forEachLimit(arr, limit, iterator, callback)\n\nThe same as forEach only the iterator is applied to batches of items in the\narray, in series. The next batch of iterators is only called once the current\none has completed processing.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - How many items should be in each batch.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n // Assume documents is an array of JSON objects and requestApi is a\n // function that interacts with a rate-limited REST api.\n\n async.forEachLimit(documents, 20, requestApi, function(err){\n // if any of the saves produced an error, err would equal that error\n });\n---------------------------------------\n\n<a name="map" />\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in the given array through\nthe iterator function. The iterator is called with an item from the array and a\ncallback for when it has finished processing. The callback takes 2 arguments, \nan error and the transformed item from the array. If the iterator passes an\nerror to this callback, the main callback for the map function is immediately\ncalled with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order, however\nthe results array will be in the same order as the original array.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array of the\n transformed items from the original array.\n\n__Example__\n\n async.map([\'file1\',\'file2\',\'file3\'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n });\n\n---------------------------------------\n\n<a name="mapSeries" />\n### mapSeries(arr, iterator, callback)\n\nThe same as map only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n---------------------------------------\n\n<a name="filter" />\n### filter(arr, iterator, callback)\n\n__Alias:__ select\n\nReturns a new array of all the values which pass an async truth test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.exists. This operation is\nperformed in parallel, but the results array will be in the same order as the\noriginal.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(results) - A callback which is called after all the iterator\n functions have finished.\n\n__Example__\n\n async.filter([\'file1\',\'file2\',\'file3\'], path.exists, function(results){\n // results now equals an array of the existing files\n });\n\n---------------------------------------\n\n<a name="filterSeries" />\n### filterSeries(arr, iterator, callback)\n\n__alias:__ selectSeries\n\nThe same as filter only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n---------------------------------------\n\n<a name="reject" />\n### reject(arr, iterator, callback)\n\nThe opposite of filter. Removes values that pass an async truth test.\n\n---------------------------------------\n\n<a name="rejectSeries" />\n### rejectSeries(arr, iterator, callback)\n\nThe same as filter, only the iterator is applied to each item in the array\nin series.\n\n\n---------------------------------------\n\n<a name="reduce" />\n### reduce(arr, memo, iterator, callback)\n\n__aliases:__ inject, foldl\n\nReduces a list of values into a single value using an async iterator to return\neach successive step. Memo is the initial state of the reduction. This\nfunction only operates in series. For performance reasons, it may make sense to\nsplit a call to this function into a parallel map, then use the normal\nArray.prototype.reduce on the results. This function is for situations where\neach step in the reduction needs to be async, if you can get the data before\nreducing it then its probably a good idea to do so.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* memo - The initial state of the reduction.\n* iterator(memo, item, callback) - A function applied to each item in the\n array to produce the next step in the reduction. The iterator is passed a\n callback which accepts an optional error as its first argument, and the state\n of the reduction as the second. If an error is passed to the callback, the\n reduction is stopped and the main callback is immediately called with the\n error.\n* callback(err, result) - A callback which is called after all the iterator\n functions have finished. Result is the reduced value.\n\n__Example__\n\n async.reduce([1,2,3], 0, function(memo, item, callback){\n // pointless async:\n process.nextTick(function(){\n callback(null, memo + item)\n });\n }, function(err, result){\n // result is now equal to the last value of memo, which is 6\n });\n\n---------------------------------------\n\n<a name="reduceRight" />\n### reduceRight(arr, memo, iterator, callback)\n\n__Alias:__ foldr\n\nSame as reduce, only operates on the items in the array in reverse order.\n\n\n---------------------------------------\n\n<a name="detect" />\n### detect(arr, iterator, callback)\n\nReturns the first value in a list that passes an async truth test. The\niterator is applied in parallel, meaning the first iterator to return true will\nfire the detect callback with that result. That means the result might not be\nthe first item in the original array (in terms of order) that passes the test.\n\nIf order within the original array is important then look at detectSeries.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n true, or after all the iterator functions have finished. Result will be\n the first item in the array that passes the truth test (iterator) or the\n value undefined if none passed.\n\n__Example__\n\n async.detect([\'file1\',\'file2\',\'file3\'], path.exists, function(result){\n // result now equals the first file in the list that exists\n });\n\n---------------------------------------\n\n<a name="detectSeries" />\n### detectSeries(arr, iterator, callback)\n\nThe same as detect, only the iterator is applied to each item in the array\nin series. This means the result is always the first in the original array (in\nterms of array order) that passes the truth test.\n\n\n---------------------------------------\n\n<a name="sortBy" />\n### sortBy(arr, iterator, callback)\n\nSorts a list by the results of running each value through an async iterator.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and a value to use as the sort criteria.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is the items from\n the original array sorted by the values returned by the iterator calls.\n\n__Example__\n\n async.sortBy([\'file1\',\'file2\',\'file3\'], function(file, callback){\n fs.stat(file, function(err, stats){\n callback(err, stats.mtime);\n });\n }, function(err, results){\n // results is now the original array of files sorted by\n // modified date\n });\n\n\n---------------------------------------\n\n<a name="some" />\n### some(arr, iterator, callback)\n\n__Alias:__ any\n\nReturns true if at least one element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.exists. Once any iterator\ncall returns true, the main callback is immediately called.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n true, or after all the iterator functions have finished. Result will be\n either true or false depending on the values of the async tests.\n\n__Example__\n\n async.some([\'file1\',\'file2\',\'file3\'], path.exists, function(result){\n // if result is true then at least one of the files exists\n });\n\n---------------------------------------\n\n<a name="every" />\n### every(arr, iterator, callback)\n\n__Alias:__ all\n\nReturns true if every element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.exists.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(result) - A callback which is called after all the iterator\n functions have finished. Result will be either true or false depending on\n the values of the async tests.\n\n__Example__\n\n async.every([\'file1\',\'file2\',\'file3\'], path.exists, function(result){\n // if result is true then every file exists\n });\n\n---------------------------------------\n\n<a name="concat" />\n### concat(arr, iterator, callback)\n\nApplies an iterator to each item in a list, concatenating the results. Returns the\nconcatenated list. The iterators are called in parallel, and the results are\nconcatenated as they return. There is no guarantee that the results array will\nbe returned in the original order of the arguments passed to the iterator function.\n\n__Arguments__\n\n* arr - An array to iterate over\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and an array of results.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array containing\n the concatenated results of the iterator function.\n\n__Example__\n\n async.concat([\'dir1\',\'dir2\',\'dir3\'], fs.readdir, function(err, files){\n // files is now a list of filenames that exist in the 3 directories\n });\n\n---------------------------------------\n\n<a name="concatSeries" />\n### concatSeries(arr, iterator, callback)\n\nSame as async.concat, but executes in series instead of parallel.\n\n\n## Control Flow\n\n<a name="series" />\n### series(tasks, [callback])\n\nRun an array of functions in series, each one running once the previous\nfunction has completed. If any functions in the series pass an error to its\ncallback, no more functions are run and the callback for the series is\nimmediately called with the value of the error. Once the tasks have completed,\nthe results are passed to the final callback as an array.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.series.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed\n a callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets an array of all the arguments passed to\n the callbacks used in the array.\n\n__Example__\n\n async.series([\n function(callback){\n // do some stuff ...\n callback(null, \'one\');\n },\n function(callback){\n // do some more stuff ...\n callback(null, \'two\');\n },\n ],\n // optional callback\n function(err, results){\n // results is now equal to [\'one\', \'two\']\n });\n\n\n // an example using an object instead of an array\n async.series({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n },\n },\n function(err, results) {\n // results is now equal to: {one: 1, two: 2}\n });\n\n\n---------------------------------------\n\n<a name="parallel" />\n### parallel(tasks, [callback])\n\nRun an array of functions in parallel, without waiting until the previous\nfunction has completed. If any of the functions pass an error to its\ncallback, the main callback is immediately called with the value of the error.\nOnce the tasks have completed, the results are passed to the final callback as an\narray.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.parallel.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed a\n callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets an array of all the arguments passed to\n the callbacks used in the array.\n\n__Example__\n\n async.parallel([\n function(callback){\n setTimeout(function(){\n callback(null, \'one\');\n }, 200);\n },\n function(callback){\n setTimeout(function(){\n callback(null, \'two\');\n }, 100);\n },\n ],\n // optional callback\n function(err, results){\n // in this case, the results array will equal [\'two\',\'one\']\n // because the functions were run in parallel and the second\n // function had a shorter timeout before calling the callback.\n });\n\n\n // an example using an object instead of an array\n async.parallel({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n },\n },\n function(err, results) {\n // results is now equals to: {one: 1, two: 2}\n });\n\n\n---------------------------------------\n\n<a name="whilst" />\n### whilst(test, fn, callback)\n\nRepeatedly call fn, while test returns true. Calls the callback when stopped,\nor an error occurs.\n\n__Arguments__\n\n* test() - synchronous truth test to perform before each execution of fn.\n* fn(callback) - A function to call each time the test passes. The function is\n passed a callback which must be called once it has completed with an optional\n error as the first argument.\n* callback(err) - A callback which is called after the test fails and repeated\n execution of fn has stopped.\n\n__Example__\n\n var count = 0;\n\n async.whilst(\n function () { return count < 5; },\n function (callback) {\n count++;\n setTimeout(callback, 1000);\n },\n function (err) {\n // 5 seconds have passed\n }\n });\n\n\n---------------------------------------\n\n<a name="until" />\n### until(test, fn, callback)\n\nRepeatedly call fn, until test returns true. Calls the callback when stopped,\nor an error occurs.\n\nThe inverse of async.whilst.\n\n\n---------------------------------------\n\n<a name="waterfall" />\n### waterfall(tasks, [callback])\n\nRuns an array of functions in series, each passing their results to the next in\nthe array. However, if any of the functions pass an error to the callback, the\nnext function is not executed and the main callback is immediately called with\nthe error.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a callback it\n must call on completion.\n* callback(err) - An optional callback to run once all the functions have\n completed. This function gets passed any error that may have occurred.\n\n__Example__\n\n async.waterfall([\n function(callback){\n callback(null, \'one\', \'two\');\n },\n function(arg1, arg2, callback){\n callback(null, \'three\');\n },\n function(arg1, callback){\n // arg1 now equals \'three\'\n callback(null, \'done\');\n }\n ]);\n\n\n---------------------------------------\n\n<a name="queue" />\n### queue(worker, concurrency)\n\nCreates a queue object with the specified concurrency. Tasks added to the\nqueue will be processed in parallel (up to the concurrency limit). If all\nworkers are in progress, the task is queued until one is available. Once\na worker has completed a task, the task\'s callback is called.\n\n__Arguments__\n\n* worker(task, callback) - An asynchronous function for processing a queued\n task.\n* concurrency - An integer for determining how many worker functions should be\n run in parallel.\n\n__Queue objects__\n\nThe queue object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* concurrency - an integer for determining how many worker functions should be\n run in parallel. This property can be changed after a queue is created to\n alter the concurrency on-the-fly.\n* push(task, [callback]) - add a new task to the queue, the callback is called\n once the worker has finished processing the task.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last item from the queue has returned from the worker\n\n__Example__\n\n // create a queue object with concurrency 2\n\n var q = async.queue(function (task, callback) {\n console.log(\'hello \' + task.name);\n callback();\n }, 2);\n\n\n // assign a callback\n q.drain = function() {\n console.log(\'all items have been processed\');\n }\n\n // add some items to the queue\n\n q.push({name: \'foo\'}, function (err) {\n console.log(\'finished processing foo\');\n });\n q.push({name: \'bar\'}, function (err) {\n console.log(\'finished processing bar\');\n });\n\n\n---------------------------------------\n\n<a name="auto" />\n### auto(tasks, [callback])\n\nDetermines the best order for running functions based on their requirements.\nEach function can optionally depend on other functions being completed first,\nand each function is run as soon as its requirements are satisfied. If any of\nthe functions pass an error to their callback, that function will not complete\n(so any other functions depending on it will not run) and the main callback\nwill be called immediately with the error. Functions also receive an object\ncontaining the results of functions on which they depend.\n\n__Arguments__\n\n* tasks - An object literal containing named functions or an array of\n requirements, with the function itself the last item in the array. The key\n used for each function or array is used when specifying requirements. The\n syntax is easier to understand by looking at the example.\n* callback(err) - An optional callback which is called when all the tasks have\n been completed. The callback may receive an error as an argument.\n\n__Example__\n\n async.auto({\n get_data: function(callback){\n // async code to get some data\n },\n make_folder: function(callback){\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n },\n write_file: [\'get_data\', \'make_folder\', function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n callback(null, filename);\n }],\n email_link: [\'write_file\', function(callback, results){\n // once the file is written let\'s email a link to it...\n // results.write_file contains the filename returned by write_file.\n }]\n });\n\nThis is a fairly trivial example, but to do this using the basic parallel and\nseries functions would look like this:\n\n async.parallel([\n function(callback){\n // async code to get some data\n },\n function(callback){\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n }\n ],\n function(results){\n async.series([\n function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n },\n email_link: [\'write_file\', function(callback){\n // once the file is written let\'s email a link to it...\n }\n ]);\n });\n\nFor a complicated series of async tasks using the auto function makes adding\nnew tasks much easier and makes the code more readable. \n\n\n---------------------------------------\n\n<a name="iterator" />\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the array,\nreturning a continuation to call the next one after that. Its also possible to\n\'peek\' the next iterator by doing iterator.next().\n\nThis function is used internally by the async module but can be useful when\nyou want to manually control the flow of functions in series.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a callback it\n must call on completion.\n\n__Example__\n\n var iterator = async.iterator([\n function(){ sys.p(\'one\'); },\n function(){ sys.p(\'two\'); },\n function(){ sys.p(\'three\'); }\n ]);\n\n node> var iterator2 = iterator();\n \'one\'\n node> var iterator3 = iterator2();\n \'two\'\n node> iterator3();\n \'three\'\n node> var nextfn = iterator2.next();\n node> nextfn();\n \'three\'\n\n\n---------------------------------------\n\n<a name="apply" />\n### apply(function, arguments..)\n\nCreates a continuation function with some arguments already applied, a useful\nshorthand when combined with other control flow functions. Any arguments\npassed to the returned function are added to the arguments originally passed\nto apply.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to automatically apply when the\n continuation is called.\n\n__Example__\n\n // using apply\n\n async.parallel([\n async.apply(fs.writeFile, \'testfile1\', \'test1\'),\n async.apply(fs.writeFile, \'testfile2\', \'test2\'),\n ]);\n\n\n // the same process without using apply\n\n async.parallel([\n function(callback){\n fs.writeFile(\'testfile1\', \'test1\', callback);\n },\n function(callback){\n fs.writeFile(\'testfile2\', \'test2\', callback);\n },\n ]);\n\nIt\'s possible to pass any number of additional arguments when calling the\ncontinuation:\n\n node> var fn = async.apply(sys.puts, \'one\');\n node> fn(\'two\', \'three\');\n one\n two\n three\n\n---------------------------------------\n\n<a name="nextTick" />\n### nextTick(callback)\n\nCalls the callback on a later loop around the event loop. In node.js this just\ncalls process.nextTick, in the browser it falls back to setTimeout(callback, 0),\nwhich means other higher priority events may precede the execution of the callback.\n\nThis is used internally for browser-compatibility purposes.\n\n__Arguments__\n\n* callback - The function to call on a later loop around the event loop.\n\n__Example__\n\n var call_order = [];\n async.nextTick(function(){\n call_order.push(\'two\');\n // call_order now equals [\'one\',\'two]\n });\n call_order.push(\'one\')\n\n\n## Utils\n\n<a name="memoize" />\n### memoize(fn, [hasher])\n\nCaches the results of an async function. When creating a hash to store function\nresults against, the callback is omitted from the hash and an optional hash\nfunction can be used.\n\n__Arguments__\n\n* fn - the function you to proxy and cache results from.\n* hasher - an optional function for generating a custom hash for storing\n results, it has all the arguments applied to it apart from the callback, and\n must be synchronous.\n\n__Example__\n\n var slow_fn = function (name, callback) {\n // do something\n callback(null, result);\n };\n var fn = async.memoize(slow_fn);\n\n // fn can now be used as if it were slow_fn\n fn(\'some name\', function () {\n // callback\n });\n\n<a name="unmemoize" />\n### unmemoize(fn)\n\nUndoes a memoized function, reverting it to the original, unmemoized\nform. Comes handy in tests.\n\n__Arguments__\n\n* fn - the memoized function\n\n<a name="log" />\n### log(function, arguments)\n\nLogs the result of an async function to the console. Only works in node.js or\nin browsers that support console.log and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.log is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n var hello = function(name, callback){\n setTimeout(function(){\n callback(null, \'hello \' + name);\n }, 1000);\n };\n\n node> async.log(hello, \'world\');\n \'hello world\'\n\n\n---------------------------------------\n\n<a name="dir" />\n### dir(function, arguments)\n\nLogs the result of an async function to the console using console.dir to\ndisplay the properties of the resulting object. Only works in node.js or\nin browsers that support console.dir and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.dir is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n var hello = function(name, callback){\n setTimeout(function(){\n callback(null, {hello: name});\n }, 1000);\n };\n\n node> async.dir(hello, \'world\');\n {hello: \'world\'}\n\n\n---------------------------------------\n\n<a name="noConflict" />\n### noConflict()\n\nChanges the value of async back to its original value, returning a reference to the\nasync object.\n',
691 silly resolved readmeFilename: 'README.md',
691 silly resolved homepage: 'https://github.com/caolan/async',
691 silly resolved _id: 'async@0.1.15',
691 silly resolved _from: 'async@0.1.15' } ]
692 info install async@0.1.15 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner
693 info installOne async@0.1.15
694 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner/node_modules/async unbuild
695 verbose tar unpack /home/dev/.npm/async/0.1.15/package.tgz
696 silly lockFile af9c2d43-s-portscanner-node-modules-async tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner/node_modules/async
697 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner/node_modules/async /home/dev/.npm/af9c2d43-s-portscanner-node-modules-async.lock
698 silly lockFile 2b26c9f9-dev-npm-async-0-1-15-package-tgz tar:///home/dev/.npm/async/0.1.15/package.tgz
699 verbose lock tar:///home/dev/.npm/async/0.1.15/package.tgz /home/dev/.npm/2b26c9f9-dev-npm-async-0-1-15-package-tgz.lock
700 silly gunzTarPerm modes [ '755', '644' ]
701 silly gunzTarPerm extractEntry package.json
702 silly gunzTarPerm extractEntry README.md
703 silly gunzTarPerm extractEntry LICENSE
704 silly gunzTarPerm extractEntry index.js
705 silly gunzTarPerm extractEntry dist/async.min.js
706 silly gunzTarPerm extractEntry Makefile
707 silly gunzTarPerm extractEntry .gitmodules
708 silly gunzTarPerm extractEntry lib/async.js
709 silly gunzTarPerm extractEntry nodelint.cfg
710 silly gunzTarPerm extractEntry deps/nodeunit.js
711 silly gunzTarPerm extractEntry deps/nodeunit.css
712 silly gunzTarPerm extractEntry test/test-async.js
713 silly gunzTarPerm extractEntry test/test.html
714 silly lockFile af9c2d43-s-portscanner-node-modules-async tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner/node_modules/async
715 silly lockFile af9c2d43-s-portscanner-node-modules-async tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner/node_modules/async
716 silly lockFile 2b26c9f9-dev-npm-async-0-1-15-package-tgz tar:///home/dev/.npm/async/0.1.15/package.tgz
717 silly lockFile 2b26c9f9-dev-npm-async-0-1-15-package-tgz tar:///home/dev/.npm/async/0.1.15/package.tgz
718 info preinstall async@0.1.15
719 verbose readDependencies using package.json deps
720 verbose readDependencies using package.json deps
721 silly resolved []
722 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner/node_modules/async
723 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner/node_modules/async
724 verbose linkStuff [ false,
724 verbose linkStuff false,
724 verbose linkStuff false,
724 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner/node_modules' ]
725 info linkStuff async@0.1.15
726 verbose linkBins async@0.1.15
727 verbose linkMans async@0.1.15
728 verbose rebuildBundles async@0.1.15
729 info install async@0.1.15
730 info postinstall async@0.1.15
731 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner
732 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/portscanner
733 verbose linkStuff [ false,
733 verbose linkStuff false,
733 verbose linkStuff false,
733 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules' ]
734 info linkStuff portscanner@0.1.3
735 verbose linkBins portscanner@0.1.3
736 verbose linkMans portscanner@0.1.3
737 verbose rebuildBundles portscanner@0.1.3
738 verbose rebuildBundles [ 'async' ]
739 info install portscanner@0.1.3
740 info postinstall portscanner@0.1.3
741 http 304 https://registry.npmjs.org/graceful-fs
742 silly registry.get cb [ 304,
742 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
742 silly registry.get etag: '"8VTIGE3KHXX4861152PVTWGF8"',
742 silly registry.get date: 'Wed, 13 Nov 2013 21:18:41 GMT',
742 silly registry.get 'content-length': '0' } ]
743 verbose etag graceful-fs from cache
744 silly addNameRange number 2 { name: 'graceful-fs',
744 silly addNameRange range: '>=2.0.0-0 <3.0.0-0',
744 silly addNameRange hasData: true }
745 silly addNameRange versions [ 'graceful-fs',
745 silly addNameRange [ '1.0.0',
745 silly addNameRange '1.0.1',
745 silly addNameRange '1.0.2',
745 silly addNameRange '1.1.0',
745 silly addNameRange '1.1.1',
745 silly addNameRange '1.1.2',
745 silly addNameRange '1.1.3',
745 silly addNameRange '1.1.4',
745 silly addNameRange '1.1.5',
745 silly addNameRange '1.1.6',
745 silly addNameRange '1.1.7',
745 silly addNameRange '1.1.8',
745 silly addNameRange '1.1.9',
745 silly addNameRange '1.1.10',
745 silly addNameRange '1.1.11',
745 silly addNameRange '1.1.12',
745 silly addNameRange '1.1.13',
745 silly addNameRange '1.1.14',
745 silly addNameRange '1.2.0',
745 silly addNameRange '1.2.1',
745 silly addNameRange '1.2.2',
745 silly addNameRange '1.2.3',
745 silly addNameRange '2.0.0',
745 silly addNameRange '2.0.1' ] ]
746 verbose addNamed [ 'graceful-fs', '2.0.1' ]
747 verbose addNamed [ '2.0.1', '2.0.1' ]
748 silly lockFile 74ee75cd-graceful-fs-2-0-1 graceful-fs@2.0.1
749 verbose lock graceful-fs@2.0.1 /home/dev/.npm/74ee75cd-graceful-fs-2-0-1.lock
750 silly lockFile 74ee75cd-graceful-fs-2-0-1 graceful-fs@2.0.1
751 silly lockFile 74ee75cd-graceful-fs-2-0-1 graceful-fs@2.0.1
752 silly lockFile 8099b76c-graceful-fs-2 graceful-fs@~2
753 silly lockFile 8099b76c-graceful-fs-2 graceful-fs@~2
754 silly resolved [ { author:
754 silly resolved { name: 'Isaac Z. Schlueter',
754 silly resolved email: 'i@izs.me',
754 silly resolved url: 'http://blog.izs.me' },
754 silly resolved name: 'graceful-fs',
754 silly resolved description: 'A drop-in replacement for fs, making various improvements.',
754 silly resolved version: '2.0.1',
754 silly resolved repository:
754 silly resolved { type: 'git',
754 silly resolved url: 'git://github.com/isaacs/node-graceful-fs.git' },
754 silly resolved main: 'graceful-fs.js',
754 silly resolved engines: { node: '>=0.4.0' },
754 silly resolved directories: { test: 'test' },
754 silly resolved scripts: { test: 'tap test/*.js' },
754 silly resolved keywords:
754 silly resolved [ 'fs',
754 silly resolved 'module',
754 silly resolved 'reading',
754 silly resolved 'retry',
754 silly resolved 'retries',
754 silly resolved 'queue',
754 silly resolved 'error',
754 silly resolved 'errors',
754 silly resolved 'handling',
754 silly resolved 'EMFILE',
754 silly resolved 'EAGAIN',
754 silly resolved 'EINVAL',
754 silly resolved 'EPERM',
754 silly resolved 'EACCESS' ],
754 silly resolved license: 'BSD',
754 silly resolved readme: '# graceful-fs\n\ngraceful-fs functions as a drop-in replacement for the fs module,\nmaking various improvements.\n\nThe improvements are meant to normalize behavior across different\nplatforms and environments, and to make filesystem access more\nresilient to errors.\n\n## Improvements over fs module\n\ngraceful-fs:\n\n* Queues up `open` and `readdir` calls, and retries them once\n something closes if there is an EMFILE error from too many file\n descriptors.\n* fixes `lchmod` for Node versions prior to 0.6.2.\n* implements `fs.lutimes` if possible. Otherwise it becomes a noop.\n* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or\n `lchown` if the user isn\'t root.\n* makes `lchmod` and `lchown` become noops, if not available.\n* retries reading a file if `read` results in EAGAIN error.\n\nOn Windows, it retries renaming a file for up to one second if `EACCESS`\nor `EPERM` error occurs, likely because antivirus software has locked\nthe directory.\n',
754 silly resolved readmeFilename: 'README.md',
754 silly resolved bugs: { url: 'https://github.com/isaacs/node-graceful-fs/issues' },
754 silly resolved homepage: 'https://github.com/isaacs/node-graceful-fs',
754 silly resolved _id: 'graceful-fs@2.0.1',
754 silly resolved _from: 'graceful-fs@~2' } ]
755 info install graceful-fs@2.0.1 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf
756 info installOne graceful-fs@2.0.1
757 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf/node_modules/graceful-fs unbuild
758 verbose tar unpack /home/dev/.npm/graceful-fs/2.0.1/package.tgz
759 silly lockFile 330e9434--rimraf-node-modules-graceful-fs tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf/node_modules/graceful-fs
760 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf/node_modules/graceful-fs /home/dev/.npm/330e9434--rimraf-node-modules-graceful-fs.lock
761 silly lockFile 2d0fa3c0-pm-graceful-fs-2-0-1-package-tgz tar:///home/dev/.npm/graceful-fs/2.0.1/package.tgz
762 verbose lock tar:///home/dev/.npm/graceful-fs/2.0.1/package.tgz /home/dev/.npm/2d0fa3c0-pm-graceful-fs-2-0-1-package-tgz.lock
763 silly gunzTarPerm modes [ '755', '644' ]
764 silly gunzTarPerm extractEntry package.json
765 silly gunzTarPerm extractEntry .npmignore
766 silly gunzTarPerm extractEntry README.md
767 silly gunzTarPerm extractEntry LICENSE
768 silly gunzTarPerm extractEntry graceful-fs.js
769 silly gunzTarPerm extractEntry polyfills.js
770 silly gunzTarPerm extractEntry test/open.js
771 silly lockFile 330e9434--rimraf-node-modules-graceful-fs tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf/node_modules/graceful-fs
772 silly lockFile 330e9434--rimraf-node-modules-graceful-fs tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf/node_modules/graceful-fs
773 silly lockFile 2d0fa3c0-pm-graceful-fs-2-0-1-package-tgz tar:///home/dev/.npm/graceful-fs/2.0.1/package.tgz
774 silly lockFile 2d0fa3c0-pm-graceful-fs-2-0-1-package-tgz tar:///home/dev/.npm/graceful-fs/2.0.1/package.tgz
775 info preinstall graceful-fs@2.0.1
776 verbose readDependencies using package.json deps
777 verbose readDependencies using package.json deps
778 silly resolved []
779 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf/node_modules/graceful-fs
780 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf/node_modules/graceful-fs
781 verbose linkStuff [ false,
781 verbose linkStuff false,
781 verbose linkStuff false,
781 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf/node_modules' ]
782 info linkStuff graceful-fs@2.0.1
783 verbose linkBins graceful-fs@2.0.1
784 verbose linkMans graceful-fs@2.0.1
785 verbose rebuildBundles graceful-fs@2.0.1
786 info install graceful-fs@2.0.1
787 info postinstall graceful-fs@2.0.1
788 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf
789 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/rimraf
790 verbose linkStuff [ false,
790 verbose linkStuff false,
790 verbose linkStuff false,
790 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules' ]
791 info linkStuff rimraf@2.2.2
792 verbose linkBins rimraf@2.2.2
793 verbose link bins [ { rimraf: './bin.js' },
793 verbose link bins '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/.bin',
793 verbose link bins false ]
794 verbose linkMans rimraf@2.2.2
795 verbose rebuildBundles rimraf@2.2.2
796 verbose rebuildBundles [ 'graceful-fs' ]
797 info install rimraf@2.2.2
798 info postinstall rimraf@2.2.2
799 http 304 https://registry.npmjs.org/inherits
800 silly registry.get cb [ 304,
800 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
800 silly registry.get etag: '"3BB9CXXI1GQW1OTCNLR8KNUQW"',
800 silly registry.get date: 'Wed, 13 Nov 2013 21:18:41 GMT',
800 silly registry.get 'content-length': '0' } ]
801 verbose etag inherits from cache
802 silly addNameRange number 2 { name: 'inherits', range: '>=2.0.0-0 <2.1.0-0', hasData: true }
803 silly addNameRange versions [ 'inherits', [ '1.0.0', '2.0.0', '2.0.1' ] ]
804 verbose addNamed [ 'inherits', '2.0.1' ]
805 verbose addNamed [ '2.0.1', '2.0.1' ]
806 silly lockFile 2b2e8f1b-inherits-2-0-1 inherits@2.0.1
807 verbose lock inherits@2.0.1 /home/dev/.npm/2b2e8f1b-inherits-2-0-1.lock
808 http 304 https://registry.npmjs.org/mkdirp
809 silly registry.get cb [ 304,
809 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
809 silly registry.get etag: '"6A3HQJJS800XM6HY1G91KHAHX"',
809 silly registry.get date: 'Wed, 13 Nov 2013 21:18:41 GMT',
809 silly registry.get 'content-length': '0' } ]
810 verbose etag mkdirp from cache
811 silly addNameRange number 2 { name: 'mkdirp', range: '>=0.3.3-0 <0.4.0-0', hasData: true }
812 silly addNameRange versions [ 'mkdirp',
812 silly addNameRange [ '0.0.1',
812 silly addNameRange '0.0.2',
812 silly addNameRange '0.0.3',
812 silly addNameRange '0.0.4',
812 silly addNameRange '0.0.5',
812 silly addNameRange '0.0.6',
812 silly addNameRange '0.0.7',
812 silly addNameRange '0.1.0',
812 silly addNameRange '0.2.0',
812 silly addNameRange '0.2.1',
812 silly addNameRange '0.2.2',
812 silly addNameRange '0.3.0',
812 silly addNameRange '0.3.1',
812 silly addNameRange '0.3.2',
812 silly addNameRange '0.3.3',
812 silly addNameRange '0.3.4',
812 silly addNameRange '0.3.5' ] ]
813 verbose addNamed [ 'mkdirp', '0.3.5' ]
814 verbose addNamed [ '0.3.5', '0.3.5' ]
815 silly lockFile 67d2df2a-mkdirp-0-3-5 mkdirp@0.3.5
816 verbose lock mkdirp@0.3.5 /home/dev/.npm/67d2df2a-mkdirp-0-3-5.lock
817 silly lockFile 2b2e8f1b-inherits-2-0-1 inherits@2.0.1
818 silly lockFile 2b2e8f1b-inherits-2-0-1 inherits@2.0.1
819 silly lockFile e2566bb4-inherits-2-0-0 inherits@~2.0.0
820 silly lockFile e2566bb4-inherits-2-0-0 inherits@~2.0.0
821 silly lockFile 67d2df2a-mkdirp-0-3-5 mkdirp@0.3.5
822 silly lockFile 67d2df2a-mkdirp-0-3-5 mkdirp@0.3.5
823 silly lockFile 284959b2-mkdirp-0-3-3 mkdirp@~0.3.3
824 silly lockFile 284959b2-mkdirp-0-3-3 mkdirp@~0.3.3
825 http 304 https://registry.npmjs.org/config-chain
826 silly registry.get cb [ 304,
826 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
826 silly registry.get etag: '"9TQAD0HUAM1QUBF9LFRCMRVR7"',
826 silly registry.get date: 'Wed, 13 Nov 2013 21:18:41 GMT',
826 silly registry.get 'content-length': '0' } ]
827 verbose etag config-chain from cache
828 http 304 https://registry.npmjs.org/once
829 silly registry.get cb [ 304,
829 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
829 silly registry.get etag: '"5EVD9F3N8WC7PWWZT58JF8JR6"',
829 silly registry.get date: 'Wed, 13 Nov 2013 21:18:41 GMT',
829 silly registry.get 'content-length': '0' } ]
830 verbose etag once from cache
831 silly addNameRange number 2 { name: 'config-chain',
831 silly addNameRange range: '>=1.1.8-0 <1.2.0-0',
831 silly addNameRange hasData: true }
832 silly addNameRange versions [ 'config-chain',
832 silly addNameRange [ '0.1.0',
832 silly addNameRange '0.1.1',
832 silly addNameRange '0.2.0',
832 silly addNameRange '0.3.0',
832 silly addNameRange '0.3.1',
832 silly addNameRange '0.3.2',
832 silly addNameRange '0.3.3',
832 silly addNameRange '1.0.0',
832 silly addNameRange '1.0.1',
832 silly addNameRange '1.1.0',
832 silly addNameRange '1.1.1',
832 silly addNameRange '1.1.2',
832 silly addNameRange '1.1.3',
832 silly addNameRange '1.1.4',
832 silly addNameRange '1.1.5',
832 silly addNameRange '1.1.6',
832 silly addNameRange '0.3.4',
832 silly addNameRange '1.1.7',
832 silly addNameRange '1.1.8' ] ]
833 verbose addNamed [ 'config-chain', '1.1.8' ]
834 verbose addNamed [ '1.1.8', '1.1.8' ]
835 silly lockFile f184139b-config-chain-1-1-8 config-chain@1.1.8
836 verbose lock config-chain@1.1.8 /home/dev/.npm/f184139b-config-chain-1-1-8.lock
837 silly addNameRange number 2 { name: 'once', range: '>=1.3.0-0 <1.4.0-0', hasData: true }
838 silly addNameRange versions [ 'once', [ '1.1.1', '1.2.0', '1.3.0' ] ]
839 verbose addNamed [ 'once', '1.3.0' ]
840 verbose addNamed [ '1.3.0', '1.3.0' ]
841 silly lockFile 13f9355b-once-1-3-0 once@1.3.0
842 verbose lock once@1.3.0 /home/dev/.npm/13f9355b-once-1-3-0.lock
843 silly lockFile f184139b-config-chain-1-1-8 config-chain@1.1.8
844 silly lockFile f184139b-config-chain-1-1-8 config-chain@1.1.8
845 silly lockFile 13f9355b-once-1-3-0 once@1.3.0
846 silly lockFile 13f9355b-once-1-3-0 once@1.3.0
847 silly lockFile 24c95d3c-config-chain-1-1-8 config-chain@~1.1.8
848 silly lockFile 24c95d3c-config-chain-1-1-8 config-chain@~1.1.8
849 silly lockFile 078063e6-once-1-3-0 once@~1.3.0
850 silly lockFile 078063e6-once-1-3-0 once@~1.3.0
851 http 304 https://registry.npmjs.org/osenv/0.0.3
852 silly registry.get cb [ 304,
852 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
852 silly registry.get etag: '"988AFYLFBQBVSXZR0VKXG5JLY"',
852 silly registry.get date: 'Wed, 13 Nov 2013 21:18:41 GMT',
852 silly registry.get 'content-length': '0' } ]
853 verbose etag osenv/0.0.3 from cache
854 silly lockFile 4085d016-osenv-0-0-3 osenv@0.0.3
855 silly lockFile 4085d016-osenv-0-0-3 osenv@0.0.3
856 http 304 https://registry.npmjs.org/nopt
857 silly registry.get cb [ 304,
857 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
857 silly registry.get etag: '"3XYNN1DM5K7F9CX72UU5XRP7T"',
857 silly registry.get date: 'Wed, 13 Nov 2013 21:18:41 GMT',
857 silly registry.get 'content-length': '0' } ]
858 verbose etag nopt from cache
859 silly addNameRange number 2 { name: 'nopt', range: '>=2.0.0-0 <3.0.0-0', hasData: true }
860 silly addNameRange versions [ 'nopt',
860 silly addNameRange [ '1.0.0',
860 silly addNameRange '1.0.1',
860 silly addNameRange '1.0.2',
860 silly addNameRange '1.0.3',
860 silly addNameRange '1.0.4',
860 silly addNameRange '1.0.5',
860 silly addNameRange '1.0.6',
860 silly addNameRange '1.0.7',
860 silly addNameRange '1.0.8',
860 silly addNameRange '1.0.9',
860 silly addNameRange '1.0.10',
860 silly addNameRange '2.0.0',
860 silly addNameRange '2.1.0',
860 silly addNameRange '2.1.1',
860 silly addNameRange '2.1.2' ] ]
861 verbose addNamed [ 'nopt', '2.1.2' ]
862 verbose addNamed [ '2.1.2', '2.1.2' ]
863 silly lockFile 7d0298b9-nopt-2-1-2 nopt@2.1.2
864 verbose lock nopt@2.1.2 /home/dev/.npm/7d0298b9-nopt-2-1-2.lock
865 http 304 https://registry.npmjs.org/semver
866 silly registry.get cb [ 304,
866 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
866 silly registry.get etag: '"1BRH1SB8YF6367PHYJQ39UKTP"',
866 silly registry.get date: 'Wed, 13 Nov 2013 21:18:41 GMT',
866 silly registry.get 'content-length': '0' } ]
867 verbose etag semver from cache
868 silly addNameRange number 2 { name: 'semver', range: '>=2.0.0-0 <3.0.0-0', hasData: true }
869 silly addNameRange versions [ 'semver',
869 silly addNameRange [ '1.0.0',
869 silly addNameRange '1.0.1',
869 silly addNameRange '1.0.2',
869 silly addNameRange '1.0.3',
869 silly addNameRange '1.0.4',
869 silly addNameRange '1.0.5',
869 silly addNameRange '1.0.6',
869 silly addNameRange '1.0.7',
869 silly addNameRange '1.0.8',
869 silly addNameRange '1.0.9',
869 silly addNameRange '1.0.10',
869 silly addNameRange '1.0.11',
869 silly addNameRange '1.0.12',
869 silly addNameRange '1.0.13',
869 silly addNameRange '1.0.14',
869 silly addNameRange '1.1.0',
869 silly addNameRange '1.1.1',
869 silly addNameRange '1.1.2',
869 silly addNameRange '1.1.3',
869 silly addNameRange '1.1.4',
869 silly addNameRange '2.0.0-alpha',
869 silly addNameRange '2.0.0-beta',
869 silly addNameRange '2.0.1',
869 silly addNameRange '2.0.2',
869 silly addNameRange '2.0.3',
869 silly addNameRange '2.0.4',
869 silly addNameRange '2.0.5',
869 silly addNameRange '2.0.6',
869 silly addNameRange '2.0.7',
869 silly addNameRange '2.0.8',
869 silly addNameRange '2.0.9',
869 silly addNameRange '2.0.10',
869 silly addNameRange '2.0.11',
869 silly addNameRange '2.1.0',
869 silly addNameRange '2.2.0',
869 silly addNameRange '2.2.1' ] ]
870 verbose addNamed [ 'semver', '2.2.1' ]
871 verbose addNamed [ '2.2.1', '2.2.1' ]
872 silly lockFile 609d7676-semver-2-2-1 semver@2.2.1
873 verbose lock semver@2.2.1 /home/dev/.npm/609d7676-semver-2-2-1.lock
874 silly lockFile 7d0298b9-nopt-2-1-2 nopt@2.1.2
875 silly lockFile 7d0298b9-nopt-2-1-2 nopt@2.1.2
876 silly lockFile 64594a3f-nopt-2 nopt@2
877 silly lockFile 64594a3f-nopt-2 nopt@2
878 http 304 https://registry.npmjs.org/ini
879 silly registry.get cb [ 304,
879 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
879 silly registry.get etag: '"ZJNRPZ9SLUUIQB56VZSG1X63"',
879 silly registry.get date: 'Wed, 13 Nov 2013 21:18:41 GMT',
879 silly registry.get 'content-length': '0' } ]
880 verbose etag ini from cache
881 silly lockFile 609d7676-semver-2-2-1 semver@2.2.1
882 silly lockFile 609d7676-semver-2-2-1 semver@2.2.1
883 silly lockFile b604fbc6-semver-2 semver@2
884 silly lockFile b604fbc6-semver-2 semver@2
885 silly addNameRange number 2 { name: 'ini', range: '>=1.1.0-0 <1.2.0-0', hasData: true }
886 silly addNameRange versions [ 'ini',
886 silly addNameRange [ '1.0.0', '1.0.1', '1.0.2', '1.0.3', '1.0.4', '1.0.5', '1.1.0' ] ]
887 verbose addNamed [ 'ini', '1.1.0' ]
888 verbose addNamed [ '1.1.0', '1.1.0' ]
889 silly lockFile f80c58e4-ini-1-1-0 ini@1.1.0
890 verbose lock ini@1.1.0 /home/dev/.npm/f80c58e4-ini-1-1-0.lock
891 silly lockFile f80c58e4-ini-1-1-0 ini@1.1.0
892 silly lockFile f80c58e4-ini-1-1-0 ini@1.1.0
893 silly lockFile d6a0c59d-ini-1-1-0 ini@~1.1.0
894 silly lockFile d6a0c59d-ini-1-1-0 ini@~1.1.0
895 silly resolved [ { name: 'inherits',
895 silly resolved description: 'Browser-friendly inheritance fully compatible with standard node.js inherits()',
895 silly resolved version: '2.0.1',
895 silly resolved keywords:
895 silly resolved [ 'inheritance',
895 silly resolved 'class',
895 silly resolved 'klass',
895 silly resolved 'oop',
895 silly resolved 'object-oriented',
895 silly resolved 'inherits',
895 silly resolved 'browser',
895 silly resolved 'browserify' ],
895 silly resolved main: './inherits.js',
895 silly resolved browser: './inherits_browser.js',
895 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/inherits' },
895 silly resolved license: 'ISC',
895 silly resolved scripts: { test: 'node test' },
895 silly resolved readme: 'Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt\'s recommended to use this package instead of\n`require(\'util\').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require(\'inherits\');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n',
895 silly resolved readmeFilename: 'README.md',
895 silly resolved bugs: { url: 'https://github.com/isaacs/inherits/issues' },
895 silly resolved homepage: 'https://github.com/isaacs/inherits',
895 silly resolved _id: 'inherits@2.0.1',
895 silly resolved _from: 'inherits@~2.0.0' },
895 silly resolved { name: 'mkdirp',
895 silly resolved description: 'Recursively mkdir, like `mkdir -p`',
895 silly resolved version: '0.3.5',
895 silly resolved author:
895 silly resolved { name: 'James Halliday',
895 silly resolved email: 'mail@substack.net',
895 silly resolved url: 'http://substack.net' },
895 silly resolved main: './index',
895 silly resolved keywords: [ 'mkdir', 'directory' ],
895 silly resolved repository:
895 silly resolved { type: 'git',
895 silly resolved url: 'https://github.com/substack/node-mkdirp.git' },
895 silly resolved scripts: { test: 'tap test/*.js' },
895 silly resolved devDependencies: { tap: '~0.4.0' },
895 silly resolved license: 'MIT',
895 silly resolved readme: '# mkdirp\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\n# example\n\n## pow.js\n\n```js\nvar mkdirp = require(\'mkdirp\');\n \nmkdirp(\'/tmp/foo/bar/baz\', function (err) {\n if (err) console.error(err)\n else console.log(\'pow!\')\n});\n```\n\nOutput\n\n```\npow!\n```\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\n# methods\n\n```js\nvar mkdirp = require(\'mkdirp\');\n```\n\n## mkdirp(dir, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn\'t specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn\'t specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n',
895 silly resolved readmeFilename: 'readme.markdown',
895 silly resolved bugs: { url: 'https://github.com/substack/node-mkdirp/issues' },
895 silly resolved homepage: 'https://github.com/substack/node-mkdirp',
895 silly resolved _id: 'mkdirp@0.3.5',
895 silly resolved _from: 'mkdirp@~0.3.3' },
895 silly resolved { name: 'config-chain',
895 silly resolved version: '1.1.8',
895 silly resolved description: 'HANDLE CONFIGURATION ONCE AND FOR ALL',
895 silly resolved homepage: 'https://github.com/dominictarr/config-chain',
895 silly resolved repository:
895 silly resolved { type: 'git',
895 silly resolved url: 'https://github.com/dominictarr/config-chain.git' },
895 silly resolved dependencies: { 'proto-list': '~1.2.1', ini: '1' },
895 silly resolved devDependencies: { tap: '0.3.0' },
895 silly resolved author:
895 silly resolved { name: 'Dominic Tarr',
895 silly resolved email: 'dominic.tarr@gmail.com',
895 silly resolved url: 'http://dominictarr.com' },
895 silly resolved scripts: { test: 'tap test/' },
895 silly resolved readme: '#config-chain\n\nUSE THIS MODULE TO LOAD ALL YOUR CONFIGURATIONS\n\n``` js\n\n //npm install config-chain\n\n var cc = require(\'config-chain\')\n , opts = require(\'optimist\').argv //ALWAYS USE OPTIMIST FOR COMMAND LINE OPTIONS.\n , env = opts.env || process.env.YOUR_APP_ENV || \'dev\' //SET YOUR ENV LIKE THIS.\n\n // EACH ARG TO CONFIGURATOR IS LOADED INTO CONFIGURATION CHAIN\n // EARLIER ITEMS OVERIDE LATER ITEMS\n // PUTS COMMAND LINE OPTS FIRST, AND DEFAULTS LAST!\n\n //strings are interpereted as filenames.\n //will be loaded synchronously\n\n var conf =\n cc(\n //OVERRIDE SETTINGS WITH COMMAND LINE OPTS\n opts,\n\n //ENV VARS IF PREFIXED WITH \'myApp_\'\n\n cc.env(\'myApp_\'), //myApp_foo = \'like this\'\n\n //FILE NAMED BY ENV\n path.join(__dirname, \'config.\' + env + \'.json\'),\n\n //IF `env` is PRODUCTION\n env === \'prod\'\n ? path.join(__dirname, \'special.json\') //load a special file\n : null //NULL IS IGNORED!\n\n //SUBDIR FOR ENV CONFIG\n path.join(__dirname, \'config\', env, \'config.json\'),\n\n //SEARCH PARENT DIRECTORIES FROM CURRENT DIR FOR FILE\n cc.find(\'config.json\'),\n\n //PUT DEFAULTS LAST\n {\n host: \'localhost\'\n port: 8000\n })\n\n var host = conf.get(\'host\')\n\n // or\n\n var host = conf.store.host\n\n```\n\nFINALLY, EASY FLEXIBLE CONFIGURATIONS!\n\n##see also: [proto-list](https://github.com/isaacs/proto-list/)\n\nWHATS THAT YOU SAY?\n\nYOU WANT A "CLASS" SO THAT YOU CAN DO CRAYCRAY JQUERY CRAPS?\n\nEXTEND WITH YOUR OWN FUNCTIONALTY!?\n\n## CONFIGCHAIN LIVES TO SERVE ONLY YOU!\n\n```javascript\nvar cc = require(\'config-chain\')\n\n// all the stuff you did before\nvar config = cc({\n some: \'object\'\n },\n cc.find(\'config.json\'),\n cc.env(\'myApp_\')\n )\n // CONFIGS AS A SERVICE, aka "CaaS", aka EVERY DEVOPS DREAM OMG!\n .addUrl(\'http://configurator:1234/my-configs\')\n // ASYNC FTW!\n .addFile(\'/path/to/file.json\')\n\n // OBJECTS ARE OK TOO, they\'re SYNC but they still ORDER RIGHT\n // BECAUSE PROMISES ARE USED BUT NO, NOT *THOSE* PROMISES, JUST\n // ACTUAL PROMISES LIKE YOU MAKE TO YOUR MOM, KEPT OUT OF LOVE\n .add({ another: \'object\' })\n\n // DIE A THOUSAND DEATHS IF THIS EVER HAPPENS!!\n .on(\'error\', function (er) {\n // IF ONLY THERE WAS SOMETHIGN HARDER THAN THROW\n // MY SORROW COULD BE ADEQUATELY EXPRESSED. /o\\\n throw er\n })\n\n // THROW A PARTY IN YOUR FACE WHEN ITS ALL LOADED!!\n .on(\'load\', function (config) {\n console.awesome(\'HOLY SHIT!\')\n })\n```\n\n# BORING API DOCS\n\n## cc(...args)\n\nMAKE A CHAIN AND ADD ALL THE ARGS.\n\nIf the arg is a STRING, then it shall be a JSON FILENAME.\n\nSYNC I/O!\n\nRETURN THE CHAIN!\n\n## cc.json(...args)\n\nJoin the args INTO A JSON FILENAME!\n\nSYNC I/O!\n\n## cc.find(relativePath)\n\nSEEK the RELATIVE PATH by climbing the TREE OF DIRECTORIES.\n\nRETURN THE FOUND PATH!\n\nSYNC I/O!\n\n## cc.parse(content, file, type)\n\nParse the content string, and guess the type from either the\nspecified type or the filename.\n\nRETURN THE RESULTING OBJECT!\n\nNO I/O!\n\n## cc.env(prefix, env=process.env)\n\nGet all the keys on the provided env object (or process.env) which are\nprefixed by the specified prefix, and put the values on a new object.\n\nRETURN THE RESULTING OBJECT!\n\nNO I/O!\n\n## cc.ConfigChain()\n\nThe ConfigChain class for CRAY CRAY JQUERY STYLE METHOD CHAINING!\n\nOne of these is returned by the main exported function, as well.\n\nIt inherits (prototypically) from\n[ProtoList](https://github.com/isaacs/proto-list/), and also inherits\n(parasitically) from\n[EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter)\n\nIt has all the methods from both, and except where noted, they are\nunchanged.\n\n### LET IT BE KNOWN THAT chain IS AN INSTANCE OF ConfigChain.\n\n## chain.sources\n\nA list of all the places where it got stuff. The keys are the names\npassed to addFile or addUrl etc, and the value is an object with some\ninfo about the data source.\n\n## chain.addFile(filename, type, [name=filename])\n\nFilename is the name of the file. Name is an arbitrary string to be\nused later if you desire. Type is either \'ini\' or \'json\', and will\ntry to guess intelligently if omitted.\n\nLoaded files can be saved later.\n\n## chain.addUrl(url, type, [name=url])\n\nSame as the filename thing, but with a url.\n\nCan\'t be saved later.\n\n## chain.addEnv(prefix, env, [name=\'env\'])\n\nAdd all the keys from the env object that start with the prefix.\n\n## chain.addString(data, file, type, [name])\n\nParse the string and add it to the set. (Mainly used internally.)\n\n## chain.add(object, [name])\n\nAdd the object to the set.\n\n## chain.root {Object}\n\nThe root from which all the other config objects in the set descend\nprototypically.\n\nPut your defaults here.\n\n## chain.set(key, value, name)\n\nSet the key to the value on the named config object. If name is\nunset, then set it on the first config object in the set. (That is,\nthe one with the highest priority, which was added first.)\n\n## chain.get(key, [name])\n\nGet the key from the named config object explicitly, or from the\nresolved configs if not specified.\n\n## chain.save(name, type)\n\nWrite the named config object back to its origin.\n\nCurrently only supported for env and file config types.\n\nFor files, encode the data according to the type.\n\n## chain.on(\'save\', function () {})\n\nWhen one or more files are saved, emits `save` event when they\'re all\nsaved.\n\n## chain.on(\'load\', function (chain) {})\n\nWhen the config chain has loaded all the specified files and urls and\nsuch, the \'load\' event fires.\n',
895 silly resolved readmeFilename: 'readme.markdown',
895 silly resolved bugs: { url: 'https://github.com/dominictarr/config-chain/issues' },
895 silly resolved _id: 'config-chain@1.1.8',
895 silly resolved _from: 'config-chain@~1.1.8' },
895 silly resolved { name: 'once',
895 silly resolved version: '1.3.0',
895 silly resolved description: 'Run a function exactly one time',
895 silly resolved main: 'once.js',
895 silly resolved directories: { test: 'test' },
895 silly resolved dependencies: {},
895 silly resolved devDependencies: { tap: '~0.3.0' },
895 silly resolved scripts: { test: 'tap test/*.js' },
895 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/once' },
895 silly resolved keywords: [ 'once', 'function', 'one', 'single' ],
895 silly resolved author:
895 silly resolved { name: 'Isaac Z. Schlueter',
895 silly resolved email: 'i@izs.me',
895 silly resolved url: 'http://blog.izs.me/' },
895 silly resolved license: 'BSD',
895 silly resolved readme: '# once\n\nOnly call a function once.\n\n## usage\n\n```javascript\nvar once = require(\'once\')\n\nfunction load (file, cb) {\n cb = once(cb)\n loader.load(\'file\')\n loader.once(\'load\', cb)\n loader.once(\'error\', cb)\n}\n```\n\nOr add to the Function.prototype in a responsible way:\n\n```javascript\n// only has to be done once\nrequire(\'once\').proto()\n\nfunction load (file, cb) {\n cb = cb.once()\n loader.load(\'file\')\n loader.once(\'load\', cb)\n loader.once(\'error\', cb)\n}\n```\n\nIronically, the prototype feature makes this module twice as\ncomplicated as necessary.\n\nTo check whether you function has been called, use `fn.called`. Once the\nfunction is called for the first time the return value of the original\nfunction is saved in `fn.value` and subsequent calls will continue to\nreturn this value.\n\n```javascript\nvar once = require(\'once\')\n\nfunction load (cb) {\n cb = once(cb)\n var stream = createStream()\n stream.once(\'data\', cb)\n stream.once(\'end\', function () {\n if (!cb.called) cb(new Error(\'not found\'))\n })\n}\n```\n',
895 silly resolved readmeFilename: 'README.md',
895 silly resolved bugs: { url: 'https://github.com/isaacs/once/issues' },
895 silly resolved homepage: 'https://github.com/isaacs/once',
895 silly resolved _id: 'once@1.3.0',
895 silly resolved _from: 'once@~1.3.0' },
895 silly resolved { name: 'osenv',
895 silly resolved version: '0.0.3',
895 silly resolved main: 'osenv.js',
895 silly resolved directories: { test: 'test' },
895 silly resolved dependencies: {},
895 silly resolved devDependencies: { tap: '~0.2.5' },
895 silly resolved scripts: { test: 'tap test/*.js' },
895 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/osenv' },
895 silly resolved keywords:
895 silly resolved [ 'environment',
895 silly resolved 'variable',
895 silly resolved 'home',
895 silly resolved 'tmpdir',
895 silly resolved 'path',
895 silly resolved 'prompt',
895 silly resolved 'ps1' ],
895 silly resolved author:
895 silly resolved { name: 'Isaac Z. Schlueter',
895 silly resolved email: 'i@izs.me',
895 silly resolved url: 'http://blog.izs.me/' },
895 silly resolved license: 'BSD',
895 silly resolved description: 'Look up environment settings specific to different operating systems',
895 silly resolved readme: '# osenv\n\nLook up environment settings specific to different operating systems.\n\n## Usage\n\n```javascript\nvar osenv = require(\'osenv\')\nvar path = osenv.path()\nvar user = osenv.user()\n// etc.\n\n// Some things are not reliably in the env, and have a fallback command:\nvar h = osenv.hostname(function (er, hostname) {\n h = hostname\n})\n// This will still cause it to be memoized, so calling osenv.hostname()\n// is now an immediate operation.\n\n// You can always send a cb, which will get called in the nextTick\n// if it\'s been memoized, or wait for the fallback data if it wasn\'t\n// found in the environment.\nosenv.hostname(function (er, hostname) {\n if (er) console.error(\'error looking up hostname\')\n else console.log(\'this machine calls itself %s\', hostname)\n})\n```\n\n## osenv.hostname()\n\nThe machine name. Calls `hostname` if not found.\n\n## osenv.user()\n\nThe currently logged-in user. Calls `whoami` if not found.\n\n## osenv.prompt()\n\nEither PS1 on unix, or PROMPT on Windows.\n\n## osenv.tmpdir()\n\nThe place where temporary files should be created.\n\n## osenv.home()\n\nNo place like it.\n\n## osenv.path()\n\nAn array of the places that the operating system will search for\nexecutables.\n\n## osenv.editor() \n\nReturn the executable name of the editor program. This uses the EDITOR\nand VISUAL environment variables, and falls back to `vi` on Unix, or\n`notepad.exe` on Windows.\n\n## osenv.shell()\n\nThe SHELL on Unix, which Windows calls the ComSpec. Defaults to \'bash\'\nor \'cmd\'.\n',
895 silly resolved readmeFilename: 'README.md',
895 silly resolved bugs: { url: 'https://github.com/isaacs/osenv/issues' },
895 silly resolved homepage: 'https://github.com/isaacs/osenv',
895 silly resolved _id: 'osenv@0.0.3',
895 silly resolved _from: 'osenv@0.0.3' },
895 silly resolved { name: 'nopt',
895 silly resolved version: '2.1.2',
895 silly resolved description: 'Option parsing for Node, supporting types, shorthands, etc. Used by npm.',
895 silly resolved author:
895 silly resolved { name: 'Isaac Z. Schlueter',
895 silly resolved email: 'i@izs.me',
895 silly resolved url: 'http://blog.izs.me/' },
895 silly resolved main: 'lib/nopt.js',
895 silly resolved scripts: { test: 'node lib/nopt.js' },
895 silly resolved repository: { type: 'git', url: 'https://github.com/isaacs/nopt' },
895 silly resolved bin: { nopt: './bin/nopt.js' },
895 silly resolved license:
895 silly resolved { type: 'MIT',
895 silly resolved url: 'https://github.com/isaacs/nopt/raw/master/LICENSE' },
895 silly resolved dependencies: { abbrev: '1' },
895 silly resolved readme: 'If you want to write an option parser, and have it be good, there are\ntwo ways to do it. The Right Way, and the Wrong Way.\n\nThe Wrong Way is to sit down and write an option parser. We\'ve all done\nthat.\n\nThe Right Way is to write some complex configurable program with so many\noptions that you go half-insane just trying to manage them all, and put\nit off with duct-tape solutions until you see exactly to the core of the\nproblem, and finally snap and write an awesome option parser.\n\nIf you want to write an option parser, don\'t write an option parser.\nWrite a package manager, or a source control system, or a service\nrestarter, or an operating system. You probably won\'t end up with a\ngood one of those, but if you don\'t give up, and you are relentless and\ndiligent enough in your procrastination, you may just end up with a very\nnice option parser.\n\n## USAGE\n\n // my-program.js\n var nopt = require("nopt")\n , Stream = require("stream").Stream\n , path = require("path")\n , knownOpts = { "foo" : [String, null]\n , "bar" : [Stream, Number]\n , "baz" : path\n , "bloo" : [ "big", "medium", "small" ]\n , "flag" : Boolean\n , "pick" : Boolean\n , "many" : [String, Array]\n }\n , shortHands = { "foofoo" : ["--foo", "Mr. Foo"]\n , "b7" : ["--bar", "7"]\n , "m" : ["--bloo", "medium"]\n , "p" : ["--pick"]\n , "f" : ["--flag"]\n }\n // everything is optional.\n // knownOpts and shorthands default to {}\n // arg list defaults to process.argv\n // slice defaults to 2\n , parsed = nopt(knownOpts, shortHands, process.argv, 2)\n console.log(parsed)\n\nThis would give you support for any of the following:\n\n```bash\n$ node my-program.js --foo "blerp" --no-flag\n{ "foo" : "blerp", "flag" : false }\n\n$ node my-program.js ---bar 7 --foo "Mr. Hand" --flag\n{ bar: 7, foo: "Mr. Hand", flag: true }\n\n$ node my-program.js --foo "blerp" -f -----p\n{ foo: "blerp", flag: true, pick: true }\n\n$ node my-program.js -fp --foofoo\n{ foo: "Mr. Foo", flag: true, pick: true }\n\n$ node my-program.js --foofoo -- -fp # -- stops the flag parsing.\n{ foo: "Mr. Foo", argv: { remain: ["-fp"] } }\n\n$ node my-program.js --blatzk 1000 -fp # unknown opts are ok.\n{ blatzk: 1000, flag: true, pick: true }\n\n$ node my-program.js --blatzk true -fp # but they need a value\n{ blatzk: true, flag: true, pick: true }\n\n$ node my-program.js --no-blatzk -fp # unless they start with "no-"\n{ blatzk: false, flag: true, pick: true }\n\n$ node my-program.js --baz b/a/z # known paths are resolved.\n{ baz: "/Users/isaacs/b/a/z" }\n\n# if Array is one of the types, then it can take many\n# values, and will always be an array. The other types provided\n# specify what types are allowed in the list.\n\n$ node my-program.js --many 1 --many null --many foo\n{ many: ["1", "null", "foo"] }\n\n$ node my-program.js --many foo\n{ many: ["foo"] }\n```\n\nRead the tests at the bottom of `lib/nopt.js` for more examples of\nwhat this puppy can do.\n\n## Types\n\nThe following types are supported, and defined on `nopt.typeDefs`\n\n* String: A normal string. No parsing is done.\n* path: A file system path. Gets resolved against cwd if not absolute.\n* url: A url. If it doesn\'t parse, it isn\'t accepted.\n* Number: Must be numeric.\n* Date: Must parse as a date. If it does, and `Date` is one of the options,\n then it will return a Date object, not a string.\n* Boolean: Must be either `true` or `false`. If an option is a boolean,\n then it does not need a value, and its presence will imply `true` as\n the value. To negate boolean flags, do `--no-whatever` or `--whatever\n false`\n* NaN: Means that the option is strictly not allowed. Any value will\n fail.\n* Stream: An object matching the "Stream" class in node. Valuable\n for use when validating programmatically. (npm uses this to let you\n supply any WriteStream on the `outfd` and `logfd` config options.)\n* Array: If `Array` is specified as one of the types, then the value\n will be parsed as a list of options. This means that multiple values\n can be specified, and that the value will always be an array.\n\nIf a type is an array of values not on this list, then those are\nconsidered valid values. For instance, in the example above, the\n`--bloo` option can only be one of `"big"`, `"medium"`, or `"small"`,\nand any other value will be rejected.\n\nWhen parsing unknown fields, `"true"`, `"false"`, and `"null"` will be\ninterpreted as their JavaScript equivalents, and numeric values will be\ninterpreted as a number.\n\nYou can also mix types and values, or multiple types, in a list. For\ninstance `{ blah: [Number, null] }` would allow a value to be set to\neither a Number or null. When types are ordered, this implies a\npreference, and the first type that can be used to properly interpret\nthe value will be used.\n\nTo define a new type, add it to `nopt.typeDefs`. Each item in that\nhash is an object with a `type` member and a `validate` method. The\n`type` member is an object that matches what goes in the type list. The\n`validate` method is a function that gets called with `validate(data,\nkey, val)`. Validate methods should assign `data[key]` to the valid\nvalue of `val` if it can be handled properly, or return boolean\n`false` if it cannot.\n\nYou can also call `nopt.clean(data, types, typeDefs)` to clean up a\nconfig object and remove its invalid properties.\n\n## Error Handling\n\nBy default, nopt outputs a warning to standard error when invalid\noptions are found. You can change this behavior by assigning a method\nto `nopt.invalidHandler`. This method will be called with\nthe offending `nopt.invalidHandler(key, val, types)`.\n\nIf no `nopt.invalidHandler` is assigned, then it will console.error\nits whining. If it is assigned to boolean `false` then the warning is\nsuppressed.\n\n## Abbreviations\n\nYes, they are supported. If you define options like this:\n\n```javascript\n{ "foolhardyelephants" : Boolean\n, "pileofmonkeys" : Boolean }\n```\n\nThen this will work:\n\n```bash\nnode program.js --foolhar --pil\nnode program.js --no-f --pileofmon\n# etc.\n```\n\n## Shorthands\n\nShorthands are a hash of shorter option names to a snippet of args that\nthey expand to.\n\nIf multiple one-character shorthands are all combined, and the\ncombination does not unambiguously match any other option or shorthand,\nthen they will be broken up into their constituent parts. For example:\n\n```json\n{ "s" : ["--loglevel", "silent"]\n, "g" : "--global"\n, "f" : "--force"\n, "p" : "--parseable"\n, "l" : "--long"\n}\n```\n\n```bash\nnpm ls -sgflp\n# just like doing this:\nnpm ls --loglevel silent --global --force --long --parseable\n```\n\n## The Rest of the args\n\nThe config object returned by nopt is given a special member called\n`argv`, which is an object with the following fields:\n\n* `remain`: The remaining args after all the parsing has occurred.\n* `original`: The args as they originally appeared.\n* `cooked`: The args after flags and shorthands are expanded.\n\n## Slicing\n\nNode programs are called with more or less the exact argv as it appears\nin C land, after the v8 and node-specific options have been plucked off.\nAs such, `argv[0]` is always `node` and `argv[1]` is always the\nJavaScript program being run.\n\nThat\'s usually not very useful to you. So they\'re sliced off by\ndefault. If you want them, then you can pass in `0` as the last\nargument, or any other number that you\'d like to slice off the start of\nthe list.\n',
895 silly resolved readmeFilename: 'README.md',
895 silly resolved bugs: { url: 'https://github.com/isaacs/nopt/issues' },
895 silly resolved homepage: 'https://github.com/isaacs/nopt',
895 silly resolved _id: 'nopt@2.1.2',
895 silly resolved _from: 'nopt@2' },
895 silly resolved { name: 'semver',
895 silly resolved version: '2.2.1',
895 silly resolved description: 'The semantic version parser used by npm.',
895 silly resolved main: 'semver.js',
895 silly resolved browser: 'semver.browser.js',
895 silly resolved min: 'semver.min.js',
895 silly resolved scripts: { test: 'tap test/*.js', prepublish: 'make' },
895 silly resolved devDependencies: { tap: '0.x >=0.0.4', 'uglify-js': '~2.3.6' },
895 silly resolved license: 'BSD',
895 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/node-semver.git' },
895 silly resolved bin: { semver: './bin/semver' },
895 silly resolved readme: 'semver(1) -- The semantic versioner for npm\n===========================================\n\n## Usage\n\n $ npm install semver\n\n semver.valid(\'1.2.3\') // \'1.2.3\'\n semver.valid(\'a.b.c\') // null\n semver.clean(\' =v1.2.3 \') // \'1.2.3\'\n semver.satisfies(\'1.2.3\', \'1.x || >=2.5.0 || 5.0.0 - 7.2.3\') // true\n semver.gt(\'1.2.3\', \'9.8.7\') // false\n semver.lt(\'1.2.3\', \'9.8.7\') // true\n\nAs a command-line utility:\n\n $ semver -h\n\n Usage: semver <version> [<version> [...]] [-r <range> | -i <inc> | -d <dec>]\n Test if version(s) satisfy the supplied range(s), and sort them.\n\n Multiple versions or ranges may be supplied, unless increment\n or decrement options are specified. In that case, only a single\n version may be used, and it is incremented by the specified level\n\n Program exits successfully if any valid version satisfies\n all supplied ranges, and prints all satisfying versions.\n\n If no versions are valid, or ranges are not satisfied,\n then exits failure.\n\n Versions are printed in ascending order, so supplying\n multiple versions to the utility will just sort them.\n\n## Versions\n\nA "version" is described by the v2.0.0 specification found at\n<http://semver.org/>.\n\nA leading `"="` or `"v"` character is stripped off and ignored.\n\n## Ranges\n\nThe following range styles are supported:\n\n* `1.2.3` A specific version. When nothing else will do. Note that\n build metadata is still ignored, so `1.2.3+build2012` will satisfy\n this range.\n* `>1.2.3` Greater than a specific version.\n* `<1.2.3` Less than a specific version. If there is no prerelease\n tag on the version range, then no prerelease version will be allowed\n either, even though these are technically "less than".\n* `>=1.2.3` Greater than or equal to. Note that prerelease versions\n are NOT equal to their "normal" equivalents, so `1.2.3-beta` will\n not satisfy this range, but `2.3.0-beta` will.\n* `<=1.2.3` Less than or equal to. In this case, prerelease versions\n ARE allowed, so `1.2.3-beta` would satisfy.\n* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`\n* `~1.2.3` := `>=1.2.3-0 <1.3.0-0` "Reasonably close to 1.2.3". When\n using tilde operators, prerelease versions are supported as well,\n but a prerelease of the next significant digit will NOT be\n satisfactory, so `1.3.0-beta` will not satisfy `~1.2.3`.\n* `^1.2.3` := `>=1.2.3-0 <2.0.0-0` "Compatible with 1.2.3". When\n using caret operators, anything from the specified version (including\n prerelease) will be supported up to, but not including, the next\n major version (or its prereleases). `1.5.1` will satisfy `^1.2.3`,\n while `1.2.2` and `2.0.0-beta` will not.\n* `^0.1.3` := `>=0.1.3-0 <0.2.0-0` "Compatible with 0.1.3". 0.x.x versions are\n special: the first non-zero component indicates potentially breaking changes,\n meaning the caret operator matches any version with the same first non-zero\n component starting at the specified version.\n* `^0.0.2` := `=0.0.2` "Only the version 0.0.2 is considered compatible"\n* `~1.2` := `>=1.2.0-0 <1.3.0-0` "Any version starting with 1.2"\n* `^1.2` := `>=1.2.0-0 <2.0.0-0` "Any version compatible with 1.2"\n* `1.2.x` := `>=1.2.0-0 <1.3.0-0` "Any version starting with 1.2"\n* `~1` := `>=1.0.0-0 <2.0.0-0` "Any version starting with 1"\n* `^1` := `>=1.0.0-0 <2.0.0-0` "Any version compatible with 1"\n* `1.x` := `>=1.0.0-0 <2.0.0-0` "Any version starting with 1"\n\n\nRanges can be joined with either a space (which implies "and") or a\n`||` (which implies "or").\n\n## Functions\n\nAll methods and classes take a final `loose` boolean argument that, if\ntrue, will be more forgiving about not-quite-valid semver strings.\nThe resulting output will always be 100% strict, of course.\n\nStrict-mode Comparators and Ranges will be strict about the SemVer\nstrings that they parse.\n\n* valid(v): Return the parsed version, or null if it\'s not valid.\n* inc(v, release): Return the version incremented by the release type\n (major, minor, patch, or prerelease), or null if it\'s not valid.\n\n### Comparison\n\n* gt(v1, v2): `v1 > v2`\n* gte(v1, v2): `v1 >= v2`\n* lt(v1, v2): `v1 < v2`\n* lte(v1, v2): `v1 <= v2`\n* eq(v1, v2): `v1 == v2` This is true if they\'re logically equivalent,\n even if they\'re not the exact same string. You already know how to\n compare strings.\n* neq(v1, v2): `v1 != v2` The opposite of eq.\n* cmp(v1, comparator, v2): Pass in a comparison string, and it\'ll call\n the corresponding function above. `"==="` and `"!=="` do simple\n string comparison, but are included for completeness. Throws if an\n invalid comparison string is provided.\n* compare(v1, v2): Return 0 if v1 == v2, or 1 if v1 is greater, or -1 if\n v2 is greater. Sorts in ascending order if passed to Array.sort().\n* rcompare(v1, v2): The reverse of compare. Sorts an array of versions\n in descending order when passed to Array.sort().\n\n\n### Ranges\n\n* validRange(range): Return the valid range or null if it\'s not valid\n* satisfies(version, range): Return true if the version satisfies the\n range.\n* maxSatisfying(versions, range): Return the highest version in the list\n that satisfies the range, or null if none of them do.\n* gtr(version, range): Return true if version is greater than all the\n versions possible in the range.\n* ltr(version, range): Return true if version is less than all the\n versions possible in the range.\n* outside(version, range, hilo): Return true if the version is outside\n the bounds of the range in either the high or low direction. The\n `hilo` argument must be either the string `\'>\'` or `\'<\'`. (This is\n the function called by `gtr` and `ltr`.)\n\nNote that, since ranges may be non-contiguous, a version might not be\ngreater than a range, less than a range, *or* satisfy a range! For\nexample, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`\nuntil `2.0.0`, so the version `1.2.10` would not be greater than the\nrange (because 2.0.1 satisfies, which is higher), nor less than the\nrange (since 1.2.8 satisfies, which is lower), and it also does not\nsatisfy the range.\n\nIf you want to know if a version satisfies or does not satisfy a\nrange, use the `satisfies(version, range)` function.\n',
895 silly resolved readmeFilename: 'README.md',
895 silly resolved bugs: { url: 'https://github.com/isaacs/node-semver/issues' },
895 silly resolved homepage: 'https://github.com/isaacs/node-semver',
895 silly resolved _id: 'semver@2.2.1',
895 silly resolved _from: 'semver@2' },
895 silly resolved { author:
895 silly resolved { name: 'Isaac Z. Schlueter',
895 silly resolved email: 'i@izs.me',
895 silly resolved url: 'http://blog.izs.me/' },
895 silly resolved name: 'ini',
895 silly resolved description: 'An ini encoder/decoder for node',
895 silly resolved version: '1.1.0',
895 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/ini.git' },
895 silly resolved main: 'ini.js',
895 silly resolved scripts: { test: 'tap test/*.js' },
895 silly resolved engines: { node: '*' },
895 silly resolved dependencies: {},
895 silly resolved devDependencies: { tap: '~0.0.9' },
895 silly resolved readme: 'An ini format parser and serializer for node.\n\nSections are treated as nested objects. Items before the first heading\nare saved on the object directly.\n\n## Usage\n\nConsider an ini-file `config.ini` that looks like this:\n\n ; this comment is being ignored\n scope = global\n\n [database]\n user = dbuser\n password = dbpassword\n database = use_this_database\n\n [paths.default]\n datadir = /var/lib/data\n array[] = first value\n array[] = second value\n array[] = third value\n\nYou can read, manipulate and write the ini-file like so:\n\n var fs = require(\'fs\')\n , ini = require(\'ini\')\n\n var config = ini.parse(fs.readFileSync(\'./config.ini\', \'utf-8\'))\n\n config.scope = \'local\'\n config.database.database = \'use_another_database\'\n config.paths.default.tmpdir = \'/tmp\'\n delete config.paths.default.datadir\n config.paths.default.array.push(\'fourth value\')\n\n fs.writeFileSync(\'./config_modified.ini\', ini.stringify(config, \'section\'))\n\nThis will result in a file called `config_modified.ini` being written to the filesystem with the following content:\n\n [section]\n scope = local\n [section.database]\n user = dbuser\n password = dbpassword\n database = use_another_database\n [section.paths.default]\n tmpdir = /tmp\n array[] = first value\n array[] = second value\n array[] = third value\n array[] = fourth value\n\n\n## API\n\n### decode(inistring)\nDecode the ini-style formatted `inistring` into a nested object.\n\n### parse(inistring)\nAlias for `decode(inistring)`\n\n### encode(object, [section])\nEncode the object `object` into an ini-style formatted string. If the optional parameter `section` is given, then all top-level properties of the object are put into this section and the `section`-string is prepended to all sub-sections, see the usage example above.\n\n### stringify(object, [section])\nAlias for `encode(object, [section])`\n\n### safe(val)\nEscapes the string `val` such that it is safe to be used as a key or value in an ini-file. Basically escapes quotes. For example\n\n ini.safe(\'"unsafe string"\')\n\nwould result in\n\n "\\"unsafe string\\""\n\n### unsafe(val)\nUnescapes the string `val`\n',
895 silly resolved readmeFilename: 'README.md',
895 silly resolved bugs: { url: 'https://github.com/isaacs/ini/issues' },
895 silly resolved homepage: 'https://github.com/isaacs/ini',
895 silly resolved _id: 'ini@1.1.0',
895 silly resolved _from: 'ini@~1.1.0' } ]
896 info install inherits@2.0.1 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf
897 info install mkdirp@0.3.5 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf
898 info install config-chain@1.1.8 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf
899 info install once@1.3.0 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf
900 info install osenv@0.0.3 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf
901 info install nopt@2.1.2 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf
902 info install semver@2.2.1 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf
903 info install ini@1.1.0 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf
904 info installOne inherits@2.0.1
905 info installOne mkdirp@0.3.5
906 info installOne config-chain@1.1.8
907 info installOne once@1.3.0
908 info installOne osenv@0.0.3
909 info installOne nopt@2.1.2
910 info installOne semver@2.2.1
911 info installOne ini@1.1.0
912 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/inherits unbuild
913 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/mkdirp unbuild
914 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain unbuild
915 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/once unbuild
916 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/osenv unbuild
917 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt unbuild
918 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/semver unbuild
919 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/ini unbuild
920 verbose tar unpack /home/dev/.npm/inherits/2.0.1/package.tgz
921 silly lockFile ef346254-es-npmconf-node-modules-inherits tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/inherits
922 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/inherits /home/dev/.npm/ef346254-es-npmconf-node-modules-inherits.lock
923 silly lockFile 6cdc2610-v-npm-inherits-2-0-1-package-tgz tar:///home/dev/.npm/inherits/2.0.1/package.tgz
924 verbose lock tar:///home/dev/.npm/inherits/2.0.1/package.tgz /home/dev/.npm/6cdc2610-v-npm-inherits-2-0-1-package-tgz.lock
925 verbose tar unpack /home/dev/.npm/mkdirp/0.3.5/package.tgz
926 silly lockFile c155a768-ules-npmconf-node-modules-mkdirp tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/mkdirp
927 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/mkdirp /home/dev/.npm/c155a768-ules-npmconf-node-modules-mkdirp.lock
928 silly lockFile 0ffb1511-dev-npm-mkdirp-0-3-5-package-tgz tar:///home/dev/.npm/mkdirp/0.3.5/package.tgz
929 verbose lock tar:///home/dev/.npm/mkdirp/0.3.5/package.tgz /home/dev/.npm/0ffb1511-dev-npm-mkdirp-0-3-5-package-tgz.lock
930 verbose tar unpack /home/dev/.npm/config-chain/1.1.8/package.tgz
931 silly lockFile 0cde007a-pmconf-node-modules-config-chain tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain
932 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain /home/dev/.npm/0cde007a-pmconf-node-modules-config-chain.lock
933 silly lockFile d488064b-m-config-chain-1-1-8-package-tgz tar:///home/dev/.npm/config-chain/1.1.8/package.tgz
934 verbose lock tar:///home/dev/.npm/config-chain/1.1.8/package.tgz /home/dev/.npm/d488064b-m-config-chain-1-1-8-package-tgz.lock
935 verbose tar unpack /home/dev/.npm/once/1.3.0/package.tgz
936 silly lockFile 56600914-odules-npmconf-node-modules-once tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/once
937 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/once /home/dev/.npm/56600914-odules-npmconf-node-modules-once.lock
938 silly lockFile 02de2ae8-e-dev-npm-once-1-3-0-package-tgz tar:///home/dev/.npm/once/1.3.0/package.tgz
939 verbose lock tar:///home/dev/.npm/once/1.3.0/package.tgz /home/dev/.npm/02de2ae8-e-dev-npm-once-1-3-0-package-tgz.lock
940 verbose tar unpack /home/dev/.npm/osenv/0.0.3/package.tgz
941 silly lockFile 70c27620-dules-npmconf-node-modules-osenv tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/osenv
942 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/osenv /home/dev/.npm/70c27620-dules-npmconf-node-modules-osenv.lock
943 silly lockFile 9ea2547c--dev-npm-osenv-0-0-3-package-tgz tar:///home/dev/.npm/osenv/0.0.3/package.tgz
944 verbose lock tar:///home/dev/.npm/osenv/0.0.3/package.tgz /home/dev/.npm/9ea2547c--dev-npm-osenv-0-0-3-package-tgz.lock
945 verbose tar unpack /home/dev/.npm/nopt/2.1.2/package.tgz
946 silly lockFile ded35a83-odules-npmconf-node-modules-nopt tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt
947 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt /home/dev/.npm/ded35a83-odules-npmconf-node-modules-nopt.lock
948 silly lockFile 7c949799-e-dev-npm-nopt-2-1-2-package-tgz tar:///home/dev/.npm/nopt/2.1.2/package.tgz
949 verbose lock tar:///home/dev/.npm/nopt/2.1.2/package.tgz /home/dev/.npm/7c949799-e-dev-npm-nopt-2-1-2-package-tgz.lock
950 verbose tar unpack /home/dev/.npm/semver/2.2.1/package.tgz
951 silly lockFile 816afdeb-ules-npmconf-node-modules-semver tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/semver
952 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/semver /home/dev/.npm/816afdeb-ules-npmconf-node-modules-semver.lock
953 silly lockFile 0898e019-dev-npm-semver-2-2-1-package-tgz tar:///home/dev/.npm/semver/2.2.1/package.tgz
954 verbose lock tar:///home/dev/.npm/semver/2.2.1/package.tgz /home/dev/.npm/0898e019-dev-npm-semver-2-2-1-package-tgz.lock
955 verbose tar unpack /home/dev/.npm/ini/1.1.0/package.tgz
956 silly lockFile 74bb83c0-modules-npmconf-node-modules-ini tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/ini
957 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/ini /home/dev/.npm/74bb83c0-modules-npmconf-node-modules-ini.lock
958 silly lockFile 9358eb4a-me-dev-npm-ini-1-1-0-package-tgz tar:///home/dev/.npm/ini/1.1.0/package.tgz
959 verbose lock tar:///home/dev/.npm/ini/1.1.0/package.tgz /home/dev/.npm/9358eb4a-me-dev-npm-ini-1-1-0-package-tgz.lock
960 silly gunzTarPerm modes [ '755', '644' ]
961 silly gunzTarPerm modes [ '755', '644' ]
962 silly gunzTarPerm modes [ '755', '644' ]
963 silly gunzTarPerm modes [ '755', '644' ]
964 silly gunzTarPerm modes [ '755', '644' ]
965 silly gunzTarPerm modes [ '755', '644' ]
966 silly gunzTarPerm modes [ '755', '644' ]
967 silly gunzTarPerm modes [ '755', '644' ]
968 silly gunzTarPerm extractEntry package.json
969 silly gunzTarPerm extractEntry package.json
970 silly gunzTarPerm extractEntry package.json
971 silly gunzTarPerm extractEntry package.json
972 silly gunzTarPerm extractEntry package.json
973 silly gunzTarPerm extractEntry package.json
974 silly gunzTarPerm extractEntry package.json
975 silly gunzTarPerm extractEntry package.json
976 silly gunzTarPerm extractEntry README.md
977 silly gunzTarPerm extractEntry LICENSE
978 silly gunzTarPerm extractEntry .npmignore
979 silly gunzTarPerm extractEntry LICENSE
980 silly gunzTarPerm extractEntry .npmignore
981 silly gunzTarPerm extractEntry LICENCE
982 silly gunzTarPerm extractEntry README.md
983 silly gunzTarPerm extractEntry LICENSE
984 silly gunzTarPerm extractEntry README.md
985 silly gunzTarPerm extractEntry LICENSE
986 silly gunzTarPerm extractEntry .npmignore
987 silly gunzTarPerm extractEntry README.md
988 silly gunzTarPerm extractEntry .npmignore
989 silly gunzTarPerm extractEntry README.md
990 silly gunzTarPerm extractEntry README.md
991 silly gunzTarPerm extractEntry LICENSE
992 silly gunzTarPerm extractEntry inherits.js
993 silly gunzTarPerm extractEntry inherits_browser.js
994 silly gunzTarPerm extractEntry index.js
995 silly gunzTarPerm extractEntry readme.markdown
996 silly gunzTarPerm extractEntry LICENSE
997 silly gunzTarPerm extractEntry bin/nopt.js
998 silly gunzTarPerm extractEntry LICENSE
999 silly gunzTarPerm extractEntry semver.browser.js
1000 silly gunzTarPerm extractEntry ini.js
1001 silly gunzTarPerm extractEntry test/bar.js
1002 silly gunzTarPerm extractEntry index.js
1003 silly gunzTarPerm extractEntry .travis.yml
1004 silly gunzTarPerm extractEntry once.js
1005 silly gunzTarPerm extractEntry test/once.js
1006 silly gunzTarPerm extractEntry osenv.js
1007 silly gunzTarPerm extractEntry test/unix.js
1008 silly gunzTarPerm extractEntry test/broken.js
1009 silly gunzTarPerm extractEntry examples/my-program.js
1010 silly gunzTarPerm extractEntry lib/nopt.js
1011 silly gunzTarPerm extractEntry foot.js
1012 silly gunzTarPerm extractEntry examples/pow.js
1013 silly gunzTarPerm extractEntry readme.markdown
1014 silly gunzTarPerm extractEntry test.js
1015 silly gunzTarPerm extractEntry test/windows.js
1016 silly gunzTarPerm extractEntry test/foo.js
1017 silly gunzTarPerm extractEntry test/fixtures/foo.ini
1018 silly gunzTarPerm extractEntry test/chain-class.js
1019 silly gunzTarPerm extractEntry test/env.js
1020 silly gunzTarPerm extractEntry test/chmod.js
1021 silly gunzTarPerm extractEntry test/perm.js
1022 silly gunzTarPerm extractEntry head.js
1023 silly gunzTarPerm extractEntry semver.js
1024 silly gunzTarPerm extractEntry test/perm_sync.js
1025 silly gunzTarPerm extractEntry test/race.js
1026 silly gunzTarPerm extractEntry test/mkdirp.js
1027 silly gunzTarPerm extractEntry test/return.js
1028 silly gunzTarPerm extractEntry test/return_sync.js
1029 silly gunzTarPerm extractEntry test/root.js
1030 silly gunzTarPerm extractEntry test/sync.js
1031 silly gunzTarPerm extractEntry test/umask.js
1032 silly gunzTarPerm extractEntry test/clobber.js
1033 silly gunzTarPerm extractEntry test/umask_sync.js
1034 silly gunzTarPerm extractEntry test/rel.js
1035 silly gunzTarPerm extractEntry semver.min.js
1036 silly gunzTarPerm extractEntry semver.browser.js.gz
1037 silly gunzTarPerm extractEntry test/find-file.js
1038 silly gunzTarPerm extractEntry test/get.js
1039 silly lockFile 56600914-odules-npmconf-node-modules-once tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/once
1040 silly lockFile 56600914-odules-npmconf-node-modules-once tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/once
1041 silly lockFile 02de2ae8-e-dev-npm-once-1-3-0-package-tgz tar:///home/dev/.npm/once/1.3.0/package.tgz
1042 silly lockFile 02de2ae8-e-dev-npm-once-1-3-0-package-tgz tar:///home/dev/.npm/once/1.3.0/package.tgz
1043 info preinstall once@1.3.0
1044 verbose readDependencies using package.json deps
1045 silly lockFile ef346254-es-npmconf-node-modules-inherits tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/inherits
1046 silly lockFile ef346254-es-npmconf-node-modules-inherits tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/inherits
1047 verbose readDependencies using package.json deps
1048 silly resolved []
1049 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/once
1050 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/once
1051 verbose linkStuff [ false,
1051 verbose linkStuff false,
1051 verbose linkStuff false,
1051 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules' ]
1052 info linkStuff once@1.3.0
1053 verbose linkBins once@1.3.0
1054 verbose linkMans once@1.3.0
1055 verbose rebuildBundles once@1.3.0
1056 silly lockFile 6cdc2610-v-npm-inherits-2-0-1-package-tgz tar:///home/dev/.npm/inherits/2.0.1/package.tgz
1057 silly lockFile 6cdc2610-v-npm-inherits-2-0-1-package-tgz tar:///home/dev/.npm/inherits/2.0.1/package.tgz
1058 info install once@1.3.0
1059 silly gunzTarPerm extractEntry test/ignore-unfound-file.js
1060 silly gunzTarPerm extractEntry test/ini.js
1061 info postinstall once@1.3.0
1062 info preinstall inherits@2.0.1
1063 verbose readDependencies using package.json deps
1064 verbose readDependencies using package.json deps
1065 silly resolved []
1066 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/inherits
1067 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/inherits
1068 verbose linkStuff [ false,
1068 verbose linkStuff false,
1068 verbose linkStuff false,
1068 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules' ]
1069 info linkStuff inherits@2.0.1
1070 verbose linkBins inherits@2.0.1
1071 verbose linkMans inherits@2.0.1
1072 verbose rebuildBundles inherits@2.0.1
1073 info install inherits@2.0.1
1074 info postinstall inherits@2.0.1
1075 silly gunzTarPerm extractEntry test/save.js
1076 silly gunzTarPerm extractEntry test/broken.json
1077 silly lockFile 70c27620-dules-npmconf-node-modules-osenv tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/osenv
1078 silly lockFile 70c27620-dules-npmconf-node-modules-osenv tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/osenv
1079 silly lockFile 9ea2547c--dev-npm-osenv-0-0-3-package-tgz tar:///home/dev/.npm/osenv/0.0.3/package.tgz
1080 silly lockFile 9ea2547c--dev-npm-osenv-0-0-3-package-tgz tar:///home/dev/.npm/osenv/0.0.3/package.tgz
1081 info preinstall osenv@0.0.3
1082 verbose readDependencies using package.json deps
1083 verbose readDependencies using package.json deps
1084 silly resolved []
1085 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/osenv
1086 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/osenv
1087 verbose linkStuff [ false,
1087 verbose linkStuff false,
1087 verbose linkStuff false,
1087 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules' ]
1088 info linkStuff osenv@0.0.3
1089 verbose linkBins osenv@0.0.3
1090 verbose linkMans osenv@0.0.3
1091 verbose rebuildBundles osenv@0.0.3
1092 info install osenv@0.0.3
1093 silly lockFile 74bb83c0-modules-npmconf-node-modules-ini tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/ini
1094 silly lockFile 74bb83c0-modules-npmconf-node-modules-ini tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/ini
1095 silly lockFile 9358eb4a-me-dev-npm-ini-1-1-0-package-tgz tar:///home/dev/.npm/ini/1.1.0/package.tgz
1096 silly lockFile 9358eb4a-me-dev-npm-ini-1-1-0-package-tgz tar:///home/dev/.npm/ini/1.1.0/package.tgz
1097 info postinstall osenv@0.0.3
1098 info preinstall ini@1.1.0
1099 verbose readDependencies using package.json deps
1100 verbose readDependencies using package.json deps
1101 silly resolved []
1102 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/ini
1103 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/ini
1104 verbose linkStuff [ false,
1104 verbose linkStuff false,
1104 verbose linkStuff false,
1104 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules' ]
1105 info linkStuff ini@1.1.0
1106 verbose linkBins ini@1.1.0
1107 verbose linkMans ini@1.1.0
1108 verbose rebuildBundles ini@1.1.0
1109 info install ini@1.1.0
1110 info postinstall ini@1.1.0
1111 silly gunzTarPerm extractEntry Makefile
1112 silly gunzTarPerm extractEntry bin/semver
1113 silly gunzTarPerm extractEntry semver.min.js.gz
1114 silly gunzTarPerm extractEntry test/amd.js
1115 silly lockFile ded35a83-odules-npmconf-node-modules-nopt tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt
1116 silly lockFile ded35a83-odules-npmconf-node-modules-nopt tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt
1117 silly gunzTarPerm extractEntry test/gtr.js
1118 silly gunzTarPerm extractEntry test/index.js
1119 silly lockFile 7c949799-e-dev-npm-nopt-2-1-2-package-tgz tar:///home/dev/.npm/nopt/2.1.2/package.tgz
1120 silly lockFile 7c949799-e-dev-npm-nopt-2-1-2-package-tgz tar:///home/dev/.npm/nopt/2.1.2/package.tgz
1121 info preinstall nopt@2.1.2
1122 verbose readDependencies using package.json deps
1123 verbose readDependencies using package.json deps
1124 verbose cache add [ 'abbrev@1', null ]
1125 verbose cache add name=undefined spec="abbrev@1" args=["abbrev@1",null]
1126 verbose parsed url { protocol: null,
1126 verbose parsed url slashes: null,
1126 verbose parsed url auth: null,
1126 verbose parsed url host: null,
1126 verbose parsed url port: null,
1126 verbose parsed url hostname: null,
1126 verbose parsed url hash: null,
1126 verbose parsed url search: null,
1126 verbose parsed url query: null,
1126 verbose parsed url pathname: 'abbrev@1',
1126 verbose parsed url path: 'abbrev@1',
1126 verbose parsed url href: 'abbrev@1' }
1127 verbose cache add name="abbrev" spec="1" args=["abbrev","1"]
1128 verbose parsed url { protocol: null,
1128 verbose parsed url slashes: null,
1128 verbose parsed url auth: null,
1128 verbose parsed url host: null,
1128 verbose parsed url port: null,
1128 verbose parsed url hostname: null,
1128 verbose parsed url hash: null,
1128 verbose parsed url search: null,
1128 verbose parsed url query: null,
1128 verbose parsed url pathname: '1',
1128 verbose parsed url path: '1',
1128 verbose parsed url href: '1' }
1129 verbose addNamed [ 'abbrev', '1' ]
1130 verbose addNamed [ null, '>=1.0.0-0 <2.0.0-0' ]
1131 silly lockFile 6830b531-abbrev-1 abbrev@1
1132 verbose lock abbrev@1 /home/dev/.npm/6830b531-abbrev-1.lock
1133 silly addNameRange { name: 'abbrev', range: '>=1.0.0-0 <2.0.0-0', hasData: false }
1134 verbose url raw abbrev
1135 verbose url resolving [ 'https://registry.npmjs.org/', './abbrev' ]
1136 verbose url resolved https://registry.npmjs.org/abbrev
1137 info trying registry request attempt 1 at 22:18:42
1138 verbose etag "D3D3CY0UKRCNMTXM981W0XI5E"
1139 http GET https://registry.npmjs.org/abbrev
1140 silly lockFile 0cde007a-pmconf-node-modules-config-chain tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain
1141 silly lockFile 0cde007a-pmconf-node-modules-config-chain tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain
1142 silly lockFile d488064b-m-config-chain-1-1-8-package-tgz tar:///home/dev/.npm/config-chain/1.1.8/package.tgz
1143 silly lockFile d488064b-m-config-chain-1-1-8-package-tgz tar:///home/dev/.npm/config-chain/1.1.8/package.tgz
1144 info preinstall config-chain@1.1.8
1145 verbose readDependencies using package.json deps
1146 verbose readDependencies using package.json deps
1147 verbose cache add [ 'proto-list@~1.2.1', null ]
1148 verbose cache add name=undefined spec="proto-list@~1.2.1" args=["proto-list@~1.2.1",null]
1149 verbose parsed url { protocol: null,
1149 verbose parsed url slashes: null,
1149 verbose parsed url auth: null,
1149 verbose parsed url host: null,
1149 verbose parsed url port: null,
1149 verbose parsed url hostname: null,
1149 verbose parsed url hash: null,
1149 verbose parsed url search: null,
1149 verbose parsed url query: null,
1149 verbose parsed url pathname: 'proto-list@~1.2.1',
1149 verbose parsed url path: 'proto-list@~1.2.1',
1149 verbose parsed url href: 'proto-list@~1.2.1' }
1150 verbose cache add name="proto-list" spec="~1.2.1" args=["proto-list","~1.2.1"]
1151 verbose parsed url { protocol: null,
1151 verbose parsed url slashes: null,
1151 verbose parsed url auth: null,
1151 verbose parsed url host: null,
1151 verbose parsed url port: null,
1151 verbose parsed url hostname: null,
1151 verbose parsed url hash: null,
1151 verbose parsed url search: null,
1151 verbose parsed url query: null,
1151 verbose parsed url pathname: '~1.2.1',
1151 verbose parsed url path: '~1.2.1',
1151 verbose parsed url href: '~1.2.1' }
1152 verbose addNamed [ 'proto-list', '~1.2.1' ]
1153 verbose addNamed [ null, '>=1.2.1-0 <1.3.0-0' ]
1154 silly lockFile 5d8d6d63-proto-list-1-2-1 proto-list@~1.2.1
1155 verbose lock proto-list@~1.2.1 /home/dev/.npm/5d8d6d63-proto-list-1-2-1.lock
1156 silly addNameRange { name: 'proto-list',
1156 silly addNameRange range: '>=1.2.1-0 <1.3.0-0',
1156 silly addNameRange hasData: false }
1157 verbose url raw proto-list
1158 verbose url resolving [ 'https://registry.npmjs.org/', './proto-list' ]
1159 verbose url resolved https://registry.npmjs.org/proto-list
1160 info trying registry request attempt 1 at 22:18:42
1161 verbose etag "CJFVCA9TDUD13V86J5I3IJ35B"
1162 http GET https://registry.npmjs.org/proto-list
1163 silly gunzTarPerm extractEntry test/ltr.js
1164 silly gunzTarPerm extractEntry test/no-module.js
1165 silly lockFile c155a768-ules-npmconf-node-modules-mkdirp tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/mkdirp
1166 silly lockFile c155a768-ules-npmconf-node-modules-mkdirp tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/mkdirp
1167 silly lockFile 0ffb1511-dev-npm-mkdirp-0-3-5-package-tgz tar:///home/dev/.npm/mkdirp/0.3.5/package.tgz
1168 silly lockFile 0ffb1511-dev-npm-mkdirp-0-3-5-package-tgz tar:///home/dev/.npm/mkdirp/0.3.5/package.tgz
1169 info preinstall mkdirp@0.3.5
1170 verbose readDependencies using package.json deps
1171 verbose readDependencies using package.json deps
1172 silly resolved []
1173 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/mkdirp
1174 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/mkdirp
1175 verbose linkStuff [ false,
1175 verbose linkStuff false,
1175 verbose linkStuff false,
1175 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules' ]
1176 info linkStuff mkdirp@0.3.5
1177 verbose linkBins mkdirp@0.3.5
1178 verbose linkMans mkdirp@0.3.5
1179 verbose rebuildBundles mkdirp@0.3.5
1180 info install mkdirp@0.3.5
1181 info postinstall mkdirp@0.3.5
1182 silly lockFile 816afdeb-ules-npmconf-node-modules-semver tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/semver
1183 silly lockFile 816afdeb-ules-npmconf-node-modules-semver tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/semver
1184 silly lockFile 0898e019-dev-npm-semver-2-2-1-package-tgz tar:///home/dev/.npm/semver/2.2.1/package.tgz
1185 silly lockFile 0898e019-dev-npm-semver-2-2-1-package-tgz tar:///home/dev/.npm/semver/2.2.1/package.tgz
1186 info preinstall semver@2.2.1
1187 verbose readDependencies using package.json deps
1188 verbose readDependencies using package.json deps
1189 silly resolved []
1190 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/semver
1191 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/semver
1192 verbose linkStuff [ false,
1192 verbose linkStuff false,
1192 verbose linkStuff false,
1192 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules' ]
1193 info linkStuff semver@2.2.1
1194 verbose linkBins semver@2.2.1
1195 verbose link bins [ { semver: './bin/semver' },
1195 verbose link bins '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/.bin',
1195 verbose link bins false ]
1196 verbose linkMans semver@2.2.1
1197 verbose rebuildBundles semver@2.2.1
1198 info install semver@2.2.1
1199 info postinstall semver@2.2.1
1200 http 304 https://registry.npmjs.org/abbrev
1201 silly registry.get cb [ 304,
1201 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
1201 silly registry.get etag: '"D3D3CY0UKRCNMTXM981W0XI5E"',
1201 silly registry.get date: 'Wed, 13 Nov 2013 21:18:43 GMT',
1201 silly registry.get 'content-length': '0' } ]
1202 verbose etag abbrev from cache
1203 silly addNameRange number 2 { name: 'abbrev', range: '>=1.0.0-0 <2.0.0-0', hasData: true }
1204 silly addNameRange versions [ 'abbrev', [ '1.0.3', '1.0.4' ] ]
1205 verbose addNamed [ 'abbrev', '1.0.4' ]
1206 verbose addNamed [ '1.0.4', '1.0.4' ]
1207 silly lockFile 64a4e3a6-abbrev-1-0-4 abbrev@1.0.4
1208 verbose lock abbrev@1.0.4 /home/dev/.npm/64a4e3a6-abbrev-1-0-4.lock
1209 silly lockFile 64a4e3a6-abbrev-1-0-4 abbrev@1.0.4
1210 silly lockFile 64a4e3a6-abbrev-1-0-4 abbrev@1.0.4
1211 silly lockFile 6830b531-abbrev-1 abbrev@1
1212 silly lockFile 6830b531-abbrev-1 abbrev@1
1213 http 304 https://registry.npmjs.org/proto-list
1214 silly registry.get cb [ 304,
1214 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
1214 silly registry.get etag: '"CJFVCA9TDUD13V86J5I3IJ35B"',
1214 silly registry.get date: 'Wed, 13 Nov 2013 21:18:43 GMT',
1214 silly registry.get 'content-length': '0' } ]
1215 verbose etag proto-list from cache
1216 silly resolved [ { name: 'abbrev',
1216 silly resolved version: '1.0.4',
1216 silly resolved description: 'Like ruby\'s abbrev module, but in js',
1216 silly resolved author: { name: 'Isaac Z. Schlueter', email: 'i@izs.me' },
1216 silly resolved main: './lib/abbrev.js',
1216 silly resolved scripts: { test: 'node lib/abbrev.js' },
1216 silly resolved repository: { type: 'git', url: 'https://github.com/isaacs/abbrev-js' },
1216 silly resolved license:
1216 silly resolved { type: 'MIT',
1216 silly resolved url: 'https://github.com/isaacs/abbrev-js/raw/master/LICENSE' },
1216 silly resolved readme: '# abbrev-js\n\nJust like [ruby\'s Abbrev](http://apidock.com/ruby/Abbrev).\n\nUsage:\n\n var abbrev = require("abbrev");\n abbrev("foo", "fool", "folding", "flop");\n \n // returns:\n { fl: \'flop\'\n , flo: \'flop\'\n , flop: \'flop\'\n , fol: \'folding\'\n , fold: \'folding\'\n , foldi: \'folding\'\n , foldin: \'folding\'\n , folding: \'folding\'\n , foo: \'foo\'\n , fool: \'fool\'\n }\n\nThis is handy for command-line scripts, or other cases where you want to be able to accept shorthands.\n',
1216 silly resolved readmeFilename: 'README.md',
1216 silly resolved bugs: { url: 'https://github.com/isaacs/abbrev-js/issues' },
1216 silly resolved homepage: 'https://github.com/isaacs/abbrev-js',
1216 silly resolved _id: 'abbrev@1.0.4',
1216 silly resolved _from: 'abbrev@1' } ]
1217 info install abbrev@1.0.4 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt
1218 info installOne abbrev@1.0.4
1219 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt/node_modules/abbrev unbuild
1220 verbose tar unpack /home/dev/.npm/abbrev/1.0.4/package.tgz
1221 silly lockFile 3e722c41-modules-nopt-node-modules-abbrev tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt/node_modules/abbrev
1222 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt/node_modules/abbrev /home/dev/.npm/3e722c41-modules-nopt-node-modules-abbrev.lock
1223 silly lockFile 35ac3090-dev-npm-abbrev-1-0-4-package-tgz tar:///home/dev/.npm/abbrev/1.0.4/package.tgz
1224 verbose lock tar:///home/dev/.npm/abbrev/1.0.4/package.tgz /home/dev/.npm/35ac3090-dev-npm-abbrev-1-0-4-package-tgz.lock
1225 silly addNameRange number 2 { name: 'proto-list',
1225 silly addNameRange range: '>=1.2.1-0 <1.3.0-0',
1225 silly addNameRange hasData: true }
1226 silly addNameRange versions [ 'proto-list',
1226 silly addNameRange [ '1.0.0', '1.1.0', '1.2.0', '1.2.1', '1.2.2' ] ]
1227 verbose addNamed [ 'proto-list', '1.2.2' ]
1228 verbose addNamed [ '1.2.2', '1.2.2' ]
1229 silly lockFile bd933072-proto-list-1-2-2 proto-list@1.2.2
1230 verbose lock proto-list@1.2.2 /home/dev/.npm/bd933072-proto-list-1-2-2.lock
1231 silly gunzTarPerm modes [ '755', '644' ]
1232 silly gunzTarPerm extractEntry package.json
1233 silly gunzTarPerm extractEntry README.md
1234 silly gunzTarPerm extractEntry LICENSE
1235 silly lockFile bd933072-proto-list-1-2-2 proto-list@1.2.2
1236 silly lockFile bd933072-proto-list-1-2-2 proto-list@1.2.2
1237 silly lockFile 5d8d6d63-proto-list-1-2-1 proto-list@~1.2.1
1238 silly lockFile 5d8d6d63-proto-list-1-2-1 proto-list@~1.2.1
1239 silly resolved [ { name: 'proto-list',
1239 silly resolved version: '1.2.2',
1239 silly resolved description: 'A utility for managing a prototype chain',
1239 silly resolved main: './proto-list.js',
1239 silly resolved author:
1239 silly resolved { name: 'Isaac Z. Schlueter',
1239 silly resolved email: 'i@izs.me',
1239 silly resolved url: 'http://blog.izs.me/' },
1239 silly resolved scripts: { test: 'tap test/*.js' },
1239 silly resolved repository: { type: 'git', url: 'https://github.com/isaacs/proto-list' },
1239 silly resolved license:
1239 silly resolved { type: 'MIT',
1239 silly resolved url: 'https://github.com/isaacs/proto-list/blob/master/LICENSE' },
1239 silly resolved devDependencies: { tap: '0' },
1239 silly resolved readme: 'A list of objects, bound by their prototype chain.\n\nUsed in npm\'s config stuff.\n',
1239 silly resolved readmeFilename: 'README.md',
1239 silly resolved bugs: { url: 'https://github.com/isaacs/proto-list/issues' },
1239 silly resolved homepage: 'https://github.com/isaacs/proto-list',
1239 silly resolved _id: 'proto-list@1.2.2',
1239 silly resolved _from: 'proto-list@~1.2.1' } ]
1240 info install proto-list@1.2.2 into /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain
1241 info installOne proto-list@1.2.2
1242 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list unbuild
1243 silly gunzTarPerm extractEntry lib/abbrev.js
1244 verbose tar unpack /home/dev/.npm/proto-list/1.2.2/package.tgz
1245 silly lockFile a49b2443-ig-chain-node-modules-proto-list tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list
1246 verbose lock tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list /home/dev/.npm/a49b2443-ig-chain-node-modules-proto-list.lock
1247 silly lockFile 1e0ebf02-npm-proto-list-1-2-2-package-tgz tar:///home/dev/.npm/proto-list/1.2.2/package.tgz
1248 verbose lock tar:///home/dev/.npm/proto-list/1.2.2/package.tgz /home/dev/.npm/1e0ebf02-npm-proto-list-1-2-2-package-tgz.lock
1249 silly gunzTarPerm modes [ '755', '644' ]
1250 silly gunzTarPerm extractEntry package.json
1251 silly gunzTarPerm extractEntry README.md
1252 silly gunzTarPerm extractEntry LICENSE
1253 silly gunzTarPerm extractEntry proto-list.js
1254 silly gunzTarPerm extractEntry test/basic.js
1255 silly lockFile 3e722c41-modules-nopt-node-modules-abbrev tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt/node_modules/abbrev
1256 silly lockFile 3e722c41-modules-nopt-node-modules-abbrev tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt/node_modules/abbrev
1257 silly lockFile 35ac3090-dev-npm-abbrev-1-0-4-package-tgz tar:///home/dev/.npm/abbrev/1.0.4/package.tgz
1258 silly lockFile 35ac3090-dev-npm-abbrev-1-0-4-package-tgz tar:///home/dev/.npm/abbrev/1.0.4/package.tgz
1259 info preinstall abbrev@1.0.4
1260 verbose readDependencies using package.json deps
1261 verbose readDependencies using package.json deps
1262 silly resolved []
1263 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt/node_modules/abbrev
1264 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt/node_modules/abbrev
1265 verbose linkStuff [ false,
1265 verbose linkStuff false,
1265 verbose linkStuff false,
1265 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt/node_modules' ]
1266 info linkStuff abbrev@1.0.4
1267 verbose linkBins abbrev@1.0.4
1268 verbose linkMans abbrev@1.0.4
1269 verbose rebuildBundles abbrev@1.0.4
1270 info install abbrev@1.0.4
1271 info postinstall abbrev@1.0.4
1272 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt
1273 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/nopt
1274 verbose linkStuff [ false,
1274 verbose linkStuff false,
1274 verbose linkStuff false,
1274 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules' ]
1275 info linkStuff nopt@2.1.2
1276 verbose linkBins nopt@2.1.2
1277 verbose link bins [ { nopt: './bin/nopt.js' },
1277 verbose link bins '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/.bin',
1277 verbose link bins false ]
1278 verbose linkMans nopt@2.1.2
1279 verbose rebuildBundles nopt@2.1.2
1280 verbose rebuildBundles [ 'abbrev' ]
1281 info install nopt@2.1.2
1282 info postinstall nopt@2.1.2
1283 silly lockFile a49b2443-ig-chain-node-modules-proto-list tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list
1284 silly lockFile a49b2443-ig-chain-node-modules-proto-list tar:///var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list
1285 silly lockFile 1e0ebf02-npm-proto-list-1-2-2-package-tgz tar:///home/dev/.npm/proto-list/1.2.2/package.tgz
1286 silly lockFile 1e0ebf02-npm-proto-list-1-2-2-package-tgz tar:///home/dev/.npm/proto-list/1.2.2/package.tgz
1287 info preinstall proto-list@1.2.2
1288 verbose readDependencies using package.json deps
1289 verbose readDependencies using package.json deps
1290 silly resolved []
1291 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list
1292 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list
1293 verbose linkStuff [ false,
1293 verbose linkStuff false,
1293 verbose linkStuff false,
1293 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain/node_modules' ]
1294 info linkStuff proto-list@1.2.2
1295 verbose linkBins proto-list@1.2.2
1296 verbose linkMans proto-list@1.2.2
1297 verbose rebuildBundles proto-list@1.2.2
1298 info install proto-list@1.2.2
1299 info postinstall proto-list@1.2.2
1300 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain
1301 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules/config-chain
1302 verbose linkStuff [ false,
1302 verbose linkStuff false,
1302 verbose linkStuff false,
1302 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf/node_modules' ]
1303 info linkStuff config-chain@1.1.8
1304 verbose linkBins config-chain@1.1.8
1305 verbose linkMans config-chain@1.1.8
1306 verbose rebuildBundles config-chain@1.1.8
1307 verbose rebuildBundles [ 'proto-list' ]
1308 info install config-chain@1.1.8
1309 info postinstall config-chain@1.1.8
1310 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf
1311 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules/npmconf
1312 verbose linkStuff [ false,
1312 verbose linkStuff false,
1312 verbose linkStuff false,
1312 verbose linkStuff '/var/www/dalekjs_testcase/node_modules/dalek-browser-chrome/node_modules' ]
1313 info linkStuff npmconf@0.1.5
1314 verbose linkBins npmconf@0.1.5
1315 verbose linkMans npmconf@0.1.5
1316 verbose rebuildBundles npmconf@0.1.5
1317 verbose rebuildBundles [ '.bin',
1317 verbose rebuildBundles 'config-chain',
1317 verbose rebuildBundles 'inherits',
1317 verbose rebuildBundles 'ini',
1317 verbose rebuildBundles 'mkdirp',
1317 verbose rebuildBundles 'nopt',
1317 verbose rebuildBundles 'once',
1317 verbose rebuildBundles 'osenv',
1317 verbose rebuildBundles 'semver' ]
1318 info install npmconf@0.1.5
1319 info postinstall npmconf@0.1.5
1320 verbose about to build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome
1321 info build /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome
1322 verbose linkStuff [ false, false, false, '/var/www/dalekjs_testcase/node_modules' ]
1323 info linkStuff dalek-browser-chrome@0.0.8
1324 verbose linkBins dalek-browser-chrome@0.0.8
1325 verbose linkMans dalek-browser-chrome@0.0.8
1326 verbose rebuildBundles dalek-browser-chrome@0.0.8
1327 verbose rebuildBundles [ '.bin',
1327 verbose rebuildBundles 'adm-zip',
1327 verbose rebuildBundles 'kew',
1327 verbose rebuildBundles 'ncp',
1327 verbose rebuildBundles 'npmconf',
1327 verbose rebuildBundles 'portscanner',
1327 verbose rebuildBundles 'q',
1327 verbose rebuildBundles 'rimraf' ]
1328 info install dalek-browser-chrome@0.0.8
1329 verbose unsafe-perm in lifecycle false
1330 info dalek-browser-chrome@0.0.8 Failed to exec install script
1331 info /var/www/dalekjs_testcase/node_modules/dalek-browser-chrome unbuild
1332 info preuninstall dalek-browser-chrome@0.0.8
1333 info uninstall dalek-browser-chrome@0.0.8
1334 verbose true,/var/www/dalekjs_testcase/node_modules,/var/www/dalekjs_testcase/node_modules unbuild dalek-browser-chrome@0.0.8
1335 info postuninstall dalek-browser-chrome@0.0.8
1336 error dalek-browser-chrome@0.0.8 install: `node install.js`
1336 error Exit status 1
1337 error Failed at the dalek-browser-chrome@0.0.8 install script.
1337 error This is most likely a problem with the dalek-browser-chrome package,
1337 error not with npm itself.
1337 error Tell the author that this fails on your system:
1337 error node install.js
1337 error You can get their info via:
1337 error npm owner ls dalek-browser-chrome
1337 error There is likely additional logging output above.
1338 error System Linux 3.5.0-36-generic
1339 error command "/usr/bin/node" "/usr/bin/npm" "install"
1340 error cwd /var/www/dalekjs_testcase
1341 error node -v v0.10.22
1342 error npm -v 1.3.14
1343 error code ELIFECYCLE
1344 verbose exit [ 1, true ]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment