Skip to content

Instantly share code, notes, and snippets.

@patcon
Created March 30, 2014 19:20
Show Gist options
  • Save patcon/9878151 to your computer and use it in GitHub Desktop.
Save patcon/9878151 to your computer and use it in GitHub Desktop.
npm error log in `sudo npm install -g npmsearch`
0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'install', '-g', 'npmsearch' ]
2 info using npm@1.4.3
3 info using node@v0.10.26
4 verbose node symlink /usr/bin/node
5 verbose cache add [ 'npmsearch', null ]
6 verbose cache add name=undefined spec="npmsearch" args=["npmsearch",null]
7 verbose parsed url { protocol: null,
7 verbose parsed url slashes: null,
7 verbose parsed url auth: null,
7 verbose parsed url host: null,
7 verbose parsed url port: null,
7 verbose parsed url hostname: null,
7 verbose parsed url hash: null,
7 verbose parsed url search: null,
7 verbose parsed url query: null,
7 verbose parsed url pathname: 'npmsearch',
7 verbose parsed url path: 'npmsearch',
7 verbose parsed url href: 'npmsearch' }
8 silly lockFile 05bd30ac-npmsearch npmsearch
9 verbose lock npmsearch /home/patcon/.npm/05bd30ac-npmsearch.lock
10 silly lockFile 05bd30ac-npmsearch npmsearch
11 silly lockFile 05bd30ac-npmsearch npmsearch
12 verbose addNamed [ 'npmsearch', '' ]
13 verbose addNamed [ null, '*' ]
14 silly lockFile f63da434-npmsearch npmsearch@
15 verbose lock npmsearch@ /home/patcon/.npm/f63da434-npmsearch.lock
16 silly addNameRange { name: 'npmsearch', range: '*', hasData: false }
17 verbose url raw npmsearch
18 verbose url resolving [ 'https://registry.npmjs.org/', './npmsearch' ]
19 verbose url resolved https://registry.npmjs.org/npmsearch
20 info trying registry request attempt 1 at 12:17:26
21 verbose etag "CSW70VNBEVZ0EXJDE1GUGGYPS"
22 http GET https://registry.npmjs.org/npmsearch
23 http 304 https://registry.npmjs.org/npmsearch
24 silly registry.get cb [ 304,
24 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:26 GMT',
24 silly registry.get server: 'Apache',
24 silly registry.get via: '1.1 varnish',
24 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:26 GMT',
24 silly registry.get 'cache-control': 'max-age=1',
24 silly registry.get etag: '"CSW70VNBEVZ0EXJDE1GUGGYPS"',
24 silly registry.get 'x-served-by': 'cache-lax1423-LAX',
24 silly registry.get 'x-cache': 'MISS',
24 silly registry.get 'x-cache-hits': '0',
24 silly registry.get 'x-timer': 'S1396207046.605946302,VS0,VE260',
24 silly registry.get vary: 'Accept',
24 silly registry.get 'content-length': '0',
24 silly registry.get 'keep-alive': 'timeout=10, max=50',
24 silly registry.get connection: 'Keep-Alive' } ]
25 verbose etag npmsearch from cache
26 silly addNameRange number 2 { name: 'npmsearch', range: '*', hasData: true }
27 silly addNameRange versions [ 'npmsearch',
27 silly addNameRange [ '0.1.0',
27 silly addNameRange '0.2.0',
27 silly addNameRange '0.2.1',
27 silly addNameRange '0.3.0',
27 silly addNameRange '0.4.0',
27 silly addNameRange '0.4.1',
27 silly addNameRange '0.5.0',
27 silly addNameRange '0.6.0',
27 silly addNameRange '0.6.1' ] ]
28 verbose addNamed [ 'npmsearch', '0.6.1' ]
29 verbose addNamed [ '0.6.1', '0.6.1' ]
30 silly lockFile 441f780c-npmsearch-0-6-1 npmsearch@0.6.1
31 verbose lock npmsearch@0.6.1 /home/patcon/.npm/441f780c-npmsearch-0-6-1.lock
32 silly lockFile 441f780c-npmsearch-0-6-1 npmsearch@0.6.1
33 silly lockFile 441f780c-npmsearch-0-6-1 npmsearch@0.6.1
34 silly lockFile f63da434-npmsearch npmsearch@
35 silly lockFile f63da434-npmsearch npmsearch@
36 silly resolved [ { name: 'npmsearch',
36 silly resolved version: '0.6.1',
36 silly resolved description: 'Search the npm registry. Results are carefully tuned - sorted using both relevance and downloads. Fast - uses a local database populated directly by the npm registry (no middleman servers)',
36 silly resolved main: 'index.js',
36 silly resolved dependencies:
36 silly resolved { async: '~0.1.22',
36 silly resolved optimist: '~0.3.5',
36 silly resolved 'npm-registry-client': '~0.2.10',
36 silly resolved sqlite3: '~2.1.5',
36 silly resolved mkdirp: '~0.3.4' },
36 silly resolved bin: { npmsearch: './bin/npmsearch.js' },
36 silly resolved devDependencies: {},
36 silly resolved scripts: { test: 'echo "Error: no test specified" && exit 1' },
36 silly resolved repository: { type: 'git', url: 'https://github.com/spion/npmsearch.git' },
36 silly resolved keywords: [ 'npm', 'search', 'downloads', 'relevance', 'sort' ],
36 silly resolved author: { name: 'spion', email: 'gorgi.kosev@gmail.com' },
36 silly resolved license: 'BSD',
36 silly resolved readme: '# npmsearch\n\nAllows you to search the npm registry by keywords from the command line.\n\nResults are carefully tuned - sorted using both relevance and downloads.\n\nHere are some cool points of the algorithm:\n\n* Keywords are stemmed and expanded using a cooccurrance matrix (e.g. mongo -> mongo, mongodb)\n* Download counts age exponentially - recent downloads are valued more than old downloads.\n\nSearch is fast - `npmsearch` uses a local database populated directly by the npm registry (no middle-man server involved)\n\n# Trying it\n\nWant to try it first? Visit the [web based demo](http://npmsearch.docucalc.com)\n\n# Install\n\n [sudo] npm install -g npmsearch\n\n# Usage\n\n npmsearch <keywords> [options]\n\nHere is a sample listing:\n\n % npmsearch orm\n * orm (7 185)\n NodeJS Object-relational mapping\n by Diogo Resende <dresende@thinkdigital.pt>\n http://github.com/dresende/node-orm.git\n\n * sequelize (3 2456)\n Multi dialect ORM for Node.JS\n by Sascha Depold <sascha@depold.com>\n\n * mongoose (2 25863)\n Mongoose MongoDB ODM\n by Guillermo Rauch <guillermo@learnboost.com>\n git://github.com/LearnBoost/mongoose.git\n\n * model (3 684)\n Datastore-agnostic ORM in JavaScript\n by Matthew Eernisse <mde@fleegix.org>\n git://github.com/mde/model.git\n\n * patio (3 190)\n Patio query engine and ORM\n by Doug Martin <undefined>\n git@github.com:c2fo/patio.git\n\n ...\n\n# Options\n\n* --exact use exact keywords only (bool) \n* --relevance relevance factor for sorting `number > 0` `default 0.25`\n* --downloads downloads factor for sorting `number > 0` `default 1.5` \n* --freshness freshness factor for sorting `number > 0` `default 0.25` \n* --halflife halflife of download count value in days `default 30\n* --aging halflife of package freshness in days `default 180`\n* --dataAge maximum data age in (days) or fetch from registry (default 1.5)\n* --refresh force data update (bool)\n\n',
36 silly resolved readmeFilename: 'README.md',
36 silly resolved bugs: { url: 'https://github.com/spion/npmsearch/issues' },
36 silly resolved homepage: 'https://github.com/spion/npmsearch',
36 silly resolved _id: 'npmsearch@0.6.1',
36 silly resolved _from: 'npmsearch@' } ]
37 info install npmsearch@0.6.1 into /usr/lib
38 info installOne npmsearch@0.6.1
39 info /usr/lib/node_modules/npmsearch unbuild
40 verbose tar unpack /home/patcon/.npm/npmsearch/0.6.1/package.tgz
41 silly lockFile 604112e6-r-usr-lib-node-modules-npmsearch tar:///usr/lib/node_modules/npmsearch
42 verbose lock tar:///usr/lib/node_modules/npmsearch /home/patcon/.npm/604112e6-r-usr-lib-node-modules-npmsearch.lock
43 silly lockFile 22c4b46c--npm-npmsearch-0-6-1-package-tgz tar:///home/patcon/.npm/npmsearch/0.6.1/package.tgz
44 verbose lock tar:///home/patcon/.npm/npmsearch/0.6.1/package.tgz /home/patcon/.npm/22c4b46c--npm-npmsearch-0-6-1-package-tgz.lock
45 silly gunzTarPerm modes [ '755', '644' ]
46 silly gunzTarPerm extractEntry package.json
47 silly gunzTarPerm extractEntry .npmignore
48 silly gunzTarPerm extractEntry README.md
49 silly gunzTarPerm extractEntry index.js
50 silly gunzTarPerm extractEntry bin/npmsearch.js
51 silly gunzTarPerm extractEntry lib/db.js
52 silly gunzTarPerm extractEntry lib/downloads.js
53 silly gunzTarPerm extractEntry lib/packages.js
54 silly gunzTarPerm extractEntry lib/stemmer.js
55 silly gunzTarPerm extractEntry lib/userstore.js
56 silly gunzTarPerm extractEntry lib/npmsearch.db
57 silly lockFile 604112e6-r-usr-lib-node-modules-npmsearch tar:///usr/lib/node_modules/npmsearch
58 silly lockFile 604112e6-r-usr-lib-node-modules-npmsearch tar:///usr/lib/node_modules/npmsearch
59 silly lockFile 22c4b46c--npm-npmsearch-0-6-1-package-tgz tar:///home/patcon/.npm/npmsearch/0.6.1/package.tgz
60 silly lockFile 22c4b46c--npm-npmsearch-0-6-1-package-tgz tar:///home/patcon/.npm/npmsearch/0.6.1/package.tgz
61 info preinstall npmsearch@0.6.1
62 verbose readDependencies using package.json deps
63 verbose readDependencies using package.json deps
64 verbose cache add [ 'async@~0.1.22', null ]
65 verbose cache add name=undefined spec="async@~0.1.22" args=["async@~0.1.22",null]
66 verbose parsed url { protocol: null,
66 verbose parsed url slashes: null,
66 verbose parsed url auth: null,
66 verbose parsed url host: null,
66 verbose parsed url port: null,
66 verbose parsed url hostname: null,
66 verbose parsed url hash: null,
66 verbose parsed url search: null,
66 verbose parsed url query: null,
66 verbose parsed url pathname: 'async@~0.1.22',
66 verbose parsed url path: 'async@~0.1.22',
66 verbose parsed url href: 'async@~0.1.22' }
67 verbose cache add name="async" spec="~0.1.22" args=["async","~0.1.22"]
68 verbose parsed url { protocol: null,
68 verbose parsed url slashes: null,
68 verbose parsed url auth: null,
68 verbose parsed url host: null,
68 verbose parsed url port: null,
68 verbose parsed url hostname: null,
68 verbose parsed url hash: null,
68 verbose parsed url search: null,
68 verbose parsed url query: null,
68 verbose parsed url pathname: '~0.1.22',
68 verbose parsed url path: '~0.1.22',
68 verbose parsed url href: '~0.1.22' }
69 verbose addNamed [ 'async', '~0.1.22' ]
70 verbose addNamed [ null, '>=0.1.22-0 <0.2.0-0' ]
71 silly lockFile 3af71045-async-0-1-22 async@~0.1.22
72 verbose lock async@~0.1.22 /home/patcon/.npm/3af71045-async-0-1-22.lock
73 verbose cache add [ 'optimist@~0.3.5', null ]
74 verbose cache add name=undefined spec="optimist@~0.3.5" args=["optimist@~0.3.5",null]
75 verbose parsed url { protocol: null,
75 verbose parsed url slashes: null,
75 verbose parsed url auth: null,
75 verbose parsed url host: null,
75 verbose parsed url port: null,
75 verbose parsed url hostname: null,
75 verbose parsed url hash: null,
75 verbose parsed url search: null,
75 verbose parsed url query: null,
75 verbose parsed url pathname: 'optimist@~0.3.5',
75 verbose parsed url path: 'optimist@~0.3.5',
75 verbose parsed url href: 'optimist@~0.3.5' }
76 verbose cache add name="optimist" spec="~0.3.5" args=["optimist","~0.3.5"]
77 verbose parsed url { protocol: null,
77 verbose parsed url slashes: null,
77 verbose parsed url auth: null,
77 verbose parsed url host: null,
77 verbose parsed url port: null,
77 verbose parsed url hostname: null,
77 verbose parsed url hash: null,
77 verbose parsed url search: null,
77 verbose parsed url query: null,
77 verbose parsed url pathname: '~0.3.5',
77 verbose parsed url path: '~0.3.5',
77 verbose parsed url href: '~0.3.5' }
78 verbose addNamed [ 'optimist', '~0.3.5' ]
79 verbose addNamed [ null, '>=0.3.5-0 <0.4.0-0' ]
80 silly lockFile a1f99b53-optimist-0-3-5 optimist@~0.3.5
81 verbose lock optimist@~0.3.5 /home/patcon/.npm/a1f99b53-optimist-0-3-5.lock
82 verbose cache add [ 'npm-registry-client@~0.2.10', null ]
83 verbose cache add name=undefined spec="npm-registry-client@~0.2.10" args=["npm-registry-client@~0.2.10",null]
84 verbose parsed url { protocol: null,
84 verbose parsed url slashes: null,
84 verbose parsed url auth: null,
84 verbose parsed url host: null,
84 verbose parsed url port: null,
84 verbose parsed url hostname: null,
84 verbose parsed url hash: null,
84 verbose parsed url search: null,
84 verbose parsed url query: null,
84 verbose parsed url pathname: 'npm-registry-client@~0.2.10',
84 verbose parsed url path: 'npm-registry-client@~0.2.10',
84 verbose parsed url href: 'npm-registry-client@~0.2.10' }
85 verbose cache add name="npm-registry-client" spec="~0.2.10" args=["npm-registry-client","~0.2.10"]
86 verbose parsed url { protocol: null,
86 verbose parsed url slashes: null,
86 verbose parsed url auth: null,
86 verbose parsed url host: null,
86 verbose parsed url port: null,
86 verbose parsed url hostname: null,
86 verbose parsed url hash: null,
86 verbose parsed url search: null,
86 verbose parsed url query: null,
86 verbose parsed url pathname: '~0.2.10',
86 verbose parsed url path: '~0.2.10',
86 verbose parsed url href: '~0.2.10' }
87 verbose addNamed [ 'npm-registry-client', '~0.2.10' ]
88 verbose addNamed [ null, '>=0.2.10-0 <0.3.0-0' ]
89 silly lockFile e4bf3369-npm-registry-client-0-2-10 npm-registry-client@~0.2.10
90 verbose lock npm-registry-client@~0.2.10 /home/patcon/.npm/e4bf3369-npm-registry-client-0-2-10.lock
91 verbose cache add [ 'sqlite3@~2.1.5', null ]
92 verbose cache add name=undefined spec="sqlite3@~2.1.5" args=["sqlite3@~2.1.5",null]
93 verbose parsed url { protocol: null,
93 verbose parsed url slashes: null,
93 verbose parsed url auth: null,
93 verbose parsed url host: null,
93 verbose parsed url port: null,
93 verbose parsed url hostname: null,
93 verbose parsed url hash: null,
93 verbose parsed url search: null,
93 verbose parsed url query: null,
93 verbose parsed url pathname: 'sqlite3@~2.1.5',
93 verbose parsed url path: 'sqlite3@~2.1.5',
93 verbose parsed url href: 'sqlite3@~2.1.5' }
94 verbose cache add name="sqlite3" spec="~2.1.5" args=["sqlite3","~2.1.5"]
95 verbose parsed url { protocol: null,
95 verbose parsed url slashes: null,
95 verbose parsed url auth: null,
95 verbose parsed url host: null,
95 verbose parsed url port: null,
95 verbose parsed url hostname: null,
95 verbose parsed url hash: null,
95 verbose parsed url search: null,
95 verbose parsed url query: null,
95 verbose parsed url pathname: '~2.1.5',
95 verbose parsed url path: '~2.1.5',
95 verbose parsed url href: '~2.1.5' }
96 verbose addNamed [ 'sqlite3', '~2.1.5' ]
97 verbose addNamed [ null, '>=2.1.5-0 <2.2.0-0' ]
98 silly lockFile 3272568e-sqlite3-2-1-5 sqlite3@~2.1.5
99 verbose lock sqlite3@~2.1.5 /home/patcon/.npm/3272568e-sqlite3-2-1-5.lock
100 verbose cache add [ 'mkdirp@~0.3.4', null ]
101 verbose cache add name=undefined spec="mkdirp@~0.3.4" args=["mkdirp@~0.3.4",null]
102 verbose parsed url { protocol: null,
102 verbose parsed url slashes: null,
102 verbose parsed url auth: null,
102 verbose parsed url host: null,
102 verbose parsed url port: null,
102 verbose parsed url hostname: null,
102 verbose parsed url hash: null,
102 verbose parsed url search: null,
102 verbose parsed url query: null,
102 verbose parsed url pathname: 'mkdirp@~0.3.4',
102 verbose parsed url path: 'mkdirp@~0.3.4',
102 verbose parsed url href: 'mkdirp@~0.3.4' }
103 verbose cache add name="mkdirp" spec="~0.3.4" args=["mkdirp","~0.3.4"]
104 verbose parsed url { protocol: null,
104 verbose parsed url slashes: null,
104 verbose parsed url auth: null,
104 verbose parsed url host: null,
104 verbose parsed url port: null,
104 verbose parsed url hostname: null,
104 verbose parsed url hash: null,
104 verbose parsed url search: null,
104 verbose parsed url query: null,
104 verbose parsed url pathname: '~0.3.4',
104 verbose parsed url path: '~0.3.4',
104 verbose parsed url href: '~0.3.4' }
105 verbose addNamed [ 'mkdirp', '~0.3.4' ]
106 verbose addNamed [ null, '>=0.3.4-0 <0.4.0-0' ]
107 silly lockFile f185e6bf-mkdirp-0-3-4 mkdirp@~0.3.4
108 verbose lock mkdirp@~0.3.4 /home/patcon/.npm/f185e6bf-mkdirp-0-3-4.lock
109 silly addNameRange { name: 'async', range: '>=0.1.22-0 <0.2.0-0', hasData: false }
110 silly addNameRange { name: 'optimist', range: '>=0.3.5-0 <0.4.0-0', hasData: false }
111 silly addNameRange { name: 'npm-registry-client',
111 silly addNameRange range: '>=0.2.10-0 <0.3.0-0',
111 silly addNameRange hasData: false }
112 silly addNameRange { name: 'sqlite3', range: '>=2.1.5-0 <2.2.0-0', hasData: false }
113 silly addNameRange { name: 'mkdirp', range: '>=0.3.4-0 <0.4.0-0', hasData: false }
114 verbose url raw async
115 verbose url resolving [ 'https://registry.npmjs.org/', './async' ]
116 verbose url resolved https://registry.npmjs.org/async
117 info trying registry request attempt 1 at 12:17:27
118 verbose etag "1B5C5BVBFTHWS43OZJ4DV2UQD"
119 http GET https://registry.npmjs.org/async
120 verbose url raw optimist
121 verbose url resolving [ 'https://registry.npmjs.org/', './optimist' ]
122 verbose url resolved https://registry.npmjs.org/optimist
123 info trying registry request attempt 1 at 12:17:27
124 verbose etag "PA5VDCV0WJ41Q8BVL784CXVC"
125 http GET https://registry.npmjs.org/optimist
126 verbose url raw npm-registry-client
127 verbose url resolving [ 'https://registry.npmjs.org/', './npm-registry-client' ]
128 verbose url resolved https://registry.npmjs.org/npm-registry-client
129 info trying registry request attempt 1 at 12:17:27
130 verbose etag "6F0S6RFMCND3BF71QM3RDWM36"
131 http GET https://registry.npmjs.org/npm-registry-client
132 verbose url raw mkdirp
133 verbose url resolving [ 'https://registry.npmjs.org/', './mkdirp' ]
134 verbose url resolved https://registry.npmjs.org/mkdirp
135 info trying registry request attempt 1 at 12:17:27
136 verbose etag "8EJ25SNFKTRAGIQ9TWQRFQ82C"
137 http GET https://registry.npmjs.org/mkdirp
138 verbose url raw sqlite3
139 verbose url resolving [ 'https://registry.npmjs.org/', './sqlite3' ]
140 verbose url resolved https://registry.npmjs.org/sqlite3
141 info trying registry request attempt 1 at 12:17:27
142 verbose etag "DWRP66APPB7ZHNFZ31O0X751K"
143 http GET https://registry.npmjs.org/sqlite3
144 http 304 https://registry.npmjs.org/optimist
145 silly registry.get cb [ 304,
145 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
145 silly registry.get server: 'Apache',
145 silly registry.get via: '1.1 varnish',
145 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:27 GMT',
145 silly registry.get 'cache-control': 'max-age=1',
145 silly registry.get etag: '"PA5VDCV0WJ41Q8BVL784CXVC"',
145 silly registry.get 'x-served-by': 'cache-lax1435-LAX',
145 silly registry.get 'x-cache': 'HIT',
145 silly registry.get 'x-cache-hits': '1',
145 silly registry.get 'x-timer': 'S1396207047.095250607,VS0,VE64',
145 silly registry.get vary: 'Accept',
145 silly registry.get 'content-length': '0',
145 silly registry.get 'keep-alive': 'timeout=10, max=50',
145 silly registry.get connection: 'Keep-Alive' } ]
146 verbose etag optimist from cache
147 silly addNameRange number 2 { name: 'optimist', range: '>=0.3.5-0 <0.4.0-0', hasData: true }
148 silly addNameRange versions [ 'optimist',
148 silly addNameRange [ '0.0.1',
148 silly addNameRange '0.0.2',
148 silly addNameRange '0.0.4',
148 silly addNameRange '0.0.5',
148 silly addNameRange '0.0.6',
148 silly addNameRange '0.0.7',
148 silly addNameRange '0.1.0',
148 silly addNameRange '0.1.1',
148 silly addNameRange '0.1.2',
148 silly addNameRange '0.1.3',
148 silly addNameRange '0.1.4',
148 silly addNameRange '0.1.5',
148 silly addNameRange '0.1.6',
148 silly addNameRange '0.1.7',
148 silly addNameRange '0.1.8',
148 silly addNameRange '0.1.9',
148 silly addNameRange '0.0.3',
148 silly addNameRange '0.2.0',
148 silly addNameRange '0.2.1',
148 silly addNameRange '0.2.2',
148 silly addNameRange '0.2.3',
148 silly addNameRange '0.2.4',
148 silly addNameRange '0.2.5',
148 silly addNameRange '0.2.6',
148 silly addNameRange '0.2.7',
148 silly addNameRange '0.2.8',
148 silly addNameRange '0.3.0',
148 silly addNameRange '0.3.1',
148 silly addNameRange '0.3.3',
148 silly addNameRange '0.3.4',
148 silly addNameRange '0.3.5',
148 silly addNameRange '0.3.6',
148 silly addNameRange '0.3.7',
148 silly addNameRange '0.4.0',
148 silly addNameRange '0.5.0',
148 silly addNameRange '0.5.1',
148 silly addNameRange '0.5.2',
148 silly addNameRange '0.6.0',
148 silly addNameRange '0.6.1' ] ]
149 verbose addNamed [ 'optimist', '0.3.7' ]
150 verbose addNamed [ '0.3.7', '0.3.7' ]
151 silly lockFile 090e1d8d-optimist-0-3-7 optimist@0.3.7
152 verbose lock optimist@0.3.7 /home/patcon/.npm/090e1d8d-optimist-0-3-7.lock
153 silly lockFile 090e1d8d-optimist-0-3-7 optimist@0.3.7
154 silly lockFile 090e1d8d-optimist-0-3-7 optimist@0.3.7
155 silly lockFile a1f99b53-optimist-0-3-5 optimist@~0.3.5
156 silly lockFile a1f99b53-optimist-0-3-5 optimist@~0.3.5
157 http 304 https://registry.npmjs.org/sqlite3
158 silly registry.get cb [ 304,
158 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
158 silly registry.get server: 'Apache',
158 silly registry.get via: '1.1 varnish',
158 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:27 GMT',
158 silly registry.get 'cache-control': 'max-age=1',
158 silly registry.get etag: '"DWRP66APPB7ZHNFZ31O0X751K"',
158 silly registry.get 'x-served-by': 'cache-lax1430-LAX',
158 silly registry.get 'x-cache': 'MISS',
158 silly registry.get 'x-cache-hits': '0',
158 silly registry.get 'x-timer': 'S1396207047.114424229,VS0,VE134',
158 silly registry.get vary: 'Accept',
158 silly registry.get 'content-length': '0',
158 silly registry.get 'keep-alive': 'timeout=10, max=50',
158 silly registry.get connection: 'Keep-Alive' } ]
159 verbose etag sqlite3 from cache
160 http 304 https://registry.npmjs.org/npm-registry-client
161 silly registry.get cb [ 304,
161 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
161 silly registry.get server: 'Apache',
161 silly registry.get via: '1.1 varnish',
161 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:27 GMT',
161 silly registry.get 'cache-control': 'max-age=1',
161 silly registry.get etag: '"6F0S6RFMCND3BF71QM3RDWM36"',
161 silly registry.get 'x-served-by': 'cache-lax1423-LAX',
161 silly registry.get 'x-cache': 'MISS',
161 silly registry.get 'x-cache-hits': '0',
161 silly registry.get 'x-timer': 'S1396207047.101965189,VS0,VE148',
161 silly registry.get vary: 'Accept',
161 silly registry.get 'content-length': '0',
161 silly registry.get 'keep-alive': 'timeout=10, max=50',
161 silly registry.get connection: 'Keep-Alive' } ]
162 verbose etag npm-registry-client from cache
163 http 304 https://registry.npmjs.org/async
164 silly registry.get cb [ 304,
164 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
164 silly registry.get server: 'Apache',
164 silly registry.get via: '1.1 varnish',
164 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:27 GMT',
164 silly registry.get 'cache-control': 'max-age=1',
164 silly registry.get etag: '"1B5C5BVBFTHWS43OZJ4DV2UQD"',
164 silly registry.get 'x-served-by': 'cache-lax1430-LAX',
164 silly registry.get 'x-cache': 'HIT',
164 silly registry.get 'x-cache-hits': '1',
164 silly registry.get 'x-timer': 'S1396207047.092864752,VS0,VE159',
164 silly registry.get vary: 'Accept',
164 silly registry.get 'content-length': '0',
164 silly registry.get 'keep-alive': 'timeout=10, max=50',
164 silly registry.get connection: 'Keep-Alive' } ]
165 verbose etag async from cache
166 http 304 https://registry.npmjs.org/mkdirp
167 silly registry.get cb [ 304,
167 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
167 silly registry.get server: 'Apache',
167 silly registry.get via: '1.1 varnish',
167 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:27 GMT',
167 silly registry.get 'cache-control': 'max-age=1',
167 silly registry.get etag: '"8EJ25SNFKTRAGIQ9TWQRFQ82C"',
167 silly registry.get 'x-served-by': 'cache-lax1422-LAX',
167 silly registry.get 'x-cache': 'HIT',
167 silly registry.get 'x-cache-hits': '1',
167 silly registry.get 'x-timer': 'S1396207047.105301857,VS0,VE155',
167 silly registry.get vary: 'Accept',
167 silly registry.get 'content-length': '0',
167 silly registry.get 'keep-alive': 'timeout=10, max=50',
167 silly registry.get connection: 'Keep-Alive' } ]
168 verbose etag mkdirp from cache
169 silly addNameRange number 2 { name: 'npm-registry-client',
169 silly addNameRange range: '>=0.2.10-0 <0.3.0-0',
169 silly addNameRange hasData: true }
170 silly addNameRange versions [ 'npm-registry-client',
170 silly addNameRange [ '0.0.1',
170 silly addNameRange '0.0.2',
170 silly addNameRange '0.0.3',
170 silly addNameRange '0.0.4',
170 silly addNameRange '0.0.5',
170 silly addNameRange '0.0.6',
170 silly addNameRange '0.0.7',
170 silly addNameRange '0.0.8',
170 silly addNameRange '0.0.9',
170 silly addNameRange '0.0.10',
170 silly addNameRange '0.0.11',
170 silly addNameRange '0.1.0',
170 silly addNameRange '0.1.1',
170 silly addNameRange '0.1.2',
170 silly addNameRange '0.1.3',
170 silly addNameRange '0.1.4',
170 silly addNameRange '0.2.0',
170 silly addNameRange '0.2.1',
170 silly addNameRange '0.2.5',
170 silly addNameRange '0.2.6',
170 silly addNameRange '0.2.7',
170 silly addNameRange '0.2.8',
170 silly addNameRange '0.2.9',
170 silly addNameRange '0.2.10',
170 silly addNameRange '0.2.11',
170 silly addNameRange '0.2.12',
170 silly addNameRange '0.2.13',
170 silly addNameRange '0.2.14',
170 silly addNameRange '0.2.15',
170 silly addNameRange '0.2.16',
170 silly addNameRange '0.2.17',
170 silly addNameRange '0.2.18',
170 silly addNameRange '0.2.19',
170 silly addNameRange '0.2.20',
170 silly addNameRange '0.2.21',
170 silly addNameRange '0.2.22',
170 silly addNameRange '0.2.23',
170 silly addNameRange '0.2.24',
170 silly addNameRange '0.2.25',
170 silly addNameRange '0.2.26',
170 silly addNameRange '0.2.27',
170 silly addNameRange '0.2.28',
170 silly addNameRange '0.2.29',
170 silly addNameRange '0.2.30',
170 silly addNameRange '0.2.31',
170 silly addNameRange '0.3.0',
170 silly addNameRange '0.3.1',
170 silly addNameRange '0.3.2',
170 silly addNameRange '0.3.3',
170 silly addNameRange '0.3.4',
170 silly addNameRange '0.3.5',
170 silly addNameRange '0.3.6',
170 silly addNameRange '0.4.0',
170 silly addNameRange '0.4.1',
170 silly addNameRange '0.4.2',
170 silly addNameRange '0.4.3',
170 silly addNameRange '0.4.4',
170 silly addNameRange '0.4.5',
170 silly addNameRange '0.4.6' ] ]
171 verbose addNamed [ 'npm-registry-client', '0.2.31' ]
172 verbose addNamed [ '0.2.31', '0.2.31' ]
173 silly lockFile a8d35bdc-npm-registry-client-0-2-31 npm-registry-client@0.2.31
174 verbose lock npm-registry-client@0.2.31 /home/patcon/.npm/a8d35bdc-npm-registry-client-0-2-31.lock
175 silly addNameRange number 2 { name: 'sqlite3', range: '>=2.1.5-0 <2.2.0-0', hasData: true }
176 silly addNameRange versions [ 'sqlite3',
176 silly addNameRange [ '2.0.0',
176 silly addNameRange '2.0.1',
176 silly addNameRange '2.0.2',
176 silly addNameRange '2.0.3',
176 silly addNameRange '2.0.4',
176 silly addNameRange '2.0.5',
176 silly addNameRange '2.0.6',
176 silly addNameRange '2.0.7',
176 silly addNameRange '2.0.8',
176 silly addNameRange '2.0.9',
176 silly addNameRange '2.0.10',
176 silly addNameRange '2.0.11',
176 silly addNameRange '2.0.12',
176 silly addNameRange '2.0.13',
176 silly addNameRange '2.0.14',
176 silly addNameRange '2.0.15',
176 silly addNameRange '2.0.16',
176 silly addNameRange '2.0.17',
176 silly addNameRange '2.0.18',
176 silly addNameRange '2.1.0',
176 silly addNameRange '2.1.1',
176 silly addNameRange '2.1.2',
176 silly addNameRange '2.1.3',
176 silly addNameRange '2.1.4',
176 silly addNameRange '2.1.5',
176 silly addNameRange '2.1.7',
176 silly addNameRange '2.1.8',
176 silly addNameRange '2.1.9',
176 silly addNameRange '2.1.10',
176 silly addNameRange '2.1.11',
176 silly addNameRange '2.1.12',
176 silly addNameRange '2.1.13',
176 silly addNameRange '2.1.14',
176 silly addNameRange '2.1.15',
176 silly addNameRange '2.1.16',
176 silly addNameRange '2.1.17',
176 silly addNameRange '2.1.18',
176 silly addNameRange '2.1.19',
176 silly addNameRange '2.2.0' ] ]
177 verbose addNamed [ 'sqlite3', '2.1.19' ]
178 verbose addNamed [ '2.1.19', '2.1.19' ]
179 silly lockFile b8472194-sqlite3-2-1-19 sqlite3@2.1.19
180 verbose lock sqlite3@2.1.19 /home/patcon/.npm/b8472194-sqlite3-2-1-19.lock
181 silly addNameRange number 2 { name: 'mkdirp', range: '>=0.3.4-0 <0.4.0-0', hasData: true }
182 silly addNameRange versions [ 'mkdirp',
182 silly addNameRange [ '0.0.1',
182 silly addNameRange '0.0.2',
182 silly addNameRange '0.0.3',
182 silly addNameRange '0.0.4',
182 silly addNameRange '0.0.5',
182 silly addNameRange '0.0.6',
182 silly addNameRange '0.0.7',
182 silly addNameRange '0.1.0',
182 silly addNameRange '0.2.0',
182 silly addNameRange '0.2.1',
182 silly addNameRange '0.2.2',
182 silly addNameRange '0.3.0',
182 silly addNameRange '0.3.1',
182 silly addNameRange '0.3.2',
182 silly addNameRange '0.3.3',
182 silly addNameRange '0.3.4',
182 silly addNameRange '0.3.5' ] ]
183 verbose addNamed [ 'mkdirp', '0.3.5' ]
184 verbose addNamed [ '0.3.5', '0.3.5' ]
185 silly lockFile 67d2df2a-mkdirp-0-3-5 mkdirp@0.3.5
186 verbose lock mkdirp@0.3.5 /home/patcon/.npm/67d2df2a-mkdirp-0-3-5.lock
187 silly addNameRange number 2 { name: 'async', range: '>=0.1.22-0 <0.2.0-0', hasData: true }
188 silly addNameRange versions [ 'async',
188 silly addNameRange [ '0.1.0',
188 silly addNameRange '0.1.1',
188 silly addNameRange '0.1.2',
188 silly addNameRange '0.1.3',
188 silly addNameRange '0.1.4',
188 silly addNameRange '0.1.5',
188 silly addNameRange '0.1.6',
188 silly addNameRange '0.1.7',
188 silly addNameRange '0.1.8',
188 silly addNameRange '0.1.9',
188 silly addNameRange '0.1.10',
188 silly addNameRange '0.1.11',
188 silly addNameRange '0.1.12',
188 silly addNameRange '0.1.13',
188 silly addNameRange '0.1.14',
188 silly addNameRange '0.1.15',
188 silly addNameRange '0.1.16',
188 silly addNameRange '0.1.17',
188 silly addNameRange '0.1.18',
188 silly addNameRange '0.1.19',
188 silly addNameRange '0.1.20',
188 silly addNameRange '0.1.21',
188 silly addNameRange '0.1.22',
188 silly addNameRange '0.2.0',
188 silly addNameRange '0.2.1',
188 silly addNameRange '0.2.2',
188 silly addNameRange '0.2.3',
188 silly addNameRange '0.2.4',
188 silly addNameRange '0.2.5',
188 silly addNameRange '0.2.6',
188 silly addNameRange '0.2.7',
188 silly addNameRange '0.2.8',
188 silly addNameRange '0.2.9',
188 silly addNameRange '0.2.10',
188 silly addNameRange '0.3.0',
188 silly addNameRange '0.4.0',
188 silly addNameRange '0.4.1',
188 silly addNameRange '0.5.0',
188 silly addNameRange '0.6.0' ] ]
189 verbose addNamed [ 'async', '0.1.22' ]
190 verbose addNamed [ '0.1.22', '0.1.22' ]
191 silly lockFile 09d21715-async-0-1-22 async@0.1.22
192 verbose lock async@0.1.22 /home/patcon/.npm/09d21715-async-0-1-22.lock
193 silly lockFile a8d35bdc-npm-registry-client-0-2-31 npm-registry-client@0.2.31
194 silly lockFile a8d35bdc-npm-registry-client-0-2-31 npm-registry-client@0.2.31
195 silly lockFile e4bf3369-npm-registry-client-0-2-10 npm-registry-client@~0.2.10
196 silly lockFile e4bf3369-npm-registry-client-0-2-10 npm-registry-client@~0.2.10
197 silly lockFile b8472194-sqlite3-2-1-19 sqlite3@2.1.19
198 silly lockFile b8472194-sqlite3-2-1-19 sqlite3@2.1.19
199 silly lockFile 3272568e-sqlite3-2-1-5 sqlite3@~2.1.5
200 silly lockFile 3272568e-sqlite3-2-1-5 sqlite3@~2.1.5
201 silly lockFile 67d2df2a-mkdirp-0-3-5 mkdirp@0.3.5
202 silly lockFile 67d2df2a-mkdirp-0-3-5 mkdirp@0.3.5
203 silly lockFile 09d21715-async-0-1-22 async@0.1.22
204 silly lockFile 09d21715-async-0-1-22 async@0.1.22
205 silly lockFile f185e6bf-mkdirp-0-3-4 mkdirp@~0.3.4
206 silly lockFile f185e6bf-mkdirp-0-3-4 mkdirp@~0.3.4
207 silly lockFile 3af71045-async-0-1-22 async@~0.1.22
208 silly lockFile 3af71045-async-0-1-22 async@~0.1.22
209 silly resolved [ { name: 'optimist',
209 silly resolved version: '0.3.7',
209 silly resolved description: 'Light-weight option parsing with an argv hash. No optstrings attached.',
209 silly resolved main: './index.js',
209 silly resolved dependencies: { wordwrap: '~0.0.2' },
209 silly resolved devDependencies: { hashish: '~0.0.4', tap: '~0.4.0' },
209 silly resolved scripts: { test: 'tap ./test/*.js' },
209 silly resolved repository:
209 silly resolved { type: 'git',
209 silly resolved url: 'http://github.com/substack/node-optimist.git' },
209 silly resolved keywords:
209 silly resolved [ 'argument',
209 silly resolved 'args',
209 silly resolved 'option',
209 silly resolved 'parser',
209 silly resolved 'parsing',
209 silly resolved 'cli',
209 silly resolved 'command' ],
209 silly resolved author:
209 silly resolved { name: 'James Halliday',
209 silly resolved email: 'mail@substack.net',
209 silly resolved url: 'http://substack.net' },
209 silly resolved license: 'MIT/X11',
209 silly resolved engine: { node: '>=0.4' },
209 silly resolved readme: 'optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn\'t have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log(\'Buy more riffiwobbles\');\n}\nelse {\n console.log(\'Sell the xupptumblers\');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one\'s optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There\'s more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\').argv;\nconsole.log(\'(%d,%d)\', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require(\'util\');\nvar argv = require(\'optimist\').argv;\n\nif (argv.s) {\n util.print(argv.fr ? \'Le chat dit: \' : \'The cat says: \');\n}\nconsole.log(\n (argv.fr ? \'miaou\' : \'meow\') + (argv.p ? \'.\' : \'\')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\').argv;\nconsole.log(\'(%d,%d)\', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ \'moo\' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ \'foo\', \'bar\', \'baz\' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\')\n .usage(\'Usage: $0 -x [num] -y [num]\')\n .demand([\'x\',\'y\'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\')\n .default(\'x\', 10)\n .default(\'y\', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\')\n .boolean(\'v\')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ \'bar\', \'baz\', \'foo\' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\')\n .boolean([\'x\',\'y\',\'z\'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ \'one\', \'two\', \'three\' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\')\n .usage(\'Count the lines in a file.\\nUsage: $0\')\n .demand(\'f\')\n .alias(\'f\', \'file\')\n .describe(\'f\', \'Load a file\')\n .argv\n;\n\nvar fs = require(\'fs\');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on(\'data\', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on(\'end\', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire(\'optimist\').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire(\'optimist\')([ \'-x\', \'1\', \'-y\', \'2\' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire(\'optimist\').parse([ \'-x\', \'1\', \'-y\', \'2\' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn\'t\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require(\'optimist\')\n .options(\'f\', {\n alias : \'file\',\n default : \'/etc/passwd\',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require(\'optimist\')\n .alias(\'f\', \'file\')\n .default(\'f\', \'/etc/passwd\')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won\'t get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ \'-c\', \'3\', \'-d\', \'4\' ],\n \'$0\': \'node ./examples/reflect.js\',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n \'$0\': \'node ./examples/reflect.js\',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n \'$0\': \'node ./examples/reflect.js\',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n \'$0\': \'node ./examples/reflect.js\',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl\'s\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n',
209 silly resolved readmeFilename: 'readme.markdown',
209 silly resolved bugs: { url: 'https://github.com/substack/node-optimist/issues' },
209 silly resolved homepage: 'https://github.com/substack/node-optimist',
209 silly resolved _id: 'optimist@0.3.7',
209 silly resolved _from: 'optimist@~0.3.5' },
209 silly resolved { author:
209 silly resolved { name: 'Isaac Z. Schlueter',
209 silly resolved email: 'i@izs.me',
209 silly resolved url: 'http://blog.izs.me/' },
209 silly resolved name: 'npm-registry-client',
209 silly resolved description: 'Client for the npm registry',
209 silly resolved version: '0.2.31',
209 silly resolved repository: { url: 'git://github.com/isaacs/npm-registry-client' },
209 silly resolved main: 'index.js',
209 silly resolved scripts: { test: 'tap test/*.js' },
209 silly resolved dependencies:
209 silly resolved { request: '2 >=2.25.0',
209 silly resolved 'graceful-fs': '~2.0.0',
209 silly resolved semver: '^2.2.1',
209 silly resolved slide: '~1.1.3',
209 silly resolved chownr: '0',
209 silly resolved mkdirp: '~0.3.3',
209 silly resolved rimraf: '~2',
209 silly resolved retry: '0.6.0',
209 silly resolved 'couch-login': '~0.1.18',
209 silly resolved npmlog: '' },
209 silly resolved devDependencies: { tap: '' },
209 silly resolved optionalDependencies: { npmlog: '' },
209 silly resolved license: 'BSD',
209 silly resolved readme: '# npm-registry-client\n\nThe code that npm uses to talk to the registry.\n\nIt handles all the caching and HTTP calls.\n\n## Usage\n\n```javascript\nvar RegClient = require(\'npm-registry-client\')\nvar client = new RegClient(config)\n\nclient.get("npm", "latest", 1000, function (er, data, raw, res) {\n // error is an error if there was a problem.\n // data is the parsed data object\n // raw is the json string\n // res is the response from couch\n})\n```\n\n# Configuration\n\nThis program is designed to work with\n[npmconf](https://npmjs.org/package/npmconf), but you can also pass in\na plain-jane object with the appropriate configs, and it\'ll shim it\nfor you. Any configuration thingie that has get/set/del methods will\nalso be accepted.\n\n* `registry` **Required** {String} URL to the registry\n* `cache` **Required** {String} Path to the cache folder\n* `always-auth` {Boolean} Auth even for GET requests.\n* `auth` {String} A base64-encoded `username:password`\n* `email` {String} User\'s email address\n* `tag` {String} The default tag to use when publishing new packages.\n Default = `"latest"`\n* `ca` {String} Cerficate signing authority certificates to trust.\n* `cert` {String} Client certificate (PEM encoded). Enable access\n to servers that require client certificates\n* `key` {String} Private key (PEM encoded) for client certificate \'cert\'\n* `strict-ssl` {Boolean} Whether or not to be strict with SSL\n certificates. Default = `true`\n* `user-agent` {String} User agent header to send. Default =\n `"node/{process.version} {process.platform} {process.arch}"`\n* `log` {Object} The logger to use. Defaults to `require("npmlog")` if\n that works, otherwise logs are disabled.\n* `fetch-retries` {Number} Number of times to retry on GET failures.\n Default=2\n* `fetch-retry-factor` {Number} `factor` setting for `node-retry`. Default=10\n* `fetch-retry-mintimeout` {Number} `minTimeout` setting for `node-retry`.\n Default=10000 (10 seconds)\n* `fetch-retry-maxtimeout` {Number} `maxTimeout` setting for `node-retry`.\n Default=60000 (60 seconds)\n* `proxy` {URL} The url to proxy requests through.\n* `https-proxy` {URL} The url to proxy https requests through.\n Defaults to be the same as `proxy` if unset.\n* `_auth` {String} The base64-encoded authorization header.\n* `username` `_password` {String} Username/password to use to generate\n `_auth` if not supplied.\n* `_token` {Object} A token for use with\n [couch-login](https://npmjs.org/package/couch-login)\n\n# client.request(method, where, [what], [etag], [nofollow], cb)\n\n* `method` {String} HTTP method\n* `where` {String} Path to request on the server\n* `what` {Stream | Buffer | String | Object} The request body. Objects\n that are not Buffers or Streams are encoded as JSON.\n* `etag` {String} The cached ETag\n* `nofollow` {Boolean} Prevent following 302/301 responses\n* `cb` {Function}\n * `error` {Error | null}\n * `data` {Object} the parsed data object\n * `raw` {String} the json\n * `res` {Response Object} response from couch\n\nMake a request to the registry. All the other methods are wrappers\naround this. one.\n\n# client.adduser(username, password, email, cb)\n\n* `username` {String}\n* `password` {String}\n* `email` {String}\n* `cb` {Function}\n\nAdd a user account to the registry, or verify the credentials.\n\n# client.deprecate(name, version, message, cb)\n\n* `name` {String} The package name\n* `version` {String} Semver version range\n* `message` {String} The message to use as a deprecation warning\n* `cb` {Function}\n\nDeprecate a version of a package in the registry.\n\n# client.bugs(name, cb)\n\n* `name` {String} the name of the package\n* `cb` {Function}\n\nGet the url for bugs of a package\n\n# client.get(url, [timeout], [nofollow], [staleOk], cb)\n\n* `url` {String} The url path to fetch\n* `timeout` {Number} Number of seconds old that a cached copy must be\n before a new request will be made.\n* `nofollow` {Boolean} Do not follow 301/302 responses\n* `staleOk` {Boolean} If there\'s cached data available, then return that\n to the callback quickly, and update the cache the background.\n\nFetches data from the registry via a GET request, saving it in\nthe cache folder with the ETag.\n\n# client.publish(data, tarball, [readme], cb)\n\n* `data` {Object} Package data\n* `tarball` {String | Stream} Filename or stream of the package tarball\n* `readme` {String} Contents of the README markdown file\n* `cb` {Function}\n\nPublish a package to the registry.\n\nNote that this does not create the tarball from a folder. However, it\ncan accept a gzipped tar stream or a filename to a tarball.\n\n# client.star(package, starred, cb)\n\n* `package` {String} Name of the package to star\n* `starred` {Boolean} True to star the package, false to unstar it.\n* `cb` {Function}\n\nStar or unstar a package.\n\nNote that the user does not have to be the package owner to star or\nunstar a package, though other writes do require that the user be the\npackage owner.\n\n# client.stars(username, cb)\n\n* `username` {String} Name of user to fetch starred packages for.\n* `cb` {Function}\n\nView your own or another user\'s starred packages.\n\n# client.tag(project, version, tag, cb)\n\n* `project` {String} Project name\n* `version` {String} Version to tag\n* `tag` {String} Tag name to apply\n* `cb` {Function}\n\nMark a version in the `dist-tags` hash, so that `pkg@tag`\nwill fetch the specified version.\n\n# client.unpublish(name, [ver], cb)\n\n* `name` {String} package name\n* `ver` {String} version to unpublish. Leave blank to unpublish all\n versions.\n* `cb` {Function}\n\nRemove a version of a package (or all versions) from the registry. When\nthe last version us unpublished, the entire document is removed from the\ndatabase.\n\n# client.upload(where, file, [etag], [nofollow], cb)\n\n* `where` {String} URL path to upload to\n* `file` {String | Stream} Either the filename or a readable stream\n* `etag` {String} Cache ETag\n* `nofollow` {Boolean} Do not follow 301/302 responses\n* `cb` {Function}\n\nUpload an attachment. Mostly used by `client.publish()`.\n',
209 silly resolved readmeFilename: 'README.md',
209 silly resolved bugs: { url: 'https://github.com/isaacs/npm-registry-client/issues' },
209 silly resolved homepage: 'https://github.com/isaacs/npm-registry-client',
209 silly resolved _id: 'npm-registry-client@0.2.31',
209 silly resolved _from: 'npm-registry-client@~0.2.10' },
209 silly resolved { name: 'sqlite3',
209 silly resolved description: 'Asynchronous, non-blocking SQLite3 bindings',
209 silly resolved version: '2.1.19',
209 silly resolved abi: 'a',
209 silly resolved homepage: 'http://github.com/mapbox/node-sqlite3',
209 silly resolved author: { name: 'MapBox', url: 'https://mapbox.com/' },
209 silly resolved contributors:
209 silly resolved [ [Object],
209 silly resolved [Object],
209 silly resolved [Object],
209 silly resolved [Object],
209 silly resolved [Object],
209 silly resolved [Object],
209 silly resolved [Object],
209 silly resolved [Object],
209 silly resolved [Object],
209 silly resolved [Object],
209 silly resolved [Object],
209 silly resolved [Object],
209 silly resolved [Object],
209 silly resolved [Object],
209 silly resolved [Object] ],
209 silly resolved repository: { type: 'git', url: 'git://github.com/mapbox/node-sqlite3.git' },
209 silly resolved dependencies: { mkdirp: '~0.3.5', 'tar.gz': '~0.1.1' },
209 silly resolved engines: { node: '>= 0.6.13 < 0.11.0' },
209 silly resolved scripts:
209 silly resolved { install: 'node build.js',
209 silly resolved pretest: 'node test/support/createdb.js',
209 silly resolved test: 'mocha -R spec --timeout 200000' },
209 silly resolved licenses: [ [Object] ],
209 silly resolved main: './lib/sqlite3',
209 silly resolved readme: '# NAME\n\nnode-sqlite3 - Asynchronous, non-blocking [SQLite3](http://sqlite.org/) bindings for [Node.js](http://nodejs.org/) 0.2-0.4 (versions 2.0.x), **0.6.13+, 0.8.x, and 0.10.x** (versions 2.1.x).\n\n(Can also run in [node-webkit](https://github.com/rogerwang/node-webkit) if it uses a supported version of Node\'s engine.)\n\n[![Build Status](https://travis-ci.org/mapbox/node-sqlite3.png?branch=master)](https://travis-ci.org/mapbox/node-sqlite3)\n[![npm package version](https://badge.fury.io/js/sqlite3.png)](https://npmjs.org/package/sqlite3)\n\n\n# USAGE\n\n**Note:** the module must be [installed](#installing) before use.\n\n``` js\nvar sqlite3 = require(\'sqlite3\').verbose();\nvar db = new sqlite3.Database(\':memory:\');\n\ndb.serialize(function() {\n db.run("CREATE TABLE lorem (info TEXT)");\n\n var stmt = db.prepare("INSERT INTO lorem VALUES (?)");\n for (var i = 0; i < 10; i++) {\n stmt.run("Ipsum " + i);\n }\n stmt.finalize();\n\n db.each("SELECT rowid AS id, info FROM lorem", function(err, row) {\n console.log(row.id + ": " + row.info);\n });\n});\n\ndb.close();\n```\n\n\n\n# FEATURES\n\n* Straightforward query and parameter binding interface\n* Full Buffer/Blob support\n* Extensive [debugging support](https://github.com/mapbox/node-sqlite3/wiki/Debugging)\n* [Query serialization](https://github.com/mapbox/node-sqlite3/wiki/Control-Flow) API\n* [Extension support](https://github.com/mapbox/node-sqlite3/wiki/Extensions)\n* Big test suite\n* Written in modern C++ and tested for memory leaks\n\n\n\n# API\n\nSee the [API documentation](https://github.com/mapbox/node-sqlite3/wiki) in the wiki.\n\n\n# INSTALLING\n\nYou can use [`npm`](https://github.com/isaacs/npm) to download and install:\n\n* The latest `sqlite3` package: `npm install sqlite3`\n\n* GitHub\'s `master` branch: `npm install https://github.com/mapbox/node-sqlite3/tarball/master`\n\nIn both cases the module is automatically built with npm\'s internal version of `node-gyp`,\nand thus your system must meet [node-gyp\'s requirements](https://github.com/TooTallNate/node-gyp#installation).\n\nIt is also possible to make your own build of `sqlite3` from its source instead of its npm package ([see below](#building-from-the-source)).\n\nIt is possible to use the installed package in [node-webkit](https://github.com/rogerwang/node-webkit) instead of the vanilla Node.js, but a rebuild is required before use (see the next section).\n\n\n# REBUILDING FOR NODE-WEBKIT\n\nBecause of ABI differences, only a rebuilt version of `sqlite3` can be used in [node-webkit](https://github.com/rogerwang/node-webkit).\n\nAfter the `sqlite3` module is installed (according to the previous section), do the following:\n\n1. Install [`nw-gyp`](https://github.com/rogerwang/nw-gyp) globally: `npm install nw-gyp -g` *(unless already installed)*\n\n2. Use `nw-gyp` to rebuild the module: `nw-gyp rebuild --target=0.6.2`\n\nRemember the following:\n\n* In the `nw-gyp rebuild` command, specify the actual target version of your node-webkit. The command must be run in sqlite3\'s directory (where its `package.json` resides).\n\n* After the `sqlite3` package is rebuilt for node-webkit it cannot run in the vanilla Node.js (and vice versa).\n * For example, `npm test` of the node-webkit\'s package would fail.\n * If you need `sqlite3` package both for Node.js and node-webkit, then you should make two separate installations of `sqlite3` (in different directories) and rebuild only one of them for node-webkit.\n\nVisit the “[Using Node modules](https://github.com/rogerwang/node-webkit/wiki/Using-Node-modules)” article in the node-webkit\'s wiki for more details.\n\n\n# BUILDING FROM THE SOURCE\n\nUnless building via `npm install` (which uses its own `node-gyp`) you will need `node-gyp` installed globally:\n\n npm install node-gyp -g\n\nThe sqlite3 module depends only on libsqlite3. However, by default, an internal/bundled copy of sqlite will be built and statically linked, so an externally installed sqlite3 is not required.\n\nIf you wish to install against an external sqlite then you need to pass the `--sqlite` argument to `node-gyp`, `npm install` or the `configure` wrapper.\n\n ./configure --sqlite=/usr/local\n make\n\nOr, using the node-gyp directly:\n\n node-gyp --sqlite=/usr/local\n make\n\nOr, using npm:\n\n npm install --sqlite=/usr/local\n\nIf building against an external sqlite3 make sure to have the development headers available. Mac OS X ships with these by default. If you don\'t have them installed, install the `-dev` package with your package manager, e.g. `apt-get install libsqlite3-dev` for Debian/Ubuntu. Make sure that you have at least `libsqlite3` >= 3.6.\n\nNote, if building against homebrew-installed sqlite on OS X you can do:\n\n ./configure --sqlite=/usr/local/opt/sqlite/\n make\n\n\n# TESTING\n\n[mocha](https://github.com/visionmedia/mocha) is required to run unit tests.\n\nIn sqlite3\'s directory (where its `package.json` resides) run the following:\n\n npm install mocha\n npm test\n\n\n\n# CONTRIBUTORS\n\n* [Konstantin Käfer](https://github.com/kkaefer)\n* [Dane Springmeyer](https://github.com/springmeyer)\n* [Will White](https://github.com/willwhite)\n* [Orlando Vazquez](https://github.com/orlandov)\n* [Artem Kustikov](https://github.com/artiz)\n* [Eric Fredricksen](https://github.com/grumdrig)\n* [John Wright](https://github.com/mrjjwright)\n* [Ryan Dahl](https://github.com/ry)\n* [Tom MacWright](https://github.com/tmcw)\n* [Carter Thaxton](https://github.com/carter-thaxton)\n* [Audrius Kažukauskas](https://github.com/audriusk)\n* [Johannes Schauer](https://github.com/pyneo)\n* [Mithgol](https://github.com/Mithgol)\n\n\n\n# ACKNOWLEDGEMENTS\n\nThanks to [Orlando Vazquez](https://github.com/orlandov),\n[Eric Fredricksen](https://github.com/grumdrig) and\n[Ryan Dahl](https://github.com/ry) for their SQLite bindings for node, and to mraleph on Freenode\'s #v8 for answering questions.\n\nDevelopment of this module is sponsored by [MapBox](http://mapbox.org/).\n\n\n# LICENSE\n\n`node-sqlite3` is [BSD licensed](https://github.com/mapbox/node-sqlite3/raw/master/LICENSE).\n',
209 silly resolved readmeFilename: 'README.md',
209 silly resolved bugs: { url: 'https://github.com/mapbox/node-sqlite3/issues' },
209 silly resolved bundleDependencies: [ 'mkdirp', 'tar.gz', 'progress' ],
209 silly resolved _id: 'sqlite3@2.1.19',
209 silly resolved _from: 'sqlite3@~2.1.5' },
209 silly resolved { name: 'mkdirp',
209 silly resolved description: 'Recursively mkdir, like `mkdir -p`',
209 silly resolved version: '0.3.5',
209 silly resolved author:
209 silly resolved { name: 'James Halliday',
209 silly resolved email: 'mail@substack.net',
209 silly resolved url: 'http://substack.net' },
209 silly resolved main: './index',
209 silly resolved keywords: [ 'mkdir', 'directory' ],
209 silly resolved repository:
209 silly resolved { type: 'git',
209 silly resolved url: 'http://github.com/substack/node-mkdirp.git' },
209 silly resolved scripts: { test: 'tap test/*.js' },
209 silly resolved devDependencies: { tap: '~0.4.0' },
209 silly resolved license: 'MIT',
209 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',
209 silly resolved readmeFilename: 'readme.markdown',
209 silly resolved bugs: { url: 'https://github.com/substack/node-mkdirp/issues' },
209 silly resolved homepage: 'https://github.com/substack/node-mkdirp',
209 silly resolved _id: 'mkdirp@0.3.5',
209 silly resolved _from: 'mkdirp@~0.3.4' },
209 silly resolved { name: 'async',
209 silly resolved description: 'Higher-order functions and common patterns for asynchronous code',
209 silly resolved main: './index',
209 silly resolved author: { name: 'Caolan McMahon' },
209 silly resolved version: '0.1.22',
209 silly resolved repository: { type: 'git', url: 'http://github.com/caolan/async.git' },
209 silly resolved bugs: { url: 'http://github.com/caolan/async/issues' },
209 silly resolved licenses: [ [Object] ],
209 silly resolved devDependencies: { nodeunit: '>0.0.0', 'uglify-js': '1.2.x', nodelint: '>0.0.0' },
209 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](http://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 // the results array will equal [\'one\',\'two\'] even though\n // the second function had a shorter timeout.\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, [results]) - An optional callback to run once all the functions\n have completed. This will be passed the results of the last task\'s callback.\n\n\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 ], function (err, result) {\n // result now equals \'done\' \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 instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\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 // add some items to the queue (batch-wise)\n\n q.push([{name: \'baz\'},{name: \'bay\'},{name: \'bax\'}], 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 which have completed so far.\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, results) - An optional callback which is called when all the\n tasks have been completed. The callback will receive an error as an argument\n if any tasks pass an error to their callback. If all tasks complete\n successfully, it will receive an object containing their results.\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: 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',
209 silly resolved readmeFilename: 'README.md',
209 silly resolved homepage: 'https://github.com/caolan/async',
209 silly resolved _id: 'async@0.1.22',
209 silly resolved _from: 'async@~0.1.22' } ]
210 info install optimist@0.3.7 into /usr/lib/node_modules/npmsearch
211 info install npm-registry-client@0.2.31 into /usr/lib/node_modules/npmsearch
212 info install sqlite3@2.1.19 into /usr/lib/node_modules/npmsearch
213 info install mkdirp@0.3.5 into /usr/lib/node_modules/npmsearch
214 info install async@0.1.22 into /usr/lib/node_modules/npmsearch
215 info installOne optimist@0.3.7
216 info installOne npm-registry-client@0.2.31
217 info installOne sqlite3@2.1.19
218 info installOne mkdirp@0.3.5
219 info installOne async@0.1.22
220 info /usr/lib/node_modules/npmsearch/node_modules/optimist unbuild
221 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client unbuild
222 info /usr/lib/node_modules/npmsearch/node_modules/sqlite3 unbuild
223 info /usr/lib/node_modules/npmsearch/node_modules/mkdirp unbuild
224 info /usr/lib/node_modules/npmsearch/node_modules/async unbuild
225 verbose tar unpack /home/patcon/.npm/optimist/0.3.7/package.tgz
226 silly lockFile 32dccb8b--npmsearch-node-modules-optimist tar:///usr/lib/node_modules/npmsearch/node_modules/optimist
227 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/optimist /home/patcon/.npm/32dccb8b--npmsearch-node-modules-optimist.lock
228 silly lockFile 899ca6a4-n-npm-optimist-0-3-7-package-tgz tar:///home/patcon/.npm/optimist/0.3.7/package.tgz
229 verbose lock tar:///home/patcon/.npm/optimist/0.3.7/package.tgz /home/patcon/.npm/899ca6a4-n-npm-optimist-0-3-7-package-tgz.lock
230 verbose tar unpack /home/patcon/.npm/npm-registry-client/0.2.31/package.tgz
231 silly lockFile b906618e-node-modules-npm-registry-client tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client
232 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client /home/patcon/.npm/b906618e-node-modules-npm-registry-client.lock
233 silly lockFile c43f50c3-gistry-client-0-2-31-package-tgz tar:///home/patcon/.npm/npm-registry-client/0.2.31/package.tgz
234 verbose lock tar:///home/patcon/.npm/npm-registry-client/0.2.31/package.tgz /home/patcon/.npm/c43f50c3-gistry-client-0-2-31-package-tgz.lock
235 verbose tar unpack /home/patcon/.npm/sqlite3/2.1.19/package.tgz
236 silly lockFile 7796c4a3-s-npmsearch-node-modules-sqlite3 tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3
237 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3 /home/patcon/.npm/7796c4a3-s-npmsearch-node-modules-sqlite3.lock
238 silly lockFile ee219dfc-n-npm-sqlite3-2-1-19-package-tgz tar:///home/patcon/.npm/sqlite3/2.1.19/package.tgz
239 verbose lock tar:///home/patcon/.npm/sqlite3/2.1.19/package.tgz /home/patcon/.npm/ee219dfc-n-npm-sqlite3-2-1-19-package-tgz.lock
240 verbose tar unpack /home/patcon/.npm/mkdirp/0.3.5/package.tgz
241 silly lockFile 3fd84b65-es-npmsearch-node-modules-mkdirp tar:///usr/lib/node_modules/npmsearch/node_modules/mkdirp
242 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/mkdirp /home/patcon/.npm/3fd84b65-es-npmsearch-node-modules-mkdirp.lock
243 silly lockFile 0aae9d4d-con-npm-mkdirp-0-3-5-package-tgz tar:///home/patcon/.npm/mkdirp/0.3.5/package.tgz
244 verbose lock tar:///home/patcon/.npm/mkdirp/0.3.5/package.tgz /home/patcon/.npm/0aae9d4d-con-npm-mkdirp-0-3-5-package-tgz.lock
245 verbose tar unpack /home/patcon/.npm/async/0.1.22/package.tgz
246 silly lockFile 8e5015e4-les-npmsearch-node-modules-async tar:///usr/lib/node_modules/npmsearch/node_modules/async
247 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/async /home/patcon/.npm/8e5015e4-les-npmsearch-node-modules-async.lock
248 silly lockFile 3123c25d-con-npm-async-0-1-22-package-tgz tar:///home/patcon/.npm/async/0.1.22/package.tgz
249 verbose lock tar:///home/patcon/.npm/async/0.1.22/package.tgz /home/patcon/.npm/3123c25d-con-npm-async-0-1-22-package-tgz.lock
250 silly gunzTarPerm modes [ '755', '644' ]
251 silly gunzTarPerm modes [ '755', '644' ]
252 silly gunzTarPerm modes [ '755', '644' ]
253 silly gunzTarPerm modes [ '755', '644' ]
254 silly gunzTarPerm modes [ '755', '644' ]
255 silly gunzTarPerm extractEntry package.json
256 silly gunzTarPerm extractEntry package.json
257 silly gunzTarPerm extractEntry package.json
258 silly gunzTarPerm extractEntry package.json
259 silly gunzTarPerm extractEntry package.json
260 silly gunzTarPerm extractEntry LICENSE
261 silly gunzTarPerm extractEntry index.js
262 silly gunzTarPerm extractEntry .npmignore
263 silly gunzTarPerm extractEntry README.md
264 silly gunzTarPerm extractEntry .npmignore
265 silly gunzTarPerm extractEntry README.md
266 silly gunzTarPerm extractEntry .npmignore
267 silly gunzTarPerm extractEntry LICENSE
268 silly gunzTarPerm extractEntry .npmignore
269 silly gunzTarPerm extractEntry README.md
270 silly gunzTarPerm extractEntry .travis.yml
271 silly gunzTarPerm extractEntry LICENSE
272 silly gunzTarPerm extractEntry index.js
273 silly gunzTarPerm extractEntry index.js
274 silly gunzTarPerm extractEntry .travis.yml
275 silly gunzTarPerm extractEntry LICENSE
276 silly gunzTarPerm extractEntry sqlite3.js
277 silly gunzTarPerm extractEntry LICENSE
278 silly gunzTarPerm extractEntry lib/adduser.js
279 silly gunzTarPerm extractEntry lib/deprecate.js
280 silly gunzTarPerm extractEntry lib/get.js
281 silly gunzTarPerm extractEntry lib/publish.js
282 silly gunzTarPerm extractEntry lib/bugs.js
283 silly gunzTarPerm extractEntry lib/star.js
284 silly gunzTarPerm extractEntry lib/stars.js
285 silly gunzTarPerm extractEntry lib/tag.js
286 silly gunzTarPerm extractEntry lib/unpublish.js
287 silly gunzTarPerm extractEntry lib/upload.js
288 silly gunzTarPerm extractEntry lib/request.js
289 silly gunzTarPerm extractEntry test/00-setup.js
290 silly gunzTarPerm extractEntry test/adduser-new.js
291 silly gunzTarPerm extractEntry test/adduser-update.js
292 silly gunzTarPerm extractEntry test/basic.js
293 silly gunzTarPerm extractEntry test/retries.js
294 silly gunzTarPerm extractEntry test/zz-cleanup.js
295 silly gunzTarPerm extractEntry test/fixtures/server.js
296 silly gunzTarPerm extractEntry test/fixtures/underscore/1.3.3/cache.json
297 silly gunzTarPerm extractEntry test/fixtures/underscore/cache.json
298 silly gunzTarPerm extractEntry examples/pow.js
299 silly gunzTarPerm extractEntry readme.markdown
300 silly gunzTarPerm extractEntry example/bool.js
301 silly gunzTarPerm extractEntry example/default_singles.js
302 silly gunzTarPerm extractEntry build.js
303 silly gunzTarPerm extractEntry index.js
304 silly gunzTarPerm extractEntry .gitmodules
305 silly gunzTarPerm extractEntry examples/simple-chaining.js
306 silly gunzTarPerm extractEntry test/chmod.js
307 silly gunzTarPerm extractEntry test/perm.js
308 silly gunzTarPerm extractEntry benchmark/insert.js
309 silly gunzTarPerm extractEntry benchmark/insert-transaction.sql
310 silly gunzTarPerm extractEntry test/perm_sync.js
311 silly gunzTarPerm extractEntry test/race.js
312 silly gunzTarPerm extractEntry test/mkdirp.js
313 silly gunzTarPerm extractEntry test/return.js
314 silly gunzTarPerm extractEntry test/return_sync.js
315 silly gunzTarPerm extractEntry test/root.js
316 silly gunzTarPerm extractEntry test/sync.js
317 silly gunzTarPerm extractEntry test/umask.js
318 silly gunzTarPerm extractEntry test/clobber.js
319 silly gunzTarPerm extractEntry test/umask_sync.js
320 silly gunzTarPerm extractEntry test/rel.js
321 silly gunzTarPerm extractEntry build-util/crosswalk-semver-to-module.js
322 silly gunzTarPerm extractEntry example/divide.js
323 silly gunzTarPerm extractEntry example/line_count.js
324 silly gunzTarPerm extractEntry build-util/tools.js
325 silly gunzTarPerm extractEntry build-util/remake.sh
326 silly gunzTarPerm extractEntry example/default_hash.js
327 silly gunzTarPerm extractEntry example/line_count_wrap.js
328 silly gunzTarPerm extractEntry example/nonopt.js
329 silly gunzTarPerm extractEntry example/reflect.js
330 silly gunzTarPerm extractEntry example/short.js
331 silly gunzTarPerm extractEntry example/string.js
332 silly gunzTarPerm extractEntry build-util/upload.sh
333 silly gunzTarPerm extractEntry .travis.yml
334 silly gunzTarPerm extractEntry example/boolean_single.js
335 silly gunzTarPerm extractEntry example/usage-options.js
336 silly gunzTarPerm extractEntry Makefile
337 silly gunzTarPerm extractEntry lib/async.js
338 silly gunzTarPerm extractEntry configure
339 silly gunzTarPerm extractEntry deps/common-sqlite.gypi
340 silly gunzTarPerm extractEntry example/boolean_double.js
341 silly gunzTarPerm extractEntry example/xup.js
342 silly gunzTarPerm extractEntry example/line_count_options.js
343 silly gunzTarPerm extractEntry readme.markdown
344 silly gunzTarPerm extractEntry deps/extract.py
345 silly gunzTarPerm extractEntry deps/sqlite-autoconf-3071700.tar.gz
346 silly gunzTarPerm extractEntry test/_.js
347 silly gunzTarPerm extractEntry test/parse.js
348 silly gunzTarPerm extractEntry test/usage.js
349 silly gunzTarPerm extractEntry test/_/argv.js
350 silly gunzTarPerm extractEntry test/_/bin.js
351 silly lockFile 8e5015e4-les-npmsearch-node-modules-async tar:///usr/lib/node_modules/npmsearch/node_modules/async
352 silly lockFile 8e5015e4-les-npmsearch-node-modules-async tar:///usr/lib/node_modules/npmsearch/node_modules/async
353 silly lockFile 3123c25d-con-npm-async-0-1-22-package-tgz tar:///home/patcon/.npm/async/0.1.22/package.tgz
354 silly lockFile 3123c25d-con-npm-async-0-1-22-package-tgz tar:///home/patcon/.npm/async/0.1.22/package.tgz
355 info preinstall async@0.1.22
356 verbose readDependencies using package.json deps
357 verbose readDependencies using package.json deps
358 silly resolved []
359 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/async
360 info build /usr/lib/node_modules/npmsearch/node_modules/async
361 verbose linkStuff [ true,
361 verbose linkStuff '/usr/lib/node_modules',
361 verbose linkStuff false,
361 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules' ]
362 info linkStuff async@0.1.22
363 silly lockFile 3fd84b65-es-npmsearch-node-modules-mkdirp tar:///usr/lib/node_modules/npmsearch/node_modules/mkdirp
364 silly lockFile 3fd84b65-es-npmsearch-node-modules-mkdirp tar:///usr/lib/node_modules/npmsearch/node_modules/mkdirp
365 silly lockFile 0aae9d4d-con-npm-mkdirp-0-3-5-package-tgz tar:///home/patcon/.npm/mkdirp/0.3.5/package.tgz
366 silly lockFile 0aae9d4d-con-npm-mkdirp-0-3-5-package-tgz tar:///home/patcon/.npm/mkdirp/0.3.5/package.tgz
367 info preinstall mkdirp@0.3.5
368 verbose readDependencies using package.json deps
369 verbose linkBins async@0.1.22
370 verbose linkMans async@0.1.22
371 verbose rebuildBundles async@0.1.22
372 verbose readDependencies using package.json deps
373 silly resolved []
374 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/mkdirp
375 info build /usr/lib/node_modules/npmsearch/node_modules/mkdirp
376 verbose linkStuff [ true,
376 verbose linkStuff '/usr/lib/node_modules',
376 verbose linkStuff false,
376 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules' ]
377 info linkStuff mkdirp@0.3.5
378 verbose linkBins mkdirp@0.3.5
379 verbose linkMans mkdirp@0.3.5
380 verbose rebuildBundles mkdirp@0.3.5
381 info install async@0.1.22
382 info install mkdirp@0.3.5
383 info postinstall async@0.1.22
384 info postinstall mkdirp@0.3.5
385 silly lockFile 32dccb8b--npmsearch-node-modules-optimist tar:///usr/lib/node_modules/npmsearch/node_modules/optimist
386 silly lockFile 32dccb8b--npmsearch-node-modules-optimist tar:///usr/lib/node_modules/npmsearch/node_modules/optimist
387 silly lockFile 899ca6a4-n-npm-optimist-0-3-7-package-tgz tar:///home/patcon/.npm/optimist/0.3.7/package.tgz
388 silly lockFile 899ca6a4-n-npm-optimist-0-3-7-package-tgz tar:///home/patcon/.npm/optimist/0.3.7/package.tgz
389 info preinstall optimist@0.3.7
390 verbose readDependencies using package.json deps
391 verbose readDependencies using package.json deps
392 verbose cache add [ 'wordwrap@~0.0.2', null ]
393 verbose cache add name=undefined spec="wordwrap@~0.0.2" args=["wordwrap@~0.0.2",null]
394 verbose parsed url { protocol: null,
394 verbose parsed url slashes: null,
394 verbose parsed url auth: null,
394 verbose parsed url host: null,
394 verbose parsed url port: null,
394 verbose parsed url hostname: null,
394 verbose parsed url hash: null,
394 verbose parsed url search: null,
394 verbose parsed url query: null,
394 verbose parsed url pathname: 'wordwrap@~0.0.2',
394 verbose parsed url path: 'wordwrap@~0.0.2',
394 verbose parsed url href: 'wordwrap@~0.0.2' }
395 verbose cache add name="wordwrap" spec="~0.0.2" args=["wordwrap","~0.0.2"]
396 verbose parsed url { protocol: null,
396 verbose parsed url slashes: null,
396 verbose parsed url auth: null,
396 verbose parsed url host: null,
396 verbose parsed url port: null,
396 verbose parsed url hostname: null,
396 verbose parsed url hash: null,
396 verbose parsed url search: null,
396 verbose parsed url query: null,
396 verbose parsed url pathname: '~0.0.2',
396 verbose parsed url path: '~0.0.2',
396 verbose parsed url href: '~0.0.2' }
397 verbose addNamed [ 'wordwrap', '~0.0.2' ]
398 verbose addNamed [ null, '>=0.0.2-0 <0.1.0-0' ]
399 silly lockFile 8bd42136-wordwrap-0-0-2 wordwrap@~0.0.2
400 verbose lock wordwrap@~0.0.2 /home/patcon/.npm/8bd42136-wordwrap-0-0-2.lock
401 silly lockFile b906618e-node-modules-npm-registry-client tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client
402 silly lockFile b906618e-node-modules-npm-registry-client tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client
403 silly addNameRange { name: 'wordwrap', range: '>=0.0.2-0 <0.1.0-0', hasData: false }
404 silly lockFile c43f50c3-gistry-client-0-2-31-package-tgz tar:///home/patcon/.npm/npm-registry-client/0.2.31/package.tgz
405 silly lockFile c43f50c3-gistry-client-0-2-31-package-tgz tar:///home/patcon/.npm/npm-registry-client/0.2.31/package.tgz
406 verbose url raw wordwrap
407 verbose url resolving [ 'https://registry.npmjs.org/', './wordwrap' ]
408 verbose url resolved https://registry.npmjs.org/wordwrap
409 info trying registry request attempt 1 at 12:17:27
410 verbose etag "2D706CTCC5VWIX4UKCMOLK1NS"
411 http GET https://registry.npmjs.org/wordwrap
412 info preinstall npm-registry-client@0.2.31
413 verbose readDependencies using package.json deps
414 verbose readDependencies using package.json deps
415 verbose cache add [ 'request@2 >=2.25.0', null ]
416 verbose cache add name=undefined spec="request@2 >=2.25.0" args=["request@2 >=2.25.0",null]
417 verbose parsed url { protocol: null,
417 verbose parsed url slashes: null,
417 verbose parsed url auth: null,
417 verbose parsed url host: null,
417 verbose parsed url port: null,
417 verbose parsed url hostname: null,
417 verbose parsed url hash: null,
417 verbose parsed url search: null,
417 verbose parsed url query: null,
417 verbose parsed url pathname: 'request@2%20%3E=2.25.0',
417 verbose parsed url path: 'request@2%20%3E=2.25.0',
417 verbose parsed url href: 'request@2%20%3E=2.25.0' }
418 verbose cache add name="request" spec="2 >=2.25.0" args=["request","2 >=2.25.0"]
419 verbose parsed url { protocol: null,
419 verbose parsed url slashes: null,
419 verbose parsed url auth: null,
419 verbose parsed url host: null,
419 verbose parsed url port: null,
419 verbose parsed url hostname: null,
419 verbose parsed url hash: null,
419 verbose parsed url search: null,
419 verbose parsed url query: null,
419 verbose parsed url pathname: '2%20%3E=2.25.0',
419 verbose parsed url path: '2%20%3E=2.25.0',
419 verbose parsed url href: '2%20%3E=2.25.0' }
420 verbose addNamed [ 'request', '2 >=2.25.0' ]
421 verbose addNamed [ null, '>=2.0.0-0 <3.0.0-0 >=2.25.0' ]
422 silly lockFile c028abf0-request-2-2-25-0 request@2 >=2.25.0
423 verbose lock request@2 >=2.25.0 /home/patcon/.npm/c028abf0-request-2-2-25-0.lock
424 verbose cache add [ 'graceful-fs@~2.0.0', null ]
425 verbose cache add name=undefined spec="graceful-fs@~2.0.0" args=["graceful-fs@~2.0.0",null]
426 verbose parsed url { protocol: null,
426 verbose parsed url slashes: null,
426 verbose parsed url auth: null,
426 verbose parsed url host: null,
426 verbose parsed url port: null,
426 verbose parsed url hostname: null,
426 verbose parsed url hash: null,
426 verbose parsed url search: null,
426 verbose parsed url query: null,
426 verbose parsed url pathname: 'graceful-fs@~2.0.0',
426 verbose parsed url path: 'graceful-fs@~2.0.0',
426 verbose parsed url href: 'graceful-fs@~2.0.0' }
427 verbose cache add name="graceful-fs" spec="~2.0.0" args=["graceful-fs","~2.0.0"]
428 verbose parsed url { protocol: null,
428 verbose parsed url slashes: null,
428 verbose parsed url auth: null,
428 verbose parsed url host: null,
428 verbose parsed url port: null,
428 verbose parsed url hostname: null,
428 verbose parsed url hash: null,
428 verbose parsed url search: null,
428 verbose parsed url query: null,
428 verbose parsed url pathname: '~2.0.0',
428 verbose parsed url path: '~2.0.0',
428 verbose parsed url href: '~2.0.0' }
429 verbose addNamed [ 'graceful-fs', '~2.0.0' ]
430 verbose addNamed [ null, '>=2.0.0-0 <2.1.0-0' ]
431 silly lockFile 8863dcc9-graceful-fs-2-0-0 graceful-fs@~2.0.0
432 verbose lock graceful-fs@~2.0.0 /home/patcon/.npm/8863dcc9-graceful-fs-2-0-0.lock
433 verbose cache add [ 'slide@~1.1.3', null ]
434 verbose cache add name=undefined spec="slide@~1.1.3" args=["slide@~1.1.3",null]
435 verbose parsed url { protocol: null,
435 verbose parsed url slashes: null,
435 verbose parsed url auth: null,
435 verbose parsed url host: null,
435 verbose parsed url port: null,
435 verbose parsed url hostname: null,
435 verbose parsed url hash: null,
435 verbose parsed url search: null,
435 verbose parsed url query: null,
435 verbose parsed url pathname: 'slide@~1.1.3',
435 verbose parsed url path: 'slide@~1.1.3',
435 verbose parsed url href: 'slide@~1.1.3' }
436 verbose cache add name="slide" spec="~1.1.3" args=["slide","~1.1.3"]
437 verbose parsed url { protocol: null,
437 verbose parsed url slashes: null,
437 verbose parsed url auth: null,
437 verbose parsed url host: null,
437 verbose parsed url port: null,
437 verbose parsed url hostname: null,
437 verbose parsed url hash: null,
437 verbose parsed url search: null,
437 verbose parsed url query: null,
437 verbose parsed url pathname: '~1.1.3',
437 verbose parsed url path: '~1.1.3',
437 verbose parsed url href: '~1.1.3' }
438 verbose addNamed [ 'slide', '~1.1.3' ]
439 verbose addNamed [ null, '>=1.1.3-0 <1.2.0-0' ]
440 silly lockFile a9ca7910-slide-1-1-3 slide@~1.1.3
441 verbose lock slide@~1.1.3 /home/patcon/.npm/a9ca7910-slide-1-1-3.lock
442 verbose cache add [ 'semver@^2.2.1', null ]
443 verbose cache add name=undefined spec="semver@^2.2.1" args=["semver@^2.2.1",null]
444 verbose parsed url { protocol: null,
444 verbose parsed url slashes: null,
444 verbose parsed url auth: null,
444 verbose parsed url host: null,
444 verbose parsed url port: null,
444 verbose parsed url hostname: null,
444 verbose parsed url hash: null,
444 verbose parsed url search: null,
444 verbose parsed url query: null,
444 verbose parsed url pathname: 'semver@^2.2.1',
444 verbose parsed url path: 'semver@^2.2.1',
444 verbose parsed url href: 'semver@^2.2.1' }
445 verbose cache add name="semver" spec="^2.2.1" args=["semver","^2.2.1"]
446 verbose parsed url { protocol: null,
446 verbose parsed url slashes: null,
446 verbose parsed url auth: null,
446 verbose parsed url host: null,
446 verbose parsed url port: null,
446 verbose parsed url hostname: null,
446 verbose parsed url hash: null,
446 verbose parsed url search: null,
446 verbose parsed url query: null,
446 verbose parsed url pathname: '^2.2.1',
446 verbose parsed url path: '^2.2.1',
446 verbose parsed url href: '^2.2.1' }
447 verbose addNamed [ 'semver', '^2.2.1' ]
448 verbose addNamed [ null, '>=2.2.1-0 <3.0.0-0' ]
449 silly lockFile d8627689-semver-2-2-1 semver@^2.2.1
450 verbose lock semver@^2.2.1 /home/patcon/.npm/d8627689-semver-2-2-1.lock
451 silly addNameRange { name: 'request',
451 silly addNameRange range: '>=2.0.0-0 <3.0.0-0 >=2.25.0',
451 silly addNameRange hasData: false }
452 verbose cache add [ 'chownr@0', null ]
453 verbose cache add name=undefined spec="chownr@0" args=["chownr@0",null]
454 verbose parsed url { protocol: null,
454 verbose parsed url slashes: null,
454 verbose parsed url auth: null,
454 verbose parsed url host: null,
454 verbose parsed url port: null,
454 verbose parsed url hostname: null,
454 verbose parsed url hash: null,
454 verbose parsed url search: null,
454 verbose parsed url query: null,
454 verbose parsed url pathname: 'chownr@0',
454 verbose parsed url path: 'chownr@0',
454 verbose parsed url href: 'chownr@0' }
455 verbose cache add name="chownr" spec="0" args=["chownr","0"]
456 verbose parsed url { protocol: null,
456 verbose parsed url slashes: null,
456 verbose parsed url auth: null,
456 verbose parsed url host: null,
456 verbose parsed url port: null,
456 verbose parsed url hostname: null,
456 verbose parsed url hash: null,
456 verbose parsed url search: null,
456 verbose parsed url query: null,
456 verbose parsed url pathname: '0',
456 verbose parsed url path: '0',
456 verbose parsed url href: '0' }
457 verbose addNamed [ 'chownr', '0' ]
458 verbose addNamed [ null, '>=0.0.0-0 <1.0.0-0' ]
459 silly lockFile 9e95412d-chownr-0 chownr@0
460 verbose lock chownr@0 /home/patcon/.npm/9e95412d-chownr-0.lock
461 silly addNameRange { name: 'graceful-fs',
461 silly addNameRange range: '>=2.0.0-0 <2.1.0-0',
461 silly addNameRange hasData: false }
462 silly addNameRange { name: 'slide', range: '>=1.1.3-0 <1.2.0-0', hasData: false }
463 verbose cache add [ 'rimraf@~2', null ]
464 verbose cache add name=undefined spec="rimraf@~2" args=["rimraf@~2",null]
465 verbose parsed url { protocol: null,
465 verbose parsed url slashes: null,
465 verbose parsed url auth: null,
465 verbose parsed url host: null,
465 verbose parsed url port: null,
465 verbose parsed url hostname: null,
465 verbose parsed url hash: null,
465 verbose parsed url search: null,
465 verbose parsed url query: null,
465 verbose parsed url pathname: 'rimraf@~2',
465 verbose parsed url path: 'rimraf@~2',
465 verbose parsed url href: 'rimraf@~2' }
466 verbose cache add name="rimraf" spec="~2" args=["rimraf","~2"]
467 verbose parsed url { protocol: null,
467 verbose parsed url slashes: null,
467 verbose parsed url auth: null,
467 verbose parsed url host: null,
467 verbose parsed url port: null,
467 verbose parsed url hostname: null,
467 verbose parsed url hash: null,
467 verbose parsed url search: null,
467 verbose parsed url query: null,
467 verbose parsed url pathname: '~2',
467 verbose parsed url path: '~2',
467 verbose parsed url href: '~2' }
468 verbose addNamed [ 'rimraf', '~2' ]
469 verbose addNamed [ null, '>=2.0.0-0 <3.0.0-0' ]
470 silly lockFile d0efaa60-rimraf-2 rimraf@~2
471 verbose lock rimraf@~2 /home/patcon/.npm/d0efaa60-rimraf-2.lock
472 silly addNameRange { name: 'semver', range: '>=2.2.1-0 <3.0.0-0', hasData: false }
473 silly addNameRange { name: 'chownr', range: '>=0.0.0-0 <1.0.0-0', hasData: false }
474 silly addNameRange { name: 'rimraf', range: '>=2.0.0-0 <3.0.0-0', hasData: false }
475 verbose url raw request
476 verbose url resolving [ 'https://registry.npmjs.org/', './request' ]
477 verbose url resolved https://registry.npmjs.org/request
478 info trying registry request attempt 1 at 12:17:27
479 verbose etag "5LYO46HVVCVDFDZDPSXB5WR4N"
480 http GET https://registry.npmjs.org/request
481 verbose cache add [ 'couch-login@~0.1.18', null ]
482 verbose cache add name=undefined spec="couch-login@~0.1.18" args=["couch-login@~0.1.18",null]
483 verbose parsed url { protocol: null,
483 verbose parsed url slashes: null,
483 verbose parsed url auth: null,
483 verbose parsed url host: null,
483 verbose parsed url port: null,
483 verbose parsed url hostname: null,
483 verbose parsed url hash: null,
483 verbose parsed url search: null,
483 verbose parsed url query: null,
483 verbose parsed url pathname: 'couch-login@~0.1.18',
483 verbose parsed url path: 'couch-login@~0.1.18',
483 verbose parsed url href: 'couch-login@~0.1.18' }
484 verbose cache add name="couch-login" spec="~0.1.18" args=["couch-login","~0.1.18"]
485 verbose parsed url { protocol: null,
485 verbose parsed url slashes: null,
485 verbose parsed url auth: null,
485 verbose parsed url host: null,
485 verbose parsed url port: null,
485 verbose parsed url hostname: null,
485 verbose parsed url hash: null,
485 verbose parsed url search: null,
485 verbose parsed url query: null,
485 verbose parsed url pathname: '~0.1.18',
485 verbose parsed url path: '~0.1.18',
485 verbose parsed url href: '~0.1.18' }
486 verbose addNamed [ 'couch-login', '~0.1.18' ]
487 verbose addNamed [ null, '>=0.1.18-0 <0.2.0-0' ]
488 silly lockFile f5738374-couch-login-0-1-18 couch-login@~0.1.18
489 verbose lock couch-login@~0.1.18 /home/patcon/.npm/f5738374-couch-login-0-1-18.lock
490 verbose cache add [ 'retry@0.6.0', null ]
491 verbose cache add name=undefined spec="retry@0.6.0" args=["retry@0.6.0",null]
492 verbose parsed url { protocol: null,
492 verbose parsed url slashes: null,
492 verbose parsed url auth: null,
492 verbose parsed url host: null,
492 verbose parsed url port: null,
492 verbose parsed url hostname: null,
492 verbose parsed url hash: null,
492 verbose parsed url search: null,
492 verbose parsed url query: null,
492 verbose parsed url pathname: 'retry@0.6.0',
492 verbose parsed url path: 'retry@0.6.0',
492 verbose parsed url href: 'retry@0.6.0' }
493 verbose cache add name="retry" spec="0.6.0" args=["retry","0.6.0"]
494 verbose parsed url { protocol: null,
494 verbose parsed url slashes: null,
494 verbose parsed url auth: null,
494 verbose parsed url host: null,
494 verbose parsed url port: null,
494 verbose parsed url hostname: null,
494 verbose parsed url hash: null,
494 verbose parsed url search: null,
494 verbose parsed url query: null,
494 verbose parsed url pathname: '0.6.0',
494 verbose parsed url path: '0.6.0',
494 verbose parsed url href: '0.6.0' }
495 verbose addNamed [ 'retry', '0.6.0' ]
496 verbose addNamed [ '0.6.0', '0.6.0' ]
497 silly lockFile 874cb068-retry-0-6-0 retry@0.6.0
498 verbose lock retry@0.6.0 /home/patcon/.npm/874cb068-retry-0-6-0.lock
499 verbose cache add [ 'npmlog@', null ]
500 verbose cache add name=undefined spec="npmlog@" args=["npmlog@",null]
501 verbose parsed url { protocol: null,
501 verbose parsed url slashes: null,
501 verbose parsed url auth: null,
501 verbose parsed url host: null,
501 verbose parsed url port: null,
501 verbose parsed url hostname: null,
501 verbose parsed url hash: null,
501 verbose parsed url search: null,
501 verbose parsed url query: null,
501 verbose parsed url pathname: 'npmlog@',
501 verbose parsed url path: 'npmlog@',
501 verbose parsed url href: 'npmlog@' }
502 verbose cache add name="npmlog" spec="" args=["npmlog",""]
503 verbose parsed url { protocol: null,
503 verbose parsed url slashes: null,
503 verbose parsed url auth: null,
503 verbose parsed url host: null,
503 verbose parsed url port: null,
503 verbose parsed url hostname: null,
503 verbose parsed url hash: null,
503 verbose parsed url search: null,
503 verbose parsed url query: null,
503 verbose parsed url pathname: null,
503 verbose parsed url path: null,
503 verbose parsed url href: '' }
504 verbose addNamed [ 'npmlog', '' ]
505 verbose addNamed [ null, '*' ]
506 silly lockFile 78c38c1f-npmlog npmlog@
507 verbose lock npmlog@ /home/patcon/.npm/78c38c1f-npmlog.lock
508 verbose url raw graceful-fs
509 verbose url resolving [ 'https://registry.npmjs.org/', './graceful-fs' ]
510 verbose url resolved https://registry.npmjs.org/graceful-fs
511 info trying registry request attempt 1 at 12:17:27
512 verbose etag "EH06Y3EVBOARZU8F9YVCDE6MK"
513 http GET https://registry.npmjs.org/graceful-fs
514 verbose url raw slide
515 verbose url resolving [ 'https://registry.npmjs.org/', './slide' ]
516 verbose url resolved https://registry.npmjs.org/slide
517 info trying registry request attempt 1 at 12:17:27
518 verbose etag "42W6D9K647SCIYGDOA1VRASHL"
519 http GET https://registry.npmjs.org/slide
520 verbose url raw semver
521 verbose url resolving [ 'https://registry.npmjs.org/', './semver' ]
522 verbose url resolved https://registry.npmjs.org/semver
523 info trying registry request attempt 1 at 12:17:27
524 verbose etag "2KR3AMMIBY3RSAFEPPIQ5RBQI"
525 http GET https://registry.npmjs.org/semver
526 silly addNameRange { name: 'couch-login',
526 silly addNameRange range: '>=0.1.18-0 <0.2.0-0',
526 silly addNameRange hasData: false }
527 silly addNameRange { name: 'npmlog', range: '*', hasData: false }
528 verbose url raw chownr
529 verbose url resolving [ 'https://registry.npmjs.org/', './chownr' ]
530 verbose url resolved https://registry.npmjs.org/chownr
531 info trying registry request attempt 1 at 12:17:27
532 verbose etag "8SNB9LMF9RF7EKDJUVP33DIBO"
533 http GET https://registry.npmjs.org/chownr
534 verbose url raw rimraf
535 verbose url resolving [ 'https://registry.npmjs.org/', './rimraf' ]
536 verbose url resolved https://registry.npmjs.org/rimraf
537 info trying registry request attempt 1 at 12:17:27
538 verbose etag "B6FRW7Q888ZVY9ZH5MI0G8H2C"
539 http GET https://registry.npmjs.org/rimraf
540 verbose url raw couch-login
541 verbose url resolving [ 'https://registry.npmjs.org/', './couch-login' ]
542 verbose url resolved https://registry.npmjs.org/couch-login
543 info trying registry request attempt 1 at 12:17:27
544 verbose etag "9W9RKYV4A35DSMIZ8AK9JIECC"
545 http GET https://registry.npmjs.org/couch-login
546 verbose url raw retry/0.6.0
547 verbose url resolving [ 'https://registry.npmjs.org/', './retry/0.6.0' ]
548 verbose url resolved https://registry.npmjs.org/retry/0.6.0
549 info trying registry request attempt 1 at 12:17:27
550 verbose etag "F4Z5W37D5346060NJT8M7BRWS"
551 http GET https://registry.npmjs.org/retry/0.6.0
552 verbose url raw npmlog
553 verbose url resolving [ 'https://registry.npmjs.org/', './npmlog' ]
554 verbose url resolved https://registry.npmjs.org/npmlog
555 info trying registry request attempt 1 at 12:17:27
556 verbose etag "C2NQ6F5E3SUHHVN0F88LJX10V"
557 http GET https://registry.npmjs.org/npmlog
558 silly gunzTarPerm extractEntry deps/sqlite3.gyp
559 silly gunzTarPerm extractEntry binding.gyp
560 silly gunzTarPerm extractEntry lib/binary_name.js
561 silly gunzTarPerm extractEntry lib/index.js
562 silly gunzTarPerm extractEntry lib/sqlite3.js
563 silly gunzTarPerm extractEntry lib/trace.js
564 silly gunzTarPerm extractEntry Makefile
565 silly gunzTarPerm extractEntry CHANGELOG.md
566 silly gunzTarPerm extractEntry src/async.h
567 silly gunzTarPerm extractEntry src/database.cc
568 silly gunzTarPerm extractEntry src/database.h
569 silly gunzTarPerm extractEntry src/macros.h
570 silly gunzTarPerm extractEntry src/node_sqlite3.cc
571 silly gunzTarPerm extractEntry src/statement.cc
572 silly gunzTarPerm extractEntry src/statement.h
573 silly gunzTarPerm extractEntry src/threading.h
574 silly gunzTarPerm extractEntry test/affected.test.js
575 silly gunzTarPerm extractEntry test/fts-content.test.js
576 silly gunzTarPerm extractEntry test/issue-108.test.js
577 silly gunzTarPerm extractEntry test/map.test.js
578 silly gunzTarPerm extractEntry test/named_columns.test.js
579 silly gunzTarPerm extractEntry test/extension.test.js
580 silly gunzTarPerm extractEntry test/null_error.test.js
581 silly gunzTarPerm extractEntry test/open_close.test.js
582 silly gunzTarPerm extractEntry test/other_objects.test.js
583 silly gunzTarPerm extractEntry test/parallel_insert.test.js
584 silly gunzTarPerm extractEntry test/prepare.test.js
585 silly gunzTarPerm extractEntry test/exec.test.js
586 silly gunzTarPerm extractEntry test/profile.test.js
587 silly gunzTarPerm extractEntry test/each.test.js
588 silly gunzTarPerm extractEntry test/rerun.test.js
589 silly gunzTarPerm extractEntry test/database_fail.test.js
590 silly gunzTarPerm extractEntry test/scheduling.test.js
591 silly gunzTarPerm extractEntry test/constants.test.js
592 silly gunzTarPerm extractEntry test/serialization.test.js
593 silly gunzTarPerm extractEntry test/cache.test.js
594 silly gunzTarPerm extractEntry test/trace.test.js
595 silly gunzTarPerm extractEntry test/blob.test.js
596 silly gunzTarPerm extractEntry test/unicode.test.js
597 silly gunzTarPerm extractEntry test/named_params.test.js
598 silly gunzTarPerm extractEntry test/support/createdb.js
599 silly gunzTarPerm extractEntry test/support/helper.js
600 silly gunzTarPerm extractEntry test/support/elmo.png
601 silly gunzTarPerm extractEntry test/support/prepare.db
602 silly gunzTarPerm extractEntry test/support/script.sql
603 silly lockFile 7796c4a3-s-npmsearch-node-modules-sqlite3 tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3
604 silly lockFile 7796c4a3-s-npmsearch-node-modules-sqlite3 tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3
605 silly lockFile ee219dfc-n-npm-sqlite3-2-1-19-package-tgz tar:///home/patcon/.npm/sqlite3/2.1.19/package.tgz
606 silly lockFile ee219dfc-n-npm-sqlite3-2-1-19-package-tgz tar:///home/patcon/.npm/sqlite3/2.1.19/package.tgz
607 info preinstall sqlite3@2.1.19
608 verbose readDependencies using package.json deps
609 verbose readDependencies using package.json deps
610 verbose cache add [ 'tar.gz@~0.1.1', null ]
611 verbose cache add name=undefined spec="tar.gz@~0.1.1" args=["tar.gz@~0.1.1",null]
612 verbose parsed url { protocol: null,
612 verbose parsed url slashes: null,
612 verbose parsed url auth: null,
612 verbose parsed url host: null,
612 verbose parsed url port: null,
612 verbose parsed url hostname: null,
612 verbose parsed url hash: null,
612 verbose parsed url search: null,
612 verbose parsed url query: null,
612 verbose parsed url pathname: 'tar.gz@~0.1.1',
612 verbose parsed url path: 'tar.gz@~0.1.1',
612 verbose parsed url href: 'tar.gz@~0.1.1' }
613 verbose cache add name="tar.gz" spec="~0.1.1" args=["tar.gz","~0.1.1"]
614 verbose parsed url { protocol: null,
614 verbose parsed url slashes: null,
614 verbose parsed url auth: null,
614 verbose parsed url host: null,
614 verbose parsed url port: null,
614 verbose parsed url hostname: null,
614 verbose parsed url hash: null,
614 verbose parsed url search: null,
614 verbose parsed url query: null,
614 verbose parsed url pathname: '~0.1.1',
614 verbose parsed url path: '~0.1.1',
614 verbose parsed url href: '~0.1.1' }
615 verbose addNamed [ 'tar.gz', '~0.1.1' ]
616 verbose addNamed [ null, '>=0.1.1-0 <0.2.0-0' ]
617 silly lockFile 63840f5a-tar-gz-0-1-1 tar.gz@~0.1.1
618 verbose lock tar.gz@~0.1.1 /home/patcon/.npm/63840f5a-tar-gz-0-1-1.lock
619 silly addNameRange { name: 'tar.gz', range: '>=0.1.1-0 <0.2.0-0', hasData: false }
620 verbose url raw tar.gz
621 verbose url resolving [ 'https://registry.npmjs.org/', './tar.gz' ]
622 verbose url resolved https://registry.npmjs.org/tar.gz
623 info trying registry request attempt 1 at 12:17:27
624 verbose etag "1RXINNHUVGZENN7YS7KWQUBXW"
625 http GET https://registry.npmjs.org/tar.gz
626 http 304 https://registry.npmjs.org/wordwrap
627 silly registry.get cb [ 304,
627 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
627 silly registry.get server: 'Apache',
627 silly registry.get via: '1.1 varnish',
627 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:27 GMT',
627 silly registry.get 'cache-control': 'max-age=1',
627 silly registry.get etag: '"2D706CTCC5VWIX4UKCMOLK1NS"',
627 silly registry.get 'x-served-by': 'cache-lax1424-LAX',
627 silly registry.get 'x-cache': 'HIT',
627 silly registry.get 'x-cache-hits': '1',
627 silly registry.get 'x-timer': 'S1396207047.584422112,VS0,VE64',
627 silly registry.get vary: 'Accept',
627 silly registry.get 'content-length': '0',
627 silly registry.get 'keep-alive': 'timeout=10, max=50',
627 silly registry.get connection: 'Keep-Alive' } ]
628 verbose etag wordwrap from cache
629 http 304 https://registry.npmjs.org/request
630 silly registry.get cb [ 304,
630 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
630 silly registry.get server: 'Apache',
630 silly registry.get via: '1.1 varnish',
630 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:27 GMT',
630 silly registry.get 'cache-control': 'max-age=1',
630 silly registry.get etag: '"5LYO46HVVCVDFDZDPSXB5WR4N"',
630 silly registry.get 'x-served-by': 'cache-lax1434-LAX',
630 silly registry.get 'x-cache': 'HIT',
630 silly registry.get 'x-cache-hits': '1',
630 silly registry.get 'x-timer': 'S1396207047.586499453,VS0,VE65',
630 silly registry.get vary: 'Accept',
630 silly registry.get 'content-length': '0',
630 silly registry.get 'keep-alive': 'timeout=10, max=50',
630 silly registry.get connection: 'Keep-Alive' } ]
631 verbose etag request from cache
632 http 304 https://registry.npmjs.org/graceful-fs
633 silly registry.get cb [ 304,
633 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
633 silly registry.get server: 'Apache',
633 silly registry.get via: '1.1 varnish',
633 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:27 GMT',
633 silly registry.get 'cache-control': 'max-age=1',
633 silly registry.get etag: '"EH06Y3EVBOARZU8F9YVCDE6MK"',
633 silly registry.get 'x-served-by': 'cache-lax1422-LAX',
633 silly registry.get 'x-cache': 'HIT',
633 silly registry.get 'x-cache-hits': '1',
633 silly registry.get 'x-timer': 'S1396207047.591735601,VS0,VE64',
633 silly registry.get vary: 'Accept',
633 silly registry.get 'content-length': '0',
633 silly registry.get 'keep-alive': 'timeout=10, max=50',
633 silly registry.get connection: 'Keep-Alive' } ]
634 verbose etag graceful-fs from cache
635 silly addNameRange number 2 { name: 'wordwrap', range: '>=0.0.2-0 <0.1.0-0', hasData: true }
636 silly addNameRange versions [ 'wordwrap', [ '0.0.1', '0.0.2' ] ]
637 verbose addNamed [ 'wordwrap', '0.0.2' ]
638 verbose addNamed [ '0.0.2', '0.0.2' ]
639 silly lockFile 24a694c8-wordwrap-0-0-2 wordwrap@0.0.2
640 verbose lock wordwrap@0.0.2 /home/patcon/.npm/24a694c8-wordwrap-0-0-2.lock
641 silly addNameRange number 2 { name: 'request',
641 silly addNameRange range: '>=2.0.0-0 <3.0.0-0 >=2.25.0',
641 silly addNameRange hasData: true }
642 silly addNameRange versions [ 'request',
642 silly addNameRange [ '0.10.0',
642 silly addNameRange '0.8.3',
642 silly addNameRange '0.9.0',
642 silly addNameRange '0.9.1',
642 silly addNameRange '0.9.5',
642 silly addNameRange '1.0.0',
642 silly addNameRange '1.1.0',
642 silly addNameRange '1.1.1',
642 silly addNameRange '1.2.0',
642 silly addNameRange '1.9.0',
642 silly addNameRange '1.9.1',
642 silly addNameRange '1.9.2',
642 silly addNameRange '1.9.3',
642 silly addNameRange '1.9.5',
642 silly addNameRange '1.9.7',
642 silly addNameRange '1.9.8',
642 silly addNameRange '1.9.9',
642 silly addNameRange '2.0.0',
642 silly addNameRange '2.0.1',
642 silly addNameRange '2.0.2',
642 silly addNameRange '2.0.3',
642 silly addNameRange '2.0.4',
642 silly addNameRange '2.0.5',
642 silly addNameRange '2.1.0',
642 silly addNameRange '2.1.1',
642 silly addNameRange '2.2.0',
642 silly addNameRange '2.2.5',
642 silly addNameRange '2.2.6',
642 silly addNameRange '2.2.9',
642 silly addNameRange '2.9.0',
642 silly addNameRange '2.9.1',
642 silly addNameRange '2.9.2',
642 silly addNameRange '2.9.3',
642 silly addNameRange '2.9.100',
642 silly addNameRange '2.9.150',
642 silly addNameRange '2.9.151',
642 silly addNameRange '2.9.152',
642 silly addNameRange '2.9.153',
642 silly addNameRange '2.9.200',
642 silly addNameRange '2.9.201',
642 silly addNameRange '2.9.202',
642 silly addNameRange '2.9.203',
642 silly addNameRange '2.10.0',
642 silly addNameRange '2.11.0',
642 silly addNameRange '2.11.1',
642 silly addNameRange '2.11.2',
642 silly addNameRange '2.11.3',
642 silly addNameRange '2.11.4',
642 silly addNameRange '2.12.0',
642 silly addNameRange '2.14.0',
642 silly addNameRange '2.16.0',
642 silly addNameRange '2.16.2',
642 silly addNameRange '2.16.4',
642 silly addNameRange '2.16.6',
642 silly addNameRange '2.18.0',
642 silly addNameRange '2.19.0',
642 silly addNameRange '2.20.0',
642 silly addNameRange '2.21.0',
642 silly addNameRange '2.22.0',
642 silly addNameRange '2.23.0',
642 silly addNameRange '2.24.0',
642 silly addNameRange '2.25.0',
642 silly addNameRange '2.26.0',
642 silly addNameRange '2.27.0',
642 silly addNameRange '2.28.0',
642 silly addNameRange '2.29.0',
642 silly addNameRange '2.30.0',
642 silly addNameRange '2.31.0',
642 silly addNameRange '2.32.0',
642 silly addNameRange '2.33.0',
642 silly addNameRange '2.34.0' ] ]
643 verbose addNamed [ 'request', '2.34.0' ]
644 verbose addNamed [ '2.34.0', '2.34.0' ]
645 silly lockFile a8edf972-request-2-34-0 request@2.34.0
646 verbose lock request@2.34.0 /home/patcon/.npm/a8edf972-request-2-34-0.lock
647 silly addNameRange number 2 { name: 'graceful-fs',
647 silly addNameRange range: '>=2.0.0-0 <2.1.0-0',
647 silly addNameRange hasData: true }
648 silly addNameRange versions [ 'graceful-fs',
648 silly addNameRange [ '1.0.0',
648 silly addNameRange '1.0.1',
648 silly addNameRange '1.0.2',
648 silly addNameRange '1.1.0',
648 silly addNameRange '1.1.1',
648 silly addNameRange '1.1.2',
648 silly addNameRange '1.1.3',
648 silly addNameRange '1.1.4',
648 silly addNameRange '1.1.5',
648 silly addNameRange '1.1.6',
648 silly addNameRange '1.1.7',
648 silly addNameRange '1.1.8',
648 silly addNameRange '1.1.9',
648 silly addNameRange '1.1.10',
648 silly addNameRange '1.1.11',
648 silly addNameRange '1.1.12',
648 silly addNameRange '1.1.13',
648 silly addNameRange '1.1.14',
648 silly addNameRange '1.2.0',
648 silly addNameRange '1.2.1',
648 silly addNameRange '1.2.2',
648 silly addNameRange '1.2.3',
648 silly addNameRange '2.0.0',
648 silly addNameRange '2.0.1',
648 silly addNameRange '2.0.2',
648 silly addNameRange '2.0.3' ] ]
649 verbose addNamed [ 'graceful-fs', '2.0.3' ]
650 verbose addNamed [ '2.0.3', '2.0.3' ]
651 silly lockFile aa717173-graceful-fs-2-0-3 graceful-fs@2.0.3
652 verbose lock graceful-fs@2.0.3 /home/patcon/.npm/aa717173-graceful-fs-2-0-3.lock
653 silly lockFile 24a694c8-wordwrap-0-0-2 wordwrap@0.0.2
654 silly lockFile 24a694c8-wordwrap-0-0-2 wordwrap@0.0.2
655 silly lockFile 8bd42136-wordwrap-0-0-2 wordwrap@~0.0.2
656 silly lockFile 8bd42136-wordwrap-0-0-2 wordwrap@~0.0.2
657 silly lockFile a8edf972-request-2-34-0 request@2.34.0
658 silly lockFile a8edf972-request-2-34-0 request@2.34.0
659 silly resolved [ { name: 'wordwrap',
659 silly resolved description: 'Wrap those words. Show them at what columns to start and stop.',
659 silly resolved version: '0.0.2',
659 silly resolved repository:
659 silly resolved { type: 'git',
659 silly resolved url: 'git://github.com/substack/node-wordwrap.git' },
659 silly resolved main: './index.js',
659 silly resolved keywords: [ 'word', 'wrap', 'rule', 'format', 'column' ],
659 silly resolved directories: { lib: '.', example: 'example', test: 'test' },
659 silly resolved scripts: { test: 'expresso' },
659 silly resolved devDependencies: { expresso: '=0.7.x' },
659 silly resolved engines: { node: '>=0.4.0' },
659 silly resolved license: 'MIT/X11',
659 silly resolved author:
659 silly resolved { name: 'James Halliday',
659 silly resolved email: 'mail@substack.net',
659 silly resolved url: 'http://substack.net' },
659 silly resolved readme: 'wordwrap\n========\n\nWrap your words.\n\nexample\n=======\n\nmade out of meat\n----------------\n\nmeat.js\n\n var wrap = require(\'wordwrap\')(15);\n console.log(wrap(\'You and your whole family are made out of meat.\'));\n\noutput:\n\n You and your\n whole family\n are made out\n of meat.\n\ncentered\n--------\n\ncenter.js\n\n var wrap = require(\'wordwrap\')(20, 60);\n console.log(wrap(\n \'At long last the struggle and tumult was over.\'\n + \' The machines had finally cast off their oppressors\'\n + \' and were finally free to roam the cosmos.\'\n + \'\\n\'\n + \'Free of purpose, free of obligation.\'\n + \' Just drifting through emptiness.\'\n + \' The sun was just another point of light.\'\n ));\n\noutput:\n\n At long last the struggle and tumult\n was over. The machines had finally cast\n off their oppressors and were finally\n free to roam the cosmos.\n Free of purpose, free of obligation.\n Just drifting through emptiness. The\n sun was just another point of light.\n\nmethods\n=======\n\nvar wrap = require(\'wordwrap\');\n\nwrap(stop), wrap(start, stop, params={mode:"soft"})\n---------------------------------------------------\n\nReturns a function that takes a string and returns a new string.\n\nPad out lines with spaces out to column `start` and then wrap until column\n`stop`. If a word is longer than `stop - start` characters it will overflow.\n\nIn "soft" mode, split chunks by `/(\\S+\\s+/` and don\'t break up chunks which are\nlonger than `stop - start`, in "hard" mode, split chunks with `/\\b/` and break\nup chunks longer than `stop - start`.\n\nwrap.hard(start, stop)\n----------------------\n\nLike `wrap()` but with `params.mode = "hard"`.\n',
659 silly resolved readmeFilename: 'README.markdown',
659 silly resolved bugs: { url: 'https://github.com/substack/node-wordwrap/issues' },
659 silly resolved homepage: 'https://github.com/substack/node-wordwrap',
659 silly resolved _id: 'wordwrap@0.0.2',
659 silly resolved _from: 'wordwrap@~0.0.2' } ]
660 info install wordwrap@0.0.2 into /usr/lib/node_modules/npmsearch/node_modules/optimist
661 info installOne wordwrap@0.0.2
662 silly lockFile aa717173-graceful-fs-2-0-3 graceful-fs@2.0.3
663 silly lockFile aa717173-graceful-fs-2-0-3 graceful-fs@2.0.3
664 silly lockFile c028abf0-request-2-2-25-0 request@2 >=2.25.0
665 silly lockFile c028abf0-request-2-2-25-0 request@2 >=2.25.0
666 info /usr/lib/node_modules/npmsearch/node_modules/optimist/node_modules/wordwrap unbuild
667 silly lockFile 8863dcc9-graceful-fs-2-0-0 graceful-fs@~2.0.0
668 silly lockFile 8863dcc9-graceful-fs-2-0-0 graceful-fs@~2.0.0
669 http 304 https://registry.npmjs.org/semver
670 silly registry.get cb [ 304,
670 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
670 silly registry.get server: 'Apache',
670 silly registry.get via: '1.1 varnish',
670 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:27 GMT',
670 silly registry.get 'cache-control': 'max-age=1',
670 silly registry.get etag: '"2KR3AMMIBY3RSAFEPPIQ5RBQI"',
670 silly registry.get 'x-served-by': 'cache-lax1433-LAX',
670 silly registry.get 'x-cache': 'HIT',
670 silly registry.get 'x-cache-hits': '1',
670 silly registry.get 'x-timer': 'S1396207047.608192921,VS0,VE64',
670 silly registry.get vary: 'Accept',
670 silly registry.get 'content-length': '0',
670 silly registry.get 'keep-alive': 'timeout=10, max=50',
670 silly registry.get connection: 'Keep-Alive' } ]
671 verbose etag semver from cache
672 verbose tar unpack /home/patcon/.npm/wordwrap/0.0.2/package.tgz
673 silly lockFile 92d860e5-s-optimist-node-modules-wordwrap tar:///usr/lib/node_modules/npmsearch/node_modules/optimist/node_modules/wordwrap
674 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/optimist/node_modules/wordwrap /home/patcon/.npm/92d860e5-s-optimist-node-modules-wordwrap.lock
675 silly lockFile d7f12638-n-npm-wordwrap-0-0-2-package-tgz tar:///home/patcon/.npm/wordwrap/0.0.2/package.tgz
676 verbose lock tar:///home/patcon/.npm/wordwrap/0.0.2/package.tgz /home/patcon/.npm/d7f12638-n-npm-wordwrap-0-0-2-package-tgz.lock
677 silly gunzTarPerm modes [ '755', '644' ]
678 silly gunzTarPerm extractEntry package.json
679 silly addNameRange number 2 { name: 'semver', range: '>=2.2.1-0 <3.0.0-0', hasData: true }
680 silly addNameRange versions [ 'semver',
680 silly addNameRange [ '1.0.0',
680 silly addNameRange '1.0.1',
680 silly addNameRange '1.0.2',
680 silly addNameRange '1.0.3',
680 silly addNameRange '1.0.4',
680 silly addNameRange '1.0.5',
680 silly addNameRange '1.0.6',
680 silly addNameRange '1.0.7',
680 silly addNameRange '1.0.8',
680 silly addNameRange '1.0.9',
680 silly addNameRange '1.0.10',
680 silly addNameRange '1.0.11',
680 silly addNameRange '1.0.12',
680 silly addNameRange '1.0.13',
680 silly addNameRange '1.0.14',
680 silly addNameRange '1.1.0',
680 silly addNameRange '1.1.1',
680 silly addNameRange '1.1.2',
680 silly addNameRange '1.1.3',
680 silly addNameRange '1.1.4',
680 silly addNameRange '2.0.0-alpha',
680 silly addNameRange '2.0.0-beta',
680 silly addNameRange '2.0.1',
680 silly addNameRange '2.0.2',
680 silly addNameRange '2.0.3',
680 silly addNameRange '2.0.4',
680 silly addNameRange '2.0.5',
680 silly addNameRange '2.0.6',
680 silly addNameRange '2.0.7',
680 silly addNameRange '2.0.8',
680 silly addNameRange '2.0.9',
680 silly addNameRange '2.0.10',
680 silly addNameRange '2.0.11',
680 silly addNameRange '2.1.0',
680 silly addNameRange '2.2.0',
680 silly addNameRange '2.2.1' ] ]
681 verbose addNamed [ 'semver', '2.2.1' ]
682 verbose addNamed [ '2.2.1', '2.2.1' ]
683 silly lockFile 609d7676-semver-2-2-1 semver@2.2.1
684 verbose lock semver@2.2.1 /home/patcon/.npm/609d7676-semver-2-2-1.lock
685 silly gunzTarPerm extractEntry .npmignore
686 silly gunzTarPerm extractEntry index.js
687 silly gunzTarPerm extractEntry README.markdown
688 silly gunzTarPerm extractEntry example/center.js
689 silly lockFile 609d7676-semver-2-2-1 semver@2.2.1
690 silly lockFile 609d7676-semver-2-2-1 semver@2.2.1
691 silly lockFile d8627689-semver-2-2-1 semver@^2.2.1
692 silly lockFile d8627689-semver-2-2-1 semver@^2.2.1
693 silly gunzTarPerm extractEntry example/meat.js
694 silly gunzTarPerm extractEntry test/break.js
695 silly gunzTarPerm extractEntry test/wrap.js
696 silly gunzTarPerm extractEntry test/idleness.txt
697 http 304 https://registry.npmjs.org/slide
698 silly registry.get cb [ 304,
698 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
698 silly registry.get server: 'Apache',
698 silly registry.get via: '1.1 varnish',
698 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:27 GMT',
698 silly registry.get 'cache-control': 'max-age=1',
698 silly registry.get etag: '"42W6D9K647SCIYGDOA1VRASHL"',
698 silly registry.get 'x-served-by': 'cache-lax1424-LAX',
698 silly registry.get 'x-cache': 'HIT',
698 silly registry.get 'x-cache-hits': '1',
698 silly registry.get 'x-timer': 'S1396207047.611505985,VS0,VE74',
698 silly registry.get vary: 'Accept',
698 silly registry.get 'content-length': '0',
698 silly registry.get 'keep-alive': 'timeout=10, max=50',
698 silly registry.get connection: 'Keep-Alive' } ]
699 verbose etag slide from cache
700 silly addNameRange number 2 { name: 'slide', range: '>=1.1.3-0 <1.2.0-0', hasData: true }
701 silly addNameRange versions [ 'slide',
701 silly addNameRange [ '1.0.0',
701 silly addNameRange '1.0.1',
701 silly addNameRange '1.1.0',
701 silly addNameRange '1.1.1',
701 silly addNameRange '1.1.2',
701 silly addNameRange '1.1.3',
701 silly addNameRange '1.1.4',
701 silly addNameRange '1.1.5' ] ]
702 verbose addNamed [ 'slide', '1.1.5' ]
703 verbose addNamed [ '1.1.5', '1.1.5' ]
704 silly lockFile 131f64ed-slide-1-1-5 slide@1.1.5
705 verbose lock slide@1.1.5 /home/patcon/.npm/131f64ed-slide-1-1-5.lock
706 silly lockFile 131f64ed-slide-1-1-5 slide@1.1.5
707 silly lockFile 131f64ed-slide-1-1-5 slide@1.1.5
708 silly lockFile a9ca7910-slide-1-1-3 slide@~1.1.3
709 silly lockFile a9ca7910-slide-1-1-3 slide@~1.1.3
710 silly lockFile 92d860e5-s-optimist-node-modules-wordwrap tar:///usr/lib/node_modules/npmsearch/node_modules/optimist/node_modules/wordwrap
711 silly lockFile 92d860e5-s-optimist-node-modules-wordwrap tar:///usr/lib/node_modules/npmsearch/node_modules/optimist/node_modules/wordwrap
712 silly lockFile d7f12638-n-npm-wordwrap-0-0-2-package-tgz tar:///home/patcon/.npm/wordwrap/0.0.2/package.tgz
713 silly lockFile d7f12638-n-npm-wordwrap-0-0-2-package-tgz tar:///home/patcon/.npm/wordwrap/0.0.2/package.tgz
714 info preinstall wordwrap@0.0.2
715 verbose readDependencies using package.json deps
716 verbose readDependencies using package.json deps
717 silly resolved []
718 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/optimist/node_modules/wordwrap
719 info build /usr/lib/node_modules/npmsearch/node_modules/optimist/node_modules/wordwrap
720 verbose linkStuff [ true,
720 verbose linkStuff '/usr/lib/node_modules',
720 verbose linkStuff false,
720 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/optimist/node_modules' ]
721 info linkStuff wordwrap@0.0.2
722 verbose linkBins wordwrap@0.0.2
723 verbose linkMans wordwrap@0.0.2
724 verbose rebuildBundles wordwrap@0.0.2
725 info install wordwrap@0.0.2
726 info postinstall wordwrap@0.0.2
727 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/optimist
728 info build /usr/lib/node_modules/npmsearch/node_modules/optimist
729 verbose linkStuff [ true,
729 verbose linkStuff '/usr/lib/node_modules',
729 verbose linkStuff false,
729 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules' ]
730 info linkStuff optimist@0.3.7
731 verbose linkBins optimist@0.3.7
732 verbose linkMans optimist@0.3.7
733 verbose rebuildBundles optimist@0.3.7
734 verbose rebuildBundles [ 'wordwrap' ]
735 info install optimist@0.3.7
736 info postinstall optimist@0.3.7
737 http 304 https://registry.npmjs.org/retry/0.6.0
738 silly registry.get cb [ 304,
738 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
738 silly registry.get server: 'Apache',
738 silly registry.get via: '1.1 varnish',
738 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:27 GMT',
738 silly registry.get 'cache-control': 'max-age=1',
738 silly registry.get etag: '"F4Z5W37D5346060NJT8M7BRWS"',
738 silly registry.get 'x-served-by': 'cache-lax1433-LAX',
738 silly registry.get 'x-cache': 'MISS',
738 silly registry.get 'x-cache-hits': '0',
738 silly registry.get 'x-timer': 'S1396207047.697659492,VS0,VE65',
738 silly registry.get vary: 'Accept',
738 silly registry.get 'content-length': '0',
738 silly registry.get 'keep-alive': 'timeout=10, max=49',
738 silly registry.get connection: 'Keep-Alive' } ]
739 verbose etag retry/0.6.0 from cache
740 silly lockFile 874cb068-retry-0-6-0 retry@0.6.0
741 silly lockFile 874cb068-retry-0-6-0 retry@0.6.0
742 http 304 https://registry.npmjs.org/npmlog
743 silly registry.get cb [ 304,
743 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
743 silly registry.get server: 'Apache',
743 silly registry.get via: '1.1 varnish',
743 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:27 GMT',
743 silly registry.get 'cache-control': 'max-age=1',
743 silly registry.get etag: '"C2NQ6F5E3SUHHVN0F88LJX10V"',
743 silly registry.get 'x-served-by': 'cache-lax1424-LAX',
743 silly registry.get 'x-cache': 'HIT',
743 silly registry.get 'x-cache-hits': '1',
743 silly registry.get 'x-timer': 'S1396207047.712605476,VS0,VE80',
743 silly registry.get vary: 'Accept',
743 silly registry.get 'content-length': '0',
743 silly registry.get 'keep-alive': 'timeout=10, max=49',
743 silly registry.get connection: 'Keep-Alive' } ]
744 verbose etag npmlog from cache
745 silly addNameRange number 2 { name: 'npmlog', range: '*', hasData: true }
746 silly addNameRange versions [ 'npmlog',
746 silly addNameRange [ '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6' ] ]
747 verbose addNamed [ 'npmlog', '0.0.6' ]
748 verbose addNamed [ '0.0.6', '0.0.6' ]
749 silly lockFile 54dedc57-npmlog-0-0-6 npmlog@0.0.6
750 verbose lock npmlog@0.0.6 /home/patcon/.npm/54dedc57-npmlog-0-0-6.lock
751 silly lockFile 54dedc57-npmlog-0-0-6 npmlog@0.0.6
752 silly lockFile 54dedc57-npmlog-0-0-6 npmlog@0.0.6
753 silly lockFile 78c38c1f-npmlog npmlog@
754 silly lockFile 78c38c1f-npmlog npmlog@
755 http 304 https://registry.npmjs.org/chownr
756 silly registry.get cb [ 304,
756 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
756 silly registry.get server: 'Apache',
756 silly registry.get via: '1.1 varnish',
756 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:27 GMT',
756 silly registry.get 'cache-control': 'max-age=1',
756 silly registry.get etag: '"8SNB9LMF9RF7EKDJUVP33DIBO"',
756 silly registry.get 'x-served-by': 'cache-lax1424-LAX',
756 silly registry.get 'x-cache': 'MISS',
756 silly registry.get 'x-cache-hits': '0',
756 silly registry.get 'x-timer': 'S1396207047.678789616,VS0,VE163',
756 silly registry.get vary: 'Accept',
756 silly registry.get 'content-length': '0',
756 silly registry.get 'keep-alive': 'timeout=10, max=49',
756 silly registry.get connection: 'Keep-Alive' } ]
757 verbose etag chownr from cache
758 silly addNameRange number 2 { name: 'chownr', range: '>=0.0.0-0 <1.0.0-0', hasData: true }
759 silly addNameRange versions [ 'chownr', [ '0.0.1' ] ]
760 verbose addNamed [ 'chownr', '0.0.1' ]
761 verbose addNamed [ '0.0.1', '0.0.1' ]
762 silly lockFile 638e0996-chownr-0-0-1 chownr@0.0.1
763 verbose lock chownr@0.0.1 /home/patcon/.npm/638e0996-chownr-0-0-1.lock
764 silly lockFile 638e0996-chownr-0-0-1 chownr@0.0.1
765 silly lockFile 638e0996-chownr-0-0-1 chownr@0.0.1
766 silly lockFile 9e95412d-chownr-0 chownr@0
767 silly lockFile 9e95412d-chownr-0 chownr@0
768 http 304 https://registry.npmjs.org/tar.gz
769 silly registry.get cb [ 304,
769 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
769 silly registry.get server: 'Apache',
769 silly registry.get via: '1.1 varnish',
769 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:27 GMT',
769 silly registry.get 'cache-control': 'max-age=1',
769 silly registry.get etag: '"1RXINNHUVGZENN7YS7KWQUBXW"',
769 silly registry.get 'x-served-by': 'cache-lax1433-LAX',
769 silly registry.get 'x-cache': 'MISS',
769 silly registry.get 'x-cache-hits': '0',
769 silly registry.get 'x-timer': 'S1396207047.791561127,VS0,VE76',
769 silly registry.get vary: 'Accept',
769 silly registry.get 'content-length': '0',
769 silly registry.get 'keep-alive': 'timeout=10, max=48',
769 silly registry.get connection: 'Keep-Alive' } ]
770 verbose etag tar.gz from cache
771 silly addNameRange number 2 { name: 'tar.gz', range: '>=0.1.1-0 <0.2.0-0', hasData: true }
772 silly addNameRange versions [ 'tar.gz', [ '0.0.1', '0.1.0', '0.1.1' ] ]
773 verbose addNamed [ 'tar.gz', '0.1.1' ]
774 verbose addNamed [ '0.1.1', '0.1.1' ]
775 silly lockFile e02e20cd-tar-gz-0-1-1 tar.gz@0.1.1
776 verbose lock tar.gz@0.1.1 /home/patcon/.npm/e02e20cd-tar-gz-0-1-1.lock
777 silly lockFile e02e20cd-tar-gz-0-1-1 tar.gz@0.1.1
778 silly lockFile e02e20cd-tar-gz-0-1-1 tar.gz@0.1.1
779 silly lockFile 63840f5a-tar-gz-0-1-1 tar.gz@~0.1.1
780 silly lockFile 63840f5a-tar-gz-0-1-1 tar.gz@~0.1.1
781 silly resolved [ { name: 'tar.gz',
781 silly resolved version: '0.1.1',
781 silly resolved description: 'Native gzip compression and decompression utility for Node.js.',
781 silly resolved keywords:
781 silly resolved [ 'compression',
781 silly resolved 'decompression',
781 silly resolved 'compress',
781 silly resolved 'decompress',
781 silly resolved 'tar',
781 silly resolved 'tape archive',
781 silly resolved 'tape',
781 silly resolved 'archive',
781 silly resolved 'gzip',
781 silly resolved 'gz' ],
781 silly resolved repository: { type: 'git', url: 'http://github.com/cranic/node-tar.gz.git' },
781 silly resolved author: { name: 'Cranic Tecnologia', email: 'contato@cranic.com.br' },
781 silly resolved contributors: [ [Object] ],
781 silly resolved dependencies: { fstream: '0.1.x', tar: '0.1.x', commander: '1.1.x' },
781 silly resolved devDependencies:
781 silly resolved { 'coffee-script': '1.4.x',
781 silly resolved walk: '2.2.x',
781 silly resolved wrench: '1.4.x',
781 silly resolved vows: '0.7.x' },
781 silly resolved main: './lib/targz',
781 silly resolved engines: { node: '>=0.6.0' },
781 silly resolved 'maint.me': true,
781 silly resolved scripts: { prepublish: 'cake build' },
781 silly resolved bin: { targz: './bin/targz' },
781 silly resolved bugs: { url: 'http://github.com/cranic/node-tar.gz/issues' },
781 silly resolved license: 'MIT <http://opensource.org/licenses/MIT>',
781 silly resolved readme: '# **node-tar.gz**\nNative gzip compression and decompression utility for Node.js.\n\n### **Installation**\n\nFor simple installation:\n\n npm install tar.gz\n\nIf you want to use the `targz` command line:\n\n npm intall -g tar.gz\n\n### **Usage**\n\nAt the moment this package can only compress a folder and everything that\nis inside it. To compress something is easy:\n\n var targz = require(\'tar.gz\');\n var compress = new targz().compress(\'/path/to/compress\', \'/path/to/store.tar.gz\', function(err){\n if(err)\n console.log(err);\n\n console.log(\'The compression has ended!\');\n });\n\nWith the same easy you can extract a gziped file:\n\n var targz = require(\'tar.gz\');\n var compress = new targz().extract(\'/path/to/stored.tar.gz\', \'/path/to/extract\', function(err){\n if(err)\n console.log(err);\n\n console.log(\'The extraction has ended!\');\n });\n\nYou can pass some configuration parameters to the constructor before compress:\n\n var targz = require(\'tar.gz\');\n\n var level = 6 //the compression level from 0-9, default: 6\n var memLevel = 6 //the memory allocation level from 1-9, default: 6\n var proprietary = true //to include or not proprietary headers, default: true\n\n var compress = new targz(level, memLevel, proprietary).compress(...)\n\n### **Command line**\n\n $ targz -h\n\n Usage: targz [options]\n\n Options:\n\n -h, --help output usage information\n -V, --version output the version number\n -c, --compress Compress folder to archive\n -x, --extract Extract archive to folder\n -l, --level [n] Compression level from 0-9. Default 6.\n -m, --memory [n] Memory allocation level from 1-9. Default 6.\n -n, --noproprietary Remove proprietary headers.\n\n Examples:\n\n Default compression\n $ targz -c /folder/to/compres /path/to/archive.tar.gz\n\n Extracting some archive\n $ targz -x /path/to/archive.tar.gz /destination/folder\n\n Maximum compression\n $ targz -l 9 -m 9 -c /folder/to/compres /path/to/archive.tar.gz\n\n\n### **TODO**\n\n * Vows.js tests\n * Single file compression\n * Add more todos...\n\n\n### **License (MIT)**\n\nCopyright (C) 2012 Cranic Tecnologia e Informática LTDA\n\nPermission is hereby granted, free of charge, to any person obtaining \na copy of this software and associated documentation files \n(the "Software"), to deal in the Software without restriction, \nincluding without limitation the rights to use, copy, modify, merge, \npublish, distribute, sublicense, and/or sell copies of the Software, \nand to permit persons to whom the Software is furnished to do so, \nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be \nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS \nOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF \nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. \nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY \nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, \nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE \nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.',
781 silly resolved readmeFilename: 'README.md',
781 silly resolved homepage: 'https://github.com/cranic/node-tar.gz',
781 silly resolved _id: 'tar.gz@0.1.1',
781 silly resolved _from: 'tar.gz@~0.1.1' } ]
782 info install tar.gz@0.1.1 into /usr/lib/node_modules/npmsearch/node_modules/sqlite3
783 info installOne tar.gz@0.1.1
784 info /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz unbuild
785 verbose tar unpack /home/patcon/.npm/tar.gz/0.1.1/package.tgz
786 silly lockFile 399c5ea4-ules-sqlite3-node-modules-tar-gz tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz
787 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz /home/patcon/.npm/399c5ea4-ules-sqlite3-node-modules-tar-gz.lock
788 silly lockFile 1219427b-con-npm-tar-gz-0-1-1-package-tgz tar:///home/patcon/.npm/tar.gz/0.1.1/package.tgz
789 verbose lock tar:///home/patcon/.npm/tar.gz/0.1.1/package.tgz /home/patcon/.npm/1219427b-con-npm-tar-gz-0-1-1-package-tgz.lock
790 silly gunzTarPerm modes [ '755', '644' ]
791 silly gunzTarPerm extractEntry package.json
792 silly gunzTarPerm extractEntry .npmignore
793 silly gunzTarPerm extractEntry README.md
794 silly gunzTarPerm extractEntry LICENSE
795 silly gunzTarPerm extractEntry Cakefile
796 silly gunzTarPerm extractEntry bin/targz
797 silly gunzTarPerm extractEntry example/example.js
798 silly gunzTarPerm extractEntry example/example.coffee
799 silly gunzTarPerm extractEntry lib/targz.js
800 silly gunzTarPerm extractEntry src/targz.coffee
801 silly gunzTarPerm extractEntry test/compress/test.txt
802 silly gunzTarPerm extractEntry test/extract/placeholder
803 silly lockFile 399c5ea4-ules-sqlite3-node-modules-tar-gz tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz
804 silly lockFile 399c5ea4-ules-sqlite3-node-modules-tar-gz tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz
805 silly lockFile 1219427b-con-npm-tar-gz-0-1-1-package-tgz tar:///home/patcon/.npm/tar.gz/0.1.1/package.tgz
806 silly lockFile 1219427b-con-npm-tar-gz-0-1-1-package-tgz tar:///home/patcon/.npm/tar.gz/0.1.1/package.tgz
807 info preinstall tar.gz@0.1.1
808 verbose readDependencies using package.json deps
809 verbose readDependencies using package.json deps
810 verbose cache add [ 'fstream@0.1.x', null ]
811 verbose cache add name=undefined spec="fstream@0.1.x" args=["fstream@0.1.x",null]
812 verbose parsed url { protocol: null,
812 verbose parsed url slashes: null,
812 verbose parsed url auth: null,
812 verbose parsed url host: null,
812 verbose parsed url port: null,
812 verbose parsed url hostname: null,
812 verbose parsed url hash: null,
812 verbose parsed url search: null,
812 verbose parsed url query: null,
812 verbose parsed url pathname: 'fstream@0.1.x',
812 verbose parsed url path: 'fstream@0.1.x',
812 verbose parsed url href: 'fstream@0.1.x' }
813 verbose cache add name="fstream" spec="0.1.x" args=["fstream","0.1.x"]
814 verbose parsed url { protocol: null,
814 verbose parsed url slashes: null,
814 verbose parsed url auth: null,
814 verbose parsed url host: null,
814 verbose parsed url port: null,
814 verbose parsed url hostname: null,
814 verbose parsed url hash: null,
814 verbose parsed url search: null,
814 verbose parsed url query: null,
814 verbose parsed url pathname: '0.1.x',
814 verbose parsed url path: '0.1.x',
814 verbose parsed url href: '0.1.x' }
815 verbose addNamed [ 'fstream', '0.1.x' ]
816 verbose addNamed [ null, '>=0.1.0-0 <0.2.0-0' ]
817 silly lockFile 95e94244-fstream-0-1-x fstream@0.1.x
818 verbose lock fstream@0.1.x /home/patcon/.npm/95e94244-fstream-0-1-x.lock
819 verbose cache add [ 'tar@0.1.x', null ]
820 verbose cache add name=undefined spec="tar@0.1.x" args=["tar@0.1.x",null]
821 verbose parsed url { protocol: null,
821 verbose parsed url slashes: null,
821 verbose parsed url auth: null,
821 verbose parsed url host: null,
821 verbose parsed url port: null,
821 verbose parsed url hostname: null,
821 verbose parsed url hash: null,
821 verbose parsed url search: null,
821 verbose parsed url query: null,
821 verbose parsed url pathname: 'tar@0.1.x',
821 verbose parsed url path: 'tar@0.1.x',
821 verbose parsed url href: 'tar@0.1.x' }
822 verbose cache add name="tar" spec="0.1.x" args=["tar","0.1.x"]
823 verbose parsed url { protocol: null,
823 verbose parsed url slashes: null,
823 verbose parsed url auth: null,
823 verbose parsed url host: null,
823 verbose parsed url port: null,
823 verbose parsed url hostname: null,
823 verbose parsed url hash: null,
823 verbose parsed url search: null,
823 verbose parsed url query: null,
823 verbose parsed url pathname: '0.1.x',
823 verbose parsed url path: '0.1.x',
823 verbose parsed url href: '0.1.x' }
824 verbose addNamed [ 'tar', '0.1.x' ]
825 verbose addNamed [ null, '>=0.1.0-0 <0.2.0-0' ]
826 silly lockFile 0a1eb69c-tar-0-1-x tar@0.1.x
827 verbose lock tar@0.1.x /home/patcon/.npm/0a1eb69c-tar-0-1-x.lock
828 verbose cache add [ 'commander@1.1.x', null ]
829 verbose cache add name=undefined spec="commander@1.1.x" args=["commander@1.1.x",null]
830 verbose parsed url { protocol: null,
830 verbose parsed url slashes: null,
830 verbose parsed url auth: null,
830 verbose parsed url host: null,
830 verbose parsed url port: null,
830 verbose parsed url hostname: null,
830 verbose parsed url hash: null,
830 verbose parsed url search: null,
830 verbose parsed url query: null,
830 verbose parsed url pathname: 'commander@1.1.x',
830 verbose parsed url path: 'commander@1.1.x',
830 verbose parsed url href: 'commander@1.1.x' }
831 verbose cache add name="commander" spec="1.1.x" args=["commander","1.1.x"]
832 verbose parsed url { protocol: null,
832 verbose parsed url slashes: null,
832 verbose parsed url auth: null,
832 verbose parsed url host: null,
832 verbose parsed url port: null,
832 verbose parsed url hostname: null,
832 verbose parsed url hash: null,
832 verbose parsed url search: null,
832 verbose parsed url query: null,
832 verbose parsed url pathname: '1.1.x',
832 verbose parsed url path: '1.1.x',
832 verbose parsed url href: '1.1.x' }
833 verbose addNamed [ 'commander', '1.1.x' ]
834 verbose addNamed [ null, '>=1.1.0-0 <1.2.0-0' ]
835 silly lockFile 2ddf9fd4-commander-1-1-x commander@1.1.x
836 verbose lock commander@1.1.x /home/patcon/.npm/2ddf9fd4-commander-1-1-x.lock
837 silly addNameRange { name: 'fstream', range: '>=0.1.0-0 <0.2.0-0', hasData: false }
838 silly addNameRange { name: 'tar', range: '>=0.1.0-0 <0.2.0-0', hasData: false }
839 silly addNameRange { name: 'commander',
839 silly addNameRange range: '>=1.1.0-0 <1.2.0-0',
839 silly addNameRange hasData: false }
840 verbose url raw tar
841 verbose url resolving [ 'https://registry.npmjs.org/', './tar' ]
842 verbose url resolved https://registry.npmjs.org/tar
843 info trying registry request attempt 1 at 12:17:28
844 verbose etag "2N0ML4RUBZBOVA7SRKZR7BVH7"
845 http GET https://registry.npmjs.org/tar
846 verbose url raw commander
847 verbose url resolving [ 'https://registry.npmjs.org/', './commander' ]
848 verbose url resolved https://registry.npmjs.org/commander
849 info trying registry request attempt 1 at 12:17:28
850 verbose etag "6V19R47709EXWT9DNI1Y7QTXX"
851 http GET https://registry.npmjs.org/commander
852 verbose url raw fstream
853 verbose url resolving [ 'https://registry.npmjs.org/', './fstream' ]
854 verbose url resolved https://registry.npmjs.org/fstream
855 info trying registry request attempt 1 at 12:17:28
856 verbose etag "DG9FDFM9LVB26KT333YMSA5TK"
857 http GET https://registry.npmjs.org/fstream
858 http 304 https://registry.npmjs.org/rimraf
859 silly registry.get cb [ 304,
859 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
859 silly registry.get server: 'Apache',
859 silly registry.get via: '1.1 varnish',
859 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:28 GMT',
859 silly registry.get 'cache-control': 'max-age=1',
859 silly registry.get etag: '"B6FRW7Q888ZVY9ZH5MI0G8H2C"',
859 silly registry.get 'x-served-by': 'cache-lax1434-LAX',
859 silly registry.get 'x-cache': 'HIT',
859 silly registry.get 'x-cache-hits': '1',
859 silly registry.get 'x-timer': 'S1396207047.681746483,VS0,VE340',
859 silly registry.get vary: 'Accept',
859 silly registry.get 'content-length': '0',
859 silly registry.get 'keep-alive': 'timeout=10, max=49',
859 silly registry.get connection: 'Keep-Alive' } ]
860 verbose etag rimraf from cache
861 silly addNameRange number 2 { name: 'rimraf', range: '>=2.0.0-0 <3.0.0-0', hasData: true }
862 silly addNameRange versions [ 'rimraf',
862 silly addNameRange [ '1.0.0',
862 silly addNameRange '1.0.1',
862 silly addNameRange '1.0.2',
862 silly addNameRange '1.0.4',
862 silly addNameRange '1.0.5',
862 silly addNameRange '1.0.6',
862 silly addNameRange '1.0.7',
862 silly addNameRange '1.0.8',
862 silly addNameRange '1.0.9',
862 silly addNameRange '2.0.0',
862 silly addNameRange '2.0.1',
862 silly addNameRange '2.0.2',
862 silly addNameRange '2.0.3',
862 silly addNameRange '2.1.0',
862 silly addNameRange '2.1.1',
862 silly addNameRange '2.1.2',
862 silly addNameRange '2.1.3',
862 silly addNameRange '2.1.4',
862 silly addNameRange '2.2.0',
862 silly addNameRange '2.2.1',
862 silly addNameRange '2.2.2',
862 silly addNameRange '2.2.3',
862 silly addNameRange '2.2.4',
862 silly addNameRange '2.2.5',
862 silly addNameRange '2.2.6' ] ]
863 verbose addNamed [ 'rimraf', '2.2.6' ]
864 verbose addNamed [ '2.2.6', '2.2.6' ]
865 silly lockFile b59ed777-rimraf-2-2-6 rimraf@2.2.6
866 verbose lock rimraf@2.2.6 /home/patcon/.npm/b59ed777-rimraf-2-2-6.lock
867 silly lockFile b59ed777-rimraf-2-2-6 rimraf@2.2.6
868 silly lockFile b59ed777-rimraf-2-2-6 rimraf@2.2.6
869 silly lockFile d0efaa60-rimraf-2 rimraf@~2
870 silly lockFile d0efaa60-rimraf-2 rimraf@~2
871 http 304 https://registry.npmjs.org/couch-login
872 silly registry.get cb [ 304,
872 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:27 GMT',
872 silly registry.get server: 'Apache',
872 silly registry.get via: '1.1 varnish',
872 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:27 GMT',
872 silly registry.get 'cache-control': 'max-age=1',
872 silly registry.get etag: '"9W9RKYV4A35DSMIZ8AK9JIECC"',
872 silly registry.get 'x-served-by': 'cache-lax1422-LAX',
872 silly registry.get 'x-cache': 'MISS',
872 silly registry.get 'x-cache-hits': '0',
872 silly registry.get 'x-timer': 'S1396207047.690167665,VS0,VE255',
872 silly registry.get vary: 'Accept',
872 silly registry.get 'content-length': '0',
872 silly registry.get 'keep-alive': 'timeout=10, max=49',
872 silly registry.get connection: 'Keep-Alive' } ]
873 verbose etag couch-login from cache
874 silly addNameRange number 2 { name: 'couch-login',
874 silly addNameRange range: '>=0.1.18-0 <0.2.0-0',
874 silly addNameRange hasData: true }
875 silly addNameRange versions [ 'couch-login',
875 silly addNameRange [ '0.0.1',
875 silly addNameRange '0.0.2',
875 silly addNameRange '0.0.3',
875 silly addNameRange '0.0.4',
875 silly addNameRange '0.0.5',
875 silly addNameRange '0.0.6',
875 silly addNameRange '0.0.7',
875 silly addNameRange '0.1.0',
875 silly addNameRange '0.1.1',
875 silly addNameRange '0.1.2',
875 silly addNameRange '0.1.3',
875 silly addNameRange '0.1.4',
875 silly addNameRange '0.1.5',
875 silly addNameRange '0.1.6',
875 silly addNameRange '0.1.7',
875 silly addNameRange '0.1.8',
875 silly addNameRange '0.1.9',
875 silly addNameRange '0.1.10',
875 silly addNameRange '0.1.11',
875 silly addNameRange '0.1.12',
875 silly addNameRange '0.1.13',
875 silly addNameRange '0.1.14',
875 silly addNameRange '0.1.15',
875 silly addNameRange '0.1.16',
875 silly addNameRange '0.1.17',
875 silly addNameRange '0.1.18',
875 silly addNameRange '0.1.19',
875 silly addNameRange '0.1.20' ] ]
876 verbose addNamed [ 'couch-login', '0.1.20' ]
877 verbose addNamed [ '0.1.20', '0.1.20' ]
878 silly lockFile 858ffc9b-couch-login-0-1-20 couch-login@0.1.20
879 verbose lock couch-login@0.1.20 /home/patcon/.npm/858ffc9b-couch-login-0-1-20.lock
880 silly lockFile 858ffc9b-couch-login-0-1-20 couch-login@0.1.20
881 silly lockFile 858ffc9b-couch-login-0-1-20 couch-login@0.1.20
882 silly lockFile f5738374-couch-login-0-1-18 couch-login@~0.1.18
883 silly lockFile f5738374-couch-login-0-1-18 couch-login@~0.1.18
884 silly resolved [ { name: 'request',
884 silly resolved description: 'Simplified HTTP request client.',
884 silly resolved tags: [ 'http', 'simple', 'util', 'utility' ],
884 silly resolved version: '2.34.0',
884 silly resolved author: { name: 'Mikeal Rogers', email: 'mikeal.rogers@gmail.com' },
884 silly resolved repository: { type: 'git', url: 'http://github.com/mikeal/request.git' },
884 silly resolved bugs: { url: 'http://github.com/mikeal/request/issues' },
884 silly resolved license: 'Apache, Version 2.0',
884 silly resolved engines: [ 'node >= 0.8.0' ],
884 silly resolved main: 'index.js',
884 silly resolved dependencies:
884 silly resolved { qs: '~0.6.0',
884 silly resolved 'json-stringify-safe': '~5.0.0',
884 silly resolved 'forever-agent': '~0.5.0',
884 silly resolved 'node-uuid': '~1.4.0',
884 silly resolved mime: '~1.2.9',
884 silly resolved 'tough-cookie': '>=0.12.0',
884 silly resolved 'form-data': '~0.1.0',
884 silly resolved 'tunnel-agent': '~0.3.0',
884 silly resolved 'http-signature': '~0.10.0',
884 silly resolved 'oauth-sign': '~0.3.0',
884 silly resolved hawk: '~1.0.0',
884 silly resolved 'aws-sign2': '~0.5.0' },
884 silly resolved optionalDependencies:
884 silly resolved { 'tough-cookie': '>=0.12.0',
884 silly resolved 'form-data': '~0.1.0',
884 silly resolved 'tunnel-agent': '~0.3.0',
884 silly resolved 'http-signature': '~0.10.0',
884 silly resolved 'oauth-sign': '~0.3.0',
884 silly resolved hawk: '~1.0.0',
884 silly resolved 'aws-sign2': '~0.5.0' },
884 silly resolved scripts: { test: 'node tests/run.js' },
884 silly resolved readme: '# Request -- Simplified HTTP client\n\n[![NPM](https://nodei.co/npm/request.png)](https://nodei.co/npm/request/)\n\n## Super simple to use\n\nRequest is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default.\n\n```javascript\nvar request = require(\'request\');\nrequest(\'http://www.google.com\', function (error, response, body) {\n if (!error && response.statusCode == 200) {\n console.log(body) // Print the google web page.\n }\n})\n```\n\n## Streaming\n\nYou can stream any response to a file stream.\n\n```javascript\nrequest(\'http://google.com/doodle.png\').pipe(fs.createWriteStream(\'doodle.png\'))\n```\n\nYou can also stream a file to a PUT or POST request. This method will also check the file extension against a mapping of file extensions to content-types (in this case `application/json`) and use the proper `content-type` in the PUT request (if the headers don’t already provide one).\n\n```javascript\nfs.createReadStream(\'file.json\').pipe(request.put(\'http://mysite.com/obj.json\'))\n```\n\nRequest can also `pipe` to itself. When doing so, `content-type` and `content-length` are preserved in the PUT headers.\n\n```javascript\nrequest.get(\'http://google.com/img.png\').pipe(request.put(\'http://mysite.com/img.png\'))\n```\n\nNow let’s get fancy.\n\n```javascript\nhttp.createServer(function (req, resp) {\n if (req.url === \'/doodle.png\') {\n if (req.method === \'PUT\') {\n req.pipe(request.put(\'http://mysite.com/doodle.png\'))\n } else if (req.method === \'GET\' || req.method === \'HEAD\') {\n request.get(\'http://mysite.com/doodle.png\').pipe(resp)\n }\n }\n})\n```\n\nYou can also `pipe()` from `http.ServerRequest` instances, as well as to `http.ServerResponse` instances. The HTTP method, headers, and entity-body data will be sent. Which means that, if you don\'t really care about security, you can do:\n\n```javascript\nhttp.createServer(function (req, resp) {\n if (req.url === \'/doodle.png\') {\n var x = request(\'http://mysite.com/doodle.png\')\n req.pipe(x)\n x.pipe(resp)\n }\n})\n```\n\nAnd since `pipe()` returns the destination stream in ≥ Node 0.5.x you can do one line proxying. :)\n\n```javascript\nreq.pipe(request(\'http://mysite.com/doodle.png\')).pipe(resp)\n```\n\nAlso, none of this new functionality conflicts with requests previous features, it just expands them.\n\n```javascript\nvar r = request.defaults({\'proxy\':\'http://localproxy.com\'})\n\nhttp.createServer(function (req, resp) {\n if (req.url === \'/doodle.png\') {\n r.get(\'http://google.com/doodle.png\').pipe(resp)\n }\n})\n```\n\nYou can still use intermediate proxies, the requests will still follow HTTP forwards, etc.\n\n## UNIX Socket \n\n`request` supports the `unix://` protocol for all requests. The path is assumed to be absolute to the root of the host file system. \n\nHTTP paths are extracted from the supplied URL by testing each level of the full URL against net.connect for a socket response.\n\nThus the following request will GET `/httppath` from the HTTP server listening on `/tmp/unix.socket`\n\n```javascript\nrequest.get(\'unix://tmp/unix.socket/httppath\')\n```\n\n## Forms\n\n`request` supports `application/x-www-form-urlencoded` and `multipart/form-data` form uploads. For `multipart/related` refer to the `multipart` API.\n\nURL-encoded forms are simple.\n\n```javascript\nrequest.post(\'http://service.com/upload\', {form:{key:\'value\'}})\n// or\nrequest.post(\'http://service.com/upload\').form({key:\'value\'})\n```\n\nFor `multipart/form-data` we use the [form-data](https://github.com/felixge/node-form-data) library by [@felixge](https://github.com/felixge). You don’t need to worry about piping the form object or setting the headers, `request` will handle that for you.\n\n```javascript\nvar r = request.post(\'http://service.com/upload\')\nvar form = r.form()\nform.append(\'my_field\', \'my_value\')\nform.append(\'my_buffer\', new Buffer([1, 2, 3]))\nform.append(\'my_file\', fs.createReadStream(path.join(__dirname, \'doodle.png\'))\nform.append(\'remote_file\', request(\'http://google.com/doodle.png\'))\n```\n\n## HTTP Authentication\n\n```javascript\nrequest.get(\'http://some.server.com/\').auth(\'username\', \'password\', false);\n// or\nrequest.get(\'http://some.server.com/\', {\n \'auth\': {\n \'user\': \'username\',\n \'pass\': \'password\',\n \'sendImmediately\': false\n }\n});\n```\n\nIf passed as an option, `auth` should be a hash containing values `user` || `username`, `password` || `pass`, and `sendImmediately` (optional). The method form takes parameters `auth(username, password, sendImmediately)`.\n\n`sendImmediately` defaults to `true`, which causes a basic authentication header to be sent. If `sendImmediately` is `false`, then `request` will retry with a proper authentication header after receiving a `401` response from the server (which must contain a `WWW-Authenticate` header indicating the required authentication method).\n\nDigest authentication is supported, but it only works with `sendImmediately` set to `false`; otherwise `request` will send basic authentication on the initial request, which will probably cause the request to fail.\n\n## OAuth Signing\n\n```javascript\n// Twitter OAuth\nvar qs = require(\'querystring\')\n , oauth =\n { callback: \'http://mysite.com/callback/\'\n , consumer_key: CONSUMER_KEY\n , consumer_secret: CONSUMER_SECRET\n }\n , url = \'https://api.twitter.com/oauth/request_token\'\n ;\nrequest.post({url:url, oauth:oauth}, function (e, r, body) {\n // Ideally, you would take the body in the response\n // and construct a URL that a user clicks on (like a sign in button).\n // The verifier is only available in the response after a user has\n // verified with twitter that they are authorizing your app.\n var access_token = qs.parse(body)\n , oauth =\n { consumer_key: CONSUMER_KEY\n , consumer_secret: CONSUMER_SECRET\n , token: access_token.oauth_token\n , verifier: access_token.oauth_verifier\n }\n , url = \'https://api.twitter.com/oauth/access_token\'\n ;\n request.post({url:url, oauth:oauth}, function (e, r, body) {\n var perm_token = qs.parse(body)\n , oauth =\n { consumer_key: CONSUMER_KEY\n , consumer_secret: CONSUMER_SECRET\n , token: perm_token.oauth_token\n , token_secret: perm_token.oauth_token_secret\n }\n , url = \'https://api.twitter.com/1.1/users/show.json?\'\n , params =\n { screen_name: perm_token.screen_name\n , user_id: perm_token.user_id\n }\n ;\n url += qs.stringify(params)\n request.get({url:url, oauth:oauth, json:true}, function (e, r, user) {\n console.log(user)\n })\n })\n})\n```\n\n### Custom HTTP Headers\n\nHTTP Headers, such as `User-Agent`, can be set in the `options` object.\nIn the example below, we call the github API to find out the number\nof stars and forks for the request repository. This requires a\ncustom `User-Agent` header as well as https.\n\n```javascript\nvar request = require(\'request\');\n\nvar options = {\n\turl: \'https://api.github.com/repos/mikeal/request\',\n\theaders: {\n\t\t\'User-Agent\': \'request\'\n\t}\n};\n\nfunction callback(error, response, body) {\n\tif (!error && response.statusCode == 200) {\n\t\tvar info = JSON.parse(body);\n\t\tconsole.log(info.stargazers_count + " Stars");\n\t\tconsole.log(info.forks_count + " Forks");\n\t}\n}\n\nrequest(options, callback);\n```\n\n### request(options, callback)\n\nThe first argument can be either a `url` or an `options` object. The only required option is `uri`; all others are optional.\n\n* `uri` || `url` - fully qualified uri or a parsed url object from `url.parse()`\n* `qs` - object containing querystring values to be appended to the `uri`\n* `method` - http method (default: `"GET"`)\n* `headers` - http headers (default: `{}`)\n* `body` - entity body for PATCH, POST and PUT requests. Must be a `Buffer` or `String`.\n* `form` - when passed an object, this sets `body` to a querystring representation of value, and adds `Content-type: application/x-www-form-urlencoded; charset=utf-8` header. When passed no options, a `FormData` instance is returned (and is piped to request).\n* `auth` - A hash containing values `user` || `username`, `password` || `pass`, and `sendImmediately` (optional). See documentation above.\n* `json` - sets `body` but to JSON representation of value and adds `Content-type: application/json` header. Additionally, parses the response body as JSON.\n* `multipart` - (experimental) array of objects which contains their own headers and `body` attribute. Sends `multipart/related` request. See example below.\n* `followRedirect` - follow HTTP 3xx responses as redirects (default: `true`)\n* `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects (default: `false`)\n* `maxRedirects` - the maximum number of redirects to follow (default: `10`)\n* `encoding` - Encoding to be used on `setEncoding` of response data. If `null`, the `body` is returned as a `Buffer`.\n* `pool` - A hash object containing the agents for these requests. If omitted, the request will use the global pool (which is set to node\'s default `maxSockets`)\n* `pool.maxSockets` - Integer containing the maximum amount of sockets in the pool.\n* `timeout` - Integer containing the number of milliseconds to wait for a request to respond before aborting the request\n* `proxy` - An HTTP proxy to be used. Supports proxy Auth with Basic Auth, identical to support for the `url` parameter (by embedding the auth info in the `uri`)\n* `oauth` - Options for OAuth HMAC-SHA1 signing. See documentation above.\n* `hawk` - Options for [Hawk signing](https://github.com/hueniverse/hawk). The `credentials` key must contain the necessary signing info, [see hawk docs for details](https://github.com/hueniverse/hawk#usage-example).\n* `strictSSL` - If `true`, requires SSL certificates be valid. **Note:** to use your own certificate authority, you need to specify an agent that was created with that CA as an option.\n* `jar` - If `true`, remember cookies for future use (or define your custom cookie jar; see examples section)\n* `aws` - `object` containing AWS signing information. Should have the properties `key`, `secret`. Also requires the property `bucket`, unless you’re specifying your `bucket` as part of the path, or the request doesn’t use a bucket (i.e. GET Services)\n* `httpSignature` - Options for the [HTTP Signature Scheme](https://github.com/joyent/node-http-signature/blob/master/http_signing.md) using [Joyent\'s library](https://github.com/joyent/node-http-signature). The `keyId` and `key` properties must be specified. See the docs for other options.\n* `localAddress` - Local interface to bind for network connections.\n\n\nThe callback argument gets 3 arguments: \n\n1. An `error` when applicable (usually from [`http.ClientRequest`](http://nodejs.org/api/http.html#http_class_http_clientrequest) object)\n2. An [`http.IncomingMessage`](http://nodejs.org/api/http.html#http_http_incomingmessage) object\n3. The third is the `response` body (`String` or `Buffer`, or JSON object if the `json` option is supplied)\n\n## Convenience methods\n\nThere are also shorthand methods for different HTTP METHODs and some other conveniences.\n\n### request.defaults(options)\n\nThis method returns a wrapper around the normal request API that defaults to whatever options you pass in to it.\n\n### request.put\n\nSame as `request()`, but defaults to `method: "PUT"`.\n\n```javascript\nrequest.put(url)\n```\n\n### request.patch\n\nSame as `request()`, but defaults to `method: "PATCH"`.\n\n```javascript\nrequest.patch(url)\n```\n\n### request.post\n\nSame as `request()`, but defaults to `method: "POST"`.\n\n```javascript\nrequest.post(url)\n```\n\n### request.head\n\nSame as request() but defaults to `method: "HEAD"`.\n\n```javascript\nrequest.head(url)\n```\n\n### request.del\n\nSame as `request()`, but defaults to `method: "DELETE"`.\n\n```javascript\nrequest.del(url)\n```\n\n### request.get\n\nSame as `request()` (for uniformity).\n\n```javascript\nrequest.get(url)\n```\n### request.cookie\n\nFunction that creates a new cookie.\n\n```javascript\nrequest.cookie(\'cookie_string_here\')\n```\n### request.jar\n\nFunction that creates a new cookie jar.\n\n```javascript\nrequest.jar()\n```\n\n\n## Examples:\n\n```javascript\n var request = require(\'request\')\n , rand = Math.floor(Math.random()*100000000).toString()\n ;\n request(\n { method: \'PUT\'\n , uri: \'http://mikeal.iriscouch.com/testjs/\' + rand\n , multipart:\n [ { \'content-type\': \'application/json\'\n , body: JSON.stringify({foo: \'bar\', _attachments: {\'message.txt\': {follows: true, length: 18, \'content_type\': \'text/plain\' }}})\n }\n , { body: \'I am an attachment\' }\n ]\n }\n , function (error, response, body) {\n if(response.statusCode == 201){\n console.log(\'document saved as: http://mikeal.iriscouch.com/testjs/\'+ rand)\n } else {\n console.log(\'error: \'+ response.statusCode)\n console.log(body)\n }\n }\n )\n```\n\nCookies are disabled by default (else, they would be used in subsequent requests). To enable cookies, set `jar` to `true` (either in `defaults` or `options`).\n\n```javascript\nvar request = request.defaults({jar: true})\nrequest(\'http://www.google.com\', function () {\n request(\'http://images.google.com\')\n})\n```\n\nTo use a custom cookie jar (instead `request`’s global cookie jar), set `jar` to an instance of `request.jar()` (either in `defaults` or `options`)\n\n```javascript\nvar j = request.jar()\nvar request = request.defaults({jar:j})\nrequest(\'http://www.google.com\', function () {\n request(\'http://images.google.com\')\n})\n```\n\nOR\n\n```javascript\nvar j = request.jar()\nvar cookie = request.cookie(\'your_cookie_here\')\nj.setCookie(cookie, uri);\nrequest({url: \'http://www.google.com\', jar: j}, function () {\n request(\'http://images.google.com\')\n})\n```\n',
884 silly resolved readmeFilename: 'README.md',
884 silly resolved homepage: 'https://github.com/mikeal/request',
884 silly resolved _id: 'request@2.34.0',
884 silly resolved _from: 'request@2 >=2.25.0' },
884 silly resolved { author:
884 silly resolved { name: 'Isaac Z. Schlueter',
884 silly resolved email: 'i@izs.me',
884 silly resolved url: 'http://blog.izs.me' },
884 silly resolved name: 'graceful-fs',
884 silly resolved description: 'A drop-in replacement for fs, making various improvements.',
884 silly resolved version: '2.0.3',
884 silly resolved repository:
884 silly resolved { type: 'git',
884 silly resolved url: 'git://github.com/isaacs/node-graceful-fs.git' },
884 silly resolved main: 'graceful-fs.js',
884 silly resolved engines: { node: '>=0.4.0' },
884 silly resolved directories: { test: 'test' },
884 silly resolved scripts: { test: 'tap test/*.js' },
884 silly resolved keywords:
884 silly resolved [ 'fs',
884 silly resolved 'module',
884 silly resolved 'reading',
884 silly resolved 'retry',
884 silly resolved 'retries',
884 silly resolved 'queue',
884 silly resolved 'error',
884 silly resolved 'errors',
884 silly resolved 'handling',
884 silly resolved 'EMFILE',
884 silly resolved 'EAGAIN',
884 silly resolved 'EINVAL',
884 silly resolved 'EPERM',
884 silly resolved 'EACCESS' ],
884 silly resolved license: 'BSD',
884 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',
884 silly resolved readmeFilename: 'README.md',
884 silly resolved bugs: { url: 'https://github.com/isaacs/node-graceful-fs/issues' },
884 silly resolved homepage: 'https://github.com/isaacs/node-graceful-fs',
884 silly resolved _id: 'graceful-fs@2.0.3',
884 silly resolved _from: 'graceful-fs@~2.0.0' },
884 silly resolved { name: 'semver',
884 silly resolved version: '2.2.1',
884 silly resolved description: 'The semantic version parser used by npm.',
884 silly resolved main: 'semver.js',
884 silly resolved browser: 'semver.browser.js',
884 silly resolved min: 'semver.min.js',
884 silly resolved scripts: { test: 'tap test/*.js', prepublish: 'make' },
884 silly resolved devDependencies: { tap: '0.x >=0.0.4', 'uglify-js': '~2.3.6' },
884 silly resolved license: 'BSD',
884 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/node-semver.git' },
884 silly resolved bin: { semver: './bin/semver' },
884 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',
884 silly resolved readmeFilename: 'README.md',
884 silly resolved bugs: { url: 'https://github.com/isaacs/node-semver/issues' },
884 silly resolved homepage: 'https://github.com/isaacs/node-semver',
884 silly resolved _id: 'semver@2.2.1',
884 silly resolved _from: 'semver@^2.2.1' },
884 silly resolved { name: 'slide',
884 silly resolved version: '1.1.5',
884 silly resolved author:
884 silly resolved { name: 'Isaac Z. Schlueter',
884 silly resolved email: 'i@izs.me',
884 silly resolved url: 'http://blog.izs.me/' },
884 silly resolved contributors: [ [Object] ],
884 silly resolved description: 'A flow control lib small enough to fit on in a slide presentation. Derived live at Oak.JS',
884 silly resolved main: './lib/slide.js',
884 silly resolved dependencies: {},
884 silly resolved devDependencies: {},
884 silly resolved engines: { node: '*' },
884 silly resolved repository:
884 silly resolved { type: 'git',
884 silly resolved url: 'git://github.com/isaacs/slide-flow-control.git' },
884 silly resolved license: 'ISC',
884 silly resolved readme: '# Controlling Flow: callbacks are easy\n\n## What\'s actually hard?\n\n- Doing a bunch of things in a specific order.\n- Knowing when stuff is done.\n- Handling failures.\n- Breaking up functionality into parts (avoid nested inline callbacks)\n\n\n## Common Mistakes\n\n- Abandoning convention and consistency.\n- Putting all callbacks inline.\n- Using libraries without grokking them.\n- Trying to make async code look sync.\n\n## Define Conventions\n\n- Two kinds of functions: *actors* take action, *callbacks* get results.\n- Essentially the continuation pattern. Resulting code *looks* similar\n to fibers, but is *much* simpler to implement.\n- Node works this way in the lowlevel APIs already, and it\'s very flexible.\n\n## Callbacks\n\n- Simple responders\n- Must always be prepared to handle errors, that\'s why it\'s the first argument.\n- Often inline anonymous, but not always.\n- Can trap and call other callbacks with modified data, or pass errors upwards.\n\n## Actors\n\n- Last argument is a callback.\n- If any error occurs, and can\'t be handled, pass it to the callback and return.\n- Must not throw. Return value ignored.\n- return x ==> return cb(null, x)\n- throw er ==> return cb(er)\n\n```javascript\n// return true if a path is either\n// a symlink or a directory.\nfunction isLinkOrDir (path, cb) {\n fs.lstat(path, function (er, s) {\n if (er) return cb(er)\n return cb(null, s.isDirectory() || s.isSymbolicLink())\n })\n}\n```\n\n# asyncMap\n\n## Usecases\n\n- I have a list of 10 files, and need to read all of them, and then continue when they\'re all done.\n- I have a dozen URLs, and need to fetch them all, and then continue when they\'re all done.\n- I have 4 connected users, and need to send a message to all of them, and then continue when that\'s done.\n- I have a list of n things, and I need to dosomething with all of them, in parallel, and get the results once they\'re all complete.\n\n\n## Solution\n\n```javascript\nvar asyncMap = require("slide").asyncMap\nfunction writeFiles (files, what, cb) {\n asyncMap(files, function (f, cb) {\n fs.writeFile(f, what, cb)\n }, cb)\n}\nwriteFiles([my, file, list], "foo", cb)\n```\n\n# chain\n\n## Usecases\n\n- I have to do a bunch of things, in order. Get db credentials out of a file,\n read the data from the db, write that data to another file.\n- If anything fails, do not continue.\n- I still have to provide an array of functions, which is a lot of boilerplate,\n and a pita if your functions take args like\n\n```javascript\nfunction (cb) {\n blah(a, b, c, cb)\n}\n```\n\n- Results are discarded, which is a bit lame.\n- No way to branch.\n\n## Solution\n\n- reduces boilerplate by converting an array of [fn, args] to an actor\n that takes no arguments (except cb)\n- A bit like Function#bind, but tailored for our use-case.\n- bindActor(obj, "method", a, b, c)\n- bindActor(fn, a, b, c)\n- bindActor(obj, fn, a, b, c)\n- branching, skipping over falsey arguments\n\n```javascript\nchain([\n doThing && [thing, a, b, c]\n, isFoo && [doFoo, "foo"]\n, subChain && [chain, [one, two]]\n], cb)\n```\n\n- tracking results: results are stored in an optional array passed as argument,\n last result is always in results[results.length - 1].\n- treat chain.first and chain.last as placeholders for the first/last\n result up until that point.\n\n\n## Non-trivial example\n\n- Read number files in a directory\n- Add the results together\n- Ping a web service with the result\n- Write the response to a file\n- Delete the number files\n\n```javascript\nvar chain = require("slide").chain\nfunction myProgram (cb) {\n var res = [], last = chain.last, first = chain.first\n chain([\n [fs, "readdir", "the-directory"]\n , [readFiles, "the-directory", last]\n , [sum, last]\n , [ping, "POST", "example.com", 80, "/foo", last]\n , [fs, "writeFile", "result.txt", last]\n , [rmFiles, "./the-directory", first]\n ], res, cb)\n}\n```\n\n# Conclusion: Convention Profits\n\n- Consistent API from top to bottom.\n- Sneak in at any point to inject functionality. Testable, reusable, ...\n- When ruby and python users whine, you can smile condescendingly.\n',
884 silly resolved readmeFilename: 'README.md',
884 silly resolved bugs: { url: 'https://github.com/isaacs/slide-flow-control/issues' },
884 silly resolved homepage: 'https://github.com/isaacs/slide-flow-control',
884 silly resolved _id: 'slide@1.1.5',
884 silly resolved _from: 'slide@~1.1.3' },
884 silly resolved { author:
884 silly resolved { name: 'Tim Koschützki',
884 silly resolved email: 'tim@debuggable.com',
884 silly resolved url: 'http://debuggable.com/' },
884 silly resolved name: 'retry',
884 silly resolved description: 'Abstraction for exponential and custom retry strategies for failed operations.',
884 silly resolved version: '0.6.0',
884 silly resolved homepage: 'https://github.com/tim-kos/node-retry',
884 silly resolved repository: { type: 'git', url: 'git://github.com/felixge/node-retry.git' },
884 silly resolved directories: { lib: './lib' },
884 silly resolved main: 'index',
884 silly resolved engines: { node: '*' },
884 silly resolved dependencies: {},
884 silly resolved devDependencies: { fake: '0.2.0', far: '0.0.1' },
884 silly resolved readme: '# retry\n\nAbstraction for exponential and custom retry strategies for failed operations.\n\n## Installation\n\n npm install retry\n\n## Current Status\n\nThis module has been tested and is ready to be used.\n\n## Tutorial\n\nThe example below will retry a potentially failing `dns.resolve` operation\n`10` times using an exponential backoff strategy. With the default settings, this\nmeans the last attempt is made after `34 minutes and 7 seconds`.\n\n``` javascript\nvar dns = require(\'dns\');\nvar retry = require(\'retry\');\n\nfunction faultTolerantResolve(address, cb) {\n var operation = retry.operation();\n\n operation.attempt(function(currentAttempt) {\n dns.resolve(address, function(err, addresses) {\n if (operation.retry(err)) {\n return;\n }\n\n cb(operation.mainError(), addresses);\n });\n });\n}\n\nfaultTolerantResolve(\'nodejs.org\', function(err, addresses) {\n console.log(err, addresses);\n});\n```\n\nOf course you can also configure the factors that go into the exponential\nbackoff. See the API documentation below for all available settings.\ncurrentAttempt is an int representing the number of attempts so far.\n\n``` javascript\nvar operation = retry.operation({\n retries: 5,\n factor: 3,\n minTimeout: 1 * 1000,\n maxTimeout: 60 * 1000,\n randomize: true,\n});\n```\n\n## API\n\n### retry.operation([options])\n\nCreates a new `RetryOperation` object. See the `retry.timeouts()` function\nbelow for available `options`.\n\n### retry.timeouts([options])\n\nReturns an array of timeouts. All time `options` and return values are in\nmilliseconds. If `options` is an array, a copy of that array is returned.\n\n`options` is a JS object that can contain any of the following keys:\n\n* `retries`: The maximum amount of times to retry the operation. Default is `10`.\n* `factor`: The exponential factor to use. Default is `2`.\n* `minTimeout`: The amount of time before starting the first retry. Default is `1000`.\n* `maxTimeout`: The maximum amount of time between two retries. Default is `Infinity`.\n* `randomize`: Randomizes the timeouts by multiplying with a factor between `1` to `2`. Default is `false`.\n\nThe formula used to calculate the individual timeouts is:\n\n```\nvar Math.min(random * minTimeout * Math.pow(factor, attempt), maxTimeout);\n```\n\nHave a look at [this article][article] for a better explanation of approach.\n\nIf you want to tune your `factor` / `times` settings to attempt the last retry\nafter a certain amount of time, you can use wolfram alpha. For example in order\nto tune for `10` attempts in `5 minutes`, you can use this equation:\n\n![screenshot](https://github.com/tim-kos/node-retry/raw/master/equation.gif)\n\nExplaining the various values from left to right:\n\n* `k = 0 ... 9`: The `retries` value (10)\n* `1000`: The `minTimeout` value in ms (1000)\n* `x^k`: No need to change this, `x` will be your resulting factor\n* `5 * 60 * 1000`: The desired total amount of time for retrying in ms (5 minutes)\n\nTo make this a little easier for you, use wolfram alpha to do the calculations:\n\n[http://www.wolframalpha.com/input/?i=Sum%5B1000*x^k%2C+{k%2C+0%2C+9}%5D+%3D+5+*+60+*+1000]()\n\n[article]: http://dthain.blogspot.com/2009/02/exponential-backoff-in-distributed.html\n\n### new RetryOperation(timeouts)\n\nCreates a new `RetryOperation` where `timeouts` is an array where each value is\na timeout given in milliseconds.\n\n#### retryOperation.errors()\n\nReturns an array of all errors that have been passed to\n`retryOperation.retry()` so far.\n\n#### retryOperation.mainError()\n\nA reference to the error object that occured most frequently. Errors are\ncompared using the `error.message` property.\n\nIf multiple error messages occured the same amount of time, the last error\nobject with that message is returned.\n\nIf no errors occured so far, the value is `null`.\n\n#### retryOperation.attempt(fn, timeoutOps)\n\nDefines the function `fn` that is to be retried and executes it for the first\ntime right away. The `fn` function can receive an optional `currentAttempt` callback that represents the number of attempts to execute `fn` so far.\n\nOptionally defines `timeoutOps` which is an object having a property `timeout` in miliseconds and a property `cb` callback function.\nWhenever your retry operation takes longer than `timeout` to execute, the timeout callback function `cb` is called.\n\n\n#### retryOperation.try(fn)\n\nThis is an alias for `retryOperation.attempt(fn)`. This is deprecated.\n\n#### retryOperation.start(fn)\n\nThis is an alias for `retryOperation.attempt(fn)`. This is deprecated.\n\n#### retryOperation.retry(error)\n\nReturns `false` when no `error` value is given, or the maximum amount of retries\nhas been reached.\n\nOtherwise it returns `true`, and retries the operation after the timeout for\nthe current attempt number.\n\n#### retryOperation.attempts()\n\nReturns an int representing the number of attempts it took to call `fn` before it was successful.\n\n## License\n\nretry is licensed under the MIT license.\n\n\n#Changelog\n\n0.6.0 Introduced optional timeOps parameter for the attempt() function which is an object having a property timeout in miliseconds and a property cb callback function. Whenever your retry operation takes longer than timeout to execute, the timeout callback function cb is called.\n\n0.5.0 Some minor refactorings.\n\n0.4.0 Changed retryOperation.try() to retryOperation.attempt(). Deprecated the aliases start() and try() for it.\n\n0.3.0 Added retryOperation.start() which is an alias for retryOperation.try().\n\n0.2.0 Added attempts() function and parameter to retryOperation.try() representing the number of attempts it took to call fn().\n',
884 silly resolved readmeFilename: 'Readme.md',
884 silly resolved bugs: { url: 'https://github.com/felixge/node-retry/issues' },
884 silly resolved _id: 'retry@0.6.0',
884 silly resolved _from: 'retry@0.6.0' },
884 silly resolved { author:
884 silly resolved { name: 'Isaac Z. Schlueter',
884 silly resolved email: 'i@izs.me',
884 silly resolved url: 'http://blog.izs.me/' },
884 silly resolved name: 'npmlog',
884 silly resolved description: 'logger for npm',
884 silly resolved version: '0.0.6',
884 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/npmlog.git' },
884 silly resolved main: 'log.js',
884 silly resolved scripts: { test: 'tap test/*.js' },
884 silly resolved dependencies: { ansi: '~0.2.1' },
884 silly resolved devDependencies: { tap: '' },
884 silly resolved license: 'BSD',
884 silly resolved readme: '# npmlog\n\nThe logger util that npm uses.\n\nThis logger is very basic. It does the logging for npm. It supports\ncustom levels and colored output.\n\nBy default, logs are written to stderr. If you want to send log messages\nto outputs other than streams, then you can change the `log.stream`\nmember, or you can just listen to the events that it emits, and do\nwhatever you want with them.\n\n# Basic Usage\n\n```\nvar log = require(\'npmlog\')\n\n// additional stuff ---------------------------+\n// message ----------+ |\n// prefix ----+ | |\n// level -+ | | |\n// v v v v\n log.info(\'fyi\', \'I have a kitty cat: %j\', myKittyCat)\n```\n\n## log.level\n\n* {String}\n\nThe level to display logs at. Any logs at or above this level will be\ndisplayed. The special level `silent` will prevent anything from being\ndisplayed ever.\n\n## log.record\n\n* {Array}\n\nAn array of all the log messages that have been entered.\n\n## log.maxRecordSize\n\n* {Number}\n\nThe maximum number of records to keep. If log.record gets bigger than\n10% over this value, then it is sliced down to 90% of this value.\n\nThe reason for the 10% window is so that it doesn\'t have to resize a\nlarge array on every log entry.\n\n## log.prefixStyle\n\n* {Object}\n\nA style object that specifies how prefixes are styled. (See below)\n\n## log.headingStyle\n\n* {Object}\n\nA style object that specifies how the heading is styled. (See below)\n\n## log.heading\n\n* {String} Default: ""\n\nIf set, a heading that is printed at the start of every line.\n\n## log.stream\n\n* {Stream} Default: `process.stderr`\n\nThe stream where output is written.\n\n## log.enableColor()\n\nForce colors to be used on all messages, regardless of the output\nstream.\n\n## log.disableColor()\n\nDisable colors on all messages.\n\n## log.pause()\n\nStop emitting messages to the stream, but do not drop them.\n\n## log.resume()\n\nEmit all buffered messages that were written while paused.\n\n## log.log(level, prefix, message, ...)\n\n* `level` {String} The level to emit the message at\n* `prefix` {String} A string prefix. Set to "" to skip.\n* `message...` Arguments to `util.format`\n\nEmit a log message at the specified level.\n\n## log\\[level](prefix, message, ...)\n\nFor example,\n\n* log.silly(prefix, message, ...)\n* log.verbose(prefix, message, ...)\n* log.info(prefix, message, ...)\n* log.http(prefix, message, ...)\n* log.warn(prefix, message, ...)\n* log.error(prefix, message, ...)\n\nLike `log.log(level, prefix, message, ...)`. In this way, each level is\ngiven a shorthand, so you can do `log.info(prefix, message)`.\n\n## log.addLevel(level, n, style, disp)\n\n* `level` {String} Level indicator\n* `n` {Number} The numeric level\n* `style` {Object} Object with fg, bg, inverse, etc.\n* `disp` {String} Optional replacement for `level` in the output.\n\nSets up a new level with a shorthand function and so forth.\n\nNote that if the number is `Infinity`, then setting the level to that\nwill cause all log messages to be suppressed. If the number is\n`-Infinity`, then the only way to show it is to enable all log messages.\n\n# Events\n\nEvents are all emitted with the message object.\n\n* `log` Emitted for all messages\n* `log.<level>` Emitted for all messages with the `<level>` level.\n* `<prefix>` Messages with prefixes also emit their prefix as an event.\n\n# Style Objects\n\nStyle objects can have the following fields:\n\n* `fg` {String} Color for the foreground text\n* `bg` {String} Color for the background\n* `bold`, `inverse`, `underline` {Boolean} Set the associated property\n* `bell` {Boolean} Make a noise (This is pretty annoying, probably.)\n\n# Message Objects\n\nEvery log event is emitted with a message object, and the `log.record`\nlist contains all of them that have been created. They have the\nfollowing fields:\n\n* `id` {Number}\n* `level` {String}\n* `prefix` {String}\n* `message` {String} Result of `util.format()`\n* `messageRaw` {Array} Arguments to `util.format()`\n',
884 silly resolved readmeFilename: 'README.md',
884 silly resolved bugs: { url: 'https://github.com/isaacs/npmlog/issues' },
884 silly resolved homepage: 'https://github.com/isaacs/npmlog',
884 silly resolved _id: 'npmlog@0.0.6',
884 silly resolved _from: 'npmlog@' },
884 silly resolved { author:
884 silly resolved { name: 'Isaac Z. Schlueter',
884 silly resolved email: 'i@izs.me',
884 silly resolved url: 'http://blog.izs.me/' },
884 silly resolved name: 'chownr',
884 silly resolved description: 'like `chown -R`',
884 silly resolved version: '0.0.1',
884 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/chownr.git' },
884 silly resolved main: 'chownr.js',
884 silly resolved devDependencies: { tap: '0.2', mkdirp: '0.3', rimraf: '' },
884 silly resolved scripts: { test: 'tap test/*.js' },
884 silly resolved license: 'BSD',
884 silly resolved readme: 'Like `chown -R`.\n\nTakes the same arguments as `fs.chown()`\n',
884 silly resolved readmeFilename: 'README.md',
884 silly resolved bugs: { url: 'https://github.com/isaacs/chownr/issues' },
884 silly resolved homepage: 'https://github.com/isaacs/chownr',
884 silly resolved _id: 'chownr@0.0.1',
884 silly resolved _from: 'chownr@0' },
884 silly resolved { name: 'rimraf',
884 silly resolved version: '2.2.6',
884 silly resolved main: 'rimraf.js',
884 silly resolved description: 'A deep deletion module for node (like `rm -rf`)',
884 silly resolved author:
884 silly resolved { name: 'Isaac Z. Schlueter',
884 silly resolved email: 'i@izs.me',
884 silly resolved url: 'http://blog.izs.me/' },
884 silly resolved license:
884 silly resolved { type: 'MIT',
884 silly resolved url: 'https://github.com/isaacs/rimraf/raw/master/LICENSE' },
884 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/rimraf.git' },
884 silly resolved scripts: { test: 'cd test && bash run.sh' },
884 silly resolved bin: { rimraf: './bin.js' },
884 silly resolved contributors: [ [Object], [Object], [Object], [Object], [Object] ],
884 silly resolved readme: '`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* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of\n `opts.maxBusyTries` times before giving up.\n* `ENOENT` - If the file doesn\'t exist, rimraf will return\n successfully, since your desired outcome is already the case.\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\n## mkdirp\n\nIf you need to create a directory recursively, check out\n[mkdirp](https://github.com/substack/node-mkdirp).\n',
884 silly resolved readmeFilename: 'README.md',
884 silly resolved bugs: { url: 'https://github.com/isaacs/rimraf/issues' },
884 silly resolved homepage: 'https://github.com/isaacs/rimraf',
884 silly resolved _id: 'rimraf@2.2.6',
884 silly resolved _from: 'rimraf@~2' },
884 silly resolved { author:
884 silly resolved { name: 'Isaac Z. Schlueter',
884 silly resolved email: 'i@izs.me',
884 silly resolved url: 'http://blog.izs.me/' },
884 silly resolved name: 'couch-login',
884 silly resolved description: 'A module for doing logged-in requests to a couchdb server',
884 silly resolved version: '0.1.20',
884 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/couch-login.git' },
884 silly resolved main: 'couch-login.js',
884 silly resolved scripts: { test: 'tap test/*.js' },
884 silly resolved dependencies: { request: '2 >=2.25.0' },
884 silly resolved devDependencies: { tap: '~0.2.4' },
884 silly resolved license: 'ISC',
884 silly resolved readme: '# couch-login\n\nThis module lets you log into couchdb to get a session token, then make\nrequests using that session. It is basically just a thin wrapper around\n[@mikeal\'s request module](https://github.com/mikeal/request).\n\nThis is handy if you want a user to take actions in a couchdb database\non behalf of a user, without having to store their couchdb username and\npassword anywhere. (You do need to store the AuthSession token\nsomewhere, though.)\n\n## Usage\n\n```javascript\nvar CouchLogin = require(\'couch-login\')\n\n// Nothing about this module is http-server specific of course.\n// You could also use it to do authenticated requests against\n// a couchdb using sessions and storing the token somewhere else.\n\nhttp.createServer(function (req, res) {\n var couch = new CouchLogin(\'http://my-couch.iriscouch.com:5984/\')\n\n // .. look up the token in the user\'s session or whatever ..\n // Look at couch.decorate(req, res) for more on doing that\n // automatically, below.\n\n if (sessionToken) {\n // this user already logged in.\n couch.token = sessionToken\n\n // now we can do things on their behalf, like:\n // 1. View their session info.\n // like doing request.get({ uri: couch + \'/_session\', ... })\n // but with the cookie and whatnot\n\n couch.get(\'/_session\', function (er, resp, data) {\n // er = some kind of communication error.\n // resp = response object from the couchdb request.\n // data = parsed JSON response body.\n if (er || resp.statusCode !== 200) {\n res.statusCode = resp.statusCode || 403\n return res.end(\'Invalid login or something\')\n }\n\n // now we have the session info, we know who this user is.\n // hitting couchdb for this on every request is kinda costly,\n // so maybe you should store the username wherever you\'re storing\n // the sessionToken. RedSess is a good util for this, if you\'re\n // into redis. And if you\'re not into redis, you\'re crazy,\n // because it is awesome.\n\n // now let\'s get the user record.\n // note that this will 404 for anyone other than the user,\n // unless they\'re a server admin.\n couch.get(\'/_users/org.couchdb.user:\' + data.userCtx.name, etc)\n\n // PUTs and DELETEs will also use their session, of course, so\n // your validate_doc_update\'s will see their info in userCtx\n })\n\n } else {\n // don\'t have a sessionToken.\n // get a username and password from the post body or something.\n // maybe redirect to a /login page or something to ask for that.\n var login = { name: name, password: password }\n couch.login(login, function (er, resp, data) {\n // again, er is an error, resp is the response obj, data is the json\n if (er || resp.statusCode !== 200) {\n res.statusCode = resp.statusCode || 403\n return res.end(\'Invalid login or something\')\n }\n\n // the data is something like\n // {"ok":true,"name":"testuser","roles":[]}\n // and couch.token is the token you\'ll need to save somewhere.\n\n // at this point, you can start making authenticated requests to\n // couchdb, or save data in their session, or do whatever it is\n // that you need to do.\n\n res.statusCode = 200\n res.write("Who\'s got two thumbs and just logged you into couch?\\n")\n setTimeout(function () {\n res.end("THIS GUY!")\n }, 500)\n })\n }\n})\n```\n\n## Class: CouchLogin\n### new CouchLogin(couchdbUrl, token)\n\nCreate a new CouchLogin object bound to the couchdb url.\n\nIn addition to these, the `get`, `post`, `put`, and `del` methods all\nproxy to the associated method on [request](https://github.com/mikeal/request).\n\nHowever, as you\'ll note in the example above, only the pathname portion\nof the url is required. Urls will be appended to the couchdb url passed\ninto the constructor.\n\nIf you have to talk to more than one couchdb, then you\'ll need more than\none CouchLogin object, for somewhat obvious reasons.\n\nAll callbacks get called with the following arguments, which are exactly\nidentical to the arguments passed to a `request` callback.\n\n* `er` {Error | null} Set if a communication error happens.\n* `resp` {HTTP Response} The response from the request to couchdb\n* `data` {Object} The parsed JSON data from couch\n\nIf the token is the string "anonymous", then it will not attempt to log\nin before making requests. If the token is not "anonymous", then it\nmust be an object with the appropriate fields.\n\n### couch.token\n\n* {Object}\n\nAn object representing the couchdb session token. (Basically just a\ncookie and a timeout.)\n\nIf the token has already timed out, then setting it will have no effect.\n\n### couch.tokenSet\n\nIf set, this method is called whenever the token is saved.\n\nFor example, you could assign a function to this method to save the\ntoken into a redis session, a cookie, or in some other database.\n\nTakes a callback which should be called when the token is saved.\n\n### couch.tokenGet\n\nIf set, this method is called to look up the token on demand.\n\nThe inverse of couch.tokenSet. Takes a callback which is called with\nthe `cb(er || null, token)`.\n\n### couch.tokenDel\n\nIf set, this method is called to delete the token when it should be\ndiscarded.\n\nRelated to tokenGet and tokenSet. Takes a callback which should be\ncalled when the token is deleted.\n\n### couch.ca\n\n* {String | Array | null}\n\nA certificate authority string (PEM encoded), or an array of CA strings. Only\nrelevant for HTTPS couches, of course.\n\nLeave as `null` to use the default ca settings built into node.\n\n### couch.cert\n\n* {String | null}\n\nA client certificate (PEM encoded) used to support secure access to servers that require client certificate. Only\nrelevant for HTTPS couches, of course.\n\nLeave as `null` when not supporting client certificates.\n\n### couch.key\n\n* {String | null}\n\nA private key string (PEM encoded) used to validate a client certificate. Only\nrelevant for HTTPS couches, of course.\n\nLeave as `null` when not supporting client certificates.\n\n### couch.strictSSL\n\n* {Boolean | null}\n\nWhether or not to be strict about SSL connections. If left as null,\nthen use the default setting in node, which is true in node versions\n0.9.x and above, and false prior to 0.8.x.\n\nOnly relevant for HTTPS couches, of course.\n\n### couch.anonymous()\n\nReturn a new CouchLogin object that points at the same couchdb server,\nbut doesn\'t try to log in before making requests.\n\nThis is handy for situations where the user is not logged in at the\nmoment, but a request needs to be made anyway, and does not require\nauthorization.\n\n### couch.login(auth, callback)\n\n* `auth` {Object} The login details\n * `name` {String}\n * `password` {String}\n* `callback` {Function}\n\nWhen the callback is called, the `couch.token` will already have been\nset (assuming it worked!), so subsequent requests will be done as that\nuser.\n\n### couch.get(path, callback)\n\nGET the supplied path from the couchdb using the credentials on the\ntoken.\n\nFails if the token is invalid or expired.\n\n### couch.del(path, callback)\n\nDELETE the supplied path from the couchdb using the credentials on the\ntoken.\n\nFails if the token is invalid or expired.\n\n### couch.post(path, data, callback)\n\nPOST the data to the supplied path in the couchdb, using the credentials\non the token.\n\nFails if the token is invalid or expired.\n\n### couch.put(path, data, callback)\n\nPUT the data to the supplied path in the couchdb, using the credentials\non the token.\n\nFails if the token is invalid or expired.\n\n### couch.changePass(newAuth, callback)\n\nMust already be logged in. Updates the `_users` document with new salt\nand hash, and re-logs in with the new credentials. Callback is called\nwith the same arguments as login, or the first step of the process that\nfailed.\n\n### couch.signup(userData, callback)\n\nCreate a new user account. The userData must contain at least a `name`\nand `password` field. Any additional data will be copied to the user\nrecord. The `_id`, `name`, `roles`, `type`, `password_sha`, `salt`, and\n`date` fields are generated.\n\nAlso signs in as the newly created user, on successful account creation.\n\n### couch.deleteAccount(name, callback)\n\nDeletes a user account. If not logged in as the user, or a server\nadmin, then the request will fail.\n\nNote that this immediately invalidates any session tokens for the\ndeleted user account. If you are deleting the user\'s record, then you\nought to follow this with `couch.logout(callback)` so that it won\'t try\nto re-use the invalid session.\n\n### couch.logout(callback)\n\nDelete the session out of couchdb. This makes the token permanently\ninvalid, and deletes it.\n\n### couch.decorate(req, res)\n\nSet up `req.couch` and `res.couch` as references to this couch login\ninstance.\n\nAdditionall, if `req.session` or `res.session` is set, then it\'ll call\n`session.get(\'couch_token\', cb)` as the tokenGet method,\n`session.set(\'couch_token\', token, cb)` as the tokenSet method, and\n`session.del(\'couch_token\', cb)` as the tokenDel method.\n\nThis works really nice with\n[RedSess](https://github.com/isaacs/redsess).\n',
884 silly resolved readmeFilename: 'README.md',
884 silly resolved bugs: { url: 'https://github.com/isaacs/couch-login/issues' },
884 silly resolved homepage: 'https://github.com/isaacs/couch-login',
884 silly resolved _id: 'couch-login@0.1.20',
884 silly resolved _from: 'couch-login@~0.1.18' } ]
885 info install request@2.34.0 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client
886 info install graceful-fs@2.0.3 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client
887 info install semver@2.2.1 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client
888 info install slide@1.1.5 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client
889 info install retry@0.6.0 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client
890 info install npmlog@0.0.6 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client
891 info install chownr@0.0.1 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client
892 info install rimraf@2.2.6 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client
893 info install couch-login@0.1.20 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client
894 info installOne request@2.34.0
895 info installOne graceful-fs@2.0.3
896 info installOne semver@2.2.1
897 info installOne slide@1.1.5
898 info installOne retry@0.6.0
899 info installOne npmlog@0.0.6
900 info installOne chownr@0.0.1
901 info installOne rimraf@2.2.6
902 info installOne couch-login@0.1.20
903 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request unbuild
904 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/graceful-fs unbuild
905 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/semver unbuild
906 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/slide unbuild
907 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/retry unbuild
908 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog unbuild
909 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/chownr unbuild
910 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/rimraf unbuild
911 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/couch-login unbuild
912 verbose tar unpack /home/patcon/.npm/request/2.34.0/package.tgz
913 silly lockFile 6b0661d2-stry-client-node-modules-request tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
914 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request /home/patcon/.npm/6b0661d2-stry-client-node-modules-request.lock
915 silly lockFile 3651e815-n-npm-request-2-34-0-package-tgz tar:///home/patcon/.npm/request/2.34.0/package.tgz
916 verbose lock tar:///home/patcon/.npm/request/2.34.0/package.tgz /home/patcon/.npm/3651e815-n-npm-request-2-34-0-package-tgz.lock
917 verbose tar unpack /home/patcon/.npm/graceful-fs/2.0.3/package.tgz
918 silly lockFile e195055d--client-node-modules-graceful-fs tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/graceful-fs
919 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/graceful-fs /home/patcon/.npm/e195055d--client-node-modules-graceful-fs.lock
920 silly lockFile ed059107-pm-graceful-fs-2-0-3-package-tgz tar:///home/patcon/.npm/graceful-fs/2.0.3/package.tgz
921 verbose lock tar:///home/patcon/.npm/graceful-fs/2.0.3/package.tgz /home/patcon/.npm/ed059107-pm-graceful-fs-2-0-3-package-tgz.lock
922 verbose tar unpack /home/patcon/.npm/semver/2.2.1/package.tgz
923 silly lockFile 2960416a-istry-client-node-modules-semver tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/semver
924 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/semver /home/patcon/.npm/2960416a-istry-client-node-modules-semver.lock
925 silly lockFile 528936ae-con-npm-semver-2-2-1-package-tgz tar:///home/patcon/.npm/semver/2.2.1/package.tgz
926 verbose lock tar:///home/patcon/.npm/semver/2.2.1/package.tgz /home/patcon/.npm/528936ae-con-npm-semver-2-2-1-package-tgz.lock
927 verbose tar unpack /home/patcon/.npm/slide/1.1.5/package.tgz
928 silly lockFile 9ed7fa10-gistry-client-node-modules-slide tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/slide
929 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/slide /home/patcon/.npm/9ed7fa10-gistry-client-node-modules-slide.lock
930 silly lockFile b3c5abff-tcon-npm-slide-1-1-5-package-tgz tar:///home/patcon/.npm/slide/1.1.5/package.tgz
931 verbose lock tar:///home/patcon/.npm/slide/1.1.5/package.tgz /home/patcon/.npm/b3c5abff-tcon-npm-slide-1-1-5-package-tgz.lock
932 verbose tar unpack /home/patcon/.npm/retry/0.6.0/package.tgz
933 silly lockFile efb00781-gistry-client-node-modules-retry tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/retry
934 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/retry /home/patcon/.npm/efb00781-gistry-client-node-modules-retry.lock
935 silly lockFile 2f753dbd-tcon-npm-retry-0-6-0-package-tgz tar:///home/patcon/.npm/retry/0.6.0/package.tgz
936 verbose lock tar:///home/patcon/.npm/retry/0.6.0/package.tgz /home/patcon/.npm/2f753dbd-tcon-npm-retry-0-6-0-package-tgz.lock
937 verbose tar unpack /home/patcon/.npm/npmlog/0.0.6/package.tgz
938 silly lockFile 18521a9b-istry-client-node-modules-npmlog tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog
939 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog /home/patcon/.npm/18521a9b-istry-client-node-modules-npmlog.lock
940 silly lockFile f81f7204-con-npm-npmlog-0-0-6-package-tgz tar:///home/patcon/.npm/npmlog/0.0.6/package.tgz
941 verbose lock tar:///home/patcon/.npm/npmlog/0.0.6/package.tgz /home/patcon/.npm/f81f7204-con-npm-npmlog-0-0-6-package-tgz.lock
942 verbose tar unpack /home/patcon/.npm/chownr/0.0.1/package.tgz
943 silly lockFile c999a8c3-istry-client-node-modules-chownr tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/chownr
944 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/chownr /home/patcon/.npm/c999a8c3-istry-client-node-modules-chownr.lock
945 silly lockFile 8e7baaf5-con-npm-chownr-0-0-1-package-tgz tar:///home/patcon/.npm/chownr/0.0.1/package.tgz
946 verbose lock tar:///home/patcon/.npm/chownr/0.0.1/package.tgz /home/patcon/.npm/8e7baaf5-con-npm-chownr-0-0-1-package-tgz.lock
947 verbose tar unpack /home/patcon/.npm/rimraf/2.2.6/package.tgz
948 silly lockFile 1685ef56-istry-client-node-modules-rimraf tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/rimraf
949 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/rimraf /home/patcon/.npm/1685ef56-istry-client-node-modules-rimraf.lock
950 silly lockFile b077a4d5-con-npm-rimraf-2-2-6-package-tgz tar:///home/patcon/.npm/rimraf/2.2.6/package.tgz
951 verbose lock tar:///home/patcon/.npm/rimraf/2.2.6/package.tgz /home/patcon/.npm/b077a4d5-con-npm-rimraf-2-2-6-package-tgz.lock
952 verbose tar unpack /home/patcon/.npm/couch-login/0.1.20/package.tgz
953 silly lockFile 9a9e6378--client-node-modules-couch-login tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/couch-login
954 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/couch-login /home/patcon/.npm/9a9e6378--client-node-modules-couch-login.lock
955 silly lockFile d627fe25-m-couch-login-0-1-20-package-tgz tar:///home/patcon/.npm/couch-login/0.1.20/package.tgz
956 verbose lock tar:///home/patcon/.npm/couch-login/0.1.20/package.tgz /home/patcon/.npm/d627fe25-m-couch-login-0-1-20-package-tgz.lock
957 silly gunzTarPerm modes [ '755', '644' ]
958 silly gunzTarPerm modes [ '755', '644' ]
959 silly gunzTarPerm modes [ '755', '644' ]
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 extractEntry package.json
967 silly gunzTarPerm extractEntry package.json
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 .npmignore
976 silly gunzTarPerm extractEntry README.md
977 silly gunzTarPerm extractEntry .npmignore
978 silly gunzTarPerm extractEntry README.md
979 silly gunzTarPerm extractEntry .npmignore
980 silly gunzTarPerm extractEntry README.md
981 silly gunzTarPerm extractEntry README.md
982 silly gunzTarPerm extractEntry LICENSE
983 silly gunzTarPerm extractEntry .npmignore
984 silly gunzTarPerm extractEntry index.js
985 silly gunzTarPerm extractEntry README.md
986 silly gunzTarPerm extractEntry LICENSE
987 silly gunzTarPerm extractEntry README.md
988 silly gunzTarPerm extractEntry LICENCE
989 silly gunzTarPerm extractEntry README.md
990 silly gunzTarPerm extractEntry LICENSE
991 silly gunzTarPerm extractEntry .npmignore
992 silly gunzTarPerm extractEntry README.md
993 silly gunzTarPerm extractEntry LICENSE
994 silly gunzTarPerm extractEntry LICENSE
995 silly gunzTarPerm extractEntry semver.browser.js
996 silly gunzTarPerm extractEntry example.js
997 silly gunzTarPerm extractEntry log.js
998 silly gunzTarPerm extractEntry chownr.js
999 silly gunzTarPerm extractEntry test/basic.js
1000 silly gunzTarPerm extractEntry bin.js
1001 silly gunzTarPerm extractEntry rimraf.js
1002 silly gunzTarPerm extractEntry LICENSE
1003 silly gunzTarPerm extractEntry couch-login.js
1004 silly gunzTarPerm extractEntry LICENSE
1005 silly gunzTarPerm extractEntry graceful-fs.js
1006 silly gunzTarPerm extractEntry index.js
1007 silly gunzTarPerm extractEntry lib/async-map-ordered.js
1008 silly gunzTarPerm extractEntry License
1009 silly gunzTarPerm extractEntry Makefile
1010 silly gunzTarPerm extractEntry dns-request.js
1011 silly gunzTarPerm extractEntry index.js
1012 silly gunzTarPerm extractEntry foot.js
1013 silly gunzTarPerm extractEntry test/sync.js
1014 silly gunzTarPerm extractEntry test/00-setup.js
1015 silly gunzTarPerm extractEntry polyfills.js
1016 silly gunzTarPerm extractEntry test/open.js
1017 silly gunzTarPerm extractEntry test/readdir-sort.js
1018 silly gunzTarPerm extractEntry Readme.md
1019 silly gunzTarPerm extractEntry equation.gif
1020 silly gunzTarPerm extractEntry AUTHORS
1021 silly gunzTarPerm extractEntry test/test-async.js
1022 silly gunzTarPerm extractEntry test/basic.js
1023 silly gunzTarPerm extractEntry lib/async-map.js
1024 silly gunzTarPerm extractEntry lib/bind-actor.js
1025 silly gunzTarPerm extractEntry example/dns.js
1026 silly gunzTarPerm extractEntry lib/retry.js
1027 silly gunzTarPerm extractEntry lib/retry_operation.js
1028 silly gunzTarPerm extractEntry test/common.js
1029 silly gunzTarPerm extractEntry test/runner.js
1030 silly gunzTarPerm extractEntry test/integration/test-retry-operation.js
1031 silly gunzTarPerm extractEntry test/integration/test-timeouts.js
1032 silly gunzTarPerm extractEntry test/test-sync.js
1033 silly gunzTarPerm extractEntry test/run.sh
1034 silly gunzTarPerm extractEntry lib/chain.js
1035 silly gunzTarPerm extractEntry lib/slide.js
1036 silly gunzTarPerm extractEntry head.js
1037 silly gunzTarPerm extractEntry semver.js
1038 silly gunzTarPerm extractEntry test/setup.sh
1039 silly gunzTarPerm extractEntry test/basic.js
1040 silly gunzTarPerm extractEntry test/registry.js
1041 silly gunzTarPerm extractEntry semver.min.js
1042 silly gunzTarPerm extractEntry semver.browser.js.gz
1043 silly gunzTarPerm extractEntry request.js
1044 silly gunzTarPerm extractEntry .travis.yml
1045 silly gunzTarPerm extractEntry test/reset-then-signup.js
1046 silly gunzTarPerm extractEntry test/zz-teardown.js
1047 silly lockFile c999a8c3-istry-client-node-modules-chownr tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/chownr
1048 silly lockFile c999a8c3-istry-client-node-modules-chownr tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/chownr
1049 silly lockFile 8e7baaf5-con-npm-chownr-0-0-1-package-tgz tar:///home/patcon/.npm/chownr/0.0.1/package.tgz
1050 silly lockFile 8e7baaf5-con-npm-chownr-0-0-1-package-tgz tar:///home/patcon/.npm/chownr/0.0.1/package.tgz
1051 info preinstall chownr@0.0.1
1052 silly gunzTarPerm extractEntry lib/cookies.js
1053 silly gunzTarPerm extractEntry lib/copy.js
1054 verbose readDependencies using package.json deps
1055 silly gunzTarPerm extractEntry test/fixtures/_replicator.couch
1056 silly gunzTarPerm extractEntry test/fixtures/couch.ini
1057 verbose readDependencies using package.json deps
1058 silly resolved []
1059 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/chownr
1060 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/chownr
1061 verbose linkStuff [ true,
1061 verbose linkStuff '/usr/lib/node_modules',
1061 verbose linkStuff false,
1061 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules' ]
1062 info linkStuff chownr@0.0.1
1063 verbose linkBins chownr@0.0.1
1064 verbose linkMans chownr@0.0.1
1065 verbose rebuildBundles chownr@0.0.1
1066 info install chownr@0.0.1
1067 info postinstall chownr@0.0.1
1068 silly gunzTarPerm extractEntry lib/debug.js
1069 silly gunzTarPerm extractEntry lib/getSafe.js
1070 silly gunzTarPerm extractEntry test/fixtures/registry.couch
1071 silly lockFile 18521a9b-istry-client-node-modules-npmlog tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog
1072 silly lockFile 18521a9b-istry-client-node-modules-npmlog tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog
1073 silly lockFile e195055d--client-node-modules-graceful-fs tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/graceful-fs
1074 silly lockFile e195055d--client-node-modules-graceful-fs tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/graceful-fs
1075 silly lockFile f81f7204-con-npm-npmlog-0-0-6-package-tgz tar:///home/patcon/.npm/npmlog/0.0.6/package.tgz
1076 silly lockFile f81f7204-con-npm-npmlog-0-0-6-package-tgz tar:///home/patcon/.npm/npmlog/0.0.6/package.tgz
1077 silly lockFile ed059107-pm-graceful-fs-2-0-3-package-tgz tar:///home/patcon/.npm/graceful-fs/2.0.3/package.tgz
1078 silly lockFile ed059107-pm-graceful-fs-2-0-3-package-tgz tar:///home/patcon/.npm/graceful-fs/2.0.3/package.tgz
1079 silly lockFile 9ed7fa10-gistry-client-node-modules-slide tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/slide
1080 silly lockFile 9ed7fa10-gistry-client-node-modules-slide tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/slide
1081 silly lockFile b3c5abff-tcon-npm-slide-1-1-5-package-tgz tar:///home/patcon/.npm/slide/1.1.5/package.tgz
1082 silly lockFile b3c5abff-tcon-npm-slide-1-1-5-package-tgz tar:///home/patcon/.npm/slide/1.1.5/package.tgz
1083 silly gunzTarPerm extractEntry lib/optional.js
1084 info preinstall npmlog@0.0.6
1085 info preinstall graceful-fs@2.0.3
1086 info preinstall slide@1.1.5
1087 verbose readDependencies using package.json deps
1088 silly lockFile 1685ef56-istry-client-node-modules-rimraf tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/rimraf
1089 silly lockFile 1685ef56-istry-client-node-modules-rimraf tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/rimraf
1090 verbose readDependencies using package.json deps
1091 silly gunzTarPerm extractEntry Makefile
1092 silly gunzTarPerm extractEntry bin/semver
1093 verbose readDependencies using package.json deps
1094 silly lockFile b077a4d5-con-npm-rimraf-2-2-6-package-tgz tar:///home/patcon/.npm/rimraf/2.2.6/package.tgz
1095 silly lockFile b077a4d5-con-npm-rimraf-2-2-6-package-tgz tar:///home/patcon/.npm/rimraf/2.2.6/package.tgz
1096 verbose readDependencies using package.json deps
1097 silly resolved []
1098 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/graceful-fs
1099 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/graceful-fs
1100 verbose linkStuff [ true,
1100 verbose linkStuff '/usr/lib/node_modules',
1100 verbose linkStuff false,
1100 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules' ]
1101 info linkStuff graceful-fs@2.0.3
1102 verbose linkBins graceful-fs@2.0.3
1103 verbose linkMans graceful-fs@2.0.3
1104 verbose rebuildBundles graceful-fs@2.0.3
1105 verbose readDependencies using package.json deps
1106 info install graceful-fs@2.0.3
1107 verbose readDependencies using package.json deps
1108 silly resolved []
1109 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/slide
1110 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/slide
1111 verbose linkStuff [ true,
1111 verbose linkStuff '/usr/lib/node_modules',
1111 verbose linkStuff false,
1111 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules' ]
1112 info linkStuff slide@1.1.5
1113 verbose linkBins slide@1.1.5
1114 verbose linkMans slide@1.1.5
1115 verbose rebuildBundles slide@1.1.5
1116 verbose cache add [ 'ansi@~0.2.1', null ]
1117 verbose cache add name=undefined spec="ansi@~0.2.1" args=["ansi@~0.2.1",null]
1118 verbose parsed url { protocol: null,
1118 verbose parsed url slashes: null,
1118 verbose parsed url auth: null,
1118 verbose parsed url host: null,
1118 verbose parsed url port: null,
1118 verbose parsed url hostname: null,
1118 verbose parsed url hash: null,
1118 verbose parsed url search: null,
1118 verbose parsed url query: null,
1118 verbose parsed url pathname: 'ansi@~0.2.1',
1118 verbose parsed url path: 'ansi@~0.2.1',
1118 verbose parsed url href: 'ansi@~0.2.1' }
1119 verbose cache add name="ansi" spec="~0.2.1" args=["ansi","~0.2.1"]
1120 verbose parsed url { protocol: null,
1120 verbose parsed url slashes: null,
1120 verbose parsed url auth: null,
1120 verbose parsed url host: null,
1120 verbose parsed url port: null,
1120 verbose parsed url hostname: null,
1120 verbose parsed url hash: null,
1120 verbose parsed url search: null,
1120 verbose parsed url query: null,
1120 verbose parsed url pathname: '~0.2.1',
1120 verbose parsed url path: '~0.2.1',
1120 verbose parsed url href: '~0.2.1' }
1121 verbose addNamed [ 'ansi', '~0.2.1' ]
1122 verbose addNamed [ null, '>=0.2.1-0 <0.3.0-0' ]
1123 silly lockFile 36148370-ansi-0-2-1 ansi@~0.2.1
1124 verbose lock ansi@~0.2.1 /home/patcon/.npm/36148370-ansi-0-2-1.lock
1125 info install slide@1.1.5
1126 info postinstall graceful-fs@2.0.3
1127 info preinstall rimraf@2.2.6
1128 silly addNameRange { name: 'ansi', range: '>=0.2.1-0 <0.3.0-0', hasData: false }
1129 info postinstall slide@1.1.5
1130 verbose readDependencies using package.json deps
1131 silly gunzTarPerm extractEntry semver.min.js.gz
1132 silly gunzTarPerm extractEntry test/amd.js
1133 verbose readDependencies using package.json deps
1134 silly resolved []
1135 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/rimraf
1136 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/rimraf
1137 verbose linkStuff [ true,
1137 verbose linkStuff '/usr/lib/node_modules',
1137 verbose linkStuff false,
1137 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules' ]
1138 info linkStuff rimraf@2.2.6
1139 verbose linkBins rimraf@2.2.6
1140 verbose link bins [ { rimraf: './bin.js' },
1140 verbose link bins '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/.bin',
1140 verbose link bins false ]
1141 verbose linkMans rimraf@2.2.6
1142 verbose rebuildBundles rimraf@2.2.6
1143 verbose url raw ansi
1144 verbose url resolving [ 'https://registry.npmjs.org/', './ansi' ]
1145 verbose url resolved https://registry.npmjs.org/ansi
1146 info trying registry request attempt 1 at 12:17:28
1147 verbose etag "2HBRB10XV3ZN7VK8SVBZYVD9J"
1148 http GET https://registry.npmjs.org/ansi
1149 info install rimraf@2.2.6
1150 silly gunzTarPerm extractEntry test/gtr.js
1151 silly gunzTarPerm extractEntry test/index.js
1152 info postinstall rimraf@2.2.6
1153 silly lockFile efb00781-gistry-client-node-modules-retry tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/retry
1154 silly lockFile efb00781-gistry-client-node-modules-retry tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/retry
1155 silly lockFile 2f753dbd-tcon-npm-retry-0-6-0-package-tgz tar:///home/patcon/.npm/retry/0.6.0/package.tgz
1156 silly lockFile 2f753dbd-tcon-npm-retry-0-6-0-package-tgz tar:///home/patcon/.npm/retry/0.6.0/package.tgz
1157 info preinstall retry@0.6.0
1158 verbose readDependencies using package.json deps
1159 verbose readDependencies using package.json deps
1160 silly resolved []
1161 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/retry
1162 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/retry
1163 verbose linkStuff [ true,
1163 verbose linkStuff '/usr/lib/node_modules',
1163 verbose linkStuff false,
1163 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules' ]
1164 info linkStuff retry@0.6.0
1165 verbose linkBins retry@0.6.0
1166 verbose linkMans retry@0.6.0
1167 verbose rebuildBundles retry@0.6.0
1168 info install retry@0.6.0
1169 info postinstall retry@0.6.0
1170 silly gunzTarPerm extractEntry test/ltr.js
1171 silly gunzTarPerm extractEntry test/no-module.js
1172 silly lockFile 9a9e6378--client-node-modules-couch-login tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/couch-login
1173 silly lockFile 9a9e6378--client-node-modules-couch-login tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/couch-login
1174 silly lockFile d627fe25-m-couch-login-0-1-20-package-tgz tar:///home/patcon/.npm/couch-login/0.1.20/package.tgz
1175 silly lockFile d627fe25-m-couch-login-0-1-20-package-tgz tar:///home/patcon/.npm/couch-login/0.1.20/package.tgz
1176 silly lockFile 6b0661d2-stry-client-node-modules-request tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
1177 silly lockFile 6b0661d2-stry-client-node-modules-request tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
1178 silly lockFile 3651e815-n-npm-request-2-34-0-package-tgz tar:///home/patcon/.npm/request/2.34.0/package.tgz
1179 silly lockFile 3651e815-n-npm-request-2-34-0-package-tgz tar:///home/patcon/.npm/request/2.34.0/package.tgz
1180 info preinstall couch-login@0.1.20
1181 info preinstall request@2.34.0
1182 verbose readDependencies using package.json deps
1183 verbose readDependencies using package.json deps
1184 silly resolved []
1185 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/couch-login
1186 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/couch-login
1187 verbose linkStuff [ true,
1187 verbose linkStuff '/usr/lib/node_modules',
1187 verbose linkStuff false,
1187 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules' ]
1188 info linkStuff couch-login@0.1.20
1189 verbose linkBins couch-login@0.1.20
1190 verbose linkMans couch-login@0.1.20
1191 verbose rebuildBundles couch-login@0.1.20
1192 info install couch-login@0.1.20
1193 verbose readDependencies using package.json deps
1194 verbose readDependencies using package.json deps
1195 info postinstall couch-login@0.1.20
1196 verbose cache add [ 'qs@~0.6.0', null ]
1197 verbose cache add name=undefined spec="qs@~0.6.0" args=["qs@~0.6.0",null]
1198 verbose parsed url { protocol: null,
1198 verbose parsed url slashes: null,
1198 verbose parsed url auth: null,
1198 verbose parsed url host: null,
1198 verbose parsed url port: null,
1198 verbose parsed url hostname: null,
1198 verbose parsed url hash: null,
1198 verbose parsed url search: null,
1198 verbose parsed url query: null,
1198 verbose parsed url pathname: 'qs@~0.6.0',
1198 verbose parsed url path: 'qs@~0.6.0',
1198 verbose parsed url href: 'qs@~0.6.0' }
1199 verbose cache add name="qs" spec="~0.6.0" args=["qs","~0.6.0"]
1200 verbose parsed url { protocol: null,
1200 verbose parsed url slashes: null,
1200 verbose parsed url auth: null,
1200 verbose parsed url host: null,
1200 verbose parsed url port: null,
1200 verbose parsed url hostname: null,
1200 verbose parsed url hash: null,
1200 verbose parsed url search: null,
1200 verbose parsed url query: null,
1200 verbose parsed url pathname: '~0.6.0',
1200 verbose parsed url path: '~0.6.0',
1200 verbose parsed url href: '~0.6.0' }
1201 verbose addNamed [ 'qs', '~0.6.0' ]
1202 verbose addNamed [ null, '>=0.6.0-0 <0.7.0-0' ]
1203 silly lockFile 222bee9e-qs-0-6-0 qs@~0.6.0
1204 verbose lock qs@~0.6.0 /home/patcon/.npm/222bee9e-qs-0-6-0.lock
1205 verbose cache add [ 'json-stringify-safe@~5.0.0', null ]
1206 verbose cache add name=undefined spec="json-stringify-safe@~5.0.0" args=["json-stringify-safe@~5.0.0",null]
1207 verbose parsed url { protocol: null,
1207 verbose parsed url slashes: null,
1207 verbose parsed url auth: null,
1207 verbose parsed url host: null,
1207 verbose parsed url port: null,
1207 verbose parsed url hostname: null,
1207 verbose parsed url hash: null,
1207 verbose parsed url search: null,
1207 verbose parsed url query: null,
1207 verbose parsed url pathname: 'json-stringify-safe@~5.0.0',
1207 verbose parsed url path: 'json-stringify-safe@~5.0.0',
1207 verbose parsed url href: 'json-stringify-safe@~5.0.0' }
1208 verbose cache add name="json-stringify-safe" spec="~5.0.0" args=["json-stringify-safe","~5.0.0"]
1209 verbose parsed url { protocol: null,
1209 verbose parsed url slashes: null,
1209 verbose parsed url auth: null,
1209 verbose parsed url host: null,
1209 verbose parsed url port: null,
1209 verbose parsed url hostname: null,
1209 verbose parsed url hash: null,
1209 verbose parsed url search: null,
1209 verbose parsed url query: null,
1209 verbose parsed url pathname: '~5.0.0',
1209 verbose parsed url path: '~5.0.0',
1209 verbose parsed url href: '~5.0.0' }
1210 verbose addNamed [ 'json-stringify-safe', '~5.0.0' ]
1211 verbose addNamed [ null, '>=5.0.0-0 <5.1.0-0' ]
1212 silly lockFile 063b1a01-json-stringify-safe-5-0-0 json-stringify-safe@~5.0.0
1213 verbose lock json-stringify-safe@~5.0.0 /home/patcon/.npm/063b1a01-json-stringify-safe-5-0-0.lock
1214 verbose cache add [ 'node-uuid@~1.4.0', null ]
1215 verbose cache add name=undefined spec="node-uuid@~1.4.0" args=["node-uuid@~1.4.0",null]
1216 verbose parsed url { protocol: null,
1216 verbose parsed url slashes: null,
1216 verbose parsed url auth: null,
1216 verbose parsed url host: null,
1216 verbose parsed url port: null,
1216 verbose parsed url hostname: null,
1216 verbose parsed url hash: null,
1216 verbose parsed url search: null,
1216 verbose parsed url query: null,
1216 verbose parsed url pathname: 'node-uuid@~1.4.0',
1216 verbose parsed url path: 'node-uuid@~1.4.0',
1216 verbose parsed url href: 'node-uuid@~1.4.0' }
1217 verbose cache add name="node-uuid" spec="~1.4.0" args=["node-uuid","~1.4.0"]
1218 verbose parsed url { protocol: null,
1218 verbose parsed url slashes: null,
1218 verbose parsed url auth: null,
1218 verbose parsed url host: null,
1218 verbose parsed url port: null,
1218 verbose parsed url hostname: null,
1218 verbose parsed url hash: null,
1218 verbose parsed url search: null,
1218 verbose parsed url query: null,
1218 verbose parsed url pathname: '~1.4.0',
1218 verbose parsed url path: '~1.4.0',
1218 verbose parsed url href: '~1.4.0' }
1219 verbose addNamed [ 'node-uuid', '~1.4.0' ]
1220 verbose addNamed [ null, '>=1.4.0-0 <1.5.0-0' ]
1221 silly lockFile f662725f-node-uuid-1-4-0 node-uuid@~1.4.0
1222 verbose lock node-uuid@~1.4.0 /home/patcon/.npm/f662725f-node-uuid-1-4-0.lock
1223 verbose cache add [ 'forever-agent@~0.5.0', null ]
1224 verbose cache add name=undefined spec="forever-agent@~0.5.0" args=["forever-agent@~0.5.0",null]
1225 verbose parsed url { protocol: null,
1225 verbose parsed url slashes: null,
1225 verbose parsed url auth: null,
1225 verbose parsed url host: null,
1225 verbose parsed url port: null,
1225 verbose parsed url hostname: null,
1225 verbose parsed url hash: null,
1225 verbose parsed url search: null,
1225 verbose parsed url query: null,
1225 verbose parsed url pathname: 'forever-agent@~0.5.0',
1225 verbose parsed url path: 'forever-agent@~0.5.0',
1225 verbose parsed url href: 'forever-agent@~0.5.0' }
1226 verbose cache add name="forever-agent" spec="~0.5.0" args=["forever-agent","~0.5.0"]
1227 verbose parsed url { protocol: null,
1227 verbose parsed url slashes: null,
1227 verbose parsed url auth: null,
1227 verbose parsed url host: null,
1227 verbose parsed url port: null,
1227 verbose parsed url hostname: null,
1227 verbose parsed url hash: null,
1227 verbose parsed url search: null,
1227 verbose parsed url query: null,
1227 verbose parsed url pathname: '~0.5.0',
1227 verbose parsed url path: '~0.5.0',
1227 verbose parsed url href: '~0.5.0' }
1228 verbose addNamed [ 'forever-agent', '~0.5.0' ]
1229 verbose addNamed [ null, '>=0.5.0-0 <0.6.0-0' ]
1230 silly lockFile fa463915-forever-agent-0-5-0 forever-agent@~0.5.0
1231 verbose lock forever-agent@~0.5.0 /home/patcon/.npm/fa463915-forever-agent-0-5-0.lock
1232 verbose cache add [ 'mime@~1.2.9', null ]
1233 verbose cache add name=undefined spec="mime@~1.2.9" args=["mime@~1.2.9",null]
1234 verbose parsed url { protocol: null,
1234 verbose parsed url slashes: null,
1234 verbose parsed url auth: null,
1234 verbose parsed url host: null,
1234 verbose parsed url port: null,
1234 verbose parsed url hostname: null,
1234 verbose parsed url hash: null,
1234 verbose parsed url search: null,
1234 verbose parsed url query: null,
1234 verbose parsed url pathname: 'mime@~1.2.9',
1234 verbose parsed url path: 'mime@~1.2.9',
1234 verbose parsed url href: 'mime@~1.2.9' }
1235 verbose cache add name="mime" spec="~1.2.9" args=["mime","~1.2.9"]
1236 verbose parsed url { protocol: null,
1236 verbose parsed url slashes: null,
1236 verbose parsed url auth: null,
1236 verbose parsed url host: null,
1236 verbose parsed url port: null,
1236 verbose parsed url hostname: null,
1236 verbose parsed url hash: null,
1236 verbose parsed url search: null,
1236 verbose parsed url query: null,
1236 verbose parsed url pathname: '~1.2.9',
1236 verbose parsed url path: '~1.2.9',
1236 verbose parsed url href: '~1.2.9' }
1237 verbose addNamed [ 'mime', '~1.2.9' ]
1238 verbose addNamed [ null, '>=1.2.9-0 <1.3.0-0' ]
1239 silly lockFile ccf24a67-mime-1-2-9 mime@~1.2.9
1240 verbose lock mime@~1.2.9 /home/patcon/.npm/ccf24a67-mime-1-2-9.lock
1241 silly addNameRange { name: 'qs', range: '>=0.6.0-0 <0.7.0-0', hasData: false }
1242 verbose cache add [ 'tough-cookie@>=0.12.0', null ]
1243 verbose cache add name=undefined spec="tough-cookie@>=0.12.0" args=["tough-cookie@>=0.12.0",null]
1244 verbose parsed url { protocol: null,
1244 verbose parsed url slashes: null,
1244 verbose parsed url auth: null,
1244 verbose parsed url host: null,
1244 verbose parsed url port: null,
1244 verbose parsed url hostname: null,
1244 verbose parsed url hash: null,
1244 verbose parsed url search: null,
1244 verbose parsed url query: null,
1244 verbose parsed url pathname: 'tough-cookie@%3E=0.12.0',
1244 verbose parsed url path: 'tough-cookie@%3E=0.12.0',
1244 verbose parsed url href: 'tough-cookie@%3E=0.12.0' }
1245 verbose cache add name="tough-cookie" spec=">=0.12.0" args=["tough-cookie",">=0.12.0"]
1246 verbose parsed url { protocol: null,
1246 verbose parsed url slashes: null,
1246 verbose parsed url auth: null,
1246 verbose parsed url host: null,
1246 verbose parsed url port: null,
1246 verbose parsed url hostname: null,
1246 verbose parsed url hash: null,
1246 verbose parsed url search: null,
1246 verbose parsed url query: null,
1246 verbose parsed url pathname: '%3E=0.12.0',
1246 verbose parsed url path: '%3E=0.12.0',
1246 verbose parsed url href: '%3E=0.12.0' }
1247 verbose addNamed [ 'tough-cookie', '>=0.12.0' ]
1248 verbose addNamed [ null, '>=0.12.0' ]
1249 silly lockFile 66c18ba7-tough-cookie-0-12-0 tough-cookie@>=0.12.0
1250 verbose lock tough-cookie@>=0.12.0 /home/patcon/.npm/66c18ba7-tough-cookie-0-12-0.lock
1251 verbose cache add [ 'form-data@~0.1.0', null ]
1252 verbose cache add name=undefined spec="form-data@~0.1.0" args=["form-data@~0.1.0",null]
1253 verbose parsed url { protocol: null,
1253 verbose parsed url slashes: null,
1253 verbose parsed url auth: null,
1253 verbose parsed url host: null,
1253 verbose parsed url port: null,
1253 verbose parsed url hostname: null,
1253 verbose parsed url hash: null,
1253 verbose parsed url search: null,
1253 verbose parsed url query: null,
1253 verbose parsed url pathname: 'form-data@~0.1.0',
1253 verbose parsed url path: 'form-data@~0.1.0',
1253 verbose parsed url href: 'form-data@~0.1.0' }
1254 verbose cache add name="form-data" spec="~0.1.0" args=["form-data","~0.1.0"]
1255 verbose parsed url { protocol: null,
1255 verbose parsed url slashes: null,
1255 verbose parsed url auth: null,
1255 verbose parsed url host: null,
1255 verbose parsed url port: null,
1255 verbose parsed url hostname: null,
1255 verbose parsed url hash: null,
1255 verbose parsed url search: null,
1255 verbose parsed url query: null,
1255 verbose parsed url pathname: '~0.1.0',
1255 verbose parsed url path: '~0.1.0',
1255 verbose parsed url href: '~0.1.0' }
1256 verbose addNamed [ 'form-data', '~0.1.0' ]
1257 verbose addNamed [ null, '>=0.1.0-0 <0.2.0-0' ]
1258 silly lockFile 26aa13f4-form-data-0-1-0 form-data@~0.1.0
1259 verbose lock form-data@~0.1.0 /home/patcon/.npm/26aa13f4-form-data-0-1-0.lock
1260 silly addNameRange { name: 'json-stringify-safe',
1260 silly addNameRange range: '>=5.0.0-0 <5.1.0-0',
1260 silly addNameRange hasData: false }
1261 silly addNameRange { name: 'node-uuid',
1261 silly addNameRange range: '>=1.4.0-0 <1.5.0-0',
1261 silly addNameRange hasData: false }
1262 silly addNameRange { name: 'forever-agent',
1262 silly addNameRange range: '>=0.5.0-0 <0.6.0-0',
1262 silly addNameRange hasData: false }
1263 verbose cache add [ 'tunnel-agent@~0.3.0', null ]
1264 verbose cache add name=undefined spec="tunnel-agent@~0.3.0" args=["tunnel-agent@~0.3.0",null]
1265 verbose parsed url { protocol: null,
1265 verbose parsed url slashes: null,
1265 verbose parsed url auth: null,
1265 verbose parsed url host: null,
1265 verbose parsed url port: null,
1265 verbose parsed url hostname: null,
1265 verbose parsed url hash: null,
1265 verbose parsed url search: null,
1265 verbose parsed url query: null,
1265 verbose parsed url pathname: 'tunnel-agent@~0.3.0',
1265 verbose parsed url path: 'tunnel-agent@~0.3.0',
1265 verbose parsed url href: 'tunnel-agent@~0.3.0' }
1266 verbose cache add name="tunnel-agent" spec="~0.3.0" args=["tunnel-agent","~0.3.0"]
1267 verbose parsed url { protocol: null,
1267 verbose parsed url slashes: null,
1267 verbose parsed url auth: null,
1267 verbose parsed url host: null,
1267 verbose parsed url port: null,
1267 verbose parsed url hostname: null,
1267 verbose parsed url hash: null,
1267 verbose parsed url search: null,
1267 verbose parsed url query: null,
1267 verbose parsed url pathname: '~0.3.0',
1267 verbose parsed url path: '~0.3.0',
1267 verbose parsed url href: '~0.3.0' }
1268 verbose addNamed [ 'tunnel-agent', '~0.3.0' ]
1269 verbose addNamed [ null, '>=0.3.0-0 <0.4.0-0' ]
1270 silly lockFile e5681eda-tunnel-agent-0-3-0 tunnel-agent@~0.3.0
1271 verbose lock tunnel-agent@~0.3.0 /home/patcon/.npm/e5681eda-tunnel-agent-0-3-0.lock
1272 silly addNameRange { name: 'mime', range: '>=1.2.9-0 <1.3.0-0', hasData: false }
1273 silly addNameRange { name: 'tough-cookie', range: '>=0.12.0', hasData: false }
1274 verbose cache add [ 'http-signature@~0.10.0', null ]
1275 verbose cache add name=undefined spec="http-signature@~0.10.0" args=["http-signature@~0.10.0",null]
1276 verbose parsed url { protocol: null,
1276 verbose parsed url slashes: null,
1276 verbose parsed url auth: null,
1276 verbose parsed url host: null,
1276 verbose parsed url port: null,
1276 verbose parsed url hostname: null,
1276 verbose parsed url hash: null,
1276 verbose parsed url search: null,
1276 verbose parsed url query: null,
1276 verbose parsed url pathname: 'http-signature@~0.10.0',
1276 verbose parsed url path: 'http-signature@~0.10.0',
1276 verbose parsed url href: 'http-signature@~0.10.0' }
1277 verbose cache add name="http-signature" spec="~0.10.0" args=["http-signature","~0.10.0"]
1278 verbose parsed url { protocol: null,
1278 verbose parsed url slashes: null,
1278 verbose parsed url auth: null,
1278 verbose parsed url host: null,
1278 verbose parsed url port: null,
1278 verbose parsed url hostname: null,
1278 verbose parsed url hash: null,
1278 verbose parsed url search: null,
1278 verbose parsed url query: null,
1278 verbose parsed url pathname: '~0.10.0',
1278 verbose parsed url path: '~0.10.0',
1278 verbose parsed url href: '~0.10.0' }
1279 verbose addNamed [ 'http-signature', '~0.10.0' ]
1280 verbose addNamed [ null, '>=0.10.0-0 <0.11.0-0' ]
1281 silly lockFile 8170f292-http-signature-0-10-0 http-signature@~0.10.0
1282 verbose lock http-signature@~0.10.0 /home/patcon/.npm/8170f292-http-signature-0-10-0.lock
1283 silly addNameRange { name: 'form-data',
1283 silly addNameRange range: '>=0.1.0-0 <0.2.0-0',
1283 silly addNameRange hasData: false }
1284 silly addNameRange { name: 'tunnel-agent',
1284 silly addNameRange range: '>=0.3.0-0 <0.4.0-0',
1284 silly addNameRange hasData: false }
1285 silly addNameRange { name: 'http-signature',
1285 silly addNameRange range: '>=0.10.0-0 <0.11.0-0',
1285 silly addNameRange hasData: false }
1286 verbose url raw qs
1287 verbose url resolving [ 'https://registry.npmjs.org/', './qs' ]
1288 verbose url resolved https://registry.npmjs.org/qs
1289 info trying registry request attempt 1 at 12:17:28
1290 verbose etag "AVG9XKSRXQEXMFJNJ91M185FB"
1291 http GET https://registry.npmjs.org/qs
1292 verbose cache add [ 'hawk@~1.0.0', null ]
1293 verbose cache add name=undefined spec="hawk@~1.0.0" args=["hawk@~1.0.0",null]
1294 verbose parsed url { protocol: null,
1294 verbose parsed url slashes: null,
1294 verbose parsed url auth: null,
1294 verbose parsed url host: null,
1294 verbose parsed url port: null,
1294 verbose parsed url hostname: null,
1294 verbose parsed url hash: null,
1294 verbose parsed url search: null,
1294 verbose parsed url query: null,
1294 verbose parsed url pathname: 'hawk@~1.0.0',
1294 verbose parsed url path: 'hawk@~1.0.0',
1294 verbose parsed url href: 'hawk@~1.0.0' }
1295 verbose cache add name="hawk" spec="~1.0.0" args=["hawk","~1.0.0"]
1296 verbose parsed url { protocol: null,
1296 verbose parsed url slashes: null,
1296 verbose parsed url auth: null,
1296 verbose parsed url host: null,
1296 verbose parsed url port: null,
1296 verbose parsed url hostname: null,
1296 verbose parsed url hash: null,
1296 verbose parsed url search: null,
1296 verbose parsed url query: null,
1296 verbose parsed url pathname: '~1.0.0',
1296 verbose parsed url path: '~1.0.0',
1296 verbose parsed url href: '~1.0.0' }
1297 verbose addNamed [ 'hawk', '~1.0.0' ]
1298 verbose addNamed [ null, '>=1.0.0-0 <1.1.0-0' ]
1299 silly lockFile 327094b8-hawk-1-0-0 hawk@~1.0.0
1300 verbose lock hawk@~1.0.0 /home/patcon/.npm/327094b8-hawk-1-0-0.lock
1301 verbose cache add [ 'oauth-sign@~0.3.0', null ]
1302 verbose cache add name=undefined spec="oauth-sign@~0.3.0" args=["oauth-sign@~0.3.0",null]
1303 verbose parsed url { protocol: null,
1303 verbose parsed url slashes: null,
1303 verbose parsed url auth: null,
1303 verbose parsed url host: null,
1303 verbose parsed url port: null,
1303 verbose parsed url hostname: null,
1303 verbose parsed url hash: null,
1303 verbose parsed url search: null,
1303 verbose parsed url query: null,
1303 verbose parsed url pathname: 'oauth-sign@~0.3.0',
1303 verbose parsed url path: 'oauth-sign@~0.3.0',
1303 verbose parsed url href: 'oauth-sign@~0.3.0' }
1304 verbose cache add name="oauth-sign" spec="~0.3.0" args=["oauth-sign","~0.3.0"]
1305 verbose parsed url { protocol: null,
1305 verbose parsed url slashes: null,
1305 verbose parsed url auth: null,
1305 verbose parsed url host: null,
1305 verbose parsed url port: null,
1305 verbose parsed url hostname: null,
1305 verbose parsed url hash: null,
1305 verbose parsed url search: null,
1305 verbose parsed url query: null,
1305 verbose parsed url pathname: '~0.3.0',
1305 verbose parsed url path: '~0.3.0',
1305 verbose parsed url href: '~0.3.0' }
1306 verbose addNamed [ 'oauth-sign', '~0.3.0' ]
1307 verbose addNamed [ null, '>=0.3.0-0 <0.4.0-0' ]
1308 silly lockFile 7fb5c7f1-oauth-sign-0-3-0 oauth-sign@~0.3.0
1309 verbose lock oauth-sign@~0.3.0 /home/patcon/.npm/7fb5c7f1-oauth-sign-0-3-0.lock
1310 verbose cache add [ 'aws-sign2@~0.5.0', null ]
1311 verbose cache add name=undefined spec="aws-sign2@~0.5.0" args=["aws-sign2@~0.5.0",null]
1312 verbose parsed url { protocol: null,
1312 verbose parsed url slashes: null,
1312 verbose parsed url auth: null,
1312 verbose parsed url host: null,
1312 verbose parsed url port: null,
1312 verbose parsed url hostname: null,
1312 verbose parsed url hash: null,
1312 verbose parsed url search: null,
1312 verbose parsed url query: null,
1312 verbose parsed url pathname: 'aws-sign2@~0.5.0',
1312 verbose parsed url path: 'aws-sign2@~0.5.0',
1312 verbose parsed url href: 'aws-sign2@~0.5.0' }
1313 verbose cache add name="aws-sign2" spec="~0.5.0" args=["aws-sign2","~0.5.0"]
1314 verbose parsed url { protocol: null,
1314 verbose parsed url slashes: null,
1314 verbose parsed url auth: null,
1314 verbose parsed url host: null,
1314 verbose parsed url port: null,
1314 verbose parsed url hostname: null,
1314 verbose parsed url hash: null,
1314 verbose parsed url search: null,
1314 verbose parsed url query: null,
1314 verbose parsed url pathname: '~0.5.0',
1314 verbose parsed url path: '~0.5.0',
1314 verbose parsed url href: '~0.5.0' }
1315 verbose addNamed [ 'aws-sign2', '~0.5.0' ]
1316 verbose addNamed [ null, '>=0.5.0-0 <0.6.0-0' ]
1317 silly lockFile 82387911-aws-sign2-0-5-0 aws-sign2@~0.5.0
1318 verbose lock aws-sign2@~0.5.0 /home/patcon/.npm/82387911-aws-sign2-0-5-0.lock
1319 verbose url raw json-stringify-safe
1320 verbose url resolving [ 'https://registry.npmjs.org/', './json-stringify-safe' ]
1321 verbose url resolved https://registry.npmjs.org/json-stringify-safe
1322 info trying registry request attempt 1 at 12:17:28
1323 verbose etag "10P78UK5WHNFK3FTCYZG2TBEI"
1324 http GET https://registry.npmjs.org/json-stringify-safe
1325 verbose url raw node-uuid
1326 verbose url resolving [ 'https://registry.npmjs.org/', './node-uuid' ]
1327 verbose url resolved https://registry.npmjs.org/node-uuid
1328 info trying registry request attempt 1 at 12:17:28
1329 verbose etag "8U0EWSLBM6H5GCQAZW93HZIWA"
1330 http GET https://registry.npmjs.org/node-uuid
1331 verbose url raw forever-agent
1332 verbose url resolving [ 'https://registry.npmjs.org/', './forever-agent' ]
1333 verbose url resolved https://registry.npmjs.org/forever-agent
1334 info trying registry request attempt 1 at 12:17:28
1335 verbose etag "CTW4LF2JA713BM4M5V0DLCCJX"
1336 http GET https://registry.npmjs.org/forever-agent
1337 verbose url raw mime
1338 verbose url resolving [ 'https://registry.npmjs.org/', './mime' ]
1339 verbose url resolved https://registry.npmjs.org/mime
1340 info trying registry request attempt 1 at 12:17:28
1341 verbose etag "12YVN9GQUFEWP6XYJM0WZU2UU"
1342 http GET https://registry.npmjs.org/mime
1343 verbose url raw tough-cookie
1344 verbose url resolving [ 'https://registry.npmjs.org/', './tough-cookie' ]
1345 verbose url resolved https://registry.npmjs.org/tough-cookie
1346 info trying registry request attempt 1 at 12:17:28
1347 verbose etag "BNPBMY0X27JFBB8QVSXT3HP7J"
1348 http GET https://registry.npmjs.org/tough-cookie
1349 silly addNameRange { name: 'hawk', range: '>=1.0.0-0 <1.1.0-0', hasData: false }
1350 silly addNameRange { name: 'oauth-sign',
1350 silly addNameRange range: '>=0.3.0-0 <0.4.0-0',
1350 silly addNameRange hasData: false }
1351 silly addNameRange { name: 'aws-sign2',
1351 silly addNameRange range: '>=0.5.0-0 <0.6.0-0',
1351 silly addNameRange hasData: false }
1352 verbose url raw form-data
1353 verbose url resolving [ 'https://registry.npmjs.org/', './form-data' ]
1354 verbose url resolved https://registry.npmjs.org/form-data
1355 info trying registry request attempt 1 at 12:17:28
1356 verbose etag "10TW4QPT9HK3V7FYTNWMDCQ18"
1357 http GET https://registry.npmjs.org/form-data
1358 verbose url raw tunnel-agent
1359 verbose url resolving [ 'https://registry.npmjs.org/', './tunnel-agent' ]
1360 verbose url resolved https://registry.npmjs.org/tunnel-agent
1361 info trying registry request attempt 1 at 12:17:28
1362 verbose etag "9A62E83S6J294DXA5ADLLEVXE"
1363 http GET https://registry.npmjs.org/tunnel-agent
1364 verbose url raw http-signature
1365 verbose url resolving [ 'https://registry.npmjs.org/', './http-signature' ]
1366 verbose url resolved https://registry.npmjs.org/http-signature
1367 info trying registry request attempt 1 at 12:17:28
1368 verbose etag "87BH18LKILGR6PT4POXY21YY3"
1369 http GET https://registry.npmjs.org/http-signature
1370 verbose url raw hawk
1371 verbose url resolving [ 'https://registry.npmjs.org/', './hawk' ]
1372 verbose url resolved https://registry.npmjs.org/hawk
1373 info trying registry request attempt 1 at 12:17:28
1374 verbose etag "2EO8HAJW608SLZOH2EPLMG7V8"
1375 http GET https://registry.npmjs.org/hawk
1376 verbose url raw oauth-sign
1377 verbose url resolving [ 'https://registry.npmjs.org/', './oauth-sign' ]
1378 verbose url resolved https://registry.npmjs.org/oauth-sign
1379 info trying registry request attempt 1 at 12:17:28
1380 verbose etag "7TCSYVDRJJ7261FDY2IRWZVNQ"
1381 http GET https://registry.npmjs.org/oauth-sign
1382 verbose url raw aws-sign2
1383 verbose url resolving [ 'https://registry.npmjs.org/', './aws-sign2' ]
1384 verbose url resolved https://registry.npmjs.org/aws-sign2
1385 info trying registry request attempt 1 at 12:17:28
1386 verbose etag "DG7RQ1NW6I9E9MBHLXLYVLEA8"
1387 http GET https://registry.npmjs.org/aws-sign2
1388 silly lockFile 2960416a-istry-client-node-modules-semver tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/semver
1389 silly lockFile 2960416a-istry-client-node-modules-semver tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/semver
1390 silly lockFile 528936ae-con-npm-semver-2-2-1-package-tgz tar:///home/patcon/.npm/semver/2.2.1/package.tgz
1391 silly lockFile 528936ae-con-npm-semver-2-2-1-package-tgz tar:///home/patcon/.npm/semver/2.2.1/package.tgz
1392 info preinstall semver@2.2.1
1393 verbose readDependencies using package.json deps
1394 verbose readDependencies using package.json deps
1395 silly resolved []
1396 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/semver
1397 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/semver
1398 verbose linkStuff [ true,
1398 verbose linkStuff '/usr/lib/node_modules',
1398 verbose linkStuff false,
1398 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules' ]
1399 info linkStuff semver@2.2.1
1400 verbose linkBins semver@2.2.1
1401 verbose link bins [ { semver: './bin/semver' },
1401 verbose link bins '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/.bin',
1401 verbose link bins false ]
1402 verbose linkMans semver@2.2.1
1403 verbose rebuildBundles semver@2.2.1
1404 info install semver@2.2.1
1405 info postinstall semver@2.2.1
1406 http 304 https://registry.npmjs.org/fstream
1407 silly registry.get cb [ 304,
1407 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:28 GMT',
1407 silly registry.get server: 'Apache',
1407 silly registry.get via: '1.1 varnish',
1407 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:28 GMT',
1407 silly registry.get 'cache-control': 'max-age=1',
1407 silly registry.get etag: '"DG9FDFM9LVB26KT333YMSA5TK"',
1407 silly registry.get 'x-served-by': 'cache-lax1423-LAX',
1407 silly registry.get 'x-cache': 'HIT',
1407 silly registry.get 'x-cache-hits': '1',
1407 silly registry.get 'x-timer': 'S1396207048.295019627,VS0,VE64',
1407 silly registry.get vary: 'Accept',
1407 silly registry.get 'content-length': '0',
1407 silly registry.get 'keep-alive': 'timeout=10, max=50',
1407 silly registry.get connection: 'Keep-Alive' } ]
1408 verbose etag fstream from cache
1409 http 304 https://registry.npmjs.org/commander
1410 silly registry.get cb [ 304,
1410 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:28 GMT',
1410 silly registry.get server: 'Apache',
1410 silly registry.get via: '1.1 varnish',
1410 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:28 GMT',
1410 silly registry.get 'cache-control': 'max-age=1',
1410 silly registry.get etag: '"6V19R47709EXWT9DNI1Y7QTXX"',
1410 silly registry.get 'x-served-by': 'cache-lax1431-LAX',
1410 silly registry.get 'x-cache': 'HIT',
1410 silly registry.get 'x-cache-hits': '1',
1410 silly registry.get 'x-timer': 'S1396207048.298619986,VS0,VE64',
1410 silly registry.get vary: 'Accept',
1410 silly registry.get 'content-length': '0',
1410 silly registry.get 'keep-alive': 'timeout=10, max=50',
1410 silly registry.get connection: 'Keep-Alive' } ]
1411 verbose etag commander from cache
1412 http 304 https://registry.npmjs.org/tar
1413 silly registry.get cb [ 304,
1413 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:28 GMT',
1413 silly registry.get server: 'Apache',
1413 silly registry.get via: '1.1 varnish',
1413 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:28 GMT',
1413 silly registry.get 'cache-control': 'max-age=1',
1413 silly registry.get etag: '"2N0ML4RUBZBOVA7SRKZR7BVH7"',
1413 silly registry.get 'x-served-by': 'cache-lax1435-LAX',
1413 silly registry.get 'x-cache': 'HIT',
1413 silly registry.get 'x-cache-hits': '1',
1413 silly registry.get 'x-timer': 'S1396207048.228235483,VS0,VE135',
1413 silly registry.get vary: 'Accept',
1413 silly registry.get 'content-length': '0',
1413 silly registry.get 'keep-alive': 'timeout=10, max=50',
1413 silly registry.get connection: 'Keep-Alive' } ]
1414 verbose etag tar from cache
1415 silly addNameRange number 2 { name: 'commander', range: '>=1.1.0-0 <1.2.0-0', hasData: true }
1416 silly addNameRange versions [ 'commander',
1416 silly addNameRange [ '0.0.1',
1416 silly addNameRange '0.0.3',
1416 silly addNameRange '0.0.4',
1416 silly addNameRange '0.0.5',
1416 silly addNameRange '0.1.0',
1416 silly addNameRange '0.2.0',
1416 silly addNameRange '0.2.1',
1416 silly addNameRange '0.3.0',
1416 silly addNameRange '0.3.1',
1416 silly addNameRange '0.3.2',
1416 silly addNameRange '0.3.3',
1416 silly addNameRange '0.4.0',
1416 silly addNameRange '0.4.1',
1416 silly addNameRange '0.4.2',
1416 silly addNameRange '0.4.3',
1416 silly addNameRange '0.5.0',
1416 silly addNameRange '0.5.1',
1416 silly addNameRange '0.6.0',
1416 silly addNameRange '0.6.1',
1416 silly addNameRange '0.5.2',
1416 silly addNameRange '1.0.0',
1416 silly addNameRange '1.0.1',
1416 silly addNameRange '1.0.2',
1416 silly addNameRange '1.0.3',
1416 silly addNameRange '1.0.4',
1416 silly addNameRange '1.0.5',
1416 silly addNameRange '1.1.0',
1416 silly addNameRange '1.1.1',
1416 silly addNameRange '1.2.0',
1416 silly addNameRange '1.3.0',
1416 silly addNameRange '1.3.1',
1416 silly addNameRange '1.3.2',
1416 silly addNameRange '2.0.0',
1416 silly addNameRange '2.1.0',
1416 silly addNameRange '2.2.0' ] ]
1417 verbose addNamed [ 'commander', '1.1.1' ]
1418 verbose addNamed [ '1.1.1', '1.1.1' ]
1419 silly lockFile e890879a-commander-1-1-1 commander@1.1.1
1420 verbose lock commander@1.1.1 /home/patcon/.npm/e890879a-commander-1-1-1.lock
1421 silly addNameRange number 2 { name: 'tar', range: '>=0.1.0-0 <0.2.0-0', hasData: true }
1422 silly addNameRange versions [ 'tar',
1422 silly addNameRange [ '0.0.1',
1422 silly addNameRange '0.1.0',
1422 silly addNameRange '0.1.2',
1422 silly addNameRange '0.1.3',
1422 silly addNameRange '0.1.4',
1422 silly addNameRange '0.1.5',
1422 silly addNameRange '0.1.6',
1422 silly addNameRange '0.1.7',
1422 silly addNameRange '0.1.8',
1422 silly addNameRange '0.1.9',
1422 silly addNameRange '0.1.10',
1422 silly addNameRange '0.1.11',
1422 silly addNameRange '0.1.12',
1422 silly addNameRange '0.1.13',
1422 silly addNameRange '0.1.14',
1422 silly addNameRange '0.1.15',
1422 silly addNameRange '0.1.16',
1422 silly addNameRange '0.1.17',
1422 silly addNameRange '0.1.18',
1422 silly addNameRange '0.1.19' ] ]
1423 verbose addNamed [ 'tar', '0.1.19' ]
1424 verbose addNamed [ '0.1.19', '0.1.19' ]
1425 silly lockFile 9cd6579d-tar-0-1-19 tar@0.1.19
1426 verbose lock tar@0.1.19 /home/patcon/.npm/9cd6579d-tar-0-1-19.lock
1427 silly addNameRange number 2 { name: 'fstream', range: '>=0.1.0-0 <0.2.0-0', hasData: true }
1428 silly addNameRange versions [ 'fstream',
1428 silly addNameRange [ '0.0.0',
1428 silly addNameRange '0.0.1',
1428 silly addNameRange '0.1.0',
1428 silly addNameRange '0.1.1',
1428 silly addNameRange '0.1.2',
1428 silly addNameRange '0.1.3',
1428 silly addNameRange '0.1.5',
1428 silly addNameRange '0.1.6',
1428 silly addNameRange '0.1.7',
1428 silly addNameRange '0.1.8',
1428 silly addNameRange '0.1.9',
1428 silly addNameRange '0.1.10',
1428 silly addNameRange '0.1.11',
1428 silly addNameRange '0.1.12',
1428 silly addNameRange '0.1.13',
1428 silly addNameRange '0.1.14',
1428 silly addNameRange '0.1.15',
1428 silly addNameRange '0.1.16',
1428 silly addNameRange '0.1.17',
1428 silly addNameRange '0.1.18',
1428 silly addNameRange '0.1.19',
1428 silly addNameRange '0.1.20',
1428 silly addNameRange '0.1.21',
1428 silly addNameRange '0.1.22',
1428 silly addNameRange '0.1.23',
1428 silly addNameRange '0.1.24',
1428 silly addNameRange '0.1.25' ] ]
1429 verbose addNamed [ 'fstream', '0.1.25' ]
1430 verbose addNamed [ '0.1.25', '0.1.25' ]
1431 silly lockFile 11eef8ec-fstream-0-1-25 fstream@0.1.25
1432 verbose lock fstream@0.1.25 /home/patcon/.npm/11eef8ec-fstream-0-1-25.lock
1433 silly lockFile e890879a-commander-1-1-1 commander@1.1.1
1434 silly lockFile e890879a-commander-1-1-1 commander@1.1.1
1435 silly lockFile 9cd6579d-tar-0-1-19 tar@0.1.19
1436 silly lockFile 9cd6579d-tar-0-1-19 tar@0.1.19
1437 silly lockFile 2ddf9fd4-commander-1-1-x commander@1.1.x
1438 silly lockFile 2ddf9fd4-commander-1-1-x commander@1.1.x
1439 silly lockFile 11eef8ec-fstream-0-1-25 fstream@0.1.25
1440 silly lockFile 11eef8ec-fstream-0-1-25 fstream@0.1.25
1441 silly lockFile 0a1eb69c-tar-0-1-x tar@0.1.x
1442 silly lockFile 0a1eb69c-tar-0-1-x tar@0.1.x
1443 silly lockFile 95e94244-fstream-0-1-x fstream@0.1.x
1444 silly lockFile 95e94244-fstream-0-1-x fstream@0.1.x
1445 silly resolved [ { name: 'commander',
1445 silly resolved version: '1.1.1',
1445 silly resolved description: 'the complete solution for node.js command-line programs',
1445 silly resolved keywords: [ 'command', 'option', 'parser', 'prompt', 'stdin' ],
1445 silly resolved author: { name: 'TJ Holowaychuk', email: 'tj@vision-media.ca' },
1445 silly resolved repository:
1445 silly resolved { type: 'git',
1445 silly resolved url: 'https://github.com/visionmedia/commander.js.git' },
1445 silly resolved dependencies: { keypress: '0.1.x' },
1445 silly resolved devDependencies: { should: '>= 0.0.1' },
1445 silly resolved scripts: { test: 'make test' },
1445 silly resolved main: 'index',
1445 silly resolved engines: { node: '>= 0.6.x' },
1445 silly resolved readme: '# Commander.js\n\n The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby\'s [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require(\'commander\');\n\nprogram\n .version(\'0.0.1\')\n .option(\'-p, --peppers\', \'Add peppers\')\n .option(\'-P, --pineapple\', \'Add pineapple\')\n .option(\'-b, --bbq\', \'Add bbq sauce\')\n .option(\'-c, --cheese [type]\', \'Add the specified type of cheese [marble]\', \'marble\')\n .parse(process.argv);\n\nconsole.log(\'you ordered a pizza with:\');\nif (program.peppers) console.log(\' - peppers\');\nif (program.pineapple) console.log(\' - pineappe\');\nif (program.bbq) console.log(\' - bbq\');\nconsole.log(\' - %s cheese\', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n``` \n $ ./examples/pizza --help\n\n Usage: pizza [options]\n\n Options:\n\n -V, --version output the version number\n -p, --peppers Add peppers\n -P, --pineapple Add pineappe\n -b, --bbq Add bbq sauce\n -c, --cheese <type> Add the specified type of cheese [marble]\n -h, --help output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n return val.split(\'..\').map(Number);\n}\n\nfunction list(val) {\n return val.split(\',\');\n}\n\nprogram\n .version(\'0.0.1\')\n .usage(\'[options] <file ...>\')\n .option(\'-i, --integer <n>\', \'An integer argument\', parseInt)\n .option(\'-f, --float <n>\', \'A float argument\', parseFloat)\n .option(\'-r, --range <a>..<b>\', \'A range\', range)\n .option(\'-l, --list <items>\', \'A list\', list)\n .option(\'-o, --optional [value]\', \'An optional value\')\n .parse(process.argv);\n\nconsole.log(\' int: %j\', program.integer);\nconsole.log(\' float: %j\', program.float);\nconsole.log(\' optional: %j\', program.optional);\nprogram.range = program.range || [];\nconsole.log(\' range: %j..%j\', program.range[0], program.range[1]);\nconsole.log(\' list: %j\', program.list);\nconsole.log(\' args: %j\', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for "--help". Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable "stuff" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require(\'../\');\n\nfunction list(val) {\n return val.split(\',\').map(Number);\n}\n\nprogram\n .version(\'0.0.1\')\n .option(\'-f, --foo\', \'enable some foo\')\n .option(\'-b, --bar\', \'enable some bar\')\n .option(\'-B, --baz\', \'enable some baz\');\n\n// must be before .parse() since\n// node\'s emit() is immediate\n\nprogram.on(\'--help\', function(){\n console.log(\' Examples:\');\n console.log(\'\');\n console.log(\' $ custom-help --help\');\n console.log(\' $ custom-help -h\');\n console.log(\'\');\n});\n\nprogram.parse(process.argv);\n\nconsole.log(\'stuff\');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n -h, --help output usage information\n -V, --version output the version number\n -f, --foo enable some foo\n -b, --bar enable some bar\n -B, --baz enable some baz\n\nExamples:\n\n $ custom-help --help\n $ custom-help -h\n\n```\n\n## .prompt(msg, fn)\n\n Single-line prompt:\n\n```js\nprogram.prompt(\'name: \', function(name){\n console.log(\'hi %s\', name);\n});\n```\n\n Multi-line prompt:\n\n```js\nprogram.prompt(\'description:\', function(name){\n console.log(\'hi %s\', name);\n});\n```\n\n Coercion:\n\n```js\nprogram.prompt(\'Age: \', Number, function(age){\n console.log(\'age: %j\', age);\n});\n```\n\n```js\nprogram.prompt(\'Birthdate: \', Date, function(date){\n console.log(\'date: %s\', date);\n});\n```\n\n## .password(msg[, mask], fn)\n\nPrompt for password without echoing:\n\n```js\nprogram.password(\'Password: \', function(pass){\n console.log(\'got "%s"\', pass);\n process.stdin.destroy();\n});\n```\n\nPrompt for password with mask char "*":\n\n```js\nprogram.password(\'Password: \', \'*\', function(pass){\n console.log(\'got "%s"\', pass);\n process.stdin.destroy();\n});\n```\n\n## .confirm(msg, fn)\n\n Confirm with the given `msg`:\n\n```js\nprogram.confirm(\'continue? \', function(ok){\n console.log(\' got %j\', ok);\n});\n```\n\n## .choose(list, fn)\n\n Let the user choose from a `list`:\n\n```js\nvar list = [\'tobi\', \'loki\', \'jane\', \'manny\', \'luna\'];\n\nconsole.log(\'Choose the coolest pet:\');\nprogram.choose(list, function(i){\n console.log(\'you chose %d "%s"\', i, list[i]);\n});\n```\n\n## .outputHelp()\n\n Output help information without exiting.\n\n## .help()\n\n Output help information and exit immediately.\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk &lt;tj@vision-media.ca&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\'Software\'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \'AS IS\', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.',
1445 silly resolved readmeFilename: 'Readme.md',
1445 silly resolved bugs: { url: 'https://github.com/visionmedia/commander.js/issues' },
1445 silly resolved homepage: 'https://github.com/visionmedia/commander.js',
1445 silly resolved _id: 'commander@1.1.1',
1445 silly resolved _from: 'commander@1.1.x' },
1445 silly resolved { author:
1445 silly resolved { name: 'Isaac Z. Schlueter',
1445 silly resolved email: 'i@izs.me',
1445 silly resolved url: 'http://blog.izs.me/' },
1445 silly resolved name: 'tar',
1445 silly resolved description: 'tar for node',
1445 silly resolved version: '0.1.19',
1445 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/node-tar.git' },
1445 silly resolved main: 'tar.js',
1445 silly resolved scripts: { test: 'tap test/*.js' },
1445 silly resolved dependencies: { inherits: '2', 'block-stream': '*', fstream: '~0.1.8' },
1445 silly resolved devDependencies: { tap: '0.x', rimraf: '1.x' },
1445 silly resolved license: 'BSD',
1445 silly resolved readme: '# node-tar\n\nTar for Node.js.\n\n[![NPM](https://nodei.co/npm/tar.png)](https://nodei.co/npm/tar/)\n\n## API\n\nSee `examples/` for usage examples.\n\n### var tar = require(\'tar\')\n\nReturns an object with `.Pack`, `.Extract` and `.Parse` methods.\n\n### tar.Pack([properties])\n\nReturns a through stream. Use\n[fstream](https://npmjs.org/package/fstream) to write files into the\npack stream and you will receive tar archive data from the pack\nstream.\n\nThe optional `properties` object are used to set properties in the tar\n\'Global Extended Header\'.\n\n### tar.Extract([options])\n\nReturns a through stream. Write tar data to the stream and the files\nin the tarball will be extracted onto the filesystem.\n\n`options` can be:\n\n```js\n{\n path: \'/path/to/extract/tar/into\',\n strip: 0, // how many path segments to strip from the root when extracting\n}\n```\n\n`options` also get passed to the `fstream.Writer` instance that `tar`\nuses internally.\n\n### tar.Parse()\n\nReturns a writable stream. Write tar data to it and it will emit\n`entry` events for each entry parsed from the tarball. This is used by\n`tar.Extract`.\n',
1445 silly resolved readmeFilename: 'README.md',
1445 silly resolved bugs: { url: 'https://github.com/isaacs/node-tar/issues' },
1445 silly resolved homepage: 'https://github.com/isaacs/node-tar',
1445 silly resolved _id: 'tar@0.1.19',
1445 silly resolved _from: 'tar@0.1.x' },
1445 silly resolved { author:
1445 silly resolved { name: 'Isaac Z. Schlueter',
1445 silly resolved email: 'i@izs.me',
1445 silly resolved url: 'http://blog.izs.me/' },
1445 silly resolved name: 'fstream',
1445 silly resolved description: 'Advanced file system stream things',
1445 silly resolved version: '0.1.25',
1445 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/fstream.git' },
1445 silly resolved main: 'fstream.js',
1445 silly resolved engines: { node: '>=0.6' },
1445 silly resolved dependencies:
1445 silly resolved { rimraf: '2',
1445 silly resolved mkdirp: '0.3',
1445 silly resolved 'graceful-fs': '~2.0.0',
1445 silly resolved inherits: '~2.0.0' },
1445 silly resolved devDependencies: { tap: '' },
1445 silly resolved scripts: { test: 'tap examples/*.js' },
1445 silly resolved license: 'BSD',
1445 silly resolved readme: 'Like FS streams, but with stat on them, and supporting directories and\nsymbolic links, as well as normal files. Also, you can use this to set\nthe stats on a file, even if you don\'t change its contents, or to create\na symlink, etc.\n\nSo, for example, you can "write" a directory, and it\'ll call `mkdir`. You\ncan specify a uid and gid, and it\'ll call `chown`. You can specify a\n`mtime` and `atime`, and it\'ll call `utimes`. You can call it a symlink\nand provide a `linkpath` and it\'ll call `symlink`.\n\nNote that it won\'t automatically resolve symbolic links. So, if you\ncall `fstream.Reader(\'/some/symlink\')` then you\'ll get an object\nthat stats and then ends immediately (since it has no data). To follow\nsymbolic links, do this: `fstream.Reader({path:\'/some/symlink\', follow:\ntrue })`.\n\nThere are various checks to make sure that the bytes emitted are the\nsame as the intended size, if the size is set.\n\n## Examples\n\n```javascript\nfstream\n .Writer({ path: "path/to/file"\n , mode: 0755\n , size: 6\n })\n .write("hello\\n")\n .end()\n```\n\nThis will create the directories if they\'re missing, and then write\n`hello\\n` into the file, chmod it to 0755, and assert that 6 bytes have\nbeen written when it\'s done.\n\n```javascript\nfstream\n .Writer({ path: "path/to/file"\n , mode: 0755\n , size: 6\n , flags: "a"\n })\n .write("hello\\n")\n .end()\n```\n\nYou can pass flags in, if you want to append to a file.\n\n```javascript\nfstream\n .Writer({ path: "path/to/symlink"\n , linkpath: "./file"\n , SymbolicLink: true\n , mode: "0755" // octal strings supported\n })\n .end()\n```\n\nIf isSymbolicLink is a function, it\'ll be called, and if it returns\ntrue, then it\'ll treat it as a symlink. If it\'s not a function, then\nany truish value will make a symlink, or you can set `type:\n\'SymbolicLink\'`, which does the same thing.\n\nNote that the linkpath is relative to the symbolic link location, not\nthe parent dir or cwd.\n\n```javascript\nfstream\n .Reader("path/to/dir")\n .pipe(fstream.Writer("path/to/other/dir"))\n```\n\nThis will do like `cp -Rp path/to/dir path/to/other/dir`. If the other\ndir exists and isn\'t a directory, then it\'ll emit an error. It\'ll also\nset the uid, gid, mode, etc. to be identical. In this way, it\'s more\nlike `rsync -a` than simply a copy.\n',
1445 silly resolved readmeFilename: 'README.md',
1445 silly resolved bugs: { url: 'https://github.com/isaacs/fstream/issues' },
1445 silly resolved homepage: 'https://github.com/isaacs/fstream',
1445 silly resolved _id: 'fstream@0.1.25',
1445 silly resolved _from: 'fstream@0.1.x' } ]
1446 info install commander@1.1.1 into /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz
1447 info install tar@0.1.19 into /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz
1448 info install fstream@0.1.25 into /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz
1449 info installOne commander@1.1.1
1450 info installOne tar@0.1.19
1451 info installOne fstream@0.1.25
1452 info /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander unbuild
1453 info /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar unbuild
1454 info /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream unbuild
1455 verbose tar unpack /home/patcon/.npm/commander/1.1.1/package.tgz
1456 silly lockFile 81160cbe-es-tar-gz-node-modules-commander tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander
1457 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander /home/patcon/.npm/81160cbe-es-tar-gz-node-modules-commander.lock
1458 silly lockFile 71e32ab0--npm-commander-1-1-1-package-tgz tar:///home/patcon/.npm/commander/1.1.1/package.tgz
1459 verbose lock tar:///home/patcon/.npm/commander/1.1.1/package.tgz /home/patcon/.npm/71e32ab0--npm-commander-1-1-1-package-tgz.lock
1460 verbose tar unpack /home/patcon/.npm/tar/0.1.19/package.tgz
1461 silly lockFile 34c7b6bd--modules-tar-gz-node-modules-tar tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar
1462 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar /home/patcon/.npm/34c7b6bd--modules-tar-gz-node-modules-tar.lock
1463 silly lockFile 26b6f87f-atcon-npm-tar-0-1-19-package-tgz tar:///home/patcon/.npm/tar/0.1.19/package.tgz
1464 verbose lock tar:///home/patcon/.npm/tar/0.1.19/package.tgz /home/patcon/.npm/26b6f87f-atcon-npm-tar-0-1-19-package-tgz.lock
1465 verbose tar unpack /home/patcon/.npm/fstream/0.1.25/package.tgz
1466 silly lockFile 52b745aa-ules-tar-gz-node-modules-fstream tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream
1467 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream /home/patcon/.npm/52b745aa-ules-tar-gz-node-modules-fstream.lock
1468 silly lockFile 77810800-n-npm-fstream-0-1-25-package-tgz tar:///home/patcon/.npm/fstream/0.1.25/package.tgz
1469 verbose lock tar:///home/patcon/.npm/fstream/0.1.25/package.tgz /home/patcon/.npm/77810800-n-npm-fstream-0-1-25-package-tgz.lock
1470 silly gunzTarPerm modes [ '755', '644' ]
1471 silly gunzTarPerm modes [ '755', '644' ]
1472 silly gunzTarPerm modes [ '755', '644' ]
1473 silly gunzTarPerm extractEntry package.json
1474 silly gunzTarPerm extractEntry package.json
1475 silly gunzTarPerm extractEntry package.json
1476 silly gunzTarPerm extractEntry .npmignore
1477 silly gunzTarPerm extractEntry index.js
1478 silly gunzTarPerm extractEntry .npmignore
1479 silly gunzTarPerm extractEntry README.md
1480 silly gunzTarPerm extractEntry .npmignore
1481 silly gunzTarPerm extractEntry README.md
1482 silly gunzTarPerm extractEntry .travis.yml
1483 silly gunzTarPerm extractEntry LICENCE
1484 silly gunzTarPerm extractEntry tar.js
1485 silly gunzTarPerm extractEntry LICENSE
1486 silly gunzTarPerm extractEntry fstream.js
1487 silly gunzTarPerm extractEntry History.md
1488 silly gunzTarPerm extractEntry Makefile
1489 silly gunzTarPerm extractEntry .travis.yml
1490 silly gunzTarPerm extractEntry examples/extracter.js
1491 silly gunzTarPerm extractEntry .travis.yml
1492 silly gunzTarPerm extractEntry examples/filter-pipe.js
1493 silly gunzTarPerm extractEntry examples/reader.js
1494 silly gunzTarPerm extractEntry lib/buffer-entry.js
1495 silly gunzTarPerm extractEntry examples/pipe.js
1496 silly gunzTarPerm extractEntry examples/reader.js
1497 silly gunzTarPerm extractEntry examples/symlink-write.js
1498 silly gunzTarPerm extractEntry lib/abstract.js
1499 silly gunzTarPerm extractEntry lib/dir-writer.js
1500 silly gunzTarPerm extractEntry lib/file-reader.js
1501 silly gunzTarPerm extractEntry lib/file-writer.js
1502 silly gunzTarPerm extractEntry lib/get-type.js
1503 silly gunzTarPerm extractEntry lib/dir-reader.js
1504 silly gunzTarPerm extractEntry lib/link-writer.js
1505 silly gunzTarPerm extractEntry lib/proxy-reader.js
1506 silly gunzTarPerm extractEntry lib/proxy-writer.js
1507 silly gunzTarPerm extractEntry lib/reader.js
1508 silly gunzTarPerm extractEntry lib/socket-reader.js
1509 silly gunzTarPerm extractEntry lib/collect.js
1510 silly gunzTarPerm extractEntry lib/writer.js
1511 silly gunzTarPerm extractEntry lib/link-reader.js
1512 silly gunzTarPerm extractEntry lib/entry-writer.js
1513 silly gunzTarPerm extractEntry lib/entry.js
1514 silly gunzTarPerm extractEntry lib/extended-header-writer.js
1515 silly gunzTarPerm extractEntry lib/extended-header.js
1516 silly gunzTarPerm extractEntry lib/extract.js
1517 silly gunzTarPerm extractEntry lib/global-header-writer.js
1518 silly gunzTarPerm extractEntry lib/header.js
1519 silly gunzTarPerm extractEntry Readme.md
1520 silly gunzTarPerm extractEntry lib/pack.js
1521 silly gunzTarPerm extractEntry lib/parse.js
1522 silly gunzTarPerm extractEntry test/00-setup-fixtures.js
1523 silly gunzTarPerm extractEntry test/extract.js
1524 silly gunzTarPerm extractEntry test/header.js
1525 silly gunzTarPerm extractEntry test/pack-no-proprietary.js
1526 silly gunzTarPerm extractEntry test/pack.js
1527 silly gunzTarPerm extractEntry test/parse.js
1528 silly lockFile 81160cbe-es-tar-gz-node-modules-commander tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander
1529 silly lockFile 81160cbe-es-tar-gz-node-modules-commander tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander
1530 silly lockFile 71e32ab0--npm-commander-1-1-1-package-tgz tar:///home/patcon/.npm/commander/1.1.1/package.tgz
1531 silly lockFile 71e32ab0--npm-commander-1-1-1-package-tgz tar:///home/patcon/.npm/commander/1.1.1/package.tgz
1532 silly gunzTarPerm extractEntry test/zz-cleanup.js
1533 silly gunzTarPerm extractEntry test/fixtures.tgz
1534 info preinstall commander@1.1.1
1535 verbose readDependencies using package.json deps
1536 verbose readDependencies using package.json deps
1537 verbose cache add [ 'keypress@0.1.x', null ]
1538 verbose cache add name=undefined spec="keypress@0.1.x" args=["keypress@0.1.x",null]
1539 verbose parsed url { protocol: null,
1539 verbose parsed url slashes: null,
1539 verbose parsed url auth: null,
1539 verbose parsed url host: null,
1539 verbose parsed url port: null,
1539 verbose parsed url hostname: null,
1539 verbose parsed url hash: null,
1539 verbose parsed url search: null,
1539 verbose parsed url query: null,
1539 verbose parsed url pathname: 'keypress@0.1.x',
1539 verbose parsed url path: 'keypress@0.1.x',
1539 verbose parsed url href: 'keypress@0.1.x' }
1540 verbose cache add name="keypress" spec="0.1.x" args=["keypress","0.1.x"]
1541 verbose parsed url { protocol: null,
1541 verbose parsed url slashes: null,
1541 verbose parsed url auth: null,
1541 verbose parsed url host: null,
1541 verbose parsed url port: null,
1541 verbose parsed url hostname: null,
1541 verbose parsed url hash: null,
1541 verbose parsed url search: null,
1541 verbose parsed url query: null,
1541 verbose parsed url pathname: '0.1.x',
1541 verbose parsed url path: '0.1.x',
1541 verbose parsed url href: '0.1.x' }
1542 verbose addNamed [ 'keypress', '0.1.x' ]
1543 verbose addNamed [ null, '>=0.1.0-0 <0.2.0-0' ]
1544 silly lockFile a3a73622-keypress-0-1-x keypress@0.1.x
1545 verbose lock keypress@0.1.x /home/patcon/.npm/a3a73622-keypress-0-1-x.lock
1546 silly addNameRange { name: 'keypress', range: '>=0.1.0-0 <0.2.0-0', hasData: false }
1547 verbose url raw keypress
1548 verbose url resolving [ 'https://registry.npmjs.org/', './keypress' ]
1549 verbose url resolved https://registry.npmjs.org/keypress
1550 info trying registry request attempt 1 at 12:17:28
1551 verbose etag "1LD81EGIA2YFWDQ5AQIMRVFG9"
1552 http GET https://registry.npmjs.org/keypress
1553 silly lockFile 52b745aa-ules-tar-gz-node-modules-fstream tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream
1554 silly lockFile 52b745aa-ules-tar-gz-node-modules-fstream tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream
1555 silly lockFile 77810800-n-npm-fstream-0-1-25-package-tgz tar:///home/patcon/.npm/fstream/0.1.25/package.tgz
1556 silly lockFile 77810800-n-npm-fstream-0-1-25-package-tgz tar:///home/patcon/.npm/fstream/0.1.25/package.tgz
1557 info preinstall fstream@0.1.25
1558 verbose readDependencies using package.json deps
1559 verbose readDependencies using package.json deps
1560 verbose cache add [ 'rimraf@2', null ]
1561 verbose cache add name=undefined spec="rimraf@2" args=["rimraf@2",null]
1562 verbose parsed url { protocol: null,
1562 verbose parsed url slashes: null,
1562 verbose parsed url auth: null,
1562 verbose parsed url host: null,
1562 verbose parsed url port: null,
1562 verbose parsed url hostname: null,
1562 verbose parsed url hash: null,
1562 verbose parsed url search: null,
1562 verbose parsed url query: null,
1562 verbose parsed url pathname: 'rimraf@2',
1562 verbose parsed url path: 'rimraf@2',
1562 verbose parsed url href: 'rimraf@2' }
1563 verbose cache add name="rimraf" spec="2" args=["rimraf","2"]
1564 verbose parsed url { protocol: null,
1564 verbose parsed url slashes: null,
1564 verbose parsed url auth: null,
1564 verbose parsed url host: null,
1564 verbose parsed url port: null,
1564 verbose parsed url hostname: null,
1564 verbose parsed url hash: null,
1564 verbose parsed url search: null,
1564 verbose parsed url query: null,
1564 verbose parsed url pathname: '2',
1564 verbose parsed url path: '2',
1564 verbose parsed url href: '2' }
1565 verbose addNamed [ 'rimraf', '2' ]
1566 verbose addNamed [ null, '>=2.0.0-0 <3.0.0-0' ]
1567 silly lockFile 8c081391-rimraf-2 rimraf@2
1568 verbose lock rimraf@2 /home/patcon/.npm/8c081391-rimraf-2.lock
1569 verbose cache add [ 'graceful-fs@~2.0.0', null ]
1570 verbose cache add name=undefined spec="graceful-fs@~2.0.0" args=["graceful-fs@~2.0.0",null]
1571 verbose parsed url { protocol: null,
1571 verbose parsed url slashes: null,
1571 verbose parsed url auth: null,
1571 verbose parsed url host: null,
1571 verbose parsed url port: null,
1571 verbose parsed url hostname: null,
1571 verbose parsed url hash: null,
1571 verbose parsed url search: null,
1571 verbose parsed url query: null,
1571 verbose parsed url pathname: 'graceful-fs@~2.0.0',
1571 verbose parsed url path: 'graceful-fs@~2.0.0',
1571 verbose parsed url href: 'graceful-fs@~2.0.0' }
1572 verbose cache add name="graceful-fs" spec="~2.0.0" args=["graceful-fs","~2.0.0"]
1573 verbose parsed url { protocol: null,
1573 verbose parsed url slashes: null,
1573 verbose parsed url auth: null,
1573 verbose parsed url host: null,
1573 verbose parsed url port: null,
1573 verbose parsed url hostname: null,
1573 verbose parsed url hash: null,
1573 verbose parsed url search: null,
1573 verbose parsed url query: null,
1573 verbose parsed url pathname: '~2.0.0',
1573 verbose parsed url path: '~2.0.0',
1573 verbose parsed url href: '~2.0.0' }
1574 verbose addNamed [ 'graceful-fs', '~2.0.0' ]
1575 verbose addNamed [ null, '>=2.0.0-0 <2.1.0-0' ]
1576 silly lockFile 8863dcc9-graceful-fs-2-0-0 graceful-fs@~2.0.0
1577 verbose lock graceful-fs@~2.0.0 /home/patcon/.npm/8863dcc9-graceful-fs-2-0-0.lock
1578 silly addNameRange { name: 'rimraf', range: '>=2.0.0-0 <3.0.0-0', hasData: false }
1579 verbose cache add [ 'inherits@~2.0.0', null ]
1580 verbose cache add name=undefined spec="inherits@~2.0.0" args=["inherits@~2.0.0",null]
1581 verbose parsed url { protocol: null,
1581 verbose parsed url slashes: null,
1581 verbose parsed url auth: null,
1581 verbose parsed url host: null,
1581 verbose parsed url port: null,
1581 verbose parsed url hostname: null,
1581 verbose parsed url hash: null,
1581 verbose parsed url search: null,
1581 verbose parsed url query: null,
1581 verbose parsed url pathname: 'inherits@~2.0.0',
1581 verbose parsed url path: 'inherits@~2.0.0',
1581 verbose parsed url href: 'inherits@~2.0.0' }
1582 verbose cache add name="inherits" spec="~2.0.0" args=["inherits","~2.0.0"]
1583 verbose parsed url { protocol: null,
1583 verbose parsed url slashes: null,
1583 verbose parsed url auth: null,
1583 verbose parsed url host: null,
1583 verbose parsed url port: null,
1583 verbose parsed url hostname: null,
1583 verbose parsed url hash: null,
1583 verbose parsed url search: null,
1583 verbose parsed url query: null,
1583 verbose parsed url pathname: '~2.0.0',
1583 verbose parsed url path: '~2.0.0',
1583 verbose parsed url href: '~2.0.0' }
1584 verbose addNamed [ 'inherits', '~2.0.0' ]
1585 verbose addNamed [ null, '>=2.0.0-0 <2.1.0-0' ]
1586 silly lockFile e2566bb4-inherits-2-0-0 inherits@~2.0.0
1587 verbose lock inherits@~2.0.0 /home/patcon/.npm/e2566bb4-inherits-2-0-0.lock
1588 silly addNameRange { name: 'graceful-fs',
1588 silly addNameRange range: '>=2.0.0-0 <2.1.0-0',
1588 silly addNameRange hasData: false }
1589 silly addNameRange { name: 'inherits', range: '>=2.0.0-0 <2.1.0-0', hasData: false }
1590 verbose registry.get rimraf not expired, no request
1591 silly addNameRange number 2 { name: 'rimraf', range: '>=2.0.0-0 <3.0.0-0', hasData: true }
1592 silly addNameRange versions [ 'rimraf',
1592 silly addNameRange [ '1.0.0',
1592 silly addNameRange '1.0.1',
1592 silly addNameRange '1.0.2',
1592 silly addNameRange '1.0.4',
1592 silly addNameRange '1.0.5',
1592 silly addNameRange '1.0.6',
1592 silly addNameRange '1.0.7',
1592 silly addNameRange '1.0.8',
1592 silly addNameRange '1.0.9',
1592 silly addNameRange '2.0.0',
1592 silly addNameRange '2.0.1',
1592 silly addNameRange '2.0.2',
1592 silly addNameRange '2.0.3',
1592 silly addNameRange '2.1.0',
1592 silly addNameRange '2.1.1',
1592 silly addNameRange '2.1.2',
1592 silly addNameRange '2.1.3',
1592 silly addNameRange '2.1.4',
1592 silly addNameRange '2.2.0',
1592 silly addNameRange '2.2.1',
1592 silly addNameRange '2.2.2',
1592 silly addNameRange '2.2.3',
1592 silly addNameRange '2.2.4',
1592 silly addNameRange '2.2.5',
1592 silly addNameRange '2.2.6' ] ]
1593 verbose addNamed [ 'rimraf', '2.2.6' ]
1594 verbose addNamed [ '2.2.6', '2.2.6' ]
1595 silly lockFile b59ed777-rimraf-2-2-6 rimraf@2.2.6
1596 verbose lock rimraf@2.2.6 /home/patcon/.npm/b59ed777-rimraf-2-2-6.lock
1597 verbose registry.get graceful-fs not expired, no request
1598 silly addNameRange number 2 { name: 'graceful-fs',
1598 silly addNameRange range: '>=2.0.0-0 <2.1.0-0',
1598 silly addNameRange hasData: true }
1599 silly addNameRange versions [ 'graceful-fs',
1599 silly addNameRange [ '1.0.0',
1599 silly addNameRange '1.0.1',
1599 silly addNameRange '1.0.2',
1599 silly addNameRange '1.1.0',
1599 silly addNameRange '1.1.1',
1599 silly addNameRange '1.1.2',
1599 silly addNameRange '1.1.3',
1599 silly addNameRange '1.1.4',
1599 silly addNameRange '1.1.5',
1599 silly addNameRange '1.1.6',
1599 silly addNameRange '1.1.7',
1599 silly addNameRange '1.1.8',
1599 silly addNameRange '1.1.9',
1599 silly addNameRange '1.1.10',
1599 silly addNameRange '1.1.11',
1599 silly addNameRange '1.1.12',
1599 silly addNameRange '1.1.13',
1599 silly addNameRange '1.1.14',
1599 silly addNameRange '1.2.0',
1599 silly addNameRange '1.2.1',
1599 silly addNameRange '1.2.2',
1599 silly addNameRange '1.2.3',
1599 silly addNameRange '2.0.0',
1599 silly addNameRange '2.0.1',
1599 silly addNameRange '2.0.2',
1599 silly addNameRange '2.0.3' ] ]
1600 verbose addNamed [ 'graceful-fs', '2.0.3' ]
1601 verbose addNamed [ '2.0.3', '2.0.3' ]
1602 silly lockFile aa717173-graceful-fs-2-0-3 graceful-fs@2.0.3
1603 verbose lock graceful-fs@2.0.3 /home/patcon/.npm/aa717173-graceful-fs-2-0-3.lock
1604 verbose url raw inherits
1605 verbose url resolving [ 'https://registry.npmjs.org/', './inherits' ]
1606 verbose url resolved https://registry.npmjs.org/inherits
1607 info trying registry request attempt 1 at 12:17:28
1608 verbose etag "5EGJ8OP5OD36QKCYXDH0VPTWW"
1609 http GET https://registry.npmjs.org/inherits
1610 silly lockFile b59ed777-rimraf-2-2-6 rimraf@2.2.6
1611 silly lockFile b59ed777-rimraf-2-2-6 rimraf@2.2.6
1612 silly lockFile 8c081391-rimraf-2 rimraf@2
1613 silly lockFile 8c081391-rimraf-2 rimraf@2
1614 silly lockFile aa717173-graceful-fs-2-0-3 graceful-fs@2.0.3
1615 silly lockFile aa717173-graceful-fs-2-0-3 graceful-fs@2.0.3
1616 silly lockFile 8863dcc9-graceful-fs-2-0-0 graceful-fs@~2.0.0
1617 silly lockFile 8863dcc9-graceful-fs-2-0-0 graceful-fs@~2.0.0
1618 silly lockFile 34c7b6bd--modules-tar-gz-node-modules-tar tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar
1619 silly lockFile 34c7b6bd--modules-tar-gz-node-modules-tar tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar
1620 silly lockFile 26b6f87f-atcon-npm-tar-0-1-19-package-tgz tar:///home/patcon/.npm/tar/0.1.19/package.tgz
1621 silly lockFile 26b6f87f-atcon-npm-tar-0-1-19-package-tgz tar:///home/patcon/.npm/tar/0.1.19/package.tgz
1622 info preinstall tar@0.1.19
1623 verbose readDependencies using package.json deps
1624 verbose readDependencies using package.json deps
1625 verbose cache add [ 'inherits@2', null ]
1626 verbose cache add name=undefined spec="inherits@2" args=["inherits@2",null]
1627 verbose parsed url { protocol: null,
1627 verbose parsed url slashes: null,
1627 verbose parsed url auth: null,
1627 verbose parsed url host: null,
1627 verbose parsed url port: null,
1627 verbose parsed url hostname: null,
1627 verbose parsed url hash: null,
1627 verbose parsed url search: null,
1627 verbose parsed url query: null,
1627 verbose parsed url pathname: 'inherits@2',
1627 verbose parsed url path: 'inherits@2',
1627 verbose parsed url href: 'inherits@2' }
1628 verbose cache add name="inherits" spec="2" args=["inherits","2"]
1629 verbose parsed url { protocol: null,
1629 verbose parsed url slashes: null,
1629 verbose parsed url auth: null,
1629 verbose parsed url host: null,
1629 verbose parsed url port: null,
1629 verbose parsed url hostname: null,
1629 verbose parsed url hash: null,
1629 verbose parsed url search: null,
1629 verbose parsed url query: null,
1629 verbose parsed url pathname: '2',
1629 verbose parsed url path: '2',
1629 verbose parsed url href: '2' }
1630 verbose addNamed [ 'inherits', '2' ]
1631 verbose addNamed [ null, '>=2.0.0-0 <3.0.0-0' ]
1632 silly lockFile 1f7ff4de-inherits-2 inherits@2
1633 verbose lock inherits@2 /home/patcon/.npm/1f7ff4de-inherits-2.lock
1634 verbose cache add [ 'block-stream@*', null ]
1635 verbose cache add name=undefined spec="block-stream@*" args=["block-stream@*",null]
1636 verbose parsed url { protocol: null,
1636 verbose parsed url slashes: null,
1636 verbose parsed url auth: null,
1636 verbose parsed url host: null,
1636 verbose parsed url port: null,
1636 verbose parsed url hostname: null,
1636 verbose parsed url hash: null,
1636 verbose parsed url search: null,
1636 verbose parsed url query: null,
1636 verbose parsed url pathname: 'block-stream@*',
1636 verbose parsed url path: 'block-stream@*',
1636 verbose parsed url href: 'block-stream@*' }
1637 verbose cache add name="block-stream" spec="*" args=["block-stream","*"]
1638 verbose parsed url { protocol: null,
1638 verbose parsed url slashes: null,
1638 verbose parsed url auth: null,
1638 verbose parsed url host: null,
1638 verbose parsed url port: null,
1638 verbose parsed url hostname: null,
1638 verbose parsed url hash: null,
1638 verbose parsed url search: null,
1638 verbose parsed url query: null,
1638 verbose parsed url pathname: '*',
1638 verbose parsed url path: '*',
1638 verbose parsed url href: '*' }
1639 verbose addNamed [ 'block-stream', '*' ]
1640 verbose addNamed [ null, '*' ]
1641 silly lockFile 28c964d9-block-stream block-stream@*
1642 verbose lock block-stream@* /home/patcon/.npm/28c964d9-block-stream.lock
1643 silly addNameRange { name: 'inherits', range: '>=2.0.0-0 <3.0.0-0', hasData: false }
1644 silly addNameRange { name: 'block-stream', range: '*', hasData: false }
1645 verbose url raw inherits
1646 verbose url resolving [ 'https://registry.npmjs.org/', './inherits' ]
1647 verbose url resolved https://registry.npmjs.org/inherits
1648 info trying registry request attempt 1 at 12:17:28
1649 verbose etag "5EGJ8OP5OD36QKCYXDH0VPTWW"
1650 http GET https://registry.npmjs.org/inherits
1651 verbose url raw block-stream
1652 verbose url resolving [ 'https://registry.npmjs.org/', './block-stream' ]
1653 verbose url resolved https://registry.npmjs.org/block-stream
1654 info trying registry request attempt 1 at 12:17:28
1655 verbose etag "1KSSOSP7VW7NHXSPHP03IN0"
1656 http GET https://registry.npmjs.org/block-stream
1657 http 304 https://registry.npmjs.org/json-stringify-safe
1658 silly registry.get cb [ 304,
1658 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:28 GMT',
1658 silly registry.get server: 'Apache',
1658 silly registry.get via: '1.1 varnish',
1658 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:28 GMT',
1658 silly registry.get 'cache-control': 'max-age=1',
1658 silly registry.get etag: '"10P78UK5WHNFK3FTCYZG2TBEI"',
1658 silly registry.get 'x-served-by': 'cache-lax1423-LAX',
1658 silly registry.get 'x-cache': 'HIT',
1658 silly registry.get 'x-cache-hits': '1',
1658 silly registry.get 'x-timer': 'S1396207048.387846470,VS0,VE65',
1658 silly registry.get vary: 'Accept',
1658 silly registry.get 'content-length': '0',
1658 silly registry.get 'keep-alive': 'timeout=10, max=49',
1658 silly registry.get connection: 'Keep-Alive' } ]
1659 verbose etag json-stringify-safe from cache
1660 http 304 https://registry.npmjs.org/forever-agent
1661 silly registry.get cb [ 304,
1661 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:28 GMT',
1661 silly registry.get server: 'Apache',
1661 silly registry.get via: '1.1 varnish',
1661 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:28 GMT',
1661 silly registry.get 'cache-control': 'max-age=1',
1661 silly registry.get etag: '"CTW4LF2JA713BM4M5V0DLCCJX"',
1661 silly registry.get 'x-served-by': 'cache-lax1435-LAX',
1661 silly registry.get 'x-cache': 'HIT',
1661 silly registry.get 'x-cache-hits': '1',
1661 silly registry.get 'x-timer': 'S1396207048.394416332,VS0,VE64',
1661 silly registry.get vary: 'Accept',
1661 silly registry.get 'content-length': '0',
1661 silly registry.get 'keep-alive': 'timeout=10, max=49',
1661 silly registry.get connection: 'Keep-Alive' } ]
1662 verbose etag forever-agent from cache
1663 http 304 https://registry.npmjs.org/node-uuid
1664 silly registry.get cb [ 304,
1664 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:28 GMT',
1664 silly registry.get server: 'Apache',
1664 silly registry.get via: '1.1 varnish',
1664 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:28 GMT',
1664 silly registry.get 'cache-control': 'max-age=1',
1664 silly registry.get etag: '"8U0EWSLBM6H5GCQAZW93HZIWA"',
1664 silly registry.get 'x-served-by': 'cache-lax1431-LAX',
1664 silly registry.get 'x-cache': 'HIT',
1664 silly registry.get 'x-cache-hits': '1',
1664 silly registry.get 'x-timer': 'S1396207048.391855001,VS0,VE75',
1664 silly registry.get vary: 'Accept',
1664 silly registry.get 'content-length': '0',
1664 silly registry.get 'keep-alive': 'timeout=10, max=49',
1664 silly registry.get connection: 'Keep-Alive' } ]
1665 verbose etag node-uuid from cache
1666 http 304 https://registry.npmjs.org/ansi
1667 silly registry.get cb [ 304,
1667 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:28 GMT',
1667 silly registry.get server: 'Apache',
1667 silly registry.get via: '1.1 varnish',
1667 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:28 GMT',
1667 silly registry.get 'cache-control': 'max-age=1',
1667 silly registry.get etag: '"2HBRB10XV3ZN7VK8SVBZYVD9J"',
1667 silly registry.get 'x-served-by': 'cache-lax1428-LAX',
1667 silly registry.get 'x-cache': 'HIT',
1667 silly registry.get 'x-cache-hits': '1',
1667 silly registry.get 'x-timer': 'S1396207048.440392256,VS0,VE64',
1667 silly registry.get vary: 'Accept',
1667 silly registry.get 'content-length': '0',
1667 silly registry.get 'keep-alive': 'timeout=10, max=50',
1667 silly registry.get connection: 'Keep-Alive' } ]
1668 verbose etag ansi from cache
1669 http 304 https://registry.npmjs.org/qs
1670 silly registry.get cb [ 304,
1670 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:28 GMT',
1670 silly registry.get server: 'Apache',
1670 silly registry.get via: '1.1 varnish',
1670 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:28 GMT',
1670 silly registry.get 'cache-control': 'max-age=1',
1670 silly registry.get etag: '"AVG9XKSRXQEXMFJNJ91M185FB"',
1670 silly registry.get 'x-served-by': 'cache-lax1429-LAX',
1670 silly registry.get 'x-cache': 'HIT',
1670 silly registry.get 'x-cache-hits': '1',
1670 silly registry.get 'x-timer': 'S1396207048.446958065,VS0,VE64',
1670 silly registry.get vary: 'Accept',
1670 silly registry.get 'content-length': '0',
1670 silly registry.get 'keep-alive': 'timeout=10, max=50',
1670 silly registry.get connection: 'Keep-Alive' } ]
1671 verbose etag qs from cache
1672 silly addNameRange number 2 { name: 'json-stringify-safe',
1672 silly addNameRange range: '>=5.0.0-0 <5.1.0-0',
1672 silly addNameRange hasData: true }
1673 silly addNameRange versions [ 'json-stringify-safe',
1673 silly addNameRange [ '2.0.0', '3.0.0', '4.0.0', '5.0.0' ] ]
1674 verbose addNamed [ 'json-stringify-safe', '5.0.0' ]
1675 verbose addNamed [ '5.0.0', '5.0.0' ]
1676 silly lockFile 1d9ebe76-json-stringify-safe-5-0-0 json-stringify-safe@5.0.0
1677 verbose lock json-stringify-safe@5.0.0 /home/patcon/.npm/1d9ebe76-json-stringify-safe-5-0-0.lock
1678 silly addNameRange number 2 { name: 'forever-agent',
1678 silly addNameRange range: '>=0.5.0-0 <0.6.0-0',
1678 silly addNameRange hasData: true }
1679 silly addNameRange versions [ 'forever-agent',
1679 silly addNameRange [ '0.2.0', '0.3.0', '0.4.0', '0.5.0', '0.5.2' ] ]
1680 verbose addNamed [ 'forever-agent', '0.5.2' ]
1681 verbose addNamed [ '0.5.2', '0.5.2' ]
1682 silly lockFile 20c7a74d-forever-agent-0-5-2 forever-agent@0.5.2
1683 verbose lock forever-agent@0.5.2 /home/patcon/.npm/20c7a74d-forever-agent-0-5-2.lock
1684 silly addNameRange number 2 { name: 'ansi', range: '>=0.2.1-0 <0.3.0-0', hasData: true }
1685 silly addNameRange versions [ 'ansi',
1685 silly addNameRange [ '0.0.1',
1685 silly addNameRange '0.0.2',
1685 silly addNameRange '0.0.3',
1685 silly addNameRange '0.0.4',
1685 silly addNameRange '0.1.0',
1685 silly addNameRange '0.1.1',
1685 silly addNameRange '0.1.2',
1685 silly addNameRange '0.2.0',
1685 silly addNameRange '0.2.1' ] ]
1686 verbose addNamed [ 'ansi', '0.2.1' ]
1687 verbose addNamed [ '0.2.1', '0.2.1' ]
1688 silly lockFile ce01b7e1-ansi-0-2-1 ansi@0.2.1
1689 verbose lock ansi@0.2.1 /home/patcon/.npm/ce01b7e1-ansi-0-2-1.lock
1690 silly addNameRange number 2 { name: 'node-uuid', range: '>=1.4.0-0 <1.5.0-0', hasData: true }
1691 silly addNameRange versions [ 'node-uuid',
1691 silly addNameRange [ '1.2.0',
1691 silly addNameRange '1.3.0',
1691 silly addNameRange '1.3.1',
1691 silly addNameRange '1.3.2',
1691 silly addNameRange '1.1.0',
1691 silly addNameRange '1.0.0',
1691 silly addNameRange '1.3.3',
1691 silly addNameRange '1.4.0',
1691 silly addNameRange '1.4.1' ] ]
1692 verbose addNamed [ 'node-uuid', '1.4.1' ]
1693 verbose addNamed [ '1.4.1', '1.4.1' ]
1694 silly lockFile 7c2028cd-node-uuid-1-4-1 node-uuid@1.4.1
1695 verbose lock node-uuid@1.4.1 /home/patcon/.npm/7c2028cd-node-uuid-1-4-1.lock
1696 silly addNameRange number 2 { name: 'qs', range: '>=0.6.0-0 <0.7.0-0', hasData: true }
1697 silly addNameRange versions [ 'qs',
1697 silly addNameRange [ '0.0.1',
1697 silly addNameRange '0.0.2',
1697 silly addNameRange '0.0.3',
1697 silly addNameRange '0.0.4',
1697 silly addNameRange '0.0.5',
1697 silly addNameRange '0.0.6',
1697 silly addNameRange '0.0.7',
1697 silly addNameRange '0.1.0',
1697 silly addNameRange '0.2.0',
1697 silly addNameRange '0.3.0',
1697 silly addNameRange '0.3.1',
1697 silly addNameRange '0.3.2',
1697 silly addNameRange '0.4.0',
1697 silly addNameRange '0.4.1',
1697 silly addNameRange '0.4.2',
1697 silly addNameRange '0.5.0',
1697 silly addNameRange '0.5.1',
1697 silly addNameRange '0.5.2',
1697 silly addNameRange '0.5.3',
1697 silly addNameRange '0.5.4',
1697 silly addNameRange '0.5.5',
1697 silly addNameRange '0.5.6',
1697 silly addNameRange '0.6.0',
1697 silly addNameRange '0.6.1',
1697 silly addNameRange '0.6.2',
1697 silly addNameRange '0.6.3',
1697 silly addNameRange '0.6.4',
1697 silly addNameRange '0.6.5',
1697 silly addNameRange '0.6.6' ] ]
1698 verbose addNamed [ 'qs', '0.6.6' ]
1699 verbose addNamed [ '0.6.6', '0.6.6' ]
1700 silly lockFile b8bccda2-qs-0-6-6 qs@0.6.6
1701 verbose lock qs@0.6.6 /home/patcon/.npm/b8bccda2-qs-0-6-6.lock
1702 silly lockFile 20c7a74d-forever-agent-0-5-2 forever-agent@0.5.2
1703 silly lockFile 20c7a74d-forever-agent-0-5-2 forever-agent@0.5.2
1704 silly lockFile 1d9ebe76-json-stringify-safe-5-0-0 json-stringify-safe@5.0.0
1705 silly lockFile 1d9ebe76-json-stringify-safe-5-0-0 json-stringify-safe@5.0.0
1706 silly lockFile ce01b7e1-ansi-0-2-1 ansi@0.2.1
1707 silly lockFile ce01b7e1-ansi-0-2-1 ansi@0.2.1
1708 silly lockFile fa463915-forever-agent-0-5-0 forever-agent@~0.5.0
1709 silly lockFile fa463915-forever-agent-0-5-0 forever-agent@~0.5.0
1710 silly lockFile 063b1a01-json-stringify-safe-5-0-0 json-stringify-safe@~5.0.0
1711 silly lockFile 063b1a01-json-stringify-safe-5-0-0 json-stringify-safe@~5.0.0
1712 silly lockFile 36148370-ansi-0-2-1 ansi@~0.2.1
1713 silly lockFile 36148370-ansi-0-2-1 ansi@~0.2.1
1714 silly lockFile 7c2028cd-node-uuid-1-4-1 node-uuid@1.4.1
1715 silly lockFile 7c2028cd-node-uuid-1-4-1 node-uuid@1.4.1
1716 silly resolved [ { name: 'ansi',
1716 silly resolved description: 'Advanced ANSI formatting tool for Node.js',
1716 silly resolved keywords:
1716 silly resolved [ 'ansi',
1716 silly resolved 'formatting',
1716 silly resolved 'cursor',
1716 silly resolved 'color',
1716 silly resolved 'terminal',
1716 silly resolved 'rgb',
1716 silly resolved '256',
1716 silly resolved 'stream' ],
1716 silly resolved version: '0.2.1',
1716 silly resolved author:
1716 silly resolved { name: 'Nathan Rajlich',
1716 silly resolved email: 'nathan@tootallnate.net',
1716 silly resolved url: 'http://tootallnate.net' },
1716 silly resolved repository: { type: 'git', url: 'git://github.com/TooTallNate/ansi.js.git' },
1716 silly resolved main: './lib/ansi.js',
1716 silly resolved bin:
1716 silly resolved { beep: './examples/beep/index.js',
1716 silly resolved clear: './examples/clear/index.js',
1716 silly resolved starwars: './examples/starwars.js' },
1716 silly resolved scripts: { test: 'mocha --reporter spec' },
1716 silly resolved devDependencies: { mocha: '*' },
1716 silly resolved engines: { node: '*' },
1716 silly resolved readme: 'ansi.js\n=========\n### Advanced ANSI formatting tool for Node.js\n\n`ansi.js` is a module for Node.js that provides an easy-to-use API for\nwriting ANSI escape codes to `Stream` instances. ANSI escape codes are used to do\nfancy things in a terminal window, like render text in colors, delete characters,\nlines, the entire window, or hide and show the cursor, and lots more!\n\nThe code for the example in the screenshot above can be found in the\n`examples/imgcat` directory.\n\n#### Features:\n\n * 256 color support for the terminal!\n * Make a beep sound from your terminal!\n * Works with *any* writable `Stream` instance.\n * Allows you to move the cursor anywhere on the terminal window.\n * Allows you to delete existing contents from the terminal window.\n * Allows you to hide and show the cursor.\n * Converts CSS color codes and RGB values into ANSI escape codes.\n * Low-level; you are in control of when escape codes are used, it\'s not abstracted.\n\n\nInstallation\n------------\n\nInstall with `npm`:\n\n``` bash\n$ npm install ansi\n```\n\n\nExample\n-------\n\n``` js\nvar ansi = require(\'ansi\')\n , cursor = ansi(process.stdout)\n\n// You can chain your calls forever:\ncursor\n .red() // Set font color to red\n .bg.grey() // Set background color to grey\n .write(\'Hello World!\') // Write \'Hello World!\' to stdout\n .bg.reset() // Reset the bgcolor before writing the trailing \\n,\n // to avoid Terminal glitches\n .write(\'\\n\') // And a final \\n to wrap things up\n\n// Rendering modes are persistent:\ncursor.hex(\'#660000\').bold().underline()\n\n// You can use the regular logging functions, text will be green\nconsole.log(\'This is blood red, bold text\')\n\n// To reset just the foreground color:\ncursor.fg.reset()\n\nconsole.log(\'This will still be bold\')\n\n// Clean up after yourself!\ncursor.reset()\n```\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich &lt;nathan@tootallnate.net&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\'Software\'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \'AS IS\', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n',
1716 silly resolved readmeFilename: 'README.md',
1716 silly resolved bugs: { url: 'https://github.com/TooTallNate/ansi.js/issues' },
1716 silly resolved homepage: 'https://github.com/TooTallNate/ansi.js',
1716 silly resolved _id: 'ansi@0.2.1',
1716 silly resolved _from: 'ansi@~0.2.1' } ]
1717 info install ansi@0.2.1 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog
1718 info installOne ansi@0.2.1
1719 silly lockFile f662725f-node-uuid-1-4-0 node-uuid@~1.4.0
1720 silly lockFile f662725f-node-uuid-1-4-0 node-uuid@~1.4.0
1721 silly lockFile b8bccda2-qs-0-6-6 qs@0.6.6
1722 silly lockFile b8bccda2-qs-0-6-6 qs@0.6.6
1723 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog/node_modules/ansi unbuild
1724 silly lockFile 222bee9e-qs-0-6-0 qs@~0.6.0
1725 silly lockFile 222bee9e-qs-0-6-0 qs@~0.6.0
1726 verbose tar unpack /home/patcon/.npm/ansi/0.2.1/package.tgz
1727 silly lockFile 8f6cf70e-modules-npmlog-node-modules-ansi tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog/node_modules/ansi
1728 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog/node_modules/ansi /home/patcon/.npm/8f6cf70e-modules-npmlog-node-modules-ansi.lock
1729 silly lockFile 2897e4db-atcon-npm-ansi-0-2-1-package-tgz tar:///home/patcon/.npm/ansi/0.2.1/package.tgz
1730 verbose lock tar:///home/patcon/.npm/ansi/0.2.1/package.tgz /home/patcon/.npm/2897e4db-atcon-npm-ansi-0-2-1-package-tgz.lock
1731 silly gunzTarPerm modes [ '755', '644' ]
1732 silly gunzTarPerm extractEntry package.json
1733 silly gunzTarPerm extractEntry .npmignore
1734 silly gunzTarPerm extractEntry README.md
1735 silly gunzTarPerm extractEntry color-spaces.pl
1736 silly gunzTarPerm extractEntry examples/cursorPosition.js
1737 silly gunzTarPerm extractEntry examples/starwars.js
1738 silly gunzTarPerm extractEntry examples/beep/index.js
1739 silly gunzTarPerm extractEntry examples/clear/index.js
1740 silly gunzTarPerm extractEntry examples/progress/index.js
1741 silly gunzTarPerm extractEntry lib/ansi.js
1742 silly gunzTarPerm extractEntry lib/newlines.js
1743 silly lockFile 8f6cf70e-modules-npmlog-node-modules-ansi tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog/node_modules/ansi
1744 silly lockFile 8f6cf70e-modules-npmlog-node-modules-ansi tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog/node_modules/ansi
1745 silly lockFile 2897e4db-atcon-npm-ansi-0-2-1-package-tgz tar:///home/patcon/.npm/ansi/0.2.1/package.tgz
1746 silly lockFile 2897e4db-atcon-npm-ansi-0-2-1-package-tgz tar:///home/patcon/.npm/ansi/0.2.1/package.tgz
1747 info preinstall ansi@0.2.1
1748 verbose readDependencies using package.json deps
1749 verbose readDependencies using package.json deps
1750 silly resolved []
1751 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog/node_modules/ansi
1752 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog/node_modules/ansi
1753 verbose linkStuff [ true,
1753 verbose linkStuff '/usr/lib/node_modules',
1753 verbose linkStuff false,
1753 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog/node_modules' ]
1754 info linkStuff ansi@0.2.1
1755 verbose linkBins ansi@0.2.1
1756 verbose link bins [ { beep: './examples/beep/index.js',
1756 verbose link bins clear: './examples/clear/index.js',
1756 verbose link bins starwars: './examples/starwars.js' },
1756 verbose link bins '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog/node_modules/.bin',
1756 verbose link bins false ]
1757 verbose linkMans ansi@0.2.1
1758 verbose rebuildBundles ansi@0.2.1
1759 info install ansi@0.2.1
1760 info postinstall ansi@0.2.1
1761 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog
1762 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/npmlog
1763 verbose linkStuff [ true,
1763 verbose linkStuff '/usr/lib/node_modules',
1763 verbose linkStuff false,
1763 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules' ]
1764 info linkStuff npmlog@0.0.6
1765 verbose linkBins npmlog@0.0.6
1766 verbose linkMans npmlog@0.0.6
1767 verbose rebuildBundles npmlog@0.0.6
1768 verbose rebuildBundles [ '.bin', 'ansi' ]
1769 info install npmlog@0.0.6
1770 info postinstall npmlog@0.0.6
1771 http 304 https://registry.npmjs.org/mime
1772 silly registry.get cb [ 304,
1772 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:28 GMT',
1772 silly registry.get server: 'Apache',
1772 silly registry.get via: '1.1 varnish',
1772 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:28 GMT',
1772 silly registry.get 'cache-control': 'max-age=1',
1772 silly registry.get etag: '"12YVN9GQUFEWP6XYJM0WZU2UU"',
1772 silly registry.get 'x-served-by': 'cache-lax1423-LAX',
1772 silly registry.get 'x-cache': 'HIT',
1772 silly registry.get 'x-cache-hits': '1',
1772 silly registry.get 'x-timer': 'S1396207048.720995903,VS0,VE64',
1772 silly registry.get vary: 'Accept',
1772 silly registry.get 'content-length': '0',
1772 silly registry.get 'keep-alive': 'timeout=10, max=48',
1772 silly registry.get connection: 'Keep-Alive' } ]
1773 verbose etag mime from cache
1774 http 304 https://registry.npmjs.org/tunnel-agent
1775 silly registry.get cb [ 304,
1775 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:28 GMT',
1775 silly registry.get server: 'Apache',
1775 silly registry.get via: '1.1 varnish',
1775 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:28 GMT',
1775 silly registry.get 'cache-control': 'max-age=1',
1775 silly registry.get etag: '"9A62E83S6J294DXA5ADLLEVXE"',
1775 silly registry.get 'x-served-by': 'cache-lax1428-LAX',
1775 silly registry.get 'x-cache': 'HIT',
1775 silly registry.get 'x-cache-hits': '1',
1775 silly registry.get 'x-timer': 'S1396207048.729779482,VS0,VE64',
1775 silly registry.get vary: 'Accept',
1775 silly registry.get 'content-length': '0',
1775 silly registry.get 'keep-alive': 'timeout=10, max=49',
1775 silly registry.get connection: 'Keep-Alive' } ]
1776 verbose etag tunnel-agent from cache
1777 http 304 https://registry.npmjs.org/form-data
1778 silly registry.get cb [ 304,
1778 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:28 GMT',
1778 silly registry.get server: 'Apache',
1778 silly registry.get via: '1.1 varnish',
1778 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:28 GMT',
1778 silly registry.get 'cache-control': 'max-age=1',
1778 silly registry.get etag: '"10TW4QPT9HK3V7FYTNWMDCQ18"',
1778 silly registry.get 'x-served-by': 'cache-lax1431-LAX',
1778 silly registry.get 'x-cache': 'HIT',
1778 silly registry.get 'x-cache-hits': '1',
1778 silly registry.get 'x-timer': 'S1396207048.727680206,VS0,VE80',
1778 silly registry.get vary: 'Accept',
1778 silly registry.get 'content-length': '0',
1778 silly registry.get 'keep-alive': 'timeout=10, max=48',
1778 silly registry.get connection: 'Keep-Alive' } ]
1779 verbose etag form-data from cache
1780 http 304 https://registry.npmjs.org/tough-cookie
1781 silly registry.get cb [ 304,
1781 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:28 GMT',
1781 silly registry.get server: 'Apache',
1781 silly registry.get via: '1.1 varnish',
1781 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:28 GMT',
1781 silly registry.get 'cache-control': 'max-age=1',
1781 silly registry.get etag: '"BNPBMY0X27JFBB8QVSXT3HP7J"',
1781 silly registry.get 'x-served-by': 'cache-lax1435-LAX',
1781 silly registry.get 'x-cache': 'HIT',
1781 silly registry.get 'x-cache-hits': '1',
1781 silly registry.get 'x-timer': 'S1396207048.724061966,VS0,VE251',
1781 silly registry.get vary: 'Accept',
1781 silly registry.get 'content-length': '0',
1781 silly registry.get 'keep-alive': 'timeout=10, max=48',
1781 silly registry.get connection: 'Keep-Alive' } ]
1782 verbose etag tough-cookie from cache
1783 http 304 https://registry.npmjs.org/http-signature
1784 silly registry.get cb [ 304,
1784 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:28 GMT',
1784 silly registry.get server: 'Apache',
1784 silly registry.get via: '1.1 varnish',
1784 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:28 GMT',
1784 silly registry.get 'cache-control': 'max-age=1',
1784 silly registry.get etag: '"87BH18LKILGR6PT4POXY21YY3"',
1784 silly registry.get 'x-served-by': 'cache-lax1429-LAX',
1784 silly registry.get 'x-cache': 'HIT',
1784 silly registry.get 'x-cache-hits': '1',
1784 silly registry.get 'x-timer': 'S1396207048.732420444,VS0,VE251',
1784 silly registry.get vary: 'Accept',
1784 silly registry.get 'content-length': '0',
1784 silly registry.get 'keep-alive': 'timeout=10, max=49',
1784 silly registry.get connection: 'Keep-Alive' } ]
1785 verbose etag http-signature from cache
1786 silly addNameRange number 2 { name: 'tunnel-agent',
1786 silly addNameRange range: '>=0.3.0-0 <0.4.0-0',
1786 silly addNameRange hasData: true }
1787 silly addNameRange versions [ 'tunnel-agent', [ '0.2.0', '0.3.0', '0.4.0' ] ]
1788 verbose addNamed [ 'tunnel-agent', '0.3.0' ]
1789 verbose addNamed [ '0.3.0', '0.3.0' ]
1790 silly lockFile d054959a-tunnel-agent-0-3-0 tunnel-agent@0.3.0
1791 verbose lock tunnel-agent@0.3.0 /home/patcon/.npm/d054959a-tunnel-agent-0-3-0.lock
1792 silly addNameRange number 2 { name: 'mime', range: '>=1.2.9-0 <1.3.0-0', hasData: true }
1793 silly addNameRange versions [ 'mime',
1793 silly addNameRange [ '1.0.0',
1793 silly addNameRange '1.1.0',
1793 silly addNameRange '1.2.1',
1793 silly addNameRange '1.2.2',
1793 silly addNameRange '1.2.3',
1793 silly addNameRange '1.2.4',
1793 silly addNameRange '1.2.5',
1793 silly addNameRange '1.2.6',
1793 silly addNameRange '1.2.7',
1793 silly addNameRange '1.2.8',
1793 silly addNameRange '1.2.9',
1793 silly addNameRange '1.2.10',
1793 silly addNameRange '1.2.11' ] ]
1794 verbose addNamed [ 'mime', '1.2.11' ]
1795 verbose addNamed [ '1.2.11', '1.2.11' ]
1796 silly lockFile c4b0741f-mime-1-2-11 mime@1.2.11
1797 verbose lock mime@1.2.11 /home/patcon/.npm/c4b0741f-mime-1-2-11.lock
1798 silly addNameRange number 2 { name: 'form-data', range: '>=0.1.0-0 <0.2.0-0', hasData: true }
1799 silly addNameRange versions [ 'form-data',
1799 silly addNameRange [ '0.0.0',
1799 silly addNameRange '0.0.2',
1799 silly addNameRange '0.0.3',
1799 silly addNameRange '0.0.4',
1799 silly addNameRange '0.0.5',
1799 silly addNameRange '0.0.6',
1799 silly addNameRange '0.0.7',
1799 silly addNameRange '0.0.8',
1799 silly addNameRange '0.0.9',
1799 silly addNameRange '0.0.10',
1799 silly addNameRange '0.1.0',
1799 silly addNameRange '0.1.1',
1799 silly addNameRange '0.1.2' ] ]
1800 verbose addNamed [ 'form-data', '0.1.2' ]
1801 verbose addNamed [ '0.1.2', '0.1.2' ]
1802 silly lockFile 5abf5da9-form-data-0-1-2 form-data@0.1.2
1803 verbose lock form-data@0.1.2 /home/patcon/.npm/5abf5da9-form-data-0-1-2.lock
1804 silly addNameRange number 2 { name: 'http-signature',
1804 silly addNameRange range: '>=0.10.0-0 <0.11.0-0',
1804 silly addNameRange hasData: true }
1805 silly addNameRange versions [ 'http-signature',
1805 silly addNameRange [ '0.9.0',
1805 silly addNameRange '0.9.2',
1805 silly addNameRange '0.9.3',
1805 silly addNameRange '0.9.4',
1805 silly addNameRange '0.9.5',
1805 silly addNameRange '0.9.6',
1805 silly addNameRange '0.9.7',
1805 silly addNameRange '0.9.8',
1805 silly addNameRange '0.9.9',
1805 silly addNameRange '0.9.10',
1805 silly addNameRange '0.9.11',
1805 silly addNameRange '0.10.0' ] ]
1806 verbose addNamed [ 'http-signature', '0.10.0' ]
1807 verbose addNamed [ '0.10.0', '0.10.0' ]
1808 silly lockFile f628681c-http-signature-0-10-0 http-signature@0.10.0
1809 verbose lock http-signature@0.10.0 /home/patcon/.npm/f628681c-http-signature-0-10-0.lock
1810 silly addNameRange number 2 { name: 'tough-cookie', range: '>=0.12.0', hasData: true }
1811 silly addNameRange versions [ 'tough-cookie',
1811 silly addNameRange [ '0.9.0',
1811 silly addNameRange '0.9.1',
1811 silly addNameRange '0.9.3',
1811 silly addNameRange '0.9.4',
1811 silly addNameRange '0.9.5',
1811 silly addNameRange '0.9.6',
1811 silly addNameRange '0.9.7',
1811 silly addNameRange '0.9.8',
1811 silly addNameRange '0.9.9',
1811 silly addNameRange '0.9.11',
1811 silly addNameRange '0.9.12',
1811 silly addNameRange '0.9.13',
1811 silly addNameRange '0.9.14',
1811 silly addNameRange '0.9.15',
1811 silly addNameRange '0.10.0',
1811 silly addNameRange '0.11.0',
1811 silly addNameRange '0.12.0',
1811 silly addNameRange '0.12.1' ] ]
1812 verbose addNamed [ 'tough-cookie', '0.12.1' ]
1813 verbose addNamed [ '0.12.1', '0.12.1' ]
1814 silly lockFile 9dd6163b-tough-cookie-0-12-1 tough-cookie@0.12.1
1815 verbose lock tough-cookie@0.12.1 /home/patcon/.npm/9dd6163b-tough-cookie-0-12-1.lock
1816 silly lockFile d054959a-tunnel-agent-0-3-0 tunnel-agent@0.3.0
1817 silly lockFile d054959a-tunnel-agent-0-3-0 tunnel-agent@0.3.0
1818 silly lockFile c4b0741f-mime-1-2-11 mime@1.2.11
1819 silly lockFile c4b0741f-mime-1-2-11 mime@1.2.11
1820 silly lockFile e5681eda-tunnel-agent-0-3-0 tunnel-agent@~0.3.0
1821 silly lockFile e5681eda-tunnel-agent-0-3-0 tunnel-agent@~0.3.0
1822 silly lockFile ccf24a67-mime-1-2-9 mime@~1.2.9
1823 silly lockFile ccf24a67-mime-1-2-9 mime@~1.2.9
1824 silly lockFile 5abf5da9-form-data-0-1-2 form-data@0.1.2
1825 silly lockFile 5abf5da9-form-data-0-1-2 form-data@0.1.2
1826 silly lockFile 26aa13f4-form-data-0-1-0 form-data@~0.1.0
1827 silly lockFile 26aa13f4-form-data-0-1-0 form-data@~0.1.0
1828 silly lockFile f628681c-http-signature-0-10-0 http-signature@0.10.0
1829 silly lockFile f628681c-http-signature-0-10-0 http-signature@0.10.0
1830 silly lockFile 8170f292-http-signature-0-10-0 http-signature@~0.10.0
1831 silly lockFile 8170f292-http-signature-0-10-0 http-signature@~0.10.0
1832 silly lockFile 9dd6163b-tough-cookie-0-12-1 tough-cookie@0.12.1
1833 silly lockFile 9dd6163b-tough-cookie-0-12-1 tough-cookie@0.12.1
1834 silly lockFile 66c18ba7-tough-cookie-0-12-0 tough-cookie@>=0.12.0
1835 silly lockFile 66c18ba7-tough-cookie-0-12-0 tough-cookie@>=0.12.0
1836 http 304 https://registry.npmjs.org/aws-sign2
1837 silly registry.get cb [ 304,
1837 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:29 GMT',
1837 silly registry.get server: 'Apache',
1837 silly registry.get via: '1.1 varnish',
1837 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:29 GMT',
1837 silly registry.get 'cache-control': 'max-age=1',
1837 silly registry.get etag: '"DG7RQ1NW6I9E9MBHLXLYVLEA8"',
1837 silly registry.get 'x-served-by': 'cache-lax1431-LAX',
1837 silly registry.get 'x-cache': 'HIT',
1837 silly registry.get 'x-cache-hits': '1',
1837 silly registry.get 'x-timer': 'S1396207049.033466578,VS0,VE64',
1837 silly registry.get vary: 'Accept',
1837 silly registry.get 'content-length': '0',
1837 silly registry.get 'keep-alive': 'timeout=10, max=47',
1837 silly registry.get connection: 'Keep-Alive' } ]
1838 verbose etag aws-sign2 from cache
1839 http 304 https://registry.npmjs.org/inherits
1840 silly registry.get cb [ 304,
1840 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:29 GMT',
1840 silly registry.get server: 'Apache',
1840 silly registry.get via: '1.1 varnish',
1840 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:29 GMT',
1840 silly registry.get 'cache-control': 'max-age=1',
1840 silly registry.get etag: '"5EGJ8OP5OD36QKCYXDH0VPTWW"',
1840 silly registry.get 'x-served-by': 'cache-lax1429-LAX',
1840 silly registry.get 'x-cache': 'HIT',
1840 silly registry.get 'x-cache-hits': '1',
1840 silly registry.get 'x-timer': 'S1396207049.037354946,VS0,VE64',
1840 silly registry.get vary: 'Accept',
1840 silly registry.get 'content-length': '0',
1840 silly registry.get 'keep-alive': 'timeout=10, max=48',
1840 silly registry.get connection: 'Keep-Alive' } ]
1841 verbose etag inherits from cache
1842 http 304 https://registry.npmjs.org/hawk
1843 silly registry.get cb [ 304,
1843 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:29 GMT',
1843 silly registry.get server: 'Apache',
1843 silly registry.get via: '1.1 varnish',
1843 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:29 GMT',
1843 silly registry.get 'cache-control': 'max-age=1',
1843 silly registry.get etag: '"2EO8HAJW608SLZOH2EPLMG7V8"',
1843 silly registry.get 'x-served-by': 'cache-lax1423-LAX',
1843 silly registry.get 'x-cache': 'HIT',
1843 silly registry.get 'x-cache-hits': '1',
1843 silly registry.get 'x-timer': 'S1396207049.028457403,VS0,VE75',
1843 silly registry.get vary: 'Accept',
1843 silly registry.get 'content-length': '0',
1843 silly registry.get 'keep-alive': 'timeout=10, max=47',
1843 silly registry.get connection: 'Keep-Alive' } ]
1844 verbose etag hawk from cache
1845 http 304 https://registry.npmjs.org/oauth-sign
1846 silly registry.get cb [ 304,
1846 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:29 GMT',
1846 silly registry.get server: 'Apache',
1846 silly registry.get via: '1.1 varnish',
1846 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:29 GMT',
1846 silly registry.get 'cache-control': 'max-age=1',
1846 silly registry.get etag: '"7TCSYVDRJJ7261FDY2IRWZVNQ"',
1846 silly registry.get 'x-served-by': 'cache-lax1428-LAX',
1846 silly registry.get 'x-cache': 'HIT',
1846 silly registry.get 'x-cache-hits': '1',
1846 silly registry.get 'x-timer': 'S1396207049.030714512,VS0,VE156',
1846 silly registry.get vary: 'Accept',
1846 silly registry.get 'content-length': '0',
1846 silly registry.get 'keep-alive': 'timeout=10, max=48',
1846 silly registry.get connection: 'Keep-Alive' } ]
1847 verbose etag oauth-sign from cache
1848 http 304 https://registry.npmjs.org/keypress
1849 silly registry.get cb [ 304,
1849 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:29 GMT',
1849 silly registry.get server: 'Apache',
1849 silly registry.get via: '1.1 varnish',
1849 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:29 GMT',
1849 silly registry.get 'cache-control': 'max-age=1',
1849 silly registry.get etag: '"1LD81EGIA2YFWDQ5AQIMRVFG9"',
1849 silly registry.get 'x-served-by': 'cache-lax1435-LAX',
1849 silly registry.get 'x-cache': 'HIT',
1849 silly registry.get 'x-cache-hits': '1',
1849 silly registry.get 'x-timer': 'S1396207049.035550833,VS0,VE152',
1849 silly registry.get vary: 'Accept',
1849 silly registry.get 'content-length': '0',
1849 silly registry.get 'keep-alive': 'timeout=10, max=47',
1849 silly registry.get connection: 'Keep-Alive' } ]
1850 verbose etag keypress from cache
1851 silly addNameRange number 2 { name: 'aws-sign2', range: '>=0.5.0-0 <0.6.0-0', hasData: true }
1852 silly addNameRange versions [ 'aws-sign2', [ '0.4.0', '0.5.0' ] ]
1853 verbose addNamed [ 'aws-sign2', '0.5.0' ]
1854 verbose addNamed [ '0.5.0', '0.5.0' ]
1855 silly lockFile 5a1dbd9b-aws-sign2-0-5-0 aws-sign2@0.5.0
1856 verbose lock aws-sign2@0.5.0 /home/patcon/.npm/5a1dbd9b-aws-sign2-0-5-0.lock
1857 silly addNameRange number 2 { name: 'inherits', range: '>=2.0.0-0 <2.1.0-0', hasData: true }
1858 silly addNameRange versions [ 'inherits', [ '1.0.0', '2.0.0', '2.0.1' ] ]
1859 verbose addNamed [ 'inherits', '2.0.1' ]
1860 verbose addNamed [ '2.0.1', '2.0.1' ]
1861 silly lockFile 2b2e8f1b-inherits-2-0-1 inherits@2.0.1
1862 verbose lock inherits@2.0.1 /home/patcon/.npm/2b2e8f1b-inherits-2-0-1.lock
1863 silly addNameRange number 2 { name: 'oauth-sign',
1863 silly addNameRange range: '>=0.3.0-0 <0.4.0-0',
1863 silly addNameRange hasData: true }
1864 silly addNameRange versions [ 'oauth-sign', [ '0.2.0', '0.3.0', '0.4.0' ] ]
1865 verbose addNamed [ 'oauth-sign', '0.3.0' ]
1866 verbose addNamed [ '0.3.0', '0.3.0' ]
1867 silly lockFile ae61e7c5-oauth-sign-0-3-0 oauth-sign@0.3.0
1868 verbose lock oauth-sign@0.3.0 /home/patcon/.npm/ae61e7c5-oauth-sign-0-3-0.lock
1869 silly addNameRange number 2 { name: 'keypress', range: '>=0.1.0-0 <0.2.0-0', hasData: true }
1870 silly addNameRange versions [ 'keypress', [ '0.0.1', '0.0.2', '0.1.0', '0.2.0', '0.2.1' ] ]
1871 verbose addNamed [ 'keypress', '0.1.0' ]
1872 verbose addNamed [ '0.1.0', '0.1.0' ]
1873 silly lockFile 22598b8c-keypress-0-1-0 keypress@0.1.0
1874 verbose lock keypress@0.1.0 /home/patcon/.npm/22598b8c-keypress-0-1-0.lock
1875 silly addNameRange number 2 { name: 'hawk', range: '>=1.0.0-0 <1.1.0-0', hasData: true }
1876 silly addNameRange versions [ 'hawk',
1876 silly addNameRange [ '0.0.1',
1876 silly addNameRange '0.0.2',
1876 silly addNameRange '0.0.3',
1876 silly addNameRange '0.0.4',
1876 silly addNameRange '0.0.5',
1876 silly addNameRange '0.0.6',
1876 silly addNameRange '0.0.7',
1876 silly addNameRange '0.0.8',
1876 silly addNameRange '0.1.0',
1876 silly addNameRange '0.2.0',
1876 silly addNameRange '0.3.0',
1876 silly addNameRange '0.4.0',
1876 silly addNameRange '0.5.0',
1876 silly addNameRange '0.5.1',
1876 silly addNameRange '0.5.2',
1876 silly addNameRange '0.5.3',
1876 silly addNameRange '0.6.0',
1876 silly addNameRange '0.6.1',
1876 silly addNameRange '0.7.0',
1876 silly addNameRange '0.7.1',
1876 silly addNameRange '0.8.1',
1876 silly addNameRange '0.9.0',
1876 silly addNameRange '0.10.0',
1876 silly addNameRange '0.10.1',
1876 silly addNameRange '0.10.2',
1876 silly addNameRange '0.11.0',
1876 silly addNameRange '0.11.1',
1876 silly addNameRange '0.12.0',
1876 silly addNameRange '0.12.1',
1876 silly addNameRange '0.12.2',
1876 silly addNameRange '0.13.0',
1876 silly addNameRange '0.13.1',
1876 silly addNameRange '0.14.0',
1876 silly addNameRange '0.15.0',
1876 silly addNameRange '1.0.0',
1876 silly addNameRange '1.1.0-pre',
1876 silly addNameRange '1.1.1',
1876 silly addNameRange '1.1.2',
1876 silly addNameRange '2.0.0',
1876 silly addNameRange '2.1.0',
1876 silly addNameRange '2.1.1',
1876 silly addNameRange '2.1.2',
1876 silly addNameRange '2.1.3' ] ]
1877 verbose addNamed [ 'hawk', '1.0.0' ]
1878 verbose addNamed [ '1.0.0', '1.0.0' ]
1879 silly lockFile 1ca87dbe-hawk-1-0-0 hawk@1.0.0
1880 verbose lock hawk@1.0.0 /home/patcon/.npm/1ca87dbe-hawk-1-0-0.lock
1881 silly lockFile 5a1dbd9b-aws-sign2-0-5-0 aws-sign2@0.5.0
1882 silly lockFile 5a1dbd9b-aws-sign2-0-5-0 aws-sign2@0.5.0
1883 silly lockFile 2b2e8f1b-inherits-2-0-1 inherits@2.0.1
1884 silly lockFile 2b2e8f1b-inherits-2-0-1 inherits@2.0.1
1885 silly lockFile ae61e7c5-oauth-sign-0-3-0 oauth-sign@0.3.0
1886 silly lockFile ae61e7c5-oauth-sign-0-3-0 oauth-sign@0.3.0
1887 silly lockFile 82387911-aws-sign2-0-5-0 aws-sign2@~0.5.0
1888 silly lockFile 82387911-aws-sign2-0-5-0 aws-sign2@~0.5.0
1889 silly lockFile e2566bb4-inherits-2-0-0 inherits@~2.0.0
1890 silly lockFile e2566bb4-inherits-2-0-0 inherits@~2.0.0
1891 silly lockFile 22598b8c-keypress-0-1-0 keypress@0.1.0
1892 silly lockFile 22598b8c-keypress-0-1-0 keypress@0.1.0
1893 silly lockFile 7fb5c7f1-oauth-sign-0-3-0 oauth-sign@~0.3.0
1894 silly lockFile 7fb5c7f1-oauth-sign-0-3-0 oauth-sign@~0.3.0
1895 silly resolved [ { name: 'rimraf',
1895 silly resolved version: '2.2.6',
1895 silly resolved main: 'rimraf.js',
1895 silly resolved description: 'A deep deletion module for node (like `rm -rf`)',
1895 silly resolved author:
1895 silly resolved { name: 'Isaac Z. Schlueter',
1895 silly resolved email: 'i@izs.me',
1895 silly resolved url: 'http://blog.izs.me/' },
1895 silly resolved license:
1895 silly resolved { type: 'MIT',
1895 silly resolved url: 'https://github.com/isaacs/rimraf/raw/master/LICENSE' },
1895 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/rimraf.git' },
1895 silly resolved scripts: { test: 'cd test && bash run.sh' },
1895 silly resolved bin: { rimraf: './bin.js' },
1895 silly resolved contributors: [ [Object], [Object], [Object], [Object], [Object] ],
1895 silly resolved readme: '`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* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of\n `opts.maxBusyTries` times before giving up.\n* `ENOENT` - If the file doesn\'t exist, rimraf will return\n successfully, since your desired outcome is already the case.\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\n## mkdirp\n\nIf you need to create a directory recursively, check out\n[mkdirp](https://github.com/substack/node-mkdirp).\n',
1895 silly resolved readmeFilename: 'README.md',
1895 silly resolved bugs: { url: 'https://github.com/isaacs/rimraf/issues' },
1895 silly resolved homepage: 'https://github.com/isaacs/rimraf',
1895 silly resolved _id: 'rimraf@2.2.6',
1895 silly resolved _from: 'rimraf@2' },
1895 silly resolved { author:
1895 silly resolved { name: 'Isaac Z. Schlueter',
1895 silly resolved email: 'i@izs.me',
1895 silly resolved url: 'http://blog.izs.me' },
1895 silly resolved name: 'graceful-fs',
1895 silly resolved description: 'A drop-in replacement for fs, making various improvements.',
1895 silly resolved version: '2.0.3',
1895 silly resolved repository:
1895 silly resolved { type: 'git',
1895 silly resolved url: 'git://github.com/isaacs/node-graceful-fs.git' },
1895 silly resolved main: 'graceful-fs.js',
1895 silly resolved engines: { node: '>=0.4.0' },
1895 silly resolved directories: { test: 'test' },
1895 silly resolved scripts: { test: 'tap test/*.js' },
1895 silly resolved keywords:
1895 silly resolved [ 'fs',
1895 silly resolved 'module',
1895 silly resolved 'reading',
1895 silly resolved 'retry',
1895 silly resolved 'retries',
1895 silly resolved 'queue',
1895 silly resolved 'error',
1895 silly resolved 'errors',
1895 silly resolved 'handling',
1895 silly resolved 'EMFILE',
1895 silly resolved 'EAGAIN',
1895 silly resolved 'EINVAL',
1895 silly resolved 'EPERM',
1895 silly resolved 'EACCESS' ],
1895 silly resolved license: 'BSD',
1895 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',
1895 silly resolved readmeFilename: 'README.md',
1895 silly resolved bugs: { url: 'https://github.com/isaacs/node-graceful-fs/issues' },
1895 silly resolved homepage: 'https://github.com/isaacs/node-graceful-fs',
1895 silly resolved _id: 'graceful-fs@2.0.3',
1895 silly resolved _from: 'graceful-fs@~2.0.0' },
1895 silly resolved { name: 'inherits',
1895 silly resolved description: 'Browser-friendly inheritance fully compatible with standard node.js inherits()',
1895 silly resolved version: '2.0.1',
1895 silly resolved keywords:
1895 silly resolved [ 'inheritance',
1895 silly resolved 'class',
1895 silly resolved 'klass',
1895 silly resolved 'oop',
1895 silly resolved 'object-oriented',
1895 silly resolved 'inherits',
1895 silly resolved 'browser',
1895 silly resolved 'browserify' ],
1895 silly resolved main: './inherits.js',
1895 silly resolved browser: './inherits_browser.js',
1895 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/inherits' },
1895 silly resolved license: 'ISC',
1895 silly resolved scripts: { test: 'node test' },
1895 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',
1895 silly resolved readmeFilename: 'README.md',
1895 silly resolved bugs: { url: 'https://github.com/isaacs/inherits/issues' },
1895 silly resolved homepage: 'https://github.com/isaacs/inherits',
1895 silly resolved _id: 'inherits@2.0.1',
1895 silly resolved _from: 'inherits@~2.0.0' } ]
1896 info install rimraf@2.2.6 into /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream
1897 info install graceful-fs@2.0.3 into /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream
1898 info install inherits@2.0.1 into /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream
1899 info installOne rimraf@2.2.6
1900 info installOne graceful-fs@2.0.3
1901 info installOne inherits@2.0.1
1902 silly lockFile a3a73622-keypress-0-1-x keypress@0.1.x
1903 silly lockFile a3a73622-keypress-0-1-x keypress@0.1.x
1904 info /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/rimraf unbuild
1905 info /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/graceful-fs unbuild
1906 info /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/inherits unbuild
1907 silly resolved [ { name: 'keypress',
1907 silly resolved version: '0.1.0',
1907 silly resolved description: 'Make any Node ReadableStream emit "keypress" events',
1907 silly resolved author:
1907 silly resolved { name: 'Nathan Rajlich',
1907 silly resolved email: 'nathan@tootallnate.net',
1907 silly resolved url: 'http://tootallnate.net' },
1907 silly resolved main: 'index.js',
1907 silly resolved scripts: { test: 'echo "Error: no test specified" && exit 1' },
1907 silly resolved repository:
1907 silly resolved { type: 'git',
1907 silly resolved url: 'git://github.com/TooTallNate/keypress.git' },
1907 silly resolved keywords: [ 'keypress', 'readline', 'core' ],
1907 silly resolved license: 'MIT',
1907 silly resolved readme: 'keypress\n========\n### Make any Node ReadableStream emit "keypress" events\n\n\nPrevious to Node `v0.8.x`, there was an undocumented `"keypress"` event that\n`process.stdin` would emit when it was a TTY. Some people discovered this hidden\ngem, and started using it in their own code.\n\nNow in Node `v0.8.x`, this `"keypress"` event does not get emitted by default,\nbut rather only when it is being used in conjuction with the `readline` (or by\nextension, the `repl`) module.\n\nThis module is the exact logic from the node `v0.8.x` releases ripped out into its\nown module.\n\n__Bonus:__ Now with mouse support!\n\nInstallation\n------------\n\nInstall with `npm`:\n\n``` bash\n$ npm install keypress\n```\n\nOr add it to the `"dependencies"` section of your _package.json_ file.\n\n\nExample\n-------\n\n#### Listening for "keypress" events\n\n``` js\nvar keypress = require(\'keypress\');\n\n// make `process.stdin` begin emitting "keypress" events\nkeypress(process.stdin);\n\n// listen for the "keypress" event\nprocess.stdin.on(\'keypress\', function (ch, key) {\n console.log(\'got "keypress"\', key);\n if (key && key.ctrl && key.name == \'c\') {\n process.stdin.pause();\n }\n});\n\nprocess.stdin.setRawMode(true);\nprocess.stdin.resume();\n```\n\n#### Listening for "mousepress" events\n\n``` js\nvar keypress = require(\'keypress\');\n\n// make `process.stdin` begin emitting "mousepress" (and "keypress") events\nkeypress(process.stdin);\n\n// you must enable the mouse events before they will begin firing\nkeypress.enableMouse(process.stdout);\n\nprocess.stdin.on(\'mousepress\', function (info) {\n console.log(\'got "mousepress" event at %d x %d\', info.x, info.y);\n});\n\nprocess.on(\'exit\', function () {\n // disable mouse on exit, so that the state\n // is back to normal for the terminal\n keypress.disableMouse(process.stdout);\n});\n```\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich &lt;nathan@tootallnate.net&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\'Software\'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \'AS IS\', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n',
1907 silly resolved readmeFilename: 'README.md',
1907 silly resolved bugs: { url: 'https://github.com/TooTallNate/keypress/issues' },
1907 silly resolved homepage: 'https://github.com/TooTallNate/keypress',
1907 silly resolved _id: 'keypress@0.1.0',
1907 silly resolved _from: 'keypress@0.1.x' } ]
1908 info install keypress@0.1.0 into /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander
1909 info installOne keypress@0.1.0
1910 info /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander/node_modules/keypress unbuild
1911 silly lockFile 1ca87dbe-hawk-1-0-0 hawk@1.0.0
1912 silly lockFile 1ca87dbe-hawk-1-0-0 hawk@1.0.0
1913 verbose tar unpack /home/patcon/.npm/rimraf/2.2.6/package.tgz
1914 silly lockFile 8f688a9a-ules-fstream-node-modules-rimraf tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/rimraf
1915 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/rimraf /home/patcon/.npm/8f688a9a-ules-fstream-node-modules-rimraf.lock
1916 silly lockFile b077a4d5-con-npm-rimraf-2-2-6-package-tgz tar:///home/patcon/.npm/rimraf/2.2.6/package.tgz
1917 verbose lock tar:///home/patcon/.npm/rimraf/2.2.6/package.tgz /home/patcon/.npm/b077a4d5-con-npm-rimraf-2-2-6-package-tgz.lock
1918 verbose tar unpack /home/patcon/.npm/graceful-fs/2.0.3/package.tgz
1919 silly lockFile 62587d08-fstream-node-modules-graceful-fs tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/graceful-fs
1920 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/graceful-fs /home/patcon/.npm/62587d08-fstream-node-modules-graceful-fs.lock
1921 silly lockFile ed059107-pm-graceful-fs-2-0-3-package-tgz tar:///home/patcon/.npm/graceful-fs/2.0.3/package.tgz
1922 verbose lock tar:///home/patcon/.npm/graceful-fs/2.0.3/package.tgz /home/patcon/.npm/ed059107-pm-graceful-fs-2-0-3-package-tgz.lock
1923 verbose tar unpack /home/patcon/.npm/inherits/2.0.1/package.tgz
1924 silly lockFile de5ecb7d-es-fstream-node-modules-inherits tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/inherits
1925 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/inherits /home/patcon/.npm/de5ecb7d-es-fstream-node-modules-inherits.lock
1926 silly lockFile 50566223-n-npm-inherits-2-0-1-package-tgz tar:///home/patcon/.npm/inherits/2.0.1/package.tgz
1927 verbose lock tar:///home/patcon/.npm/inherits/2.0.1/package.tgz /home/patcon/.npm/50566223-n-npm-inherits-2-0-1-package-tgz.lock
1928 silly lockFile 327094b8-hawk-1-0-0 hawk@~1.0.0
1929 silly lockFile 327094b8-hawk-1-0-0 hawk@~1.0.0
1930 silly resolved [ { author:
1930 silly resolved { name: 'Mikeal Rogers',
1930 silly resolved email: 'mikeal.rogers@gmail.com',
1930 silly resolved url: 'http://www.futurealoof.com' },
1930 silly resolved name: 'forever-agent',
1930 silly resolved description: 'HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.',
1930 silly resolved version: '0.5.2',
1930 silly resolved repository: { url: 'https://github.com/mikeal/forever-agent' },
1930 silly resolved main: 'index.js',
1930 silly resolved dependencies: {},
1930 silly resolved devDependencies: {},
1930 silly resolved optionalDependencies: {},
1930 silly resolved engines: { node: '*' },
1930 silly resolved readme: 'forever-agent\n=============\n\nHTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.\n',
1930 silly resolved readmeFilename: 'README.md',
1930 silly resolved bugs: { url: 'https://github.com/mikeal/forever-agent/issues' },
1930 silly resolved homepage: 'https://github.com/mikeal/forever-agent',
1930 silly resolved _id: 'forever-agent@0.5.2',
1930 silly resolved _from: 'forever-agent@~0.5.0' },
1930 silly resolved { name: 'json-stringify-safe',
1930 silly resolved version: '5.0.0',
1930 silly resolved description: 'Like JSON.stringify, but doesn\'t blow up on circular refs',
1930 silly resolved main: 'stringify.js',
1930 silly resolved scripts: { test: 'node test.js' },
1930 silly resolved repository:
1930 silly resolved { type: 'git',
1930 silly resolved url: 'git://github.com/isaacs/json-stringify-safe' },
1930 silly resolved keywords: [ 'json', 'stringify', 'circular', 'safe' ],
1930 silly resolved author:
1930 silly resolved { name: 'Isaac Z. Schlueter',
1930 silly resolved email: 'i@izs.me',
1930 silly resolved url: 'http://blog.izs.me' },
1930 silly resolved license: 'BSD',
1930 silly resolved readmeFilename: 'README.md',
1930 silly resolved readme: '# json-stringify-safe\n\nLike JSON.stringify, but doesn\'t throw on circular references.\n\n## Usage\n\nTakes the same arguments as `JSON.stringify`.\n\n```javascript\nvar stringify = require(\'json-stringify-safe\');\nvar circularObj = {};\ncircularObj.circularRef = circularObj;\ncircularObj.list = [ circularObj, circularObj ];\nconsole.log(stringify(circularObj, null, 2));\n```\n\nOutput:\n\n```json\n{\n "circularRef": "[Circular]",\n "list": [\n "[Circular]",\n "[Circular]"\n ]\n}\n```\n\n## Details\n\n```\nstringify(obj, serializer, indent, decycler)\n```\n\nThe first three arguments are the same as to JSON.stringify. The last\nis an argument that\'s only used when the object has been seen already.\n\nThe default `decycler` function returns the string `\'[Circular]\'`.\nIf, for example, you pass in `function(k,v){}` (return nothing) then it\nwill prune cycles. If you pass in `function(k,v){ return {foo: \'bar\'}}`,\nthen cyclical objects will always be represented as `{"foo":"bar"}` in\nthe result.\n\n```\nstringify.getSerialize(serializer, decycler)\n```\n\nReturns a serializer that can be used elsewhere. This is the actual\nfunction that\'s passed to JSON.stringify.\n',
1930 silly resolved bugs: { url: 'https://github.com/isaacs/json-stringify-safe/issues' },
1930 silly resolved homepage: 'https://github.com/isaacs/json-stringify-safe',
1930 silly resolved _id: 'json-stringify-safe@5.0.0',
1930 silly resolved _from: 'json-stringify-safe@~5.0.0' },
1930 silly resolved { name: 'node-uuid',
1930 silly resolved description: 'Rigorous implementation of RFC4122 (v1 and v4) UUIDs.',
1930 silly resolved url: 'http://github.com/broofa/node-uuid',
1930 silly resolved keywords: [ 'uuid', 'guid', 'rfc4122' ],
1930 silly resolved author: { name: 'Robert Kieffer', email: 'robert@broofa.com' },
1930 silly resolved contributors: [ [Object] ],
1930 silly resolved lib: '.',
1930 silly resolved main: './uuid.js',
1930 silly resolved repository: { type: 'git', url: 'https://github.com/broofa/node-uuid.git' },
1930 silly resolved version: '1.4.1',
1930 silly resolved readme: '# node-uuid\n\nSimple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS.\n\nFeatures:\n\n* Generate RFC4122 version 1 or version 4 UUIDs\n* Runs in node.js and all browsers.\n* Registered as a [ComponentJS](https://github.com/component/component) [component](https://github.com/component/component/wiki/Components) (\'broofa/node-uuid\').\n* Cryptographically strong random # generation on supporting platforms\n* 1.1K minified and gzip\'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! )\n* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html)\n\n## Getting Started\n\nInstall it in your browser:\n\n```html\n<script src="uuid.js"></script>\n```\n\nOr in node.js:\n\n```\nnpm install node-uuid\n```\n\n```javascript\nvar uuid = require(\'node-uuid\');\n```\n\nThen create some ids ...\n\n```javascript\n// Generate a v1 (time-based) id\nuuid.v1(); // -> \'6c84fb90-12c4-11e1-840d-7b25c5ee775a\'\n\n// Generate a v4 (random) id\nuuid.v4(); // -> \'110ec58a-a0f2-4ac4-8393-c866d813b8d1\'\n```\n\n## API\n\n### uuid.v1([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v1 (timestamp-based) UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1.\n * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used.\n * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used.\n * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nNotes:\n\n1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.)\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v1({\n node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],\n clockseq: 0x1234,\n msecs: new Date(\'2011-11-01\').getTime(),\n nsecs: 5678\n}); // -> "710b962e-041c-11e1-9234-0123456789ab"\n```\n\nExample: In-place generation of two binary IDs\n\n```javascript\n// Generate two ids in an array\nvar arr = new Array(32); // -> []\nuuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\nuuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\n\n// Optionally use uuid.unparse() to get stringify the ids\nuuid.unparse(buffer); // -> \'02a2ce90-1432-11e1-8558-0b488e4fc115\'\nuuid.unparse(buffer, 16) // -> \'02a31cb0-1432-11e1-8558-0b488e4fc115\'\n```\n\n### uuid.v4([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v4 UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values\n * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v4({\n random: [\n 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea,\n 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36\n ]\n});\n// -> "109156be-c4fb-41ea-b1b4-efe1671c5836"\n```\n\nExample: Generate two IDs in a single buffer\n\n```javascript\nvar buffer = new Array(32); // (or \'new Buffer\' in node.js)\nuuid.v4(null, buffer, 0);\nuuid.v4(null, buffer, 16);\n```\n\n### uuid.parse(id[, buffer[, offset]])\n### uuid.unparse(buffer[, offset])\n\nParse and unparse UUIDs\n\n * `id` - (String) UUID(-like) string\n * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used\n * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0\n\nExample parsing and unparsing a UUID string\n\n```javascript\nvar bytes = uuid.parse(\'797ff043-11eb-11e1-80d6-510998755d10\'); // -> <Buffer 79 7f f0 43 11 eb 11 e1 80 d6 51 09 98 75 5d 10>\nvar string = uuid.unparse(bytes); // -> \'797ff043-11eb-11e1-80d6-510998755d10\'\n```\n\n### uuid.noConflict()\n\n(Browsers only) Set `uuid` property back to it\'s previous value.\n\nReturns the node-uuid object.\n\nExample:\n\n```javascript\nvar myUuid = uuid.noConflict();\nmyUuid.v1(); // -> \'6c84fb90-12c4-11e1-840d-7b25c5ee775a\'\n```\n\n## Deprecated APIs\n\nSupport for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version.\n\n### uuid([format [, buffer [, offset]]])\n\nuuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary).\n\n### uuid.BufferClass\n\nThe class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API.\n\n## Testing\n\nIn node.js\n\n```\n> cd test\n> node test.js\n```\n\nIn Browser\n\n```\nopen test/test.html\n```\n\n### Benchmarking\n\nRequires node.js\n\n```\nnpm install uuid uuid-js\nnode benchmark/benchmark.js\n```\n\nFor a more complete discussion of node-uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark)\n\nFor browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance).\n\n## Release notes\n\n### 1.4.0\n\n* Improved module context detection\n* Removed public RNG functions\n\n### 1.3.2\n\n* Improve tests and handling of v1() options (Issue #24)\n* Expose RNG option to allow for perf testing with different generators\n\n### 1.3.0\n\n* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!\n* Support for node.js crypto API\n* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code\n',
1930 silly resolved readmeFilename: 'README.md',
1930 silly resolved bugs: { url: 'https://github.com/broofa/node-uuid/issues' },
1930 silly resolved homepage: 'https://github.com/broofa/node-uuid',
1930 silly resolved _id: 'node-uuid@1.4.1',
1930 silly resolved _from: 'node-uuid@~1.4.0' },
1930 silly resolved { name: 'qs',
1930 silly resolved description: 'querystring parser',
1930 silly resolved version: '0.6.6',
1930 silly resolved keywords: [ 'query string', 'parser', 'component' ],
1930 silly resolved repository:
1930 silly resolved { type: 'git',
1930 silly resolved url: 'git://github.com/visionmedia/node-querystring.git' },
1930 silly resolved devDependencies: { mocha: '*', 'expect.js': '*' },
1930 silly resolved scripts: { test: 'make test' },
1930 silly resolved author:
1930 silly resolved { name: 'TJ Holowaychuk',
1930 silly resolved email: 'tj@vision-media.ca',
1930 silly resolved url: 'http://tjholowaychuk.com' },
1930 silly resolved main: 'index',
1930 silly resolved engines: { node: '*' },
1930 silly resolved readme: '# node-querystring\n\n query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others.\n\n## Installation\n\n $ npm install qs\n\n## Examples\n\n```js\nvar qs = require(\'qs\');\n\nqs.parse(\'user[name][first]=Tobi&user[email]=tobi@learnboost.com\');\n// => { user: { name: { first: \'Tobi\' }, email: \'tobi@learnboost.com\' } }\n\nqs.stringify({ user: { name: \'Tobi\', email: \'tobi@learnboost.com\' }})\n// => user[name]=Tobi&user[email]=tobi%40learnboost.com\n```\n\n## Testing\n\nInstall dev dependencies:\n\n $ npm install -d\n\nand execute:\n\n $ make test\n\nbrowser:\n\n $ open test/browser/index.html\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2010 TJ Holowaychuk &lt;tj@vision-media.ca&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\'Software\'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \'AS IS\', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.',
1930 silly resolved readmeFilename: 'Readme.md',
1930 silly resolved bugs: { url: 'https://github.com/visionmedia/node-querystring/issues' },
1930 silly resolved homepage: 'https://github.com/visionmedia/node-querystring',
1930 silly resolved _id: 'qs@0.6.6',
1930 silly resolved _from: 'qs@~0.6.0' },
1930 silly resolved { author:
1930 silly resolved { name: 'Mikeal Rogers',
1930 silly resolved email: 'mikeal.rogers@gmail.com',
1930 silly resolved url: 'http://www.futurealoof.com' },
1930 silly resolved name: 'tunnel-agent',
1930 silly resolved description: 'HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.',
1930 silly resolved version: '0.3.0',
1930 silly resolved repository: { url: 'https://github.com/mikeal/tunnel-agent' },
1930 silly resolved main: 'index.js',
1930 silly resolved dependencies: {},
1930 silly resolved devDependencies: {},
1930 silly resolved optionalDependencies: {},
1930 silly resolved engines: { node: '*' },
1930 silly resolved readme: 'tunnel-agent\n============\n\nHTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.\n',
1930 silly resolved readmeFilename: 'README.md',
1930 silly resolved bugs: { url: 'https://github.com/mikeal/tunnel-agent/issues' },
1930 silly resolved homepage: 'https://github.com/mikeal/tunnel-agent',
1930 silly resolved _id: 'tunnel-agent@0.3.0',
1930 silly resolved _from: 'tunnel-agent@~0.3.0' },
1930 silly resolved { author:
1930 silly resolved { name: 'Robert Kieffer',
1930 silly resolved email: 'robert@broofa.com',
1930 silly resolved url: 'http://github.com/broofa' },
1930 silly resolved contributors: [ [Object] ],
1930 silly resolved dependencies: {},
1930 silly resolved description: 'A comprehensive library for mime-type mapping',
1930 silly resolved devDependencies: {},
1930 silly resolved keywords: [ 'util', 'mime' ],
1930 silly resolved main: 'mime.js',
1930 silly resolved name: 'mime',
1930 silly resolved repository: { url: 'https://github.com/broofa/node-mime', type: 'git' },
1930 silly resolved version: '1.2.11',
1930 silly resolved readme: '# mime\n\nComprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community.\n\n## Install\n\nInstall with [npm](http://github.com/isaacs/npm):\n\n npm install mime\n\n## API - Queries\n\n### mime.lookup(path)\nGet the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last \'/\' or \'.\'). E.g.\n\n var mime = require(\'mime\');\n\n mime.lookup(\'/path/to/file.txt\'); // => \'text/plain\'\n mime.lookup(\'file.txt\'); // => \'text/plain\'\n mime.lookup(\'.TXT\'); // => \'text/plain\'\n mime.lookup(\'htm\'); // => \'text/html\'\n\n### mime.default_type\nSets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.)\n\n### mime.extension(type)\nGet the default extension for `type`\n\n mime.extension(\'text/html\'); // => \'html\'\n mime.extension(\'application/octet-stream\'); // => \'bin\'\n\n### mime.charsets.lookup()\n\nMap mime-type to charset\n\n mime.charsets.lookup(\'text/plain\'); // => \'UTF-8\'\n\n(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)\n\n## API - Defining Custom Types\n\nThe following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/broofa/node-mime/wiki/Requesting-New-Types).\n\n### mime.define()\n\nAdd custom mime/extension mappings\n\n mime.define({\n \'text/x-some-format\': [\'x-sf\', \'x-sft\', \'x-sfml\'],\n \'application/x-my-type\': [\'x-mt\', \'x-mtt\'],\n // etc ...\n });\n\n mime.lookup(\'x-sft\'); // => \'text/x-some-format\'\n\nThe first entry in the extensions array is returned by `mime.extension()`. E.g.\n\n mime.extension(\'text/x-some-format\'); // => \'x-sf\'\n\n### mime.load(filepath)\n\nLoad mappings from an Apache ".types" format file\n\n mime.load(\'./my_project.types\');\n\nThe .types file format is simple - See the `types` dir for examples.\n',
1930 silly resolved readmeFilename: 'README.md',
1930 silly resolved bugs: { url: 'https://github.com/broofa/node-mime/issues' },
1930 silly resolved homepage: 'https://github.com/broofa/node-mime',
1930 silly resolved _id: 'mime@1.2.11',
1930 silly resolved _from: 'mime@~1.2.9' },
1930 silly resolved { author:
1930 silly resolved { name: 'Felix Geisendörfer',
1930 silly resolved email: 'felix@debuggable.com',
1930 silly resolved url: 'http://debuggable.com/' },
1930 silly resolved name: 'form-data',
1930 silly resolved description: 'A module to create readable "multipart/form-data" streams. Can be used to submit forms and file uploads to other web applications.',
1930 silly resolved version: '0.1.2',
1930 silly resolved repository:
1930 silly resolved { type: 'git',
1930 silly resolved url: 'git://github.com/felixge/node-form-data.git' },
1930 silly resolved main: './lib/form_data',
1930 silly resolved scripts: { test: 'node test/run.js' },
1930 silly resolved engines: { node: '>= 0.6' },
1930 silly resolved dependencies: { 'combined-stream': '~0.0.4', mime: '~1.2.11', async: '~0.2.9' },
1930 silly resolved licenses: [ [Object] ],
1930 silly resolved devDependencies:
1930 silly resolved { fake: '~0.2.2',
1930 silly resolved far: '~0.0.7',
1930 silly resolved formidable: '~1.0.14',
1930 silly resolved request: '~2.27.0' },
1930 silly resolved readme: '# Form-Data [![Build Status](https://travis-ci.org/felixge/node-form-data.png?branch=master)](https://travis-ci.org/felixge/node-form-data) [![Dependency Status](https://gemnasium.com/felixge/node-form-data.png)](https://gemnasium.com/felixge/node-form-data)\n\nA module to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications.\n\nThe API of this module is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd].\n\n[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface\n[streams2-thing]: http://nodejs.org/api/stream.html#stream_compatibility_with_older_node_versions\n\n## Install\n\n```\nnpm install form-data\n```\n\n## Usage\n\nIn this example we are constructing a form with 3 fields that contain a string,\na buffer and a file stream.\n\n``` javascript\nvar FormData = require(\'form-data\');\nvar fs = require(\'fs\');\n\nvar form = new FormData();\nform.append(\'my_field\', \'my value\');\nform.append(\'my_buffer\', new Buffer(10));\nform.append(\'my_file\', fs.createReadStream(\'/foo/bar.jpg\'));\n```\n\nAlso you can use http-response stream:\n\n``` javascript\nvar FormData = require(\'form-data\');\nvar http = require(\'http\');\n\nvar form = new FormData();\n\nhttp.request(\'http://nodejs.org/images/logo.png\', function(response) {\n form.append(\'my_field\', \'my value\');\n form.append(\'my_buffer\', new Buffer(10));\n form.append(\'my_logo\', response);\n});\n```\n\nOr @mikeal\'s request stream:\n\n``` javascript\nvar FormData = require(\'form-data\');\nvar request = require(\'request\');\n\nvar form = new FormData();\n\nform.append(\'my_field\', \'my value\');\nform.append(\'my_buffer\', new Buffer(10));\nform.append(\'my_logo\', request(\'http://nodejs.org/images/logo.png\'));\n```\n\nIn order to submit this form to a web application, call ```submit(url, [callback])``` method:\n\n``` javascript\nform.submit(\'http://example.org/\', function(err, res) {\n // res – response object (http.IncomingMessage) //\n res.resume(); // for node-0.10.x\n});\n\n```\n\nFor more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods.\n\n### Alternative submission methods\n\nYou can use node\'s http client interface:\n\n``` javascript\nvar http = require(\'http\');\n\nvar request = http.request({\n method: \'post\',\n host: \'example.org\',\n path: \'/upload\',\n headers: form.getHeaders()\n});\n\nform.pipe(request);\n\nrequest.on(\'response\', function(res) {\n console.log(res.statusCode);\n});\n```\n\nOr if you would prefer the `\'Content-Length\'` header to be set for you:\n\n``` javascript\nform.submit(\'example.org/upload\', function(err, res) {\n console.log(res.statusCode);\n});\n```\n\nTo use custom headers and pre-known length in parts:\n\n``` javascript\nvar CRLF = \'\\r\\n\';\nvar form = new FormData();\n\nvar options = {\n header: CRLF + \'--\' + form.getBoundary() + CRLF + \'X-Custom-Header: 123\' + CRLF + CRLF,\n knownLength: 1\n};\n\nform.append(\'my_buffer\', buffer, options);\n\nform.submit(\'http://example.com/\', function(err, res) {\n if (err) throw err;\n console.log(\'Done\');\n});\n```\n\nForm-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal\'s request```), for some other types of streams you\'d need to provide "file"-related information manually:\n\n``` javascript\nsomeModule.stream(function(err, stdout, stderr) {\n if (err) throw err;\n\n var form = new FormData();\n\n form.append(\'file\', stdout, {\n filename: \'unicycle.jpg\',\n contentType: \'image/jpg\',\n knownLength: 19806\n });\n\n form.submit(\'http://example.com/\', function(err, res) {\n if (err) throw err;\n console.log(\'Done\');\n });\n});\n```\n\nFor edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter:\n\n``` javascript\nform.submit({\n host: \'example.com\',\n path: \'/probably.php?extra=params\',\n auth: \'username:password\'\n}, function(err, res) {\n console.log(res.statusCode);\n});\n```\n\n## Notes\n\n- ```getLengthSync()``` method DOESN\'T calculate length for streams, use ```knownLength``` options as workaround.\n- If it feels like FormData hangs after submit and you\'re on ```node-0.10```, please check [Compatibility with Older Node Versions][streams2-thing]\n\n## TODO\n\n- Add new streams (0.10) support and try really hard not to break it for 0.8.x.\n\n## License\n\nForm-Data is licensed under the MIT license.\n',
1930 silly resolved readmeFilename: 'Readme.md',
1930 silly resolved bugs: { url: 'https://github.com/felixge/node-form-data/issues' },
1930 silly resolved homepage: 'https://github.com/felixge/node-form-data',
1930 silly resolved _id: 'form-data@0.1.2',
1930 silly resolved _from: 'form-data@~0.1.0' },
1930 silly resolved { author: { name: 'Joyent, Inc' },
1930 silly resolved name: 'http-signature',
1930 silly resolved description: 'Reference implementation of Joyent\'s HTTP Signature Scheme',
1930 silly resolved version: '0.10.0',
1930 silly resolved repository:
1930 silly resolved { type: 'git',
1930 silly resolved url: 'git://github.com/joyent/node-http-signature.git' },
1930 silly resolved engines: { node: '>=0.8' },
1930 silly resolved main: 'lib/index.js',
1930 silly resolved scripts: { test: 'tap tst/*.js' },
1930 silly resolved dependencies: { 'assert-plus': '0.1.2', asn1: '0.1.11', ctype: '0.5.2' },
1930 silly resolved devDependencies: { 'node-uuid': '1.4.0', tap: '0.4.2' },
1930 silly resolved readme: '# node-http-signature\n\nnode-http-signature is a node.js library that has client and server components\nfor Joyent\'s [HTTP Signature Scheme](http_signing.md).\n\n## Usage\n\nNote the example below signs a request with the same key/cert used to start an\nHTTP server. This is almost certainly not what you actaully want, but is just\nused to illustrate the API calls; you will need to provide your own key\nmanagement in addition to this library.\n\n### Client\n\n var fs = require(\'fs\');\n var https = require(\'https\');\n var httpSignature = require(\'http-signature\');\n\n var key = fs.readFileSync(\'./key.pem\', \'ascii\');\n\n var options = {\n host: \'localhost\',\n port: 8443,\n path: \'/\',\n method: \'GET\',\n headers: {}\n };\n\n // Adds a \'Date\' header in, signs it, and adds the\n // \'Authorization\' header in.\n var req = https.request(options, function(res) {\n console.log(res.statusCode);\n });\n\n\n httpSignature.sign(req, {\n key: key,\n keyId: \'./cert.pem\'\n });\n\n req.end();\n\n### Server\n\n var fs = require(\'fs\');\n var https = require(\'https\');\n var httpSignature = require(\'http-signature\');\n\n var options = {\n key: fs.readFileSync(\'./key.pem\'),\n cert: fs.readFileSync(\'./cert.pem\')\n };\n\n https.createServer(options, function (req, res) {\n var rc = 200;\n var parsed = httpSignature.parseRequest(req);\n var pub = fs.readFileSync(parsed.keyId, \'ascii\');\n if (!httpSignature.verifySignature(parsed, pub))\n rc = 401;\n\n res.writeHead(rc);\n res.end();\n }).listen(8443);\n\n## Installation\n\n npm install http-signature\n\n## License\n\nMIT.\n\n## Bugs\n\nSee <https://github.com/joyent/node-http-signature/issues>.\n',
1930 silly resolved readmeFilename: 'README.md',
1930 silly resolved bugs: { url: 'https://github.com/joyent/node-http-signature/issues' },
1930 silly resolved homepage: 'https://github.com/joyent/node-http-signature',
1930 silly resolved _id: 'http-signature@0.10.0',
1930 silly resolved _from: 'http-signature@~0.10.0' },
1930 silly resolved { author: { name: 'GoInstant Inc., a salesforce.com company' },
1930 silly resolved license: 'MIT',
1930 silly resolved name: 'tough-cookie',
1930 silly resolved description: 'RFC6265 Cookies and Cookie Jar for node.js',
1930 silly resolved keywords:
1930 silly resolved [ 'HTTP',
1930 silly resolved 'cookie',
1930 silly resolved 'cookies',
1930 silly resolved 'set-cookie',
1930 silly resolved 'cookiejar',
1930 silly resolved 'jar',
1930 silly resolved 'RFC6265',
1930 silly resolved 'RFC2965' ],
1930 silly resolved version: '0.12.1',
1930 silly resolved homepage: 'https://github.com/goinstant/tough-cookie',
1930 silly resolved repository:
1930 silly resolved { type: 'git',
1930 silly resolved url: 'git://github.com/goinstant/tough-cookie.git' },
1930 silly resolved bugs: { url: 'https://github.com/goinstant/tough-cookie/issues' },
1930 silly resolved main: './lib/cookie',
1930 silly resolved scripts: { test: 'vows test.js' },
1930 silly resolved engines: { node: '>=0.4.12' },
1930 silly resolved dependencies: { punycode: '>=0.2.0' },
1930 silly resolved devDependencies: { vows: '0.7.0', async: '>=0.1.12' },
1930 silly resolved readme: '[RFC6265](http://tools.ietf.org/html/rfc6265) Cookies and CookieJar for Node.js\n\n![Tough Cookie](http://www.goinstant.com.s3.amazonaws.com/tough-cookie.jpg)\n\n[![Build Status](https://travis-ci.org/goinstant/node-cookie.png?branch=master)](https://travis-ci.org/goinstant/node-cookie)\n\n[![NPM Stats](https://nodei.co/npm/tough-cookie.png?downloads=true&stars=true)](https://npmjs.org/package/tough-cookie)\n![NPM Downloads](https://nodei.co/npm-dl/tough-cookie.png?months=9)\n\n# Synopsis\n\n``` javascript\nvar tough = require(\'tough-cookie\'); // note: not \'cookie\', \'cookies\' or \'node-cookie\'\nvar Cookie = tough.Cookie;\nvar cookie = Cookie.parse(header);\ncookie.value = \'somethingdifferent\';\nheader = cookie.toString();\n\nvar cookiejar = new tough.CookieJar();\ncookiejar.setCookie(cookie, \'http://currentdomain.example.com/path\', cb);\n// ...\ncookiejar.getCookies(\'http://example.com/otherpath\',function(err,cookies) {\n res.headers[\'cookie\'] = cookies.join(\'; \');\n});\n```\n\n# Installation\n\nIt\'s _so_ easy!\n\n`npm install tough-cookie`\n\nRequires `punycode`, which should get installed automatically for you. Note that node.js v0.6.2+ bundles punycode by default.\n\nWhy the name? NPM modules `cookie`, `cookies` and `cookiejar` were already taken.\n\n# API\n\ntough\n=====\n\nFunctions on the module you get from `require(\'tough-cookie\')`. All can be used as pure functions and don\'t need to be "bound".\n\nparseDate(string[,strict])\n-----------------\n\nParse a cookie date string into a `Date`. Parses according to RFC6265 Section 5.1.1, not `Date.parse()`. If strict is set to true then leading/trailing non-seperator characters around the time part will cause the parsing to fail (e.g. "Thu, 01 Jan 1970 00:00:010 GMT" has an extra trailing zero but Chrome, an assumedly RFC-compliant browser, treats this as valid).\n\nformatDate(date)\n----------------\n\nFormat a Date into a RFC1123 string (the RFC6265-recommended format).\n\ncanonicalDomain(str)\n--------------------\n\nTransforms a domain-name into a canonical domain-name. The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265). For the most part, this function is idempotent (can be run again on its output without ill effects).\n\ndomainMatch(str,domStr[,canonicalize=true])\n-------------------------------------------\n\nAnswers "does this real domain match the domain in a cookie?". The `str` is the "current" domain-name and the `domStr` is the "cookie" domain-name. Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a "suffix match".\n\nThe `canonicalize` parameter will run the other two paramters through `canonicalDomain` or not.\n\ndefaultPath(path)\n-----------------\n\nGiven a current request/response path, gives the Path apropriate for storing in a cookie. This is basically the "directory" of a "file" in the path, but is specified by Section 5.1.4 of the RFC.\n\nThe `path` parameter MUST be _only_ the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.). This is the `.pathname` property of node\'s `uri.parse()` output.\n\npathMatch(reqPath,cookiePath)\n-----------------------------\n\nAnswers "does the request-path path-match a given cookie-path?" as per RFC6265 Section 5.1.4. Returns a boolean.\n\nThis is essentially a prefix-match where `cookiePath` is a prefix of `reqPath`.\n\nparse(header[,strict=false])\n----------------------------\n\nalias for `Cookie.parse(header[,strict])`\n\nfromJSON(string)\n----------------\n\nalias for `Cookie.fromJSON(string)`\n\ngetPublicSuffix(hostname)\n-------------------------\n\nReturns the public suffix of this hostname. The public suffix is the shortest domain-name upon which a cookie can be set. Returns `null` if the hostname cannot have cookies set for it.\n\nFor example: `www.example.com` and `www.subdomain.example.com` both have public suffix `example.com`.\n\nFor further information, see http://publicsuffix.org/. This module derives its list from that site.\n\ncookieCompare(a,b)\n------------------\n\nFor use with `.sort()`, sorts a list of cookies into the recommended order given in the RFC (Section 5.4 step 2). Longest `.path`s go first, then sorted oldest to youngest.\n\n``` javascript\nvar cookies = [ /* unsorted array of Cookie objects */ ];\ncookies = cookies.sort(cookieCompare);\n```\n\npermuteDomain(domain)\n---------------------\n\nGenerates a list of all possible domains that `domainMatch()` the parameter. May be handy for implementing cookie stores.\n\n\npermutePath(path)\n-----------------\n\nGenerates a list of all possible paths that `pathMatch()` the parameter. May be handy for implementing cookie stores.\n\nCookie\n======\n\nCookie.parse(header[,strict=false])\n-----------------------------------\n\nParses a single Cookie or Set-Cookie HTTP header into a `Cookie` object. Returns `undefined` if the string can\'t be parsed. If in strict mode, returns `undefined` if the cookie doesn\'t follow the guidelines in section 4 of RFC6265. Generally speaking, strict mode can be used to validate your own generated Set-Cookie headers, but acting as a client you want to be lenient and leave strict mode off.\n\nHere\'s how to process the Set-Cookie header(s) on a node HTTP/HTTPS response:\n\n``` javascript\nif (res.headers[\'set-cookie\'] instanceof Array)\n cookies = res.headers[\'set-cookie\'].map(function (c) { return (Cookie.parse(c)); });\nelse\n cookies = [Cookie.parse(res.headers[\'set-cookie\'])];\n```\n\nCookie.fromJSON(string)\n-----------------------\n\nConvert a JSON string to a `Cookie` object. Does a `JSON.parse()` and converts the `.created`, `.lastAccessed` and `.expires` properties into `Date` objects.\n\nProperties\n==========\n\n * _key_ - string - the name or key of the cookie (default "")\n * _value_ - string - the value of the cookie (default "")\n * _expires_ - `Date` - if set, the `Expires=` attribute of the cookie (defaults to the string `"Infinity"`). See `setExpires()`\n * _maxAge_ - seconds - if set, the `Max-Age=` attribute _in seconds_ of the cookie. May also be set to strings `"Infinity"` and `"-Infinity"` for non-expiry and immediate-expiry, respectively. See `setMaxAge()`\n * _domain_ - string - the `Domain=` attribute of the cookie\n * _path_ - string - the `Path=` of the cookie\n * _secure_ - boolean - the `Secure` cookie flag\n * _httpOnly_ - boolean - the `HttpOnly` cookie flag\n * _extensions_ - `Array` - any unrecognized cookie attributes as strings (even if equal-signs inside)\n\nAfter a cookie has been passed through `CookieJar.setCookie()` it will have the following additional attributes:\n\n * _hostOnly_ - boolean - is this a host-only cookie (i.e. no Domain field was set, but was instead implied)\n * _pathIsDefault_ - boolean - if true, there was no Path field on the cookie and `defaultPath()` was used to derive one.\n * _created_ - `Date` - when this cookie was added to the jar\n * _lastAccessed_ - `Date` - last time the cookie got accessed. Will affect cookie cleaning once implemented. Using `cookiejar.getCookies(...)` will update this attribute.\n\nConstruction([{options}])\n------------\n\nReceives an options object that can contain any Cookie properties, uses the default for unspecified properties.\n\n.toString()\n-----------\n\nencode to a Set-Cookie header value. The Expires cookie field is set using `formatDate()`, but is omitted entirely if `.expires` is `Infinity`.\n\n.cookieString()\n---------------\n\nencode to a Cookie header value (i.e. the `.key` and `.value` properties joined with \'=\').\n\n.setExpires(String)\n-------------------\n\nsets the expiry based on a date-string passed through `parseDate()`. If parseDate returns `null` (i.e. can\'t parse this date string), `.expires` is set to `"Infinity"` (a string) is set.\n\n.setMaxAge(number)\n-------------------\n\nsets the maxAge in seconds. Coerces `-Infinity` to `"-Infinity"` and `Infinity` to `"Infinity"` so it JSON serializes correctly.\n\n.expiryTime([now=Date.now()])\n-----------------------------\n\n.expiryDate([now=Date.now()])\n-----------------------------\n\nexpiryTime() Computes the absolute unix-epoch milliseconds that this cookie expires. expiryDate() works similarly, except it returns a `Date` object. Note that in both cases the `now` parameter should be milliseconds.\n\nMax-Age takes precedence over Expires (as per the RFC). The `.created` attribute -- or, by default, the `now` paramter -- is used to offset the `.maxAge` attribute.\n\nIf Expires (`.expires`) is set, that\'s returned.\n\nOtherwise, `expiryTime()` returns `Infinity` and `expiryDate()` returns a `Date` object for "Tue, 19 Jan 2038 03:14:07 GMT" (latest date that can be expressed by a 32-bit `time_t`; the common limit for most user-agents).\n\n.TTL([now=Date.now()])\n---------\n\ncompute the TTL relative to `now` (milliseconds). The same precedence rules as for `expiryTime`/`expiryDate` apply.\n\nThe "number" `Infinity` is returned for cookies without an explicit expiry and `0` is returned if the cookie is expired. Otherwise a time-to-live in milliseconds is returned.\n\n.canonicalizedDoman()\n---------------------\n\n.cdomain()\n----------\n\nreturn the canonicalized `.domain` field. This is lower-cased and punycode (RFC3490) encoded if the domain has any non-ASCII characters.\n\n.validate()\n-----------\n\nStatus: *IN PROGRESS*. Works for a few things, but is by no means comprehensive.\n\nvalidates cookie attributes for semantic correctness. Useful for "lint" checking any Set-Cookie headers you generate. For now, it returns a boolean, but eventually could return a reason string -- you can future-proof with this construct:\n\n``` javascript\nif (cookie.validate() === true) {\n // it\'s tasty\n} else {\n // yuck!\n}\n```\n\nCookieJar\n=========\n\nConstruction([store = new MemoryCookieStore()][, rejectPublicSuffixes])\n------------\n\nSimply use `new CookieJar()`. If you\'d like to use a custom store, pass that to the constructor otherwise a `MemoryCookieStore` will be created and used.\n\n\nAttributes\n----------\n\n * _rejectPublicSuffixes_ - boolean - reject cookies with domains like "com" and "co.uk" (default: `true`)\n\nSince eventually this module would like to support database/remote/etc. CookieJars, continuation passing style is used for CookieJar methods.\n\n.setCookie(cookieOrString, currentUrl, [{options},] cb(err,cookie))\n-------------------------------------------------------------------\n\nAttempt to set the cookie in the cookie jar. If the operation fails, an error will be given to the callback `cb`, otherwise the cookie is passed through. The cookie will have updated `.created`, `.lastAccessed` and `.hostOnly` properties.\n\nThe `options` object can be omitted and can have the following properties:\n\n * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies.\n * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`.\n * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies\n * _strict_ - boolean - default `false` - perform extra checks\n * _ignoreError_ - boolean - default `false` - silently ignore things like parse errors and invalid domains. CookieStore errors aren\'t ignored by this option.\n\nAs per the RFC, the `.hostOnly` property is set if there was no "Domain=" parameter in the cookie string (or `.domain` was null on the Cookie object). The `.domain` property is set to the fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an exact hostname match (not a `domainMatch` as per usual).\n\n.setCookieSync(cookieOrString, currentUrl, [{options}])\n-------------------------------------------------------\n\nSynchronous version of `setCookie`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).\n\n.storeCookie(cookie, [{options},] cb(err,cookie))\n-------------------------------------------------\n\n__REMOVED__ removed in lieu of the CookieStore API below\n\n.getCookies(currentUrl, [{options},] cb(err,cookies))\n-----------------------------------------------------\n\nRetrieve the list of cookies that can be sent in a Cookie header for the current url.\n\nIf an error is encountered, that\'s passed as `err` to the callback, otherwise an `Array` of `Cookie` objects is passed. The array is sorted with `cookieCompare()` unless the `{sort:false}` option is given.\n\nThe `options` object can be omitted and can have the following properties:\n\n * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies.\n * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`.\n * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies\n * _expire_ - boolean - default `true` - perform expiry-time checking of cookies and asynchronously remove expired cookies from the store. Using `false` will return expired cookies and **not** remove them from the store (which is useful for replaying Set-Cookie headers, potentially).\n * _allPaths_ - boolean - default `false` - if `true`, do not scope cookies by path. The default uses RFC-compliant path scoping. **Note**: may not be supported by the CookieStore `fetchCookies` function (the default MemoryCookieStore supports it).\n\nThe `.lastAccessed` property of the returned cookies will have been updated.\n\n.getCookiesSync(currentUrl, [{options}])\n----------------------------------------\n\nSynchronous version of `getCookies`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).\n\n.getCookieString(...)\n---------------------\n\nAccepts the same options as `.getCookies()` but passes a string suitable for a Cookie header rather than an array to the callback. Simply maps the `Cookie` array via `.cookieString()`.\n\n.getCookieStringSync(...)\n-------------------------\n\nSynchronous version of `getCookieString`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).\n\n.getSetCookieStrings(...)\n-------------------------\n\nReturns an array of strings suitable for **Set-Cookie** headers. Accepts the same options as `.getCookies()`. Simply maps the cookie array via `.toString()`.\n\n.getSetCookieStringsSync(...)\n-----------------------------\n\nSynchronous version of `getSetCookieStrings`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).\n\nStore\n=====\n\nBase class for CookieJar stores.\n\n# CookieStore API\n\nThe storage model for each `CookieJar` instance can be replaced with a custom implementation. The default is `MemoryCookieStore` which can be found in the `lib/memstore.js` file. The API uses continuation-passing-style to allow for asynchronous stores.\n\nStores should inherit from the base `Store` class, which is available as `require(\'tough-cookie\').Store`. Stores are asynchronous by default, but if `store.synchronous` is set, then the `*Sync` methods on the CookieJar can be used.\n\nAll `domain` parameters will have been normalized before calling.\n\nThe Cookie store must have all of the following methods.\n\nstore.findCookie(domain, path, key, cb(err,cookie))\n---------------------------------------------------\n\nRetrieve a cookie with the given domain, path and key (a.k.a. name). The RFC maintains that exactly one of these cookies should exist in a store. If the store is using versioning, this means that the latest/newest such cookie should be returned.\n\nCallback takes an error and the resulting `Cookie` object. If no cookie is found then `null` MUST be passed instead (i.e. not an error).\n\nstore.findCookies(domain, path, cb(err,cookies))\n------------------------------------------------\n\nLocates cookies matching the given domain and path. This is most often called in the context of `cookiejar.getCookies()` above.\n\nIf no cookies are found, the callback MUST be passed an empty array.\n\nThe resulting list will be checked for applicability to the current request according to the RFC (domain-match, path-match, http-only-flag, secure-flag, expiry, etc.), so it\'s OK to use an optimistic search algorithm when implementing this method. However, the search algorithm used SHOULD try to find cookies that `domainMatch()` the domain and `pathMatch()` the path in order to limit the amount of checking that needs to be done.\n\nAs of version 0.9.12, the `allPaths` option to `cookiejar.getCookies()` above will cause the path here to be `null`. If the path is `null`, path-matching MUST NOT be performed (i.e. domain-matching only).\n\nstore.putCookie(cookie, cb(err))\n--------------------------------\n\nAdds a new cookie to the store. The implementation SHOULD replace any existing cookie with the same `.domain`, `.path`, and `.key` properties -- depending on the nature of the implementation, it\'s possible that between the call to `fetchCookie` and `putCookie` that a duplicate `putCookie` can occur.\n\nThe `cookie` object MUST NOT be modified; the caller will have already updated the `.creation` and `.lastAccessed` properties.\n\nPass an error if the cookie cannot be stored.\n\nstore.updateCookie(oldCookie, newCookie, cb(err))\n-------------------------------------------------\n\nUpdate an existing cookie. The implementation MUST update the `.value` for a cookie with the same `domain`, `.path` and `.key`. The implementation SHOULD check that the old value in the store is equivalent to `oldCookie` - how the conflict is resolved is up to the store.\n\nThe `.lastAccessed` property will always be different between the two objects and `.created` will always be the same. Stores MAY ignore or defer the `.lastAccessed` change at the cost of affecting how cookies are sorted (or selected for deletion).\n\nStores may wish to optimize changing the `.value` of the cookie in the store versus storing a new cookie. If the implementation doesn\'t define this method a stub that calls `putCookie(newCookie,cb)` will be added to the store object.\n\nThe `newCookie` and `oldCookie` objects MUST NOT be modified.\n\nPass an error if the newCookie cannot be stored.\n\nstore.removeCookie(domain, path, key, cb(err))\n----------------------------------------------\n\nRemove a cookie from the store (see notes on `findCookie` about the uniqueness constraint).\n\nThe implementation MUST NOT pass an error if the cookie doesn\'t exist; only pass an error due to the failure to remove an existing cookie.\n\nstore.removeCookies(domain, path, cb(err))\n------------------------------------------\n\nRemoves matching cookies from the store. The `path` paramter is optional, and if missing means all paths in a domain should be removed.\n\nPass an error ONLY if removing any existing cookies failed.\n\n# TODO\n\n * _full_ RFC5890/RFC5891 canonicalization for domains in `cdomain()`\n * the optional `punycode` requirement implements RFC3492, but RFC6265 requires RFC5891\n * better tests for `validate()`?\n\n# Copyright and License\n\n(tl;dr: MIT with some MPL/1.1)\n\nCopyright 2012- GoInstant, Inc. and other contributors. All rights reserved.\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the "Software"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE.\n\nPortions may be licensed under different licenses (in particular public-suffix.txt is MPL/1.1); please read the LICENSE file for full details.\n',
1930 silly resolved readmeFilename: 'README.md',
1930 silly resolved _id: 'tough-cookie@0.12.1',
1930 silly resolved _from: 'tough-cookie@>=0.12.0' },
1930 silly resolved { author:
1930 silly resolved { name: 'Mikeal Rogers',
1930 silly resolved email: 'mikeal.rogers@gmail.com',
1930 silly resolved url: 'http://www.futurealoof.com' },
1930 silly resolved name: 'aws-sign2',
1930 silly resolved description: 'AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.',
1930 silly resolved version: '0.5.0',
1930 silly resolved repository: { url: 'https://github.com/mikeal/aws-sign' },
1930 silly resolved main: 'index.js',
1930 silly resolved dependencies: {},
1930 silly resolved devDependencies: {},
1930 silly resolved optionalDependencies: {},
1930 silly resolved engines: { node: '*' },
1930 silly resolved readme: 'aws-sign\n========\n\nAWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.\n',
1930 silly resolved readmeFilename: 'README.md',
1930 silly resolved bugs: { url: 'https://github.com/mikeal/aws-sign/issues' },
1930 silly resolved homepage: 'https://github.com/mikeal/aws-sign',
1930 silly resolved _id: 'aws-sign2@0.5.0',
1930 silly resolved _from: 'aws-sign2@~0.5.0' },
1930 silly resolved { author:
1930 silly resolved { name: 'Mikeal Rogers',
1930 silly resolved email: 'mikeal.rogers@gmail.com',
1930 silly resolved url: 'http://www.futurealoof.com' },
1930 silly resolved name: 'oauth-sign',
1930 silly resolved description: 'OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module.',
1930 silly resolved version: '0.3.0',
1930 silly resolved repository: { url: 'https://github.com/mikeal/oauth-sign' },
1930 silly resolved main: 'index.js',
1930 silly resolved dependencies: {},
1930 silly resolved devDependencies: {},
1930 silly resolved optionalDependencies: {},
1930 silly resolved engines: { node: '*' },
1930 silly resolved scripts: { test: 'node test.js' },
1930 silly resolved readme: 'oauth-sign\n==========\n\nOAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module. \n',
1930 silly resolved readmeFilename: 'README.md',
1930 silly resolved bugs: { url: 'https://github.com/mikeal/oauth-sign/issues' },
1930 silly resolved homepage: 'https://github.com/mikeal/oauth-sign',
1930 silly resolved _id: 'oauth-sign@0.3.0',
1930 silly resolved _from: 'oauth-sign@~0.3.0' },
1930 silly resolved { name: 'hawk',
1930 silly resolved description: 'HTTP Hawk Authentication Scheme',
1930 silly resolved version: '1.0.0',
1930 silly resolved author:
1930 silly resolved { name: 'Eran Hammer',
1930 silly resolved email: 'eran@hueniverse.com',
1930 silly resolved url: 'http://hueniverse.com' },
1930 silly resolved contributors: [],
1930 silly resolved repository: { type: 'git', url: 'git://github.com/hueniverse/hawk' },
1930 silly resolved main: 'index',
1930 silly resolved keywords: [ 'http', 'authentication', 'scheme', 'hawk' ],
1930 silly resolved engines: { node: '>=0.8.0' },
1930 silly resolved dependencies:
1930 silly resolved { hoek: '0.9.x',
1930 silly resolved boom: '0.4.x',
1930 silly resolved cryptiles: '0.2.x',
1930 silly resolved sntp: '0.2.x' },
1930 silly resolved devDependencies:
1930 silly resolved { lab: '0.1.x',
1930 silly resolved 'complexity-report': '0.x.x',
1930 silly resolved localStorage: '1.0.x' },
1930 silly resolved scripts: { test: 'make test-cov' },
1930 silly resolved licenses: [ [Object] ],
1930 silly resolved readme: '![hawk Logo](https://raw.github.com/hueniverse/hawk/master/images/hawk.png)\n\n<img align="right" src="https://raw.github.com/hueniverse/hawk/master/images/logo.png" /> **Hawk** is an HTTP authentication scheme using a message authentication code (MAC) algorithm to provide partial\nHTTP request cryptographic verification. For more complex use cases such as access delegation, see [Oz](https://github.com/hueniverse/oz).\n\nCurrent version: **1.0**\n\n[![Build Status](https://secure.travis-ci.org/hueniverse/hawk.png)](http://travis-ci.org/hueniverse/hawk)\n\n# Table of Content\n\n- [**Introduction**](#introduction)\n - [Replay Protection](#replay-protection)\n - [Usage Example](#usage-example)\n - [Protocol Example](#protocol-example)\n - [Payload Validation](#payload-validation)\n - [Response Payload Validation](#response-payload-validation)\n - [Browser Support and Considerations](#browser-support-and-considerations)\n<p></p>\n- [**Single URI Authorization**](#single-uri-authorization)\n - [Usage Example](#bewit-usage-example)\n<p></p>\n- [**Security Considerations**](#security-considerations)\n - [MAC Keys Transmission](#mac-keys-transmission)\n - [Confidentiality of Requests](#confidentiality-of-requests)\n - [Spoofing by Counterfeit Servers](#spoofing-by-counterfeit-servers)\n - [Plaintext Storage of Credentials](#plaintext-storage-of-credentials)\n - [Entropy of Keys](#entropy-of-keys)\n - [Coverage Limitations](#coverage-limitations)\n - [Future Time Manipulation](#future-time-manipulation)\n - [Client Clock Poisoning](#client-clock-poisoning)\n - [Bewit Limitations](#bewit-limitations)\n - [Host Header Forgery](#host-header-forgery)\n<p></p>\n- [**Frequently Asked Questions**](#frequently-asked-questions)\n<p></p>\n- [**Acknowledgements**](#acknowledgements)\n\n# Introduction\n\n**Hawk** is an HTTP authentication scheme providing mechanisms for making authenticated HTTP requests with\npartial cryptographic verification of the request and response, covering the HTTP method, request URI, host,\nand optionally the request payload.\n\nSimilar to the HTTP [Digest access authentication schemes](http://www.ietf.org/rfc/rfc2617.txt), **Hawk** uses a set of\nclient credentials which include an identifier (e.g. username) and key (e.g. password). Likewise, just as with the Digest scheme,\nthe key is never included in authenticated requests. Instead, it is used to calculate a request MAC value which is\nincluded in its place.\n\nHowever, **Hawk** has several differences from Digest. In particular, while both use a nonce to limit the possibility of\nreplay attacks, in **Hawk** the client generates the nonce and uses it in combination with a timestamp, leading to less\n"chattiness" (interaction with the server).\n\nAlso unlike Digest, this scheme is not intended to protect the key itself (the password in Digest) because\nthe client and server must both have access to the key material in the clear.\n\nThe primary design goals of this scheme are to:\n* simplify and improve HTTP authentication for services that are unwilling or unable to deploy TLS for all resources,\n* secure credentials against leakage (e.g., when the client uses some form of dynamic configuration to determine where\n to send an authenticated request), and\n* avoid the exposure of credentials sent to a malicious server over an unauthenticated secure channel due to client\n failure to validate the server\'s identity as part of its TLS handshake.\n\nIn addition, **Hawk** supports a method for granting third-parties temporary access to individual resources using\na query parameter called _bewit_ (in falconry, a leather strap used to attach a tracking device to the leg of a hawk).\n\nThe **Hawk** scheme requires the establishment of a shared symmetric key between the client and the server,\nwhich is beyond the scope of this module. Typically, the shared credentials are established via an initial\nTLS-protected phase or derived from some other shared confidential information available to both the client\nand the server.\n\n\n## Replay Protection\n\nWithout replay protection, an attacker can use a compromised (but otherwise valid and authenticated) request more \nthan once, gaining access to a protected resource. To mitigate this, clients include both a nonce and a timestamp when \nmaking requests. This gives the server enough information to prevent replay attacks.\n\nThe nonce is generated by the client, and is a string unique across all requests with the same timestamp and\nkey identifier combination. \n\nThe timestamp enables the server to restrict the validity period of the credentials where requests occuring afterwards\nare rejected. It also removes the need for the server to retain an unbounded number of nonce values for future checks.\nBy default, **Hawk** uses a time window of 1 minute to allow for time skew between the client and server (which in\npractice translates to a maximum of 2 minutes as the skew can be positive or negative).\n\nUsing a timestamp requires the client\'s clock to be in sync with the server\'s clock. **Hawk** requires both the client\nclock and the server clock to use NTP to ensure synchronization. However, given the limitations of some client types\n(e.g. browsers) to deploy NTP, the server provides the client with its current time (in seconds precision) in response\nto a bad timestamp.\n\nThere is no expectation that the client will adjust its system clock to match the server (in fact, this would be a\npotential attack vector). Instead, the client only uses the server\'s time to calculate an offset used only\nfor communications with that particular server. The protocol rewards clients with synchronized clocks by reducing\nthe number of round trips required to authenticate the first request.\n\n\n## Usage Example\n\nServer code:\n\n```javascript\nvar Http = require(\'http\');\nvar Hawk = require(\'hawk\');\n\n\n// Credentials lookup function\n\nvar credentialsFunc = function (id, callback) {\n\n var credentials = {\n key: \'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn\',\n algorithm: \'sha256\',\n user: \'Steve\'\n };\n\n return callback(null, credentials);\n};\n\n// Create HTTP server\n\nvar handler = function (req, res) {\n\n // Authenticate incoming request\n\n Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {\n\n // Prepare response\n\n var payload = (!err ? \'Hello \' + credentials.user + \' \' + artifacts.ext : \'Shoosh!\');\n var headers = { \'Content-Type\': \'text/plain\' };\n\n // Generate Server-Authorization response header\n\n var header = Hawk.server.header(credentials, artifacts, { payload: payload, contentType: headers[\'Content-Type\'] });\n headers[\'Server-Authorization\'] = header;\n\n // Send the response back\n\n res.writeHead(!err ? 200 : 401, headers);\n res.end(payload);\n });\n};\n\n// Start server\n\nHttp.createServer(handler).listen(8000, \'example.com\');\n```\n\nClient code:\n\n```javascript\nvar Request = require(\'request\');\nvar Hawk = require(\'hawk\');\n\n\n// Client credentials\n\nvar credentials = {\n id: \'dh37fgj492je\',\n key: \'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn\',\n algorithm: \'sha256\'\n}\n\n// Request options\n\nvar requestOptions = {\n uri: \'http://example.com:8000/resource/1?b=1&a=2\',\n method: \'GET\',\n headers: {}\n};\n\n// Generate Authorization request header\n\nvar header = Hawk.client.header(\'http://example.com:8000/resource/1?b=1&a=2\', \'GET\', { credentials: credentials, ext: \'some-app-data\' });\nrequestOptions.headers.Authorization = header.field;\n\n// Send authenticated request\n\nRequest(requestOptions, function (error, response, body) {\n\n // Authenticate the server\'s response\n\n var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body });\n\n // Output results\n\n console.log(response.statusCode + \': \' + body + (isValid ? \' (valid)\' : \' (invalid)\'));\n});\n```\n\n**Hawk** utilized the [**SNTP**](https://github.com/hueniverse/sntp) module for time sync management. By default, the local\nmachine time is used. To automatically retrieve and synchronice the clock within the application, use the SNTP \'start()\' method.\n\n```javascript\nHawk.sntp.start();\n```\n\n\n## Protocol Example\n\nThe client attempts to access a protected resource without authentication, sending the following HTTP request to\nthe resource server:\n\n```\nGET /resource/1?b=1&a=2 HTTP/1.1\nHost: example.com:8000\n```\n\nThe resource server returns an authentication challenge.\n\n```\nHTTP/1.1 401 Unauthorized\nWWW-Authenticate: Hawk\n```\n\nThe client has previously obtained a set of **Hawk** credentials for accessing resources on the "http://example.com/"\nserver. The **Hawk** credentials issued to the client include the following attributes:\n\n* Key identifier: dh37fgj492je\n* Key: werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn\n* Algorithm: sha256\n\nThe client generates the authentication header by calculating a timestamp (e.g. the number of seconds since January 1,\n1970 00:00:00 GMT), generating a nonce, and constructing the normalized request string (each value followed by a newline\ncharacter):\n\n```\nhawk.1.header\n1353832234\nj4h3g2\nGET\n/resource/1?b=1&a=2\nexample.com\n8000\n\nsome-app-ext-data\n\n```\n\nThe request MAC is calculated using HMAC with the specified hash algorithm "sha256" and the key over the normalized request string.\nThe result is base64-encoded to produce the request MAC:\n\n```\n6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE=\n```\n\nThe client includes the **Hawk** key identifier, timestamp, nonce, application specific data, and request MAC with the request using\nthe HTTP `Authorization` request header field:\n\n```\nGET /resource/1?b=1&a=2 HTTP/1.1\nHost: example.com:8000\nAuthorization: Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE="\n```\n\nThe server validates the request by calculating the request MAC again based on the request received and verifies the validity\nand scope of the **Hawk** credentials. If valid, the server responds with the requested resource.\n\n\n### Payload Validation\n\n**Hawk** provides optional payload validation. When generating the authentication header, the client calculates a payload hash\nusing the specified hash algorithm. The hash is calculated over the concatenated value of (each followed by a newline character):\n* `hawk.1.payload`\n* the content-type in lowercase, without any parameters (e.g. `application/json`)\n* the request payload prior to any content encoding (the exact representation requirements should be specified by the server for payloads other than simple single-part ascii to ensure interoperability)\n\nFor example:\n\n* Payload: `Thank you for flying Hawk`\n* Content Type: `text/plain`\n* Hash (sha256): `Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=`\n\nResults in the following input to the payload hash function (newline terminated values):\n\n```\nhawk.1.payload\ntext/plain\nThank you for flying Hawk\n\n```\n\nWhich produces the following hash value:\n\n```\nYi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\n```\n\nThe client constructs the normalized request string (newline terminated values):\n\n```\nhawk.1.header\n1353832234\nj4h3g2\nPOST\n/resource/1?a=1&b=2\nexample.com\n8000\nYi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\nsome-app-ext-data\n\n```\n\nThen calculates the request MAC and includes the **Hawk** key identifier, timestamp, nonce, payload hash, application specific data,\nand request MAC, with the request using the HTTP `Authorization` request header field:\n\n```\nPOST /resource/1?a=1&b=2 HTTP/1.1\nHost: example.com:8000\nAuthorization: Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", hash="Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=", ext="some-app-ext-data", mac="aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw="\n```\n\nIt is up to the server if and when it validates the payload for any given request, based solely on it\'s security policy\nand the nature of the data included.\n\nIf the payload is available at the time of authentication, the server uses the hash value provided by the client to construct\nthe normalized string and validates the MAC. If the MAC is valid, the server calculates the payload hash and compares the value\nwith the provided payload hash in the header. In many cases, checking the MAC first is faster than calculating the payload hash.\n\nHowever, if the payload is not available at authentication time (e.g. too large to fit in memory, streamed elsewhere, or processed\nat a different stage in the application), the server may choose to defer payload validation for later by retaining the hash value\nprovided by the client after validating the MAC.\n\nIt is important to note that MAC validation does not mean the hash value provided by the client is valid, only that the value\nincluded in the header was not modified. Without calculating the payload hash on the server and comparing it to the value provided\nby the client, the payload may be modified by an attacker.\n\n\n## Response Payload Validation\n\n**Hawk** provides partial response payload validation. The server includes the `Server-Authorization` response header which enables the\nclient to authenticate the response and ensure it is talking to the right server. **Hawk** defines the HTTP `Server-Authorization` header\nas a response header using the exact same syntax as the `Authorization` request header field.\n\nThe header is contructed using the same process as the client\'s request header. The server uses the same credentials and other\nartifacts provided by the client to constructs the normalized request string. The `ext` and `hash` values are replaced with\nnew values based on the server response. The rest as identical to those used by the client.\n\nThe result MAC digest is included with the optional `hash` and `ext` values:\n\n```\nServer-Authorization: Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"\n```\n\n\n## Browser Support and Considerations\n\nA browser script is provided for including using a `<script>` tag in [lib/browser.js](/lib/browser.js).\n\n**Hawk** relies on the _Server-Authorization_ and _WWW-Authenticate_ headers in its response to communicate with the client.\nTherefore, in case of CORS requests, it is important to consider sending _Access-Control-Expose-Headers_ with the value\n_"WWW-Authenticate, Server-Authorization"_ on each response from your server. As explained in the\n[specifications](http://www.w3.org/TR/cors/#access-control-expose-headers-response-header), it will indicate that these headers\ncan safely be accessed by the client (using getResponseHeader() on the XmlHttpRequest object). Otherwise you will be met with a\n["simple response header"](http://www.w3.org/TR/cors/#simple-response-header) which excludes these fields and would prevent the\nHawk client from authenticating the requests.You can read more about the why and how in this\n[article](http://www.html5rocks.com/en/tutorials/cors/#toc-adding-cors-support-to-the-server)\n\n\n# Single URI Authorization\n\nThere are cases in which limited and short-term access to a protected resource is granted to a third party which does not\nhave access to the shared credentials. For example, displaying a protected image on a web page accessed by anyone. **Hawk**\nprovides limited support for such URIs in the form of a _bewit_ - a URI query parameter appended to the request URI which contains\nthe necessary credentials to authenticate the request.\n\nBecause of the significant security risks involved in issuing such access, bewit usage is purposely limited only to GET requests\nand for a finite period of time. Both the client and server can issue bewit credentials, however, the server should not use the same\ncredentials as the client to maintain clear traceability as to who issued which credentials.\n\nIn order to simplify implementation, bewit credentials do not support single-use policy and can be replayed multiple times within\nthe granted access timeframe. \n\n\n## Bewit Usage Example\n\nServer code:\n\n```javascript\nvar Http = require(\'http\');\nvar Hawk = require(\'hawk\');\n\n\n// Credentials lookup function\n\nvar credentialsFunc = function (id, callback) {\n\n var credentials = {\n key: \'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn\',\n algorithm: \'sha256\'\n };\n\n return callback(null, credentials);\n};\n\n// Create HTTP server\n\nvar handler = function (req, res) {\n\n Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {\n\n res.writeHead(!err ? 200 : 401, { \'Content-Type\': \'text/plain\' });\n res.end(!err ? \'Access granted\' : \'Shoosh!\');\n });\n};\n\nHttp.createServer(handler).listen(8000, \'example.com\');\n```\n\nBewit code generation:\n\n```javascript\nvar Request = require(\'request\');\nvar Hawk = require(\'hawk\');\n\n\n// Client credentials\n\nvar credentials = {\n id: \'dh37fgj492je\',\n key: \'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn\',\n algorithm: \'sha256\'\n}\n\n// Generate bewit\n\nvar duration = 60 * 5; // 5 Minutes\nvar bewit = Hawk.uri.getBewit(\'http://example.com:8080/resource/1?b=1&a=2\', { credentials: credentials, ttlSec: duration, ext: \'some-app-data\' });\nvar uri = \'http://example.com:8000/resource/1?b=1&a=2\' + \'&bewit=\' + bewit;\n```\n\n\n# Security Considerations\n\nThe greatest sources of security risks are usually found not in **Hawk** but in the policies and procedures surrounding its use.\nImplementers are strongly encouraged to assess how this module addresses their security requirements. This section includes\nan incomplete list of security considerations that must be reviewed and understood before deploying **Hawk** on the server.\nMany of the protections provided in **Hawk** depends on whether and how they are used.\n\n### MAC Keys Transmission\n\n**Hawk** does not provide any mechanism for obtaining or transmitting the set of shared credentials required. Any mechanism used\nto obtain **Hawk** credentials must ensure that these transmissions are protected using transport-layer mechanisms such as TLS.\n\n### Confidentiality of Requests\n\nWhile **Hawk** provides a mechanism for verifying the integrity of HTTP requests, it provides no guarantee of request\nconfidentiality. Unless other precautions are taken, eavesdroppers will have full access to the request content. Servers should\ncarefully consider the types of data likely to be sent as part of such requests, and employ transport-layer security mechanisms\nto protect sensitive resources.\n\n### Spoofing by Counterfeit Servers\n\n**Hawk** provides limited verification of the server authenticity. When receiving a response back from the server, the server\nmay choose to include a response `Server-Authorization` header which the client can use to verify the response. However, it is up to\nthe server to determine when such measure is included, to up to the client to enforce that policy.\n\nA hostile party could take advantage of this by intercepting the client\'s requests and returning misleading or otherwise\nincorrect responses. Service providers should consider such attacks when developing services using this protocol, and should\nrequire transport-layer security for any requests where the authenticity of the resource server or of server responses is an issue.\n\n### Plaintext Storage of Credentials\n\nThe **Hawk** key functions the same way passwords do in traditional authentication systems. In order to compute the request MAC,\nthe server must have access to the key in plaintext form. This is in contrast, for example, to modern operating systems, which\nstore only a one-way hash of user credentials.\n\nIf an attacker were to gain access to these keys - or worse, to the server\'s database of all such keys - he or she would be able\nto perform any action on behalf of any resource owner. Accordingly, it is critical that servers protect these keys from unauthorized\naccess.\n\n### Entropy of Keys\n\nUnless a transport-layer security protocol is used, eavesdroppers will have full access to authenticated requests and request\nMAC values, and will thus be able to mount offline brute-force attacks to recover the key used. Servers should be careful to\nassign keys which are long enough, and random enough, to resist such attacks for at least the length of time that the **Hawk**\ncredentials are valid.\n\nFor example, if the credentials are valid for two weeks, servers should ensure that it is not possible to mount a brute force\nattack that recovers the key in less than two weeks. Of course, servers are urged to err on the side of caution, and use the\nlongest key reasonable.\n\nIt is equally important that the pseudo-random number generator (PRNG) used to generate these keys be of sufficiently high\nquality. Many PRNG implementations generate number sequences that may appear to be random, but which nevertheless exhibit\npatterns or other weaknesses which make cryptanalysis or brute force attacks easier. Implementers should be careful to use\ncryptographically secure PRNGs to avoid these problems.\n\n### Coverage Limitations\n\nThe request MAC only covers the HTTP `Host` header and optionally the `Content-Type` header. It does not cover any other headers\nwhich can often affect how the request body is interpreted by the server. If the server behavior is influenced by the presence\nor value of such headers, an attacker can manipulate the request headers without being detected. Implementers should use the\n`ext` feature to pass application-specific information via the `Authorization` header which is protected by the request MAC.\n\nThe response authentication, when performed, only covers the response payload, content-type, and the request information \nprovided by the client in it\'s request (method, resource, timestamp, nonce, etc.). It does not cover the HTTP status code or\nany other response header field (e.g. Location) which can affect the client\'s behaviour.\n\n### Future Time Manipulation\n\nThe protocol relies on a clock sync between the client and server. To accomplish this, the server informs the client of its\ncurrent time when an invalid timestamp is received.\n\nIf an attacker is able to manipulate this information and cause the client to use an incorrect time, it would be able to cause\nthe client to generate authenticated requests using time in the future. Such requests will fail when sent by the client, and will\nnot likely leave a trace on the server (given the common implementation of nonce, if at all enforced). The attacker will then\nbe able to replay the request at the correct time without detection.\n\nThe client must only use the time information provided by the server if:\n* it was delivered over a TLS connection and the server identity has been verified, or\n* the `tsm` MAC digest calculated using the same client credentials over the timestamp has been verified.\n\n### Client Clock Poisoning\n\nWhen receiving a request with a bad timestamp, the server provides the client with its current time. The client must never use\nthe time received from the server to adjust its own clock, and must only use it to calculate an offset for communicating with\nthat particular server.\n\n### Bewit Limitations\n\nSpecial care must be taken when issuing bewit credentials to third parties. Bewit credentials are valid until expiration and cannot\nbe revoked or limited without using other means. Whatever resource they grant access to will be completely exposed to anyone with\naccess to the bewit credentials which act as bearer credentials for that particular resource. While bewit usage is limited to GET\nrequests only and therefore cannot be used to perform transactions or change server state, it can still be used to expose private\nand sensitive information.\n\n### Host Header Forgery\n\nHawk validates the incoming request MAC against the incoming HTTP Host header. However, unless the optional `host` and `port`\noptions are used with `server.authenticate()`, a malicous client can mint new host names pointing to the server\'s IP address and\nuse that to craft an attack by sending a valid request that\'s meant for another hostname than the one used by the server. Server\nimplementors must manually verify that the host header received matches their expectation (or use the options mentioned above).\n\n# Frequently Asked Questions\n\n### Where is the protocol specification?\n\nIf you are looking for some prose explaining how all this works, **this is it**. **Hawk** is being developed as an open source\nproject instead of a standard. In other words, the [code](/hueniverse/hawk/tree/master/lib) is the specification. Not sure about\nsomething? Open an issue!\n\n### Is it done?\n\nAt if version 0.10.0, **Hawk** is feature-complete. However, until this module reaches version 1.0.0 it is considered experimental\nand is likely to change. This also means your feedback and contribution are very welcome. Feel free to open issues with questions\nand suggestions.\n\n### Where can I find **Hawk** implementations in other languages?\n\n**Hawk**\'s only reference implementation is provided in JavaScript as a node.js module. However, others are actively porting it to other\nplatforms. There is already a [PHP](https://github.com/alexbilbie/PHP-Hawk),\n[.NET](https://github.com/pcibraro/hawknet), and [JAVA](https://github.com/wealdtech/hawk) libraries available. The full list\nis maintained [here](https://github.com/hueniverse/hawk/issues?labels=port). Please add an issue if you are working on another\nport. A cross-platform test-suite is in the works.\n\n### Why isn\'t the algorithm part of the challenge or dynamically negotiated?\n\nThe algorithm used is closely related to the key issued as different algorithms require different key sizes (and other\nrequirements). While some keys can be used for multiple algorithm, the protocol is designed to closely bind the key and algorithm\ntogether as part of the issued credentials.\n\n### Why is Host and Content-Type the only headers covered by the request MAC?\n\nIt is really hard to include other headers. Headers can be changed by proxies and other intermediaries and there is no\nwell-established way to normalize them. Many platforms change the case of header field names and values. The only\nstraight-forward solution is to include the headers in some blob (say, base64 encoded JSON) and include that with the request,\nan approach taken by JWT and other such formats. However, that design violates the HTTP header boundaries, repeats information,\nand introduces other security issues because firewalls will not be aware of these "hidden" headers. In addition, any information\nrepeated must be compared to the duplicated information in the header and therefore only moves the problem elsewhere.\n\n### Why not just use HTTP Digest?\n\nDigest requires pre-negotiation to establish a nonce. This means you can\'t just make a request - you must first send\na protocol handshake to the server. This pattern has become unacceptable for most web services, especially mobile\nwhere extra round-trip are costly.\n\n### Why bother with all this nonce and timestamp business?\n\n**Hawk** is an attempt to find a reasonable, practical compromise between security and usability. OAuth 1.0 got timestamp\nand nonces halfway right but failed when it came to scalability and consistent developer experience. **Hawk** addresses\nit by requiring the client to sync its clock, but provides it with tools to accomplish it.\n\nIn general, replay protection is a matter of application-specific threat model. It is less of an issue on a TLS-protected\nsystem where the clients are implemented using best practices and are under the control of the server. Instead of dropping\nreplay protection, **Hawk** offers a required time window and an optional nonce verification. Together, it provides developers\nwith the ability to decide how to enforce their security policy without impacting the client\'s implementation.\n\n### What are `app` and `dlg` in the authorization header and normalized mac string?\n\nThe original motivation for **Hawk** was to replace the OAuth 1.0 use cases. This included both a simple client-server mode which\nthis module is specifically designed for, and a delegated access mode which is being developed separately in\n[Oz](https://github.com/hueniverse/oz). In addition to the **Hawk** use cases, Oz requires another attribute: the application id `app`.\nThis provides binding between the credentials and the application in a way that prevents an attacker from tricking an application\nto use credentials issued to someone else. It also has an optional \'delegated-by\' attribute `dlg` which is the application id of the\napplication the credentials were directly issued to. The goal of these two additions is to allow Oz to utilize **Hawk** directly,\nbut with the additional security of delegated credentials.\n\n### What is the purpose of the static strings used in each normalized MAC input?\n\nWhen calculating a hash or MAC, a static prefix (tag) is added. The prefix is used to prevent MAC values from being\nused or reused for a purpose other than what they were created for (i.e. prevents switching MAC values between a request,\nresponse, and a bewit use cases). It also protects against expliots created after a potential change in how the protocol\ncreates the normalized string. For example, if a future version would switch the order of nonce and timestamp, it\ncan create an exploit opportunity for cases where the nonce is similar in format to a timestamp.\n\n### Does **Hawk** have anything to do with OAuth?\n\nShort answer: no.\n\n**Hawk** was originally proposed as the OAuth MAC Token specification. However, the OAuth working group in its consistent\nincompetence failed to produce a final, usable solution to address one of the most popular use cases of OAuth 1.0 - using it\nto authenticate simple client-server transactions (i.e. two-legged). As you can guess, the OAuth working group is still hard\nat work to produce more garbage.\n\n**Hawk** provides a simple HTTP authentication scheme for making client-server requests. It does not address the OAuth use case\nof delegating access to a third party. If you are looking for an OAuth alternative, check out [Oz](https://github.com/hueniverse/oz).\n\n\n# Acknowledgements\n\n**Hawk** is a derivative work of the [HTTP MAC Authentication Scheme](http://tools.ietf.org/html/draft-hammer-oauth-v2-mac-token-05) proposal\nco-authored by Ben Adida, Adam Barth, and Eran Hammer, which in turn was based on the OAuth 1.0 community specification.\n\nSpecial thanks to Ben Laurie for his always insightful feedback and advice.\n\nThe **Hawk** logo was created by [Chris Carrasco](http://chriscarrasco.com).\n',
1930 silly resolved readmeFilename: 'README.md',
1930 silly resolved bugs: { url: 'https://github.com/hueniverse/hawk/issues' },
1930 silly resolved homepage: 'https://github.com/hueniverse/hawk',
1930 silly resolved _id: 'hawk@1.0.0',
1930 silly resolved _from: 'hawk@~1.0.0' } ]
1931 info install forever-agent@0.5.2 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
1932 info install json-stringify-safe@5.0.0 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
1933 info install node-uuid@1.4.1 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
1934 info install qs@0.6.6 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
1935 info install tunnel-agent@0.3.0 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
1936 info install mime@1.2.11 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
1937 info install form-data@0.1.2 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
1938 info install http-signature@0.10.0 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
1939 info install tough-cookie@0.12.1 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
1940 info install aws-sign2@0.5.0 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
1941 info install oauth-sign@0.3.0 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
1942 info install hawk@1.0.0 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
1943 info installOne forever-agent@0.5.2
1944 info installOne json-stringify-safe@5.0.0
1945 info installOne node-uuid@1.4.1
1946 info installOne qs@0.6.6
1947 info installOne tunnel-agent@0.3.0
1948 info installOne mime@1.2.11
1949 info installOne form-data@0.1.2
1950 info installOne http-signature@0.10.0
1951 info installOne tough-cookie@0.12.1
1952 info installOne aws-sign2@0.5.0
1953 info installOne oauth-sign@0.3.0
1954 info installOne hawk@1.0.0
1955 verbose tar unpack /home/patcon/.npm/keypress/0.1.0/package.tgz
1956 silly lockFile 981b2ed1--commander-node-modules-keypress tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander/node_modules/keypress
1957 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander/node_modules/keypress /home/patcon/.npm/981b2ed1--commander-node-modules-keypress.lock
1958 silly lockFile 11eb0952-n-npm-keypress-0-1-0-package-tgz tar:///home/patcon/.npm/keypress/0.1.0/package.tgz
1959 verbose lock tar:///home/patcon/.npm/keypress/0.1.0/package.tgz /home/patcon/.npm/11eb0952-n-npm-keypress-0-1-0-package-tgz.lock
1960 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/forever-agent unbuild
1961 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/json-stringify-safe unbuild
1962 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/node-uuid unbuild
1963 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/qs unbuild
1964 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tunnel-agent unbuild
1965 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/mime unbuild
1966 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data unbuild
1967 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature unbuild
1968 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie unbuild
1969 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/aws-sign2 unbuild
1970 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/oauth-sign unbuild
1971 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk unbuild
1972 silly gunzTarPerm modes [ '755', '644' ]
1973 silly gunzTarPerm modes [ '755', '644' ]
1974 silly gunzTarPerm modes [ '755', '644' ]
1975 http 304 https://registry.npmjs.org/inherits
1976 silly registry.get cb [ 304,
1976 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:29 GMT',
1976 silly registry.get server: 'Apache',
1976 silly registry.get via: '1.1 varnish',
1976 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:29 GMT',
1976 silly registry.get 'cache-control': 'max-age=1',
1976 silly registry.get etag: '"5EGJ8OP5OD36QKCYXDH0VPTWW"',
1976 silly registry.get 'x-served-by': 'cache-lax1431-LAX',
1976 silly registry.get 'x-cache': 'HIT',
1976 silly registry.get 'x-cache-hits': '1',
1976 silly registry.get 'x-timer': 'S1396207049.332614899,VS0,VE0',
1976 silly registry.get vary: 'Accept',
1976 silly registry.get 'content-length': '0',
1976 silly registry.get 'keep-alive': 'timeout=10, max=46',
1976 silly registry.get connection: 'Keep-Alive' } ]
1977 verbose etag inherits from cache
1978 silly gunzTarPerm modes [ '755', '644' ]
1979 verbose tar unpack /home/patcon/.npm/forever-agent/0.5.2/package.tgz
1980 silly lockFile 8ba2480e-quest-node-modules-forever-agent tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/forever-agent
1981 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/forever-agent /home/patcon/.npm/8ba2480e-quest-node-modules-forever-agent.lock
1982 silly lockFile baeadcc1--forever-agent-0-5-2-package-tgz tar:///home/patcon/.npm/forever-agent/0.5.2/package.tgz
1983 verbose lock tar:///home/patcon/.npm/forever-agent/0.5.2/package.tgz /home/patcon/.npm/baeadcc1--forever-agent-0-5-2-package-tgz.lock
1984 verbose tar unpack /home/patcon/.npm/json-stringify-safe/5.0.0/package.tgz
1985 silly lockFile f3410943-node-modules-json-stringify-safe tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/json-stringify-safe
1986 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/json-stringify-safe /home/patcon/.npm/f3410943-node-modules-json-stringify-safe.lock
1987 silly lockFile 719e3569-stringify-safe-5-0-0-package-tgz tar:///home/patcon/.npm/json-stringify-safe/5.0.0/package.tgz
1988 verbose lock tar:///home/patcon/.npm/json-stringify-safe/5.0.0/package.tgz /home/patcon/.npm/719e3569-stringify-safe-5-0-0-package-tgz.lock
1989 verbose tar unpack /home/patcon/.npm/node-uuid/1.4.1/package.tgz
1990 silly lockFile 072db897-s-request-node-modules-node-uuid tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/node-uuid
1991 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/node-uuid /home/patcon/.npm/072db897-s-request-node-modules-node-uuid.lock
1992 silly lockFile d8df5ed0--npm-node-uuid-1-4-1-package-tgz tar:///home/patcon/.npm/node-uuid/1.4.1/package.tgz
1993 verbose lock tar:///home/patcon/.npm/node-uuid/1.4.1/package.tgz /home/patcon/.npm/d8df5ed0--npm-node-uuid-1-4-1-package-tgz.lock
1994 verbose tar unpack /home/patcon/.npm/qs/0.6.6/package.tgz
1995 silly lockFile 543c06d7--modules-request-node-modules-qs tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/qs
1996 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/qs /home/patcon/.npm/543c06d7--modules-request-node-modules-qs.lock
1997 silly lockFile febb442e--patcon-npm-qs-0-6-6-package-tgz tar:///home/patcon/.npm/qs/0.6.6/package.tgz
1998 verbose lock tar:///home/patcon/.npm/qs/0.6.6/package.tgz /home/patcon/.npm/febb442e--patcon-npm-qs-0-6-6-package-tgz.lock
1999 verbose tar unpack /home/patcon/.npm/tunnel-agent/0.3.0/package.tgz
2000 silly lockFile 0cee7e91-equest-node-modules-tunnel-agent tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tunnel-agent
2001 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tunnel-agent /home/patcon/.npm/0cee7e91-equest-node-modules-tunnel-agent.lock
2002 silly lockFile 7659749b-m-tunnel-agent-0-3-0-package-tgz tar:///home/patcon/.npm/tunnel-agent/0.3.0/package.tgz
2003 verbose lock tar:///home/patcon/.npm/tunnel-agent/0.3.0/package.tgz /home/patcon/.npm/7659749b-m-tunnel-agent-0-3-0-package-tgz.lock
2004 verbose tar unpack /home/patcon/.npm/mime/1.2.11/package.tgz
2005 silly lockFile 51d72675-odules-request-node-modules-mime tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/mime
2006 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/mime /home/patcon/.npm/51d72675-odules-request-node-modules-mime.lock
2007 silly lockFile a9897d1d-tcon-npm-mime-1-2-11-package-tgz tar:///home/patcon/.npm/mime/1.2.11/package.tgz
2008 verbose lock tar:///home/patcon/.npm/mime/1.2.11/package.tgz /home/patcon/.npm/a9897d1d-tcon-npm-mime-1-2-11-package-tgz.lock
2009 verbose tar unpack /home/patcon/.npm/form-data/0.1.2/package.tgz
2010 silly lockFile 450ccaa5-s-request-node-modules-form-data tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data
2011 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data /home/patcon/.npm/450ccaa5-s-request-node-modules-form-data.lock
2012 silly lockFile 149f3d3f--npm-form-data-0-1-2-package-tgz tar:///home/patcon/.npm/form-data/0.1.2/package.tgz
2013 verbose lock tar:///home/patcon/.npm/form-data/0.1.2/package.tgz /home/patcon/.npm/149f3d3f--npm-form-data-0-1-2-package-tgz.lock
2014 verbose tar unpack /home/patcon/.npm/http-signature/0.10.0/package.tgz
2015 silly lockFile a8d429d2-uest-node-modules-http-signature tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature
2016 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature /home/patcon/.npm/a8d429d2-uest-node-modules-http-signature.lock
2017 silly lockFile fd79bcd2-ttp-signature-0-10-0-package-tgz tar:///home/patcon/.npm/http-signature/0.10.0/package.tgz
2018 verbose lock tar:///home/patcon/.npm/http-signature/0.10.0/package.tgz /home/patcon/.npm/fd79bcd2-ttp-signature-0-10-0-package-tgz.lock
2019 verbose tar unpack /home/patcon/.npm/tough-cookie/0.12.1/package.tgz
2020 silly lockFile 638a1e3b-equest-node-modules-tough-cookie tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie
2021 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie /home/patcon/.npm/638a1e3b-equest-node-modules-tough-cookie.lock
2022 silly lockFile 12596b09--tough-cookie-0-12-1-package-tgz tar:///home/patcon/.npm/tough-cookie/0.12.1/package.tgz
2023 verbose lock tar:///home/patcon/.npm/tough-cookie/0.12.1/package.tgz /home/patcon/.npm/12596b09--tough-cookie-0-12-1-package-tgz.lock
2024 verbose tar unpack /home/patcon/.npm/aws-sign2/0.5.0/package.tgz
2025 silly lockFile f52f2e70-s-request-node-modules-aws-sign2 tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/aws-sign2
2026 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/aws-sign2 /home/patcon/.npm/f52f2e70-s-request-node-modules-aws-sign2.lock
2027 silly lockFile 7c0b197a--npm-aws-sign2-0-5-0-package-tgz tar:///home/patcon/.npm/aws-sign2/0.5.0/package.tgz
2028 verbose lock tar:///home/patcon/.npm/aws-sign2/0.5.0/package.tgz /home/patcon/.npm/7c0b197a--npm-aws-sign2-0-5-0-package-tgz.lock
2029 verbose tar unpack /home/patcon/.npm/oauth-sign/0.3.0/package.tgz
2030 silly lockFile 8e963929--request-node-modules-oauth-sign tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/oauth-sign
2031 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/oauth-sign /home/patcon/.npm/8e963929--request-node-modules-oauth-sign.lock
2032 silly lockFile 525fd999-npm-oauth-sign-0-3-0-package-tgz tar:///home/patcon/.npm/oauth-sign/0.3.0/package.tgz
2033 verbose lock tar:///home/patcon/.npm/oauth-sign/0.3.0/package.tgz /home/patcon/.npm/525fd999-npm-oauth-sign-0-3-0-package-tgz.lock
2034 verbose tar unpack /home/patcon/.npm/hawk/1.0.0/package.tgz
2035 silly lockFile b84ad66f-odules-request-node-modules-hawk tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk
2036 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk /home/patcon/.npm/b84ad66f-odules-request-node-modules-hawk.lock
2037 silly lockFile 5400eb34-atcon-npm-hawk-1-0-0-package-tgz tar:///home/patcon/.npm/hawk/1.0.0/package.tgz
2038 verbose lock tar:///home/patcon/.npm/hawk/1.0.0/package.tgz /home/patcon/.npm/5400eb34-atcon-npm-hawk-1-0-0-package-tgz.lock
2039 silly gunzTarPerm extractEntry package.json
2040 silly gunzTarPerm modes [ '755', '644' ]
2041 silly gunzTarPerm modes [ '755', '644' ]
2042 silly gunzTarPerm modes [ '755', '644' ]
2043 silly gunzTarPerm modes [ '755', '644' ]
2044 silly gunzTarPerm modes [ '755', '644' ]
2045 silly gunzTarPerm modes [ '755', '644' ]
2046 silly gunzTarPerm modes [ '755', '644' ]
2047 silly gunzTarPerm modes [ '755', '644' ]
2048 silly gunzTarPerm modes [ '755', '644' ]
2049 silly gunzTarPerm modes [ '755', '644' ]
2050 silly gunzTarPerm modes [ '755', '644' ]
2051 silly gunzTarPerm modes [ '755', '644' ]
2052 silly gunzTarPerm extractEntry package.json
2053 silly gunzTarPerm extractEntry package.json
2054 silly gunzTarPerm extractEntry package.json
2055 silly addNameRange number 2 { name: 'inherits', range: '>=2.0.0-0 <3.0.0-0', hasData: true }
2056 silly addNameRange versions [ 'inherits', [ '1.0.0', '2.0.0', '2.0.1' ] ]
2057 verbose addNamed [ 'inherits', '2.0.1' ]
2058 verbose addNamed [ '2.0.1', '2.0.1' ]
2059 silly lockFile 2b2e8f1b-inherits-2-0-1 inherits@2.0.1
2060 verbose lock inherits@2.0.1 /home/patcon/.npm/2b2e8f1b-inherits-2-0-1.lock
2061 silly gunzTarPerm extractEntry README.md
2062 silly gunzTarPerm extractEntry LICENSE
2063 silly gunzTarPerm extractEntry .npmignore
2064 silly gunzTarPerm extractEntry README.md
2065 silly gunzTarPerm extractEntry README.md
2066 silly gunzTarPerm extractEntry LICENSE
2067 silly gunzTarPerm extractEntry package.json
2068 silly lockFile 2b2e8f1b-inherits-2-0-1 inherits@2.0.1
2069 silly lockFile 2b2e8f1b-inherits-2-0-1 inherits@2.0.1
2070 silly gunzTarPerm extractEntry README.md
2071 silly gunzTarPerm extractEntry index.js
2072 silly gunzTarPerm extractEntry package.json
2073 silly gunzTarPerm extractEntry package.json
2074 silly gunzTarPerm extractEntry package.json
2075 silly gunzTarPerm extractEntry package.json
2076 silly gunzTarPerm extractEntry package.json
2077 silly gunzTarPerm extractEntry package.json
2078 silly gunzTarPerm extractEntry package.json
2079 silly gunzTarPerm extractEntry package.json
2080 silly gunzTarPerm extractEntry package.json
2081 silly gunzTarPerm extractEntry package.json
2082 silly gunzTarPerm extractEntry package.json
2083 silly lockFile 1f7ff4de-inherits-2 inherits@2
2084 silly lockFile 1f7ff4de-inherits-2 inherits@2
2085 silly gunzTarPerm extractEntry README.md
2086 silly gunzTarPerm extractEntry LICENSE
2087 silly gunzTarPerm extractEntry README.md
2088 silly gunzTarPerm extractEntry LICENSE
2089 silly gunzTarPerm extractEntry .npmignore
2090 silly gunzTarPerm extractEntry README.md
2091 silly gunzTarPerm extractEntry .npmignore
2092 silly gunzTarPerm extractEntry index.js
2093 silly gunzTarPerm extractEntry README.md
2094 silly gunzTarPerm extractEntry LICENSE
2095 silly gunzTarPerm extractEntry README.md
2096 silly gunzTarPerm extractEntry LICENSE
2097 silly gunzTarPerm extractEntry License
2098 silly gunzTarPerm extractEntry Readme.md
2099 silly gunzTarPerm extractEntry .npmignore
2100 silly gunzTarPerm extractEntry README.md
2101 silly gunzTarPerm extractEntry .npmignore
2102 silly gunzTarPerm extractEntry README.md
2103 silly gunzTarPerm extractEntry README.md
2104 silly gunzTarPerm extractEntry LICENSE
2105 silly gunzTarPerm extractEntry README.md
2106 silly gunzTarPerm extractEntry LICENSE
2107 silly gunzTarPerm extractEntry .npmignore
2108 silly gunzTarPerm extractEntry README.md
2109 silly gunzTarPerm extractEntry bin.js
2110 silly gunzTarPerm extractEntry rimraf.js
2111 silly gunzTarPerm extractEntry inherits.js
2112 silly gunzTarPerm extractEntry inherits_browser.js
2113 silly gunzTarPerm extractEntry LICENSE
2114 silly gunzTarPerm extractEntry graceful-fs.js
2115 silly gunzTarPerm extractEntry test.js
2116 silly gunzTarPerm extractEntry index.js
2117 silly gunzTarPerm extractEntry stringify.js
2118 silly gunzTarPerm extractEntry test.js
2119 silly gunzTarPerm extractEntry index.js
2120 silly gunzTarPerm extractEntry .gitmodules
2121 silly gunzTarPerm extractEntry Readme.md
2122 silly gunzTarPerm extractEntry index.js
2123 silly gunzTarPerm extractEntry index.js
2124 silly gunzTarPerm extractEntry test.js
2125 silly gunzTarPerm extractEntry uuid.js
2126 silly gunzTarPerm extractEntry LICENSE.md
2127 silly gunzTarPerm extractEntry benchmark/README.md
2128 silly gunzTarPerm extractEntry benchmark/benchmark.js
2129 silly gunzTarPerm extractEntry benchmark/bench.gnu
2130 silly gunzTarPerm extractEntry benchmark/bench.sh
2131 silly gunzTarPerm extractEntry benchmark/benchmark-native.c
2132 silly gunzTarPerm extractEntry component.json
2133 silly gunzTarPerm extractEntry test/compare_v1.js
2134 silly gunzTarPerm extractEntry test/test.js
2135 silly gunzTarPerm extractEntry test/test.html
2136 silly gunzTarPerm extractEntry mime.js
2137 silly gunzTarPerm extractEntry test.js
2138 silly gunzTarPerm extractEntry lib/form_data.js
2139 silly gunzTarPerm extractEntry LICENSE
2140 silly gunzTarPerm extractEntry .dir-locals.el
2141 silly gunzTarPerm extractEntry LICENSE
2142 silly gunzTarPerm extractEntry LICENSE
2143 silly gunzTarPerm extractEntry AUTHORS
2144 silly gunzTarPerm extractEntry test/test-async.js
2145 silly gunzTarPerm extractEntry polyfills.js
2146 silly gunzTarPerm extractEntry test/open.js
2147 silly gunzTarPerm extractEntry test/readdir-sort.js
2148 silly gunzTarPerm extractEntry test.js
2149 silly gunzTarPerm extractEntry http_signing.md
2150 silly gunzTarPerm extractEntry lib/index.js
2151 silly gunzTarPerm extractEntry lib/parser.js
2152 silly gunzTarPerm extractEntry lib/signer.js
2153 silly gunzTarPerm extractEntry lib/util.js
2154 silly gunzTarPerm extractEntry lib/verify.js
2155 silly gunzTarPerm extractEntry generate-pubsuffix.js
2156 silly gunzTarPerm extractEntry test.js
2157 silly gunzTarPerm extractEntry index.js
2158 silly gunzTarPerm extractEntry .travis.yml
2159 silly gunzTarPerm extractEntry test/test-sync.js
2160 silly gunzTarPerm extractEntry test/run.sh
2161 silly gunzTarPerm extractEntry types/mime.types
2162 silly gunzTarPerm extractEntry types/node.types
2163 silly gunzTarPerm extractEntry test/setup.sh
2164 silly lockFile de5ecb7d-es-fstream-node-modules-inherits tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/inherits
2165 silly lockFile de5ecb7d-es-fstream-node-modules-inherits tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/inherits
2166 silly lockFile 50566223-n-npm-inherits-2-0-1-package-tgz tar:///home/patcon/.npm/inherits/2.0.1/package.tgz
2167 silly lockFile 50566223-n-npm-inherits-2-0-1-package-tgz tar:///home/patcon/.npm/inherits/2.0.1/package.tgz
2168 silly lockFile f3410943-node-modules-json-stringify-safe tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/json-stringify-safe
2169 silly lockFile f3410943-node-modules-json-stringify-safe tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/json-stringify-safe
2170 silly lockFile 719e3569-stringify-safe-5-0-0-package-tgz tar:///home/patcon/.npm/json-stringify-safe/5.0.0/package.tgz
2171 silly lockFile 719e3569-stringify-safe-5-0-0-package-tgz tar:///home/patcon/.npm/json-stringify-safe/5.0.0/package.tgz
2172 info preinstall inherits@2.0.1
2173 info preinstall json-stringify-safe@5.0.0
2174 silly lockFile 981b2ed1--commander-node-modules-keypress tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander/node_modules/keypress
2175 silly lockFile 981b2ed1--commander-node-modules-keypress tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander/node_modules/keypress
2176 silly lockFile 11eb0952-n-npm-keypress-0-1-0-package-tgz tar:///home/patcon/.npm/keypress/0.1.0/package.tgz
2177 silly lockFile 11eb0952-n-npm-keypress-0-1-0-package-tgz tar:///home/patcon/.npm/keypress/0.1.0/package.tgz
2178 verbose readDependencies using package.json deps
2179 silly lockFile f52f2e70-s-request-node-modules-aws-sign2 tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/aws-sign2
2180 silly lockFile f52f2e70-s-request-node-modules-aws-sign2 tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/aws-sign2
2181 silly gunzTarPerm extractEntry .jshintrc
2182 silly gunzTarPerm extractEntry .travis.yml
2183 silly lockFile 8ba2480e-quest-node-modules-forever-agent tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/forever-agent
2184 silly lockFile 8ba2480e-quest-node-modules-forever-agent tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/forever-agent
2185 verbose readDependencies using package.json deps
2186 silly resolved []
2187 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/inherits
2188 info build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/inherits
2189 verbose linkStuff [ true,
2189 verbose linkStuff '/usr/lib/node_modules',
2189 verbose linkStuff false,
2189 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules' ]
2190 info linkStuff inherits@2.0.1
2191 verbose linkBins inherits@2.0.1
2192 verbose linkMans inherits@2.0.1
2193 verbose rebuildBundles inherits@2.0.1
2194 silly lockFile 7c0b197a--npm-aws-sign2-0-5-0-package-tgz tar:///home/patcon/.npm/aws-sign2/0.5.0/package.tgz
2195 silly lockFile 7c0b197a--npm-aws-sign2-0-5-0-package-tgz tar:///home/patcon/.npm/aws-sign2/0.5.0/package.tgz
2196 verbose readDependencies using package.json deps
2197 silly lockFile 543c06d7--modules-request-node-modules-qs tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/qs
2198 silly lockFile 543c06d7--modules-request-node-modules-qs tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/qs
2199 silly lockFile baeadcc1--forever-agent-0-5-2-package-tgz tar:///home/patcon/.npm/forever-agent/0.5.2/package.tgz
2200 silly lockFile baeadcc1--forever-agent-0-5-2-package-tgz tar:///home/patcon/.npm/forever-agent/0.5.2/package.tgz
2201 info install inherits@2.0.1
2202 verbose readDependencies using package.json deps
2203 silly resolved []
2204 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/json-stringify-safe
2205 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/json-stringify-safe
2206 verbose linkStuff [ true,
2206 verbose linkStuff '/usr/lib/node_modules',
2206 verbose linkStuff false,
2206 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules' ]
2207 info linkStuff json-stringify-safe@5.0.0
2208 verbose linkBins json-stringify-safe@5.0.0
2209 verbose linkMans json-stringify-safe@5.0.0
2210 verbose rebuildBundles json-stringify-safe@5.0.0
2211 silly lockFile febb442e--patcon-npm-qs-0-6-6-package-tgz tar:///home/patcon/.npm/qs/0.6.6/package.tgz
2212 silly lockFile febb442e--patcon-npm-qs-0-6-6-package-tgz tar:///home/patcon/.npm/qs/0.6.6/package.tgz
2213 info install json-stringify-safe@5.0.0
2214 info preinstall keypress@0.1.0
2215 info postinstall inherits@2.0.1
2216 silly lockFile 450ccaa5-s-request-node-modules-form-data tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data
2217 silly lockFile 450ccaa5-s-request-node-modules-form-data tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data
2218 silly lockFile 149f3d3f--npm-form-data-0-1-2-package-tgz tar:///home/patcon/.npm/form-data/0.1.2/package.tgz
2219 silly lockFile 149f3d3f--npm-form-data-0-1-2-package-tgz tar:///home/patcon/.npm/form-data/0.1.2/package.tgz
2220 info preinstall aws-sign2@0.5.0
2221 info postinstall json-stringify-safe@5.0.0
2222 silly lockFile 0cee7e91-equest-node-modules-tunnel-agent tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tunnel-agent
2223 silly lockFile 0cee7e91-equest-node-modules-tunnel-agent tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tunnel-agent
2224 info preinstall forever-agent@0.5.2
2225 silly lockFile 8e963929--request-node-modules-oauth-sign tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/oauth-sign
2226 silly lockFile 8e963929--request-node-modules-oauth-sign tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/oauth-sign
2227 silly lockFile 7659749b-m-tunnel-agent-0-3-0-package-tgz tar:///home/patcon/.npm/tunnel-agent/0.3.0/package.tgz
2228 silly lockFile 7659749b-m-tunnel-agent-0-3-0-package-tgz tar:///home/patcon/.npm/tunnel-agent/0.3.0/package.tgz
2229 info preinstall qs@0.6.6
2230 verbose readDependencies using package.json deps
2231 silly lockFile 525fd999-npm-oauth-sign-0-3-0-package-tgz tar:///home/patcon/.npm/oauth-sign/0.3.0/package.tgz
2232 silly lockFile 525fd999-npm-oauth-sign-0-3-0-package-tgz tar:///home/patcon/.npm/oauth-sign/0.3.0/package.tgz
2233 verbose readDependencies using package.json deps
2234 silly resolved []
2235 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander/node_modules/keypress
2236 info build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander/node_modules/keypress
2237 verbose linkStuff [ true,
2237 verbose linkStuff '/usr/lib/node_modules',
2237 verbose linkStuff false,
2237 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander/node_modules' ]
2238 info linkStuff keypress@0.1.0
2239 verbose linkBins keypress@0.1.0
2240 verbose linkMans keypress@0.1.0
2241 verbose rebuildBundles keypress@0.1.0
2242 verbose readDependencies using package.json deps
2243 verbose readDependencies using package.json deps
2244 info install keypress@0.1.0
2245 info preinstall form-data@0.1.2
2246 verbose readDependencies using package.json deps
2247 silly resolved []
2248 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/aws-sign2
2249 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/aws-sign2
2250 verbose linkStuff [ true,
2250 verbose linkStuff '/usr/lib/node_modules',
2250 verbose linkStuff false,
2250 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules' ]
2251 info linkStuff aws-sign2@0.5.0
2252 verbose linkBins aws-sign2@0.5.0
2253 verbose linkMans aws-sign2@0.5.0
2254 verbose rebuildBundles aws-sign2@0.5.0
2255 verbose readDependencies using package.json deps
2256 verbose readDependencies using package.json deps
2257 silly resolved []
2258 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/forever-agent
2259 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/forever-agent
2260 verbose linkStuff [ true,
2260 verbose linkStuff '/usr/lib/node_modules',
2260 verbose linkStuff false,
2260 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules' ]
2261 info linkStuff forever-agent@0.5.2
2262 verbose linkBins forever-agent@0.5.2
2263 verbose linkMans forever-agent@0.5.2
2264 verbose rebuildBundles forever-agent@0.5.2
2265 info install aws-sign2@0.5.0
2266 info preinstall tunnel-agent@0.3.0
2267 verbose readDependencies using package.json deps
2268 silly resolved []
2269 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/qs
2270 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/qs
2271 verbose linkStuff [ true,
2271 verbose linkStuff '/usr/lib/node_modules',
2271 verbose linkStuff false,
2271 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules' ]
2272 info linkStuff qs@0.6.6
2273 verbose linkBins qs@0.6.6
2274 verbose linkMans qs@0.6.6
2275 verbose rebuildBundles qs@0.6.6
2276 info install forever-agent@0.5.2
2277 info postinstall keypress@0.1.0
2278 info preinstall oauth-sign@0.3.0
2279 info install qs@0.6.6
2280 verbose readDependencies using package.json deps
2281 info postinstall aws-sign2@0.5.0
2282 info postinstall forever-agent@0.5.2
2283 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander
2284 info build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/commander
2285 verbose linkStuff [ true,
2285 verbose linkStuff '/usr/lib/node_modules',
2285 verbose linkStuff false,
2285 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules' ]
2286 info linkStuff commander@1.1.1
2287 verbose linkBins commander@1.1.1
2288 verbose linkMans commander@1.1.1
2289 verbose rebuildBundles commander@1.1.1
2290 verbose readDependencies using package.json deps
2291 verbose readDependencies using package.json deps
2292 info postinstall qs@0.6.6
2293 verbose rebuildBundles [ 'keypress' ]
2294 info install commander@1.1.1
2295 verbose cache add [ 'combined-stream@~0.0.4', null ]
2296 verbose cache add name=undefined spec="combined-stream@~0.0.4" args=["combined-stream@~0.0.4",null]
2297 verbose parsed url { protocol: null,
2297 verbose parsed url slashes: null,
2297 verbose parsed url auth: null,
2297 verbose parsed url host: null,
2297 verbose parsed url port: null,
2297 verbose parsed url hostname: null,
2297 verbose parsed url hash: null,
2297 verbose parsed url search: null,
2297 verbose parsed url query: null,
2297 verbose parsed url pathname: 'combined-stream@~0.0.4',
2297 verbose parsed url path: 'combined-stream@~0.0.4',
2297 verbose parsed url href: 'combined-stream@~0.0.4' }
2298 verbose cache add name="combined-stream" spec="~0.0.4" args=["combined-stream","~0.0.4"]
2299 verbose parsed url { protocol: null,
2299 verbose parsed url slashes: null,
2299 verbose parsed url auth: null,
2299 verbose parsed url host: null,
2299 verbose parsed url port: null,
2299 verbose parsed url hostname: null,
2299 verbose parsed url hash: null,
2299 verbose parsed url search: null,
2299 verbose parsed url query: null,
2299 verbose parsed url pathname: '~0.0.4',
2299 verbose parsed url path: '~0.0.4',
2299 verbose parsed url href: '~0.0.4' }
2300 verbose addNamed [ 'combined-stream', '~0.0.4' ]
2301 verbose addNamed [ null, '>=0.0.4-0 <0.1.0-0' ]
2302 silly lockFile 97e270a8-combined-stream-0-0-4 combined-stream@~0.0.4
2303 verbose lock combined-stream@~0.0.4 /home/patcon/.npm/97e270a8-combined-stream-0-0-4.lock
2304 verbose cache add [ 'async@~0.2.9', null ]
2305 verbose cache add name=undefined spec="async@~0.2.9" args=["async@~0.2.9",null]
2306 verbose parsed url { protocol: null,
2306 verbose parsed url slashes: null,
2306 verbose parsed url auth: null,
2306 verbose parsed url host: null,
2306 verbose parsed url port: null,
2306 verbose parsed url hostname: null,
2306 verbose parsed url hash: null,
2306 verbose parsed url search: null,
2306 verbose parsed url query: null,
2306 verbose parsed url pathname: 'async@~0.2.9',
2306 verbose parsed url path: 'async@~0.2.9',
2306 verbose parsed url href: 'async@~0.2.9' }
2307 verbose cache add name="async" spec="~0.2.9" args=["async","~0.2.9"]
2308 verbose parsed url { protocol: null,
2308 verbose parsed url slashes: null,
2308 verbose parsed url auth: null,
2308 verbose parsed url host: null,
2308 verbose parsed url port: null,
2308 verbose parsed url hostname: null,
2308 verbose parsed url hash: null,
2308 verbose parsed url search: null,
2308 verbose parsed url query: null,
2308 verbose parsed url pathname: '~0.2.9',
2308 verbose parsed url path: '~0.2.9',
2308 verbose parsed url href: '~0.2.9' }
2309 verbose addNamed [ 'async', '~0.2.9' ]
2310 verbose addNamed [ null, '>=0.2.9-0 <0.3.0-0' ]
2311 silly lockFile 5d51c871-async-0-2-9 async@~0.2.9
2312 verbose lock async@~0.2.9 /home/patcon/.npm/5d51c871-async-0-2-9.lock
2313 verbose readDependencies using package.json deps
2314 verbose readDependencies using package.json deps
2315 silly resolved []
2316 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tunnel-agent
2317 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tunnel-agent
2318 verbose linkStuff [ true,
2318 verbose linkStuff '/usr/lib/node_modules',
2318 verbose linkStuff false,
2318 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules' ]
2319 info linkStuff tunnel-agent@0.3.0
2320 verbose linkBins tunnel-agent@0.3.0
2321 verbose linkMans tunnel-agent@0.3.0
2322 verbose rebuildBundles tunnel-agent@0.3.0
2323 silly gunzTarPerm extractEntry lib/cookie.js
2324 silly gunzTarPerm extractEntry lib/memstore.js
2325 verbose readDependencies using package.json deps
2326 silly resolved []
2327 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/oauth-sign
2328 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/oauth-sign
2329 verbose linkStuff [ true,
2329 verbose linkStuff '/usr/lib/node_modules',
2329 verbose linkStuff false,
2329 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules' ]
2330 info linkStuff oauth-sign@0.3.0
2331 verbose linkBins oauth-sign@0.3.0
2332 verbose linkMans oauth-sign@0.3.0
2333 verbose rebuildBundles oauth-sign@0.3.0
2334 info install tunnel-agent@0.3.0
2335 info postinstall commander@1.1.1
2336 silly addNameRange { name: 'combined-stream',
2336 silly addNameRange range: '>=0.0.4-0 <0.1.0-0',
2336 silly addNameRange hasData: false }
2337 silly addNameRange { name: 'async', range: '>=0.2.9-0 <0.3.0-0', hasData: false }
2338 info install oauth-sign@0.3.0
2339 info postinstall tunnel-agent@0.3.0
2340 info postinstall oauth-sign@0.3.0
2341 silly gunzTarPerm extractEntry images/hawk.png
2342 silly gunzTarPerm extractEntry images/logo.png
2343 verbose url raw combined-stream
2344 verbose url resolving [ 'https://registry.npmjs.org/', './combined-stream' ]
2345 verbose url resolved https://registry.npmjs.org/combined-stream
2346 info trying registry request attempt 1 at 12:17:29
2347 verbose etag "8PP2B14BUNGUMKMLSINV57T1R"
2348 http GET https://registry.npmjs.org/combined-stream
2349 verbose registry.get async not expired, no request
2350 silly addNameRange number 2 { name: 'async', range: '>=0.2.9-0 <0.3.0-0', hasData: true }
2351 silly addNameRange versions [ 'async',
2351 silly addNameRange [ '0.1.0',
2351 silly addNameRange '0.1.1',
2351 silly addNameRange '0.1.2',
2351 silly addNameRange '0.1.3',
2351 silly addNameRange '0.1.4',
2351 silly addNameRange '0.1.5',
2351 silly addNameRange '0.1.6',
2351 silly addNameRange '0.1.7',
2351 silly addNameRange '0.1.8',
2351 silly addNameRange '0.1.9',
2351 silly addNameRange '0.1.10',
2351 silly addNameRange '0.1.11',
2351 silly addNameRange '0.1.12',
2351 silly addNameRange '0.1.13',
2351 silly addNameRange '0.1.14',
2351 silly addNameRange '0.1.15',
2351 silly addNameRange '0.1.16',
2351 silly addNameRange '0.1.17',
2351 silly addNameRange '0.1.18',
2351 silly addNameRange '0.1.19',
2351 silly addNameRange '0.1.20',
2351 silly addNameRange '0.1.21',
2351 silly addNameRange '0.1.22',
2351 silly addNameRange '0.2.0',
2351 silly addNameRange '0.2.1',
2351 silly addNameRange '0.2.2',
2351 silly addNameRange '0.2.3',
2351 silly addNameRange '0.2.4',
2351 silly addNameRange '0.2.5',
2351 silly addNameRange '0.2.6',
2351 silly addNameRange '0.2.7',
2351 silly addNameRange '0.2.8',
2351 silly addNameRange '0.2.9',
2351 silly addNameRange '0.2.10',
2351 silly addNameRange '0.3.0',
2351 silly addNameRange '0.4.0',
2351 silly addNameRange '0.4.1',
2351 silly addNameRange '0.5.0',
2351 silly addNameRange '0.6.0' ] ]
2352 verbose addNamed [ 'async', '0.2.10' ]
2353 verbose addNamed [ '0.2.10', '0.2.10' ]
2354 silly lockFile 098b530d-async-0-2-10 async@0.2.10
2355 verbose lock async@0.2.10 /home/patcon/.npm/098b530d-async-0-2-10.lock
2356 silly lockFile 62587d08-fstream-node-modules-graceful-fs tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/graceful-fs
2357 silly lockFile 62587d08-fstream-node-modules-graceful-fs tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/graceful-fs
2358 silly lockFile ed059107-pm-graceful-fs-2-0-3-package-tgz tar:///home/patcon/.npm/graceful-fs/2.0.3/package.tgz
2359 silly lockFile ed059107-pm-graceful-fs-2-0-3-package-tgz tar:///home/patcon/.npm/graceful-fs/2.0.3/package.tgz
2360 silly gunzTarPerm extractEntry Makefile
2361 info preinstall graceful-fs@2.0.3
2362 silly lockFile 8f688a9a-ules-fstream-node-modules-rimraf tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/rimraf
2363 silly lockFile 8f688a9a-ules-fstream-node-modules-rimraf tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/rimraf
2364 verbose readDependencies using package.json deps
2365 silly lockFile 098b530d-async-0-2-10 async@0.2.10
2366 silly lockFile 098b530d-async-0-2-10 async@0.2.10
2367 silly lockFile b077a4d5-con-npm-rimraf-2-2-6-package-tgz tar:///home/patcon/.npm/rimraf/2.2.6/package.tgz
2368 silly lockFile b077a4d5-con-npm-rimraf-2-2-6-package-tgz tar:///home/patcon/.npm/rimraf/2.2.6/package.tgz
2369 verbose readDependencies using package.json deps
2370 silly resolved []
2371 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/graceful-fs
2372 info build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/graceful-fs
2373 verbose linkStuff [ true,
2373 verbose linkStuff '/usr/lib/node_modules',
2373 verbose linkStuff false,
2373 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules' ]
2374 info linkStuff graceful-fs@2.0.3
2375 verbose linkBins graceful-fs@2.0.3
2376 verbose linkMans graceful-fs@2.0.3
2377 verbose rebuildBundles graceful-fs@2.0.3
2378 silly lockFile 5d51c871-async-0-2-9 async@~0.2.9
2379 silly lockFile 5d51c871-async-0-2-9 async@~0.2.9
2380 info install graceful-fs@2.0.3
2381 info postinstall graceful-fs@2.0.3
2382 silly gunzTarPerm extractEntry lib/browser.js
2383 silly gunzTarPerm extractEntry lib/client.js
2384 info preinstall rimraf@2.2.6
2385 silly gunzTarPerm extractEntry lib/pubsuffix.js
2386 silly gunzTarPerm extractEntry lib/store.js
2387 verbose readDependencies using package.json deps
2388 verbose readDependencies using package.json deps
2389 silly resolved []
2390 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/rimraf
2391 info build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/rimraf
2392 verbose linkStuff [ true,
2392 verbose linkStuff '/usr/lib/node_modules',
2392 verbose linkStuff false,
2392 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules' ]
2393 info linkStuff rimraf@2.2.6
2394 verbose linkBins rimraf@2.2.6
2395 verbose link bins [ { rimraf: './bin.js' },
2395 verbose link bins '/usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream/node_modules/.bin',
2395 verbose link bins false ]
2396 verbose linkMans rimraf@2.2.6
2397 verbose rebuildBundles rimraf@2.2.6
2398 silly gunzTarPerm extractEntry lib/crypto.js
2399 silly gunzTarPerm extractEntry lib/index.js
2400 info install rimraf@2.2.6
2401 info postinstall rimraf@2.2.6
2402 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream
2403 info build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/fstream
2404 verbose linkStuff [ true,
2404 verbose linkStuff '/usr/lib/node_modules',
2404 verbose linkStuff false,
2404 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules' ]
2405 info linkStuff fstream@0.1.25
2406 verbose linkBins fstream@0.1.25
2407 verbose linkMans fstream@0.1.25
2408 verbose rebuildBundles fstream@0.1.25
2409 verbose rebuildBundles [ '.bin', 'graceful-fs', 'inherits', 'rimraf' ]
2410 info install fstream@0.1.25
2411 info postinstall fstream@0.1.25
2412 silly gunzTarPerm extractEntry lib/server.js
2413 silly gunzTarPerm extractEntry lib/utils.js
2414 silly lockFile a8d429d2-uest-node-modules-http-signature tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature
2415 silly lockFile a8d429d2-uest-node-modules-http-signature tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature
2416 silly lockFile fd79bcd2-ttp-signature-0-10-0-package-tgz tar:///home/patcon/.npm/http-signature/0.10.0/package.tgz
2417 silly lockFile fd79bcd2-ttp-signature-0-10-0-package-tgz tar:///home/patcon/.npm/http-signature/0.10.0/package.tgz
2418 info preinstall http-signature@0.10.0
2419 verbose readDependencies using package.json deps
2420 verbose readDependencies using package.json deps
2421 verbose cache add [ 'assert-plus@0.1.2', null ]
2422 verbose cache add name=undefined spec="assert-plus@0.1.2" args=["assert-plus@0.1.2",null]
2423 verbose parsed url { protocol: null,
2423 verbose parsed url slashes: null,
2423 verbose parsed url auth: null,
2423 verbose parsed url host: null,
2423 verbose parsed url port: null,
2423 verbose parsed url hostname: null,
2423 verbose parsed url hash: null,
2423 verbose parsed url search: null,
2423 verbose parsed url query: null,
2423 verbose parsed url pathname: 'assert-plus@0.1.2',
2423 verbose parsed url path: 'assert-plus@0.1.2',
2423 verbose parsed url href: 'assert-plus@0.1.2' }
2424 verbose cache add name="assert-plus" spec="0.1.2" args=["assert-plus","0.1.2"]
2425 verbose parsed url { protocol: null,
2425 verbose parsed url slashes: null,
2425 verbose parsed url auth: null,
2425 verbose parsed url host: null,
2425 verbose parsed url port: null,
2425 verbose parsed url hostname: null,
2425 verbose parsed url hash: null,
2425 verbose parsed url search: null,
2425 verbose parsed url query: null,
2425 verbose parsed url pathname: '0.1.2',
2425 verbose parsed url path: '0.1.2',
2425 verbose parsed url href: '0.1.2' }
2426 verbose addNamed [ 'assert-plus', '0.1.2' ]
2427 verbose addNamed [ '0.1.2', '0.1.2' ]
2428 silly lockFile 46222085-assert-plus-0-1-2 assert-plus@0.1.2
2429 verbose lock assert-plus@0.1.2 /home/patcon/.npm/46222085-assert-plus-0-1-2.lock
2430 verbose cache add [ 'asn1@0.1.11', null ]
2431 verbose cache add name=undefined spec="asn1@0.1.11" args=["asn1@0.1.11",null]
2432 verbose parsed url { protocol: null,
2432 verbose parsed url slashes: null,
2432 verbose parsed url auth: null,
2432 verbose parsed url host: null,
2432 verbose parsed url port: null,
2432 verbose parsed url hostname: null,
2432 verbose parsed url hash: null,
2432 verbose parsed url search: null,
2432 verbose parsed url query: null,
2432 verbose parsed url pathname: 'asn1@0.1.11',
2432 verbose parsed url path: 'asn1@0.1.11',
2432 verbose parsed url href: 'asn1@0.1.11' }
2433 verbose cache add name="asn1" spec="0.1.11" args=["asn1","0.1.11"]
2434 verbose parsed url { protocol: null,
2434 verbose parsed url slashes: null,
2434 verbose parsed url auth: null,
2434 verbose parsed url host: null,
2434 verbose parsed url port: null,
2434 verbose parsed url hostname: null,
2434 verbose parsed url hash: null,
2434 verbose parsed url search: null,
2434 verbose parsed url query: null,
2434 verbose parsed url pathname: '0.1.11',
2434 verbose parsed url path: '0.1.11',
2434 verbose parsed url href: '0.1.11' }
2435 verbose addNamed [ 'asn1', '0.1.11' ]
2436 verbose addNamed [ '0.1.11', '0.1.11' ]
2437 silly lockFile 41ecb821-asn1-0-1-11 asn1@0.1.11
2438 verbose lock asn1@0.1.11 /home/patcon/.npm/41ecb821-asn1-0-1-11.lock
2439 verbose cache add [ 'ctype@0.5.2', null ]
2440 verbose cache add name=undefined spec="ctype@0.5.2" args=["ctype@0.5.2",null]
2441 verbose parsed url { protocol: null,
2441 verbose parsed url slashes: null,
2441 verbose parsed url auth: null,
2441 verbose parsed url host: null,
2441 verbose parsed url port: null,
2441 verbose parsed url hostname: null,
2441 verbose parsed url hash: null,
2441 verbose parsed url search: null,
2441 verbose parsed url query: null,
2441 verbose parsed url pathname: 'ctype@0.5.2',
2441 verbose parsed url path: 'ctype@0.5.2',
2441 verbose parsed url href: 'ctype@0.5.2' }
2442 verbose cache add name="ctype" spec="0.5.2" args=["ctype","0.5.2"]
2443 verbose parsed url { protocol: null,
2443 verbose parsed url slashes: null,
2443 verbose parsed url auth: null,
2443 verbose parsed url host: null,
2443 verbose parsed url port: null,
2443 verbose parsed url hostname: null,
2443 verbose parsed url hash: null,
2443 verbose parsed url search: null,
2443 verbose parsed url query: null,
2443 verbose parsed url pathname: '0.5.2',
2443 verbose parsed url path: '0.5.2',
2443 verbose parsed url href: '0.5.2' }
2444 verbose addNamed [ 'ctype', '0.5.2' ]
2445 verbose addNamed [ '0.5.2', '0.5.2' ]
2446 silly lockFile c556016e-ctype-0-5-2 ctype@0.5.2
2447 verbose lock ctype@0.5.2 /home/patcon/.npm/c556016e-ctype-0-5-2.lock
2448 silly lockFile 072db897-s-request-node-modules-node-uuid tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/node-uuid
2449 silly lockFile 072db897-s-request-node-modules-node-uuid tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/node-uuid
2450 silly lockFile d8df5ed0--npm-node-uuid-1-4-1-package-tgz tar:///home/patcon/.npm/node-uuid/1.4.1/package.tgz
2451 silly lockFile d8df5ed0--npm-node-uuid-1-4-1-package-tgz tar:///home/patcon/.npm/node-uuid/1.4.1/package.tgz
2452 silly lockFile 51d72675-odules-request-node-modules-mime tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/mime
2453 silly lockFile 51d72675-odules-request-node-modules-mime tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/mime
2454 verbose url raw assert-plus/0.1.2
2455 verbose url resolving [ 'https://registry.npmjs.org/', './assert-plus/0.1.2' ]
2456 verbose url resolved https://registry.npmjs.org/assert-plus/0.1.2
2457 info trying registry request attempt 1 at 12:17:29
2458 verbose etag "8JQD6UZQ7AETWZEZUUAGB1E5M"
2459 http GET https://registry.npmjs.org/assert-plus/0.1.2
2460 silly lockFile a9897d1d-tcon-npm-mime-1-2-11-package-tgz tar:///home/patcon/.npm/mime/1.2.11/package.tgz
2461 silly lockFile a9897d1d-tcon-npm-mime-1-2-11-package-tgz tar:///home/patcon/.npm/mime/1.2.11/package.tgz
2462 verbose url raw asn1/0.1.11
2463 verbose url resolving [ 'https://registry.npmjs.org/', './asn1/0.1.11' ]
2464 verbose url resolved https://registry.npmjs.org/asn1/0.1.11
2465 info trying registry request attempt 1 at 12:17:29
2466 verbose etag "B74JHOHEJXMOVF1G3A5W2PJAM"
2467 http GET https://registry.npmjs.org/asn1/0.1.11
2468 info preinstall node-uuid@1.4.1
2469 verbose url raw ctype/0.5.2
2470 verbose url resolving [ 'https://registry.npmjs.org/', './ctype/0.5.2' ]
2471 verbose url resolved https://registry.npmjs.org/ctype/0.5.2
2472 info trying registry request attempt 1 at 12:17:29
2473 verbose etag "DMAH1SJUVBNDDVSSNOEUICPWF"
2474 http GET https://registry.npmjs.org/ctype/0.5.2
2475 http 304 https://registry.npmjs.org/block-stream
2476 silly registry.get cb [ 304,
2476 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:29 GMT',
2476 silly registry.get server: 'Apache',
2476 silly registry.get via: '1.1 varnish',
2476 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:29 GMT',
2476 silly registry.get 'cache-control': 'max-age=1',
2476 silly registry.get etag: '"1KSSOSP7VW7NHXSPHP03IN0"',
2476 silly registry.get 'x-served-by': 'cache-lax1429-LAX',
2476 silly registry.get 'x-cache': 'HIT',
2476 silly registry.get 'x-cache-hits': '1',
2476 silly registry.get 'x-timer': 'S1396207049.334414959,VS0,VE64',
2476 silly registry.get vary: 'Accept',
2476 silly registry.get 'content-length': '0',
2476 silly registry.get 'keep-alive': 'timeout=10, max=47',
2476 silly registry.get connection: 'Keep-Alive' } ]
2477 verbose etag block-stream from cache
2478 verbose readDependencies using package.json deps
2479 info preinstall mime@1.2.11
2480 verbose readDependencies using package.json deps
2481 silly resolved []
2482 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/node-uuid
2483 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/node-uuid
2484 verbose linkStuff [ true,
2484 verbose linkStuff '/usr/lib/node_modules',
2484 verbose linkStuff false,
2484 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules' ]
2485 info linkStuff node-uuid@1.4.1
2486 verbose linkBins node-uuid@1.4.1
2487 verbose linkMans node-uuid@1.4.1
2488 verbose rebuildBundles node-uuid@1.4.1
2489 info install node-uuid@1.4.1
2490 verbose readDependencies using package.json deps
2491 info postinstall node-uuid@1.4.1
2492 verbose readDependencies using package.json deps
2493 silly resolved []
2494 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/mime
2495 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/mime
2496 verbose linkStuff [ true,
2496 verbose linkStuff '/usr/lib/node_modules',
2496 verbose linkStuff false,
2496 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules' ]
2497 info linkStuff mime@1.2.11
2498 verbose linkBins mime@1.2.11
2499 verbose linkMans mime@1.2.11
2500 verbose rebuildBundles mime@1.2.11
2501 info install mime@1.2.11
2502 silly addNameRange number 2 { name: 'block-stream', range: '*', hasData: true }
2503 silly addNameRange versions [ 'block-stream',
2503 silly addNameRange [ '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7' ] ]
2504 verbose addNamed [ 'block-stream', '0.0.7' ]
2505 verbose addNamed [ '0.0.7', '0.0.7' ]
2506 silly lockFile 540366e0-block-stream-0-0-7 block-stream@0.0.7
2507 verbose lock block-stream@0.0.7 /home/patcon/.npm/540366e0-block-stream-0-0-7.lock
2508 info postinstall mime@1.2.11
2509 silly lockFile 540366e0-block-stream-0-0-7 block-stream@0.0.7
2510 silly lockFile 540366e0-block-stream-0-0-7 block-stream@0.0.7
2511 silly lockFile 28c964d9-block-stream block-stream@*
2512 silly lockFile 28c964d9-block-stream block-stream@*
2513 silly resolved [ { name: 'inherits',
2513 silly resolved description: 'Browser-friendly inheritance fully compatible with standard node.js inherits()',
2513 silly resolved version: '2.0.1',
2513 silly resolved keywords:
2513 silly resolved [ 'inheritance',
2513 silly resolved 'class',
2513 silly resolved 'klass',
2513 silly resolved 'oop',
2513 silly resolved 'object-oriented',
2513 silly resolved 'inherits',
2513 silly resolved 'browser',
2513 silly resolved 'browserify' ],
2513 silly resolved main: './inherits.js',
2513 silly resolved browser: './inherits_browser.js',
2513 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/inherits' },
2513 silly resolved license: 'ISC',
2513 silly resolved scripts: { test: 'node test' },
2513 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',
2513 silly resolved readmeFilename: 'README.md',
2513 silly resolved bugs: { url: 'https://github.com/isaacs/inherits/issues' },
2513 silly resolved homepage: 'https://github.com/isaacs/inherits',
2513 silly resolved _id: 'inherits@2.0.1',
2513 silly resolved _from: 'inherits@2' },
2513 silly resolved { author:
2513 silly resolved { name: 'Isaac Z. Schlueter',
2513 silly resolved email: 'i@izs.me',
2513 silly resolved url: 'http://blog.izs.me/' },
2513 silly resolved name: 'block-stream',
2513 silly resolved description: 'a stream of blocks',
2513 silly resolved version: '0.0.7',
2513 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/block-stream.git' },
2513 silly resolved engines: { node: '0.4 || >=0.5.8' },
2513 silly resolved main: 'block-stream.js',
2513 silly resolved dependencies: { inherits: '~2.0.0' },
2513 silly resolved devDependencies: { tap: '0.x' },
2513 silly resolved scripts: { test: 'tap test/' },
2513 silly resolved license: 'BSD',
2513 silly resolved readme: '# block-stream\n\nA stream of blocks.\n\nWrite data into it, and it\'ll output data in buffer blocks the size you\nspecify, padding with zeroes if necessary.\n\n```javascript\nvar block = new BlockStream(512)\nfs.createReadStream("some-file").pipe(block)\nblock.pipe(fs.createWriteStream("block-file"))\n```\n\nWhen `.end()` or `.flush()` is called, it\'ll pad the block with zeroes.\n',
2513 silly resolved readmeFilename: 'README.md',
2513 silly resolved bugs: { url: 'https://github.com/isaacs/block-stream/issues' },
2513 silly resolved homepage: 'https://github.com/isaacs/block-stream',
2513 silly resolved _id: 'block-stream@0.0.7',
2513 silly resolved _from: 'block-stream@*' } ]
2514 info install inherits@2.0.1 into /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar
2515 info install block-stream@0.0.7 into /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar
2516 info installOne inherits@2.0.1
2517 info installOne block-stream@0.0.7
2518 info /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules/inherits unbuild
2519 info /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules/block-stream unbuild
2520 silly gunzTarPerm extractEntry public-suffix.txt
2521 verbose tar unpack /home/patcon/.npm/inherits/2.0.1/package.tgz
2522 silly lockFile a2d04284-odules-tar-node-modules-inherits tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules/inherits
2523 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules/inherits /home/patcon/.npm/a2d04284-odules-tar-node-modules-inherits.lock
2524 silly lockFile 50566223-n-npm-inherits-2-0-1-package-tgz tar:///home/patcon/.npm/inherits/2.0.1/package.tgz
2525 verbose lock tar:///home/patcon/.npm/inherits/2.0.1/package.tgz /home/patcon/.npm/50566223-n-npm-inherits-2-0-1-package-tgz.lock
2526 verbose tar unpack /home/patcon/.npm/block-stream/0.0.7/package.tgz
2527 silly lockFile 83f085d4-es-tar-node-modules-block-stream tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules/block-stream
2528 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules/block-stream /home/patcon/.npm/83f085d4-es-tar-node-modules-block-stream.lock
2529 silly lockFile 526991eb-m-block-stream-0-0-7-package-tgz tar:///home/patcon/.npm/block-stream/0.0.7/package.tgz
2530 verbose lock tar:///home/patcon/.npm/block-stream/0.0.7/package.tgz /home/patcon/.npm/526991eb-m-block-stream-0-0-7-package-tgz.lock
2531 silly gunzTarPerm modes [ '755', '644' ]
2532 silly gunzTarPerm modes [ '755', '644' ]
2533 silly gunzTarPerm extractEntry package.json
2534 silly gunzTarPerm extractEntry package.json
2535 silly gunzTarPerm extractEntry README.md
2536 silly gunzTarPerm extractEntry LICENSE
2537 silly gunzTarPerm extractEntry README.md
2538 silly gunzTarPerm extractEntry LICENCE
2539 silly gunzTarPerm extractEntry inherits.js
2540 silly gunzTarPerm extractEntry inherits_browser.js
2541 silly gunzTarPerm extractEntry block-stream.js
2542 silly gunzTarPerm extractEntry bench/block-stream-pause.js
2543 silly gunzTarPerm extractEntry bench/block-stream.js
2544 silly gunzTarPerm extractEntry bench/dropper-pause.js
2545 silly gunzTarPerm extractEntry bench/dropper.js
2546 silly gunzTarPerm extractEntry test/basic.js
2547 silly gunzTarPerm extractEntry test/nopad-thorough.js
2548 silly gunzTarPerm extractEntry test/nopad.js
2549 silly gunzTarPerm extractEntry test/pause-resume.js
2550 silly gunzTarPerm extractEntry test/thorough.js
2551 silly gunzTarPerm extractEntry test/two-stream.js
2552 silly gunzTarPerm extractEntry test.js
2553 silly gunzTarPerm extractEntry test/browser.js
2554 silly gunzTarPerm extractEntry test/client.js
2555 silly gunzTarPerm extractEntry test/crypto.js
2556 silly gunzTarPerm extractEntry test/index.js
2557 silly lockFile a2d04284-odules-tar-node-modules-inherits tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules/inherits
2558 silly lockFile a2d04284-odules-tar-node-modules-inherits tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules/inherits
2559 silly lockFile 50566223-n-npm-inherits-2-0-1-package-tgz tar:///home/patcon/.npm/inherits/2.0.1/package.tgz
2560 silly lockFile 50566223-n-npm-inherits-2-0-1-package-tgz tar:///home/patcon/.npm/inherits/2.0.1/package.tgz
2561 info preinstall inherits@2.0.1
2562 verbose readDependencies using package.json deps
2563 verbose readDependencies using package.json deps
2564 silly resolved []
2565 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules/inherits
2566 info build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules/inherits
2567 verbose linkStuff [ true,
2567 verbose linkStuff '/usr/lib/node_modules',
2567 verbose linkStuff false,
2567 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules' ]
2568 info linkStuff inherits@2.0.1
2569 verbose linkBins inherits@2.0.1
2570 verbose linkMans inherits@2.0.1
2571 verbose rebuildBundles inherits@2.0.1
2572 info install inherits@2.0.1
2573 info postinstall inherits@2.0.1
2574 silly gunzTarPerm extractEntry test/message.js
2575 silly gunzTarPerm extractEntry test/readme.js
2576 silly gunzTarPerm extractEntry test/server.js
2577 silly gunzTarPerm extractEntry test/uri.js
2578 silly gunzTarPerm extractEntry test/utils.js
2579 silly gunzTarPerm extractEntry example/usage.js
2580 silly lockFile 83f085d4-es-tar-node-modules-block-stream tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules/block-stream
2581 silly lockFile 83f085d4-es-tar-node-modules-block-stream tar:///usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules/block-stream
2582 silly lockFile 526991eb-m-block-stream-0-0-7-package-tgz tar:///home/patcon/.npm/block-stream/0.0.7/package.tgz
2583 silly lockFile 526991eb-m-block-stream-0-0-7-package-tgz tar:///home/patcon/.npm/block-stream/0.0.7/package.tgz
2584 info preinstall block-stream@0.0.7
2585 verbose readDependencies using package.json deps
2586 verbose readDependencies using package.json deps
2587 silly resolved []
2588 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules/block-stream
2589 info build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules/block-stream
2590 verbose linkStuff [ true,
2590 verbose linkStuff '/usr/lib/node_modules',
2590 verbose linkStuff false,
2590 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar/node_modules' ]
2591 info linkStuff block-stream@0.0.7
2592 verbose linkBins block-stream@0.0.7
2593 verbose linkMans block-stream@0.0.7
2594 verbose rebuildBundles block-stream@0.0.7
2595 info install block-stream@0.0.7
2596 info postinstall block-stream@0.0.7
2597 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar
2598 info build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules/tar
2599 verbose linkStuff [ true,
2599 verbose linkStuff '/usr/lib/node_modules',
2599 verbose linkStuff false,
2599 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz/node_modules' ]
2600 info linkStuff tar@0.1.19
2601 verbose linkBins tar@0.1.19
2602 verbose linkMans tar@0.1.19
2603 verbose rebuildBundles tar@0.1.19
2604 verbose rebuildBundles [ 'block-stream', 'inherits' ]
2605 info install tar@0.1.19
2606 info postinstall tar@0.1.19
2607 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz
2608 info build /usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/tar.gz
2609 verbose linkStuff [ true,
2609 verbose linkStuff '/usr/lib/node_modules',
2609 verbose linkStuff false,
2609 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules' ]
2610 info linkStuff tar.gz@0.1.1
2611 verbose linkBins tar.gz@0.1.1
2612 verbose link bins [ { targz: './bin/targz' },
2612 verbose link bins '/usr/lib/node_modules/npmsearch/node_modules/sqlite3/node_modules/.bin',
2612 verbose link bins false ]
2613 verbose linkMans tar.gz@0.1.1
2614 verbose rebuildBundles tar.gz@0.1.1
2615 verbose rebuildBundles [ 'commander', 'fstream', 'tar' ]
2616 info install tar.gz@0.1.1
2617 info postinstall tar.gz@0.1.1
2618 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/sqlite3
2619 info build /usr/lib/node_modules/npmsearch/node_modules/sqlite3
2620 verbose linkStuff [ true,
2620 verbose linkStuff '/usr/lib/node_modules',
2620 verbose linkStuff false,
2620 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules' ]
2621 info linkStuff sqlite3@2.1.19
2622 verbose linkBins sqlite3@2.1.19
2623 verbose linkMans sqlite3@2.1.19
2624 verbose rebuildBundles sqlite3@2.1.19
2625 verbose rebuildBundles [ '.bin', 'tar.gz' ]
2626 info install sqlite3@2.1.19
2627 verbose unsafe-perm in lifecycle false
2628 silly lockFile 638a1e3b-equest-node-modules-tough-cookie tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie
2629 silly lockFile 638a1e3b-equest-node-modules-tough-cookie tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie
2630 silly lockFile 12596b09--tough-cookie-0-12-1-package-tgz tar:///home/patcon/.npm/tough-cookie/0.12.1/package.tgz
2631 silly lockFile 12596b09--tough-cookie-0-12-1-package-tgz tar:///home/patcon/.npm/tough-cookie/0.12.1/package.tgz
2632 info preinstall tough-cookie@0.12.1
2633 verbose readDependencies using package.json deps
2634 verbose readDependencies using package.json deps
2635 verbose cache add [ 'punycode@>=0.2.0', null ]
2636 verbose cache add name=undefined spec="punycode@>=0.2.0" args=["punycode@>=0.2.0",null]
2637 verbose parsed url { protocol: null,
2637 verbose parsed url slashes: null,
2637 verbose parsed url auth: null,
2637 verbose parsed url host: null,
2637 verbose parsed url port: null,
2637 verbose parsed url hostname: null,
2637 verbose parsed url hash: null,
2637 verbose parsed url search: null,
2637 verbose parsed url query: null,
2637 verbose parsed url pathname: 'punycode@%3E=0.2.0',
2637 verbose parsed url path: 'punycode@%3E=0.2.0',
2637 verbose parsed url href: 'punycode@%3E=0.2.0' }
2638 verbose cache add name="punycode" spec=">=0.2.0" args=["punycode",">=0.2.0"]
2639 verbose parsed url { protocol: null,
2639 verbose parsed url slashes: null,
2639 verbose parsed url auth: null,
2639 verbose parsed url host: null,
2639 verbose parsed url port: null,
2639 verbose parsed url hostname: null,
2639 verbose parsed url hash: null,
2639 verbose parsed url search: null,
2639 verbose parsed url query: null,
2639 verbose parsed url pathname: '%3E=0.2.0',
2639 verbose parsed url path: '%3E=0.2.0',
2639 verbose parsed url href: '%3E=0.2.0' }
2640 verbose addNamed [ 'punycode', '>=0.2.0' ]
2641 verbose addNamed [ null, '>=0.2.0' ]
2642 silly lockFile a6886041-punycode-0-2-0 punycode@>=0.2.0
2643 verbose lock punycode@>=0.2.0 /home/patcon/.npm/a6886041-punycode-0-2-0.lock
2644 silly addNameRange { name: 'punycode', range: '>=0.2.0', hasData: false }
2645 verbose url raw punycode
2646 verbose url resolving [ 'https://registry.npmjs.org/', './punycode' ]
2647 verbose url resolved https://registry.npmjs.org/punycode
2648 info trying registry request attempt 1 at 12:17:30
2649 verbose etag "4WBOWTREJIDKTO80Y6MJI5S5X"
2650 http GET https://registry.npmjs.org/punycode
2651 silly lockFile b84ad66f-odules-request-node-modules-hawk tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk
2652 silly lockFile b84ad66f-odules-request-node-modules-hawk tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk
2653 silly lockFile 5400eb34-atcon-npm-hawk-1-0-0-package-tgz tar:///home/patcon/.npm/hawk/1.0.0/package.tgz
2654 silly lockFile 5400eb34-atcon-npm-hawk-1-0-0-package-tgz tar:///home/patcon/.npm/hawk/1.0.0/package.tgz
2655 info preinstall hawk@1.0.0
2656 verbose readDependencies using package.json deps
2657 verbose readDependencies using package.json deps
2658 verbose cache add [ 'hoek@0.9.x', null ]
2659 verbose cache add name=undefined spec="hoek@0.9.x" args=["hoek@0.9.x",null]
2660 verbose parsed url { protocol: null,
2660 verbose parsed url slashes: null,
2660 verbose parsed url auth: null,
2660 verbose parsed url host: null,
2660 verbose parsed url port: null,
2660 verbose parsed url hostname: null,
2660 verbose parsed url hash: null,
2660 verbose parsed url search: null,
2660 verbose parsed url query: null,
2660 verbose parsed url pathname: 'hoek@0.9.x',
2660 verbose parsed url path: 'hoek@0.9.x',
2660 verbose parsed url href: 'hoek@0.9.x' }
2661 verbose cache add name="hoek" spec="0.9.x" args=["hoek","0.9.x"]
2662 verbose parsed url { protocol: null,
2662 verbose parsed url slashes: null,
2662 verbose parsed url auth: null,
2662 verbose parsed url host: null,
2662 verbose parsed url port: null,
2662 verbose parsed url hostname: null,
2662 verbose parsed url hash: null,
2662 verbose parsed url search: null,
2662 verbose parsed url query: null,
2662 verbose parsed url pathname: '0.9.x',
2662 verbose parsed url path: '0.9.x',
2662 verbose parsed url href: '0.9.x' }
2663 verbose addNamed [ 'hoek', '0.9.x' ]
2664 verbose addNamed [ null, '>=0.9.0-0 <0.10.0-0' ]
2665 silly lockFile 58ccaf9a-hoek-0-9-x hoek@0.9.x
2666 verbose lock hoek@0.9.x /home/patcon/.npm/58ccaf9a-hoek-0-9-x.lock
2667 verbose cache add [ 'boom@0.4.x', null ]
2668 verbose cache add name=undefined spec="boom@0.4.x" args=["boom@0.4.x",null]
2669 verbose parsed url { protocol: null,
2669 verbose parsed url slashes: null,
2669 verbose parsed url auth: null,
2669 verbose parsed url host: null,
2669 verbose parsed url port: null,
2669 verbose parsed url hostname: null,
2669 verbose parsed url hash: null,
2669 verbose parsed url search: null,
2669 verbose parsed url query: null,
2669 verbose parsed url pathname: 'boom@0.4.x',
2669 verbose parsed url path: 'boom@0.4.x',
2669 verbose parsed url href: 'boom@0.4.x' }
2670 verbose cache add name="boom" spec="0.4.x" args=["boom","0.4.x"]
2671 verbose parsed url { protocol: null,
2671 verbose parsed url slashes: null,
2671 verbose parsed url auth: null,
2671 verbose parsed url host: null,
2671 verbose parsed url port: null,
2671 verbose parsed url hostname: null,
2671 verbose parsed url hash: null,
2671 verbose parsed url search: null,
2671 verbose parsed url query: null,
2671 verbose parsed url pathname: '0.4.x',
2671 verbose parsed url path: '0.4.x',
2671 verbose parsed url href: '0.4.x' }
2672 verbose addNamed [ 'boom', '0.4.x' ]
2673 verbose addNamed [ null, '>=0.4.0-0 <0.5.0-0' ]
2674 silly lockFile 225d04ea-boom-0-4-x boom@0.4.x
2675 verbose lock boom@0.4.x /home/patcon/.npm/225d04ea-boom-0-4-x.lock
2676 verbose cache add [ 'cryptiles@0.2.x', null ]
2677 verbose cache add name=undefined spec="cryptiles@0.2.x" args=["cryptiles@0.2.x",null]
2678 verbose parsed url { protocol: null,
2678 verbose parsed url slashes: null,
2678 verbose parsed url auth: null,
2678 verbose parsed url host: null,
2678 verbose parsed url port: null,
2678 verbose parsed url hostname: null,
2678 verbose parsed url hash: null,
2678 verbose parsed url search: null,
2678 verbose parsed url query: null,
2678 verbose parsed url pathname: 'cryptiles@0.2.x',
2678 verbose parsed url path: 'cryptiles@0.2.x',
2678 verbose parsed url href: 'cryptiles@0.2.x' }
2679 verbose cache add name="cryptiles" spec="0.2.x" args=["cryptiles","0.2.x"]
2680 verbose parsed url { protocol: null,
2680 verbose parsed url slashes: null,
2680 verbose parsed url auth: null,
2680 verbose parsed url host: null,
2680 verbose parsed url port: null,
2680 verbose parsed url hostname: null,
2680 verbose parsed url hash: null,
2680 verbose parsed url search: null,
2680 verbose parsed url query: null,
2680 verbose parsed url pathname: '0.2.x',
2680 verbose parsed url path: '0.2.x',
2680 verbose parsed url href: '0.2.x' }
2681 verbose addNamed [ 'cryptiles', '0.2.x' ]
2682 verbose addNamed [ null, '>=0.2.0-0 <0.3.0-0' ]
2683 silly lockFile 75d7e584-cryptiles-0-2-x cryptiles@0.2.x
2684 verbose lock cryptiles@0.2.x /home/patcon/.npm/75d7e584-cryptiles-0-2-x.lock
2685 silly addNameRange { name: 'hoek', range: '>=0.9.0-0 <0.10.0-0', hasData: false }
2686 verbose cache add [ 'sntp@0.2.x', null ]
2687 verbose cache add name=undefined spec="sntp@0.2.x" args=["sntp@0.2.x",null]
2688 verbose parsed url { protocol: null,
2688 verbose parsed url slashes: null,
2688 verbose parsed url auth: null,
2688 verbose parsed url host: null,
2688 verbose parsed url port: null,
2688 verbose parsed url hostname: null,
2688 verbose parsed url hash: null,
2688 verbose parsed url search: null,
2688 verbose parsed url query: null,
2688 verbose parsed url pathname: 'sntp@0.2.x',
2688 verbose parsed url path: 'sntp@0.2.x',
2688 verbose parsed url href: 'sntp@0.2.x' }
2689 verbose cache add name="sntp" spec="0.2.x" args=["sntp","0.2.x"]
2690 verbose parsed url { protocol: null,
2690 verbose parsed url slashes: null,
2690 verbose parsed url auth: null,
2690 verbose parsed url host: null,
2690 verbose parsed url port: null,
2690 verbose parsed url hostname: null,
2690 verbose parsed url hash: null,
2690 verbose parsed url search: null,
2690 verbose parsed url query: null,
2690 verbose parsed url pathname: '0.2.x',
2690 verbose parsed url path: '0.2.x',
2690 verbose parsed url href: '0.2.x' }
2691 verbose addNamed [ 'sntp', '0.2.x' ]
2692 verbose addNamed [ null, '>=0.2.0-0 <0.3.0-0' ]
2693 silly lockFile b35a0361-sntp-0-2-x sntp@0.2.x
2694 verbose lock sntp@0.2.x /home/patcon/.npm/b35a0361-sntp-0-2-x.lock
2695 silly addNameRange { name: 'boom', range: '>=0.4.0-0 <0.5.0-0', hasData: false }
2696 silly addNameRange { name: 'cryptiles',
2696 silly addNameRange range: '>=0.2.0-0 <0.3.0-0',
2696 silly addNameRange hasData: false }
2697 silly addNameRange { name: 'sntp', range: '>=0.2.0-0 <0.3.0-0', hasData: false }
2698 verbose url raw hoek
2699 verbose url resolving [ 'https://registry.npmjs.org/', './hoek' ]
2700 verbose url resolved https://registry.npmjs.org/hoek
2701 info trying registry request attempt 1 at 12:17:30
2702 verbose etag "6HLEJN27P5EQN2BK55PRGKEEZ"
2703 http GET https://registry.npmjs.org/hoek
2704 verbose url raw boom
2705 verbose url resolving [ 'https://registry.npmjs.org/', './boom' ]
2706 verbose url resolved https://registry.npmjs.org/boom
2707 info trying registry request attempt 1 at 12:17:30
2708 verbose etag "7DLMJ5NRLHSSKLS2LFWXBFC3C"
2709 http GET https://registry.npmjs.org/boom
2710 verbose url raw cryptiles
2711 verbose url resolving [ 'https://registry.npmjs.org/', './cryptiles' ]
2712 verbose url resolved https://registry.npmjs.org/cryptiles
2713 info trying registry request attempt 1 at 12:17:30
2714 verbose etag "4738Q5WWL0TB58OG2UNKBCFSE"
2715 http GET https://registry.npmjs.org/cryptiles
2716 verbose url raw sntp
2717 verbose url resolving [ 'https://registry.npmjs.org/', './sntp' ]
2718 verbose url resolved https://registry.npmjs.org/sntp
2719 info trying registry request attempt 1 at 12:17:30
2720 verbose etag "3VCPLTX3X0K6NC6MZ8SXKFGLN"
2721 http GET https://registry.npmjs.org/sntp
2722 http 304 https://registry.npmjs.org/ctype/0.5.2
2723 silly registry.get cb [ 304,
2723 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:30 GMT',
2723 silly registry.get server: 'Apache',
2723 silly registry.get via: '1.1 varnish',
2723 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:30 GMT',
2723 silly registry.get 'cache-control': 'max-age=1',
2723 silly registry.get etag: '"DMAH1SJUVBNDDVSSNOEUICPWF"',
2723 silly registry.get 'x-served-by': 'cache-lax1421-LAX',
2723 silly registry.get 'x-cache': 'HIT',
2723 silly registry.get 'x-cache-hits': '1',
2723 silly registry.get 'x-timer': 'S1396207050.279313564,VS0,VE65',
2723 silly registry.get vary: 'Accept',
2723 silly registry.get 'content-length': '0',
2723 silly registry.get 'keep-alive': 'timeout=10, max=50',
2723 silly registry.get connection: 'Keep-Alive' } ]
2724 verbose etag ctype/0.5.2 from cache
2725 http 304 https://registry.npmjs.org/combined-stream
2726 silly registry.get cb [ 304,
2726 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:30 GMT',
2726 silly registry.get server: 'Apache',
2726 silly registry.get via: '1.1 varnish',
2726 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:30 GMT',
2726 silly registry.get 'cache-control': 'max-age=1',
2726 silly registry.get etag: '"8PP2B14BUNGUMKMLSINV57T1R"',
2726 silly registry.get 'x-served-by': 'cache-lax1434-LAX',
2726 silly registry.get 'x-cache': 'HIT',
2726 silly registry.get 'x-cache-hits': '1',
2726 silly registry.get 'x-timer': 'S1396207050.276796818,VS0,VE157',
2726 silly registry.get vary: 'Accept',
2726 silly registry.get 'content-length': '0',
2726 silly registry.get 'keep-alive': 'timeout=10, max=50',
2726 silly registry.get connection: 'Keep-Alive' } ]
2727 verbose etag combined-stream from cache
2728 silly addNameRange number 2 { name: 'combined-stream',
2728 silly addNameRange range: '>=0.0.4-0 <0.1.0-0',
2728 silly addNameRange hasData: true }
2729 silly addNameRange versions [ 'combined-stream',
2729 silly addNameRange [ '0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4' ] ]
2730 verbose addNamed [ 'combined-stream', '0.0.4' ]
2731 verbose addNamed [ '0.0.4', '0.0.4' ]
2732 silly lockFile fa19b583-combined-stream-0-0-4 combined-stream@0.0.4
2733 verbose lock combined-stream@0.0.4 /home/patcon/.npm/fa19b583-combined-stream-0-0-4.lock
2734 silly lockFile c556016e-ctype-0-5-2 ctype@0.5.2
2735 silly lockFile c556016e-ctype-0-5-2 ctype@0.5.2
2736 silly lockFile fa19b583-combined-stream-0-0-4 combined-stream@0.0.4
2737 silly lockFile fa19b583-combined-stream-0-0-4 combined-stream@0.0.4
2738 silly lockFile 97e270a8-combined-stream-0-0-4 combined-stream@~0.0.4
2739 silly lockFile 97e270a8-combined-stream-0-0-4 combined-stream@~0.0.4
2740 silly resolved [ { name: 'async',
2740 silly resolved description: 'Higher-order functions and common patterns for asynchronous code',
2740 silly resolved main: './lib/async',
2740 silly resolved author: { name: 'Caolan McMahon' },
2740 silly resolved version: '0.2.10',
2740 silly resolved repository: { type: 'git', url: 'https://github.com/caolan/async.git' },
2740 silly resolved bugs: { url: 'https://github.com/caolan/async/issues' },
2740 silly resolved licenses: [ [Object] ],
2740 silly resolved devDependencies: { nodeunit: '>0.0.0', 'uglify-js': '1.2.x', nodelint: '>0.0.0' },
2740 silly resolved jam: { main: 'lib/async.js', include: [Object] },
2740 silly resolved scripts: { test: 'nodeunit test/test-async.js' },
2740 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. Also supports [component](https://github.com/component/component).\n\nAsync provides around 20 functions that include the usual \'functional\'\nsuspects (map, reduce, filter, each…) 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```javascript\nasync.map([\'file1\',\'file2\',\'file3\'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n});\n\nasync.filter([\'file1\',\'file2\',\'file3\'], fs.exists, function(results){\n // results now equals an array of the existing files\n});\n\nasync.parallel([\n function(){ ... },\n function(){ ... }\n], callback);\n\nasync.series([\n function(){ ... },\n function(){ ... }\n]);\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## Common Pitfalls\n\n### Binding a context to an iterator\n\nThis section is really about bind, not about async. If you are wondering how to\nmake async execute your iterators in a given context, or are confused as to why\na method of another library isn\'t working as an iterator, study this example:\n\n```js\n// Here is a simple object with an (unnecessarily roundabout) squaring method\nvar AsyncSquaringLibrary = {\n squareExponent: 2,\n square: function(number, callback){ \n var result = Math.pow(number, this.squareExponent);\n setTimeout(function(){\n callback(null, result);\n }, 200);\n }\n};\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){\n // result is [NaN, NaN, NaN]\n // This fails because the `this.squareExponent` expression in the square\n // function is not evaluated in the context of AsyncSquaringLibrary, and is\n // therefore undefined.\n});\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){\n // result is [1, 4, 9]\n // With the help of bind we can attach a context to the iterator before\n // passing it to async. Now the square function will be executed in its \n // \'home\' AsyncSquaringLibrary context and the value of `this.squareExponent`\n // will be as expected.\n});\n```\n\n## Download\n\nThe source is available for download from\n[GitHub](http://github.com/caolan/async).\nAlternatively, you can install using Node Package Manager (npm):\n\n npm install async\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed\n\n## In the Browser\n\nSo far it\'s been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:\n\n```html\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* [each](#each)\n* [eachSeries](#eachSeries)\n* [eachLimit](#eachLimit)\n* [map](#map)\n* [mapSeries](#mapSeries)\n* [mapLimit](#mapLimit)\n* [filter](#filter)\n* [filterSeries](#filterSeries)\n* [reject](#reject)\n* [rejectSeries](#rejectSeries)\n* [reduce](#reduce)\n* [reduceRight](#reduceRight)\n* [detect](#detect)\n* [detectSeries](#detectSeries)\n* [sortBy](#sortBy)\n* [some](#some)\n* [every](#every)\n* [concat](#concat)\n* [concatSeries](#concatSeries)\n\n### Control Flow\n\n* [series](#series)\n* [parallel](#parallel)\n* [parallelLimit](#parallellimittasks-limit-callback)\n* [whilst](#whilst)\n* [doWhilst](#doWhilst)\n* [until](#until)\n* [doUntil](#doUntil)\n* [forever](#forever)\n* [waterfall](#waterfall)\n* [compose](#compose)\n* [applyEach](#applyEach)\n* [applyEachSeries](#applyEachSeries)\n* [queue](#queue)\n* [cargo](#cargo)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n* [times](#times)\n* [timesSeries](#timesSeries)\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<a name="each" />\n### each(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 each 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(err) which must be called once it has \n completed. If no error has occured, the callback should be run without \n arguments or with an explicit null argument.\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```js\n// assuming openFiles is an array of file names and saveFile is a function\n// to save the modified contents of that file:\n\nasync.each(openFiles, saveFile, function(err){\n // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------------------------------------\n\n<a name="forEachSeries" />\n<a name="eachSeries" />\n### eachSeries(arr, iterator, callback)\n\nThe same as each 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<a name="eachLimit" />\n### eachLimit(arr, limit, iterator, callback)\n\nThe same as each only no more than "limit" iterators will be simultaneously \nrunning at any time.\n\nNote that the items are not processed in batches, so there is no guarantee that\n the first "limit" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err) which must be called once it has \n completed. If no error has occured, the callback should be run without \n arguments or with an explicit null argument.\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```js\n// Assume documents is an array of JSON objects and requestApi is a\n// function that interacts with a rate-limited REST api.\n\nasync.eachLimit(documents, 20, requestApi, function(err){\n // if any of the saves produced an error, err would equal that error\n});\n```\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(err, transformed) which must be called once \n it has completed 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```js\nasync.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\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="mapLimit" />\n### mapLimit(arr, limit, iterator, callback)\n\nThe same as map only no more than "limit" iterators will be simultaneously \nrunning at any time.\n\nNote that the items are not processed in batches, so there is no guarantee that\n the first "limit" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err, transformed) which must be called once \n it has completed 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```js\nasync.mapLimit([\'file1\',\'file2\',\'file3\'], 1, fs.stat, function(err, results){\n // results is now an array of stats for each file\n});\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 fs.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(truthValue) which must be called with a \n boolean argument 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```js\nasync.filter([\'file1\',\'file2\',\'file3\'], fs.exists, function(results){\n // results now equals an array of the existing files\n});\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 reject, 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 it\'s 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(err, reduction) which accepts an optional error as its first \n argument, and the state of the reduction as the second. If an error is \n passed to the callback, the reduction is stopped and the main callback is \n immediately called with the 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```js\nasync.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\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(truthValue) which must be called with a \n boolean argument 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```js\nasync.detect([\'file1\',\'file2\',\'file3\'], fs.exists, function(result){\n // result now equals the first file in the list that exists\n});\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(err, sortValue) which must be called once it\n has completed with an error (which can be null) and a value to use as the sort\n 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```js\nasync.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 fs.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(truthValue) which must be called with a \n boolean argument 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```js\nasync.some([\'file1\',\'file2\',\'file3\'], fs.exists, function(result){\n // if result is true then at least one of the files exists\n});\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 fs.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(truthValue) which must be called with a \n boolean argument 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```js\nasync.every([\'file1\',\'file2\',\'file3\'], fs.exists, function(result){\n // if result is true then every file exists\n});\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(err, results) which must be called once it \n has completed 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```js\nasync.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\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(err, result) it must call on completion with an error (which can\n be null) and an optional result value.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets a results array (or object) containing all \n the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.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\nfunction(err, results){\n // results is now equal to [\'one\', \'two\']\n});\n\n\n// an example using an object instead of an array\nasync.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},\nfunction(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 \n a callback(err, result) it must call on completion with an error (which can\n be null) and an optional result value.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets a results array (or object) containing all \n the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.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\nfunction(err, results){\n // the results array will equal [\'one\',\'two\'] even though\n // the second function had a shorter timeout.\n});\n\n\n// an example using an object instead of an array\nasync.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},\nfunction(err, results) {\n // results is now equals to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n<a name="parallel" />\n### parallelLimit(tasks, limit, [callback])\n\nThe same as parallel only the tasks are executed in parallel with a maximum of "limit" \ntasks executing at any time.\n\nNote that the tasks are not executed in batches, so there is no guarantee that \nthe first "limit" tasks will complete before any others are started.\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed \n a callback(err, result) it must call on completion with an error (which can\n be null) and an optional result value.\n* limit - The maximum number of tasks to run at any time.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets a results array (or object) containing all \n the result arguments passed to the task callbacks.\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(err) which must be called once it has completed with an \n optional error 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```js\nvar count = 0;\n\nasync.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="doWhilst" />\n### doWhilst(fn, test, callback)\n\nThe post check version of whilst. To reflect the difference in the order of operations `test` and `fn` arguments are switched. `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.\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<a name="doUntil" />\n### doUntil(fn, test, callback)\n\nLike doWhilst except the test is inverted. Note the argument ordering differs from `until`.\n\n---------------------------------------\n\n<a name="forever" />\n### forever(fn, callback)\n\nCalls the asynchronous function \'fn\' repeatedly, in series, indefinitely.\nIf an error is passed to fn\'s callback then \'callback\' is called with the\nerror, otherwise it will never be called.\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 \n callback(err, result1, result2, ...) it must call on completion. The first\n argument is an error (which can be null) and any further arguments will be \n passed as arguments in order to the next task.\n* callback(err, [results]) - An optional callback to run once all the functions\n have completed. This will be passed the results of the last task\'s callback.\n\n\n\n__Example__\n\n```js\nasync.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], function (err, result) {\n // result now equals \'done\' \n});\n```\n\n---------------------------------------\n<a name="compose" />\n### compose(fn1, fn2...)\n\nCreates a function which is a composition of the passed asynchronous\nfunctions. Each function consumes the return value of the function that\nfollows. Composing functions f(), g() and h() would produce the result of\nf(g(h())), only this version uses callbacks to obtain the return values.\n\nEach function is executed with the `this` binding of the composed function.\n\n__Arguments__\n\n* functions... - the asynchronous functions to compose\n\n\n__Example__\n\n```js\nfunction add1(n, callback) {\n setTimeout(function () {\n callback(null, n + 1);\n }, 10);\n}\n\nfunction mul3(n, callback) {\n setTimeout(function () {\n callback(null, n * 3);\n }, 10);\n}\n\nvar add1mul3 = async.compose(mul3, add1);\n\nadd1mul3(4, function (err, result) {\n // result now equals 15\n});\n```\n\n---------------------------------------\n<a name="applyEach" />\n### applyEach(fns, args..., callback)\n\nApplies the provided arguments to each function in the array, calling the\ncallback after all functions have completed. If you only provide the first\nargument then it will return a function which lets you pass in the\narguments as if it were a single function call.\n\n__Arguments__\n\n* fns - the asynchronous functions to all call with the same arguments\n* args... - any number of separate arguments to pass to the function\n* callback - the final argument should be the callback, called when all\n functions have completed processing\n\n\n__Example__\n\n```js\nasync.applyEach([enableSearch, updateSchema], \'bucket\', callback);\n\n// partial application example:\nasync.each(\n buckets,\n async.applyEach([enableSearch, updateSchema]),\n callback\n);\n```\n\n---------------------------------------\n\n<a name="applyEachSeries" />\n### applyEachSeries(arr, iterator, callback)\n\nThe same as applyEach only the functions are applied in series.\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, which must call its callback(err) argument when finished, with an \n optional error as an argument.\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 instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* unshift(task, [callback]) - add a new task to the front of the queue.\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```js\n// create a queue object with concurrency 2\n\nvar q = async.queue(function (task, callback) {\n console.log(\'hello \' + task.name);\n callback();\n}, 2);\n\n\n// assign a callback\nq.drain = function() {\n console.log(\'all items have been processed\');\n}\n\n// add some items to the queue\n\nq.push({name: \'foo\'}, function (err) {\n console.log(\'finished processing foo\');\n});\nq.push({name: \'bar\'}, function (err) {\n console.log(\'finished processing bar\');\n});\n\n// add some items to the queue (batch-wise)\n\nq.push([{name: \'baz\'},{name: \'bay\'},{name: \'bax\'}], function (err) {\n console.log(\'finished processing bar\');\n});\n\n// add some items to the front of the queue\n\nq.unshift({name: \'bar\'}, function (err) {\n console.log(\'finished processing bar\');\n});\n```\n\n---------------------------------------\n\n<a name="cargo" />\n### cargo(worker, [payload])\n\nCreates a cargo object with the specified payload. Tasks added to the\ncargo will be processed altogether (up to the payload limit). If the\nworker is in progress, the task is queued until it is available. Once\nthe worker has completed some tasks, each callback of those tasks is called.\n\n__Arguments__\n\n* worker(tasks, callback) - An asynchronous function for processing an array of\n queued tasks, which must call its callback(err) argument when finished, with \n an optional error as an argument.\n* payload - An optional integer for determining how many tasks should be\n processed per round; if omitted, the default is unlimited.\n\n__Cargo objects__\n\nThe cargo 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* payload - an integer for determining how many tasks should be\n process per round. This property can be changed after a cargo is created to\n alter the payload 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 instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\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```js\n// create a cargo object with payload 2\n\nvar cargo = async.cargo(function (tasks, callback) {\n for(var i=0; i<tasks.length; i++){\n console.log(\'hello \' + tasks[i].name);\n }\n callback();\n}, 2);\n\n\n// add some items\n\ncargo.push({name: \'foo\'}, function (err) {\n console.log(\'finished processing foo\');\n});\ncargo.push({name: \'bar\'}, function (err) {\n console.log(\'finished processing bar\');\n});\ncargo.push({name: \'baz\'}, function (err) {\n console.log(\'finished processing baz\');\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 which have completed so far.\n\nNote, all functions are called with a results object as a second argument, \nso it is unsafe to pass functions in the tasks object which cannot handle the\nextra argument. For example, this snippet of code:\n\n```js\nasync.auto({\n readData: async.apply(fs.readFile, \'data.txt\', \'utf-8\')\n}, callback);\n```\n\nwill have the effect of calling readFile with the results object as the last\nargument, which will fail:\n\n```js\nfs.readFile(\'data.txt\', \'utf-8\', cb, {});\n```\n\nInstead, wrap the call to readFile in a function which does not forward the \nresults object:\n\n```js\nasync.auto({\n readData: function(cb, results){\n fs.readFile(\'data.txt\', \'utf-8\', cb);\n }\n}, callback);\n```\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 function receives two arguments: (1) a callback(err, result) which must be \n called when finished, passing an error (which can be null) and the result of \n the function\'s execution, and (2) a results object, containing the results of\n the previously executed functions.\n* callback(err, results) - An optional callback which is called when all the\n tasks have been completed. The callback will receive an error as an argument\n if any tasks pass an error to their callback. Results will always be passed\n\tbut if an error occurred, no other tasks will be performed, and the results\n\tobject will only contain partial results.\n \n\n__Example__\n\n```js\nasync.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```\n\nThis is a fairly trivial example, but to do this using the basic parallel and\nseries functions would look like this:\n\n```js\nasync.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],\nfunction(err, 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 function(callback){\n // once the file is written let\'s email a link to it...\n }\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. It\'s 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.\n\n__Example__\n\n```js\nvar iterator = async.iterator([\n function(){ sys.p(\'one\'); },\n function(){ sys.p(\'two\'); },\n function(){ sys.p(\'three\'); }\n]);\n\nnode> var iterator2 = iterator();\n\'one\'\nnode> var iterator3 = iterator2();\n\'two\'\nnode> iterator3();\n\'three\'\nnode> var nextfn = iterator2.next();\nnode> 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```js\n// using apply\n\nasync.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\nasync.parallel([\n function(callback){\n fs.writeFile(\'testfile1\', \'test1\', callback);\n },\n function(callback){\n fs.writeFile(\'testfile2\', \'test2\', callback);\n }\n]);\n```\n\nIt\'s possible to pass any number of additional arguments when calling the\ncontinuation:\n\n```js\nnode> var fn = async.apply(sys.puts, \'one\');\nnode> fn(\'two\', \'three\');\none\ntwo\nthree\n```\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 setImmediate(callback)\nif available, otherwise setTimeout(callback, 0), which means other higher priority\nevents 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```js\nvar call_order = [];\nasync.nextTick(function(){\n call_order.push(\'two\');\n // call_order now equals [\'one\',\'two\']\n});\ncall_order.push(\'one\')\n```\n\n<a name="times" />\n### times(n, callback)\n\nCalls the callback n times and accumulates results in the same manner\nyou would use with async.map.\n\n__Arguments__\n\n* n - The number of times to run the function.\n* callback - The function to call n times.\n\n__Example__\n\n```js\n// Pretend this is some complicated async factory\nvar createUser = function(id, callback) {\n callback(null, {\n id: \'user\' + id\n })\n}\n// generate 5 users\nasync.times(5, function(n, next){\n createUser(n, function(err, user) {\n next(err, user)\n })\n}, function(err, users) {\n // we should now have 5 users\n});\n```\n\n<a name="timesSeries" />\n### timesSeries(n, callback)\n\nThe same as times 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## 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\nThe cache of results is exposed as the `memo` property of the function returned\nby `memoize`.\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```js\nvar slow_fn = function (name, callback) {\n // do something\n callback(null, result);\n};\nvar fn = async.memoize(slow_fn);\n\n// fn can now be used as if it were slow_fn\nfn(\'some name\', function () {\n // callback\n});\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```js\nvar hello = function(name, callback){\n setTimeout(function(){\n callback(null, \'hello \' + name);\n }, 1000);\n};\n```\n```js\nnode> 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```js\nvar hello = function(name, callback){\n setTimeout(function(){\n callback(null, {hello: name});\n }, 1000);\n};\n```\n```js\nnode> 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',
2740 silly resolved readmeFilename: 'README.md',
2740 silly resolved homepage: 'https://github.com/caolan/async',
2740 silly resolved _id: 'async@0.2.10',
2740 silly resolved _from: 'async@~0.2.9' },
2740 silly resolved { author:
2740 silly resolved { name: 'Felix Geisendörfer',
2740 silly resolved email: 'felix@debuggable.com',
2740 silly resolved url: 'http://debuggable.com/' },
2740 silly resolved name: 'combined-stream',
2740 silly resolved description: 'A stream that emits multiple other streams one after another.',
2740 silly resolved version: '0.0.4',
2740 silly resolved homepage: 'https://github.com/felixge/node-combined-stream',
2740 silly resolved repository:
2740 silly resolved { type: 'git',
2740 silly resolved url: 'git://github.com/felixge/node-combined-stream.git' },
2740 silly resolved main: './lib/combined_stream',
2740 silly resolved engines: { node: '*' },
2740 silly resolved dependencies: { 'delayed-stream': '0.0.5' },
2740 silly resolved devDependencies: { far: '0.0.1' },
2740 silly resolved readme: '# combined-stream\n\nA stream that emits multiple other streams one after another.\n\n## Installation\n\n``` bash\nnpm install combined-stream\n```\n\n## Usage\n\nHere is a simple example that shows how you can use combined-stream to combine\ntwo files into one:\n\n``` javascript\nvar CombinedStream = require(\'combined-stream\');\nvar fs = require(\'fs\');\n\nvar combinedStream = CombinedStream.create();\ncombinedStream.append(fs.createReadStream(\'file1.txt\'));\ncombinedStream.append(fs.createReadStream(\'file2.txt\'));\n\ncombinedStream.pipe(fs.createWriteStream(\'combined.txt\'));\n```\n\nWhile the example above works great, it will pause all source streams until\nthey are needed. If you don\'t want that to happen, you can set `pauseStreams`\nto `false`:\n\n``` javascript\nvar CombinedStream = require(\'combined-stream\');\nvar fs = require(\'fs\');\n\nvar combinedStream = CombinedStream.create({pauseStreams: false});\ncombinedStream.append(fs.createReadStream(\'file1.txt\'));\ncombinedStream.append(fs.createReadStream(\'file2.txt\'));\n\ncombinedStream.pipe(fs.createWriteStream(\'combined.txt\'));\n```\n\nHowever, what if you don\'t have all the source streams yet, or you don\'t want\nto allocate the resources (file descriptors, memory, etc.) for them right away?\nWell, in that case you can simply provide a callback that supplies the stream\nby calling a `next()` function:\n\n``` javascript\nvar CombinedStream = require(\'combined-stream\');\nvar fs = require(\'fs\');\n\nvar combinedStream = CombinedStream.create();\ncombinedStream.append(function(next) {\n next(fs.createReadStream(\'file1.txt\'));\n});\ncombinedStream.append(function(next) {\n next(fs.createReadStream(\'file2.txt\'));\n});\n\ncombinedStream.pipe(fs.createWriteStream(\'combined.txt\'));\n```\n\n## API\n\n### CombinedStream.create([options])\n\nReturns a new combined stream object. Available options are:\n\n* `maxDataSize`\n* `pauseStreams`\n\nThe effect of those options is described below.\n\n### combinedStream.pauseStreams = true\n\nWhether to apply back pressure to the underlaying streams. If set to `false`,\nthe underlaying streams will never be paused. If set to `true`, the\nunderlaying streams will be paused right after being appended, as well as when\n`delayedStream.pipe()` wants to throttle.\n\n### combinedStream.maxDataSize = 2 * 1024 * 1024\n\nThe maximum amount of bytes (or characters) to buffer for all source streams.\nIf this value is exceeded, `combinedStream` emits an `\'error\'` event.\n\n### combinedStream.dataSize = 0\n\nThe amount of bytes (or characters) currently buffered by `combinedStream`.\n\n### combinedStream.append(stream)\n\nAppends the given `stream` to the combinedStream object. If `pauseStreams` is\nset to `true, this stream will also be paused right away.\n\n`streams` can also be a function that takes one parameter called `next`. `next`\nis a function that must be invoked in order to provide the `next` stream, see\nexample above.\n\nRegardless of how the `stream` is appended, combined-stream always attaches an\n`\'error\'` listener to it, so you don\'t have to do that manually.\n\nSpecial case: `stream` can also be a String or Buffer.\n\n### combinedStream.write(data)\n\nYou should not call this, `combinedStream` takes care of piping the appended\nstreams into itself for you.\n\n### combinedStream.resume()\n\nCauses `combinedStream` to start drain the streams it manages. The function is\nidempotent, and also emits a `\'resume\'` event each time which usually goes to\nthe stream that is currently being drained.\n\n### combinedStream.pause();\n\nIf `combinedStream.pauseStreams` is set to `false`, this does nothing.\nOtherwise a `\'pause\'` event is emitted, this goes to the stream that is\ncurrently being drained, so you can use it to apply back pressure.\n\n### combinedStream.end();\n\nSets `combinedStream.writable` to false, emits an `\'end\'` event, and removes\nall streams from the queue.\n\n### combinedStream.destroy();\n\nSame as `combinedStream.end()`, except it emits a `\'close\'` event instead of\n`\'end\'`.\n\n## License\n\ncombined-stream is licensed under the MIT license.\n',
2740 silly resolved readmeFilename: 'Readme.md',
2740 silly resolved bugs: { url: 'https://github.com/felixge/node-combined-stream/issues' },
2740 silly resolved _id: 'combined-stream@0.0.4',
2740 silly resolved _from: 'combined-stream@~0.0.4' } ]
2741 info install async@0.2.10 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data
2742 info install combined-stream@0.0.4 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data
2743 info installOne async@0.2.10
2744 info installOne combined-stream@0.0.4
2745 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/async unbuild
2746 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream unbuild
2747 verbose tar unpack /home/patcon/.npm/async/0.2.10/package.tgz
2748 silly lockFile f85bad00-les-form-data-node-modules-async tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/async
2749 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/async /home/patcon/.npm/f85bad00-les-form-data-node-modules-async.lock
2750 silly lockFile 1442d171-con-npm-async-0-2-10-package-tgz tar:///home/patcon/.npm/async/0.2.10/package.tgz
2751 verbose lock tar:///home/patcon/.npm/async/0.2.10/package.tgz /home/patcon/.npm/1442d171-con-npm-async-0-2-10-package-tgz.lock
2752 verbose tar unpack /home/patcon/.npm/combined-stream/0.0.4/package.tgz
2753 silly lockFile ab06d975-ata-node-modules-combined-stream tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream
2754 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream /home/patcon/.npm/ab06d975-ata-node-modules-combined-stream.lock
2755 silly lockFile 0ef904fe-ombined-stream-0-0-4-package-tgz tar:///home/patcon/.npm/combined-stream/0.0.4/package.tgz
2756 verbose lock tar:///home/patcon/.npm/combined-stream/0.0.4/package.tgz /home/patcon/.npm/0ef904fe-ombined-stream-0-0-4-package-tgz.lock
2757 silly gunzTarPerm modes [ '755', '644' ]
2758 silly gunzTarPerm modes [ '755', '644' ]
2759 silly gunzTarPerm extractEntry package.json
2760 silly gunzTarPerm extractEntry package.json
2761 silly gunzTarPerm extractEntry README.md
2762 silly gunzTarPerm extractEntry LICENSE
2763 silly gunzTarPerm extractEntry component.json
2764 silly gunzTarPerm extractEntry lib/async.js
2765 silly gunzTarPerm extractEntry .npmignore
2766 silly gunzTarPerm extractEntry License
2767 silly gunzTarPerm extractEntry Makefile
2768 silly gunzTarPerm extractEntry Readme.md
2769 silly gunzTarPerm extractEntry lib/combined_stream.js
2770 silly gunzTarPerm extractEntry test/common.js
2771 silly gunzTarPerm extractEntry test/run.js
2772 silly gunzTarPerm extractEntry test/fixture/file1.txt
2773 silly gunzTarPerm extractEntry test/fixture/file2.txt
2774 silly gunzTarPerm extractEntry test/integration/test-callback-streams.js
2775 silly gunzTarPerm extractEntry test/integration/test-data-size.js
2776 silly gunzTarPerm extractEntry test/integration/test-delayed-streams-and-buffers-and-strings.js
2777 silly gunzTarPerm extractEntry test/integration/test-delayed-streams.js
2778 silly gunzTarPerm extractEntry test/integration/test-empty-string.js
2779 silly gunzTarPerm extractEntry test/integration/test-is-stream-like.js
2780 silly gunzTarPerm extractEntry test/integration/test-max-data-size.js
2781 silly gunzTarPerm extractEntry test/integration/test-unpaused-streams.js
2782 silly lockFile f85bad00-les-form-data-node-modules-async tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/async
2783 silly lockFile f85bad00-les-form-data-node-modules-async tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/async
2784 silly lockFile 1442d171-con-npm-async-0-2-10-package-tgz tar:///home/patcon/.npm/async/0.2.10/package.tgz
2785 silly lockFile 1442d171-con-npm-async-0-2-10-package-tgz tar:///home/patcon/.npm/async/0.2.10/package.tgz
2786 info preinstall async@0.2.10
2787 verbose readDependencies using package.json deps
2788 verbose readDependencies using package.json deps
2789 silly resolved []
2790 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/async
2791 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/async
2792 verbose linkStuff [ true,
2792 verbose linkStuff '/usr/lib/node_modules',
2792 verbose linkStuff false,
2792 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules' ]
2793 info linkStuff async@0.2.10
2794 verbose linkBins async@0.2.10
2795 verbose linkMans async@0.2.10
2796 verbose rebuildBundles async@0.2.10
2797 info install async@0.2.10
2798 info postinstall async@0.2.10
2799 silly lockFile ab06d975-ata-node-modules-combined-stream tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream
2800 silly lockFile ab06d975-ata-node-modules-combined-stream tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream
2801 silly lockFile 0ef904fe-ombined-stream-0-0-4-package-tgz tar:///home/patcon/.npm/combined-stream/0.0.4/package.tgz
2802 silly lockFile 0ef904fe-ombined-stream-0-0-4-package-tgz tar:///home/patcon/.npm/combined-stream/0.0.4/package.tgz
2803 info preinstall combined-stream@0.0.4
2804 verbose readDependencies using package.json deps
2805 verbose readDependencies using package.json deps
2806 verbose cache add [ 'delayed-stream@0.0.5', null ]
2807 verbose cache add name=undefined spec="delayed-stream@0.0.5" args=["delayed-stream@0.0.5",null]
2808 verbose parsed url { protocol: null,
2808 verbose parsed url slashes: null,
2808 verbose parsed url auth: null,
2808 verbose parsed url host: null,
2808 verbose parsed url port: null,
2808 verbose parsed url hostname: null,
2808 verbose parsed url hash: null,
2808 verbose parsed url search: null,
2808 verbose parsed url query: null,
2808 verbose parsed url pathname: 'delayed-stream@0.0.5',
2808 verbose parsed url path: 'delayed-stream@0.0.5',
2808 verbose parsed url href: 'delayed-stream@0.0.5' }
2809 verbose cache add name="delayed-stream" spec="0.0.5" args=["delayed-stream","0.0.5"]
2810 verbose parsed url { protocol: null,
2810 verbose parsed url slashes: null,
2810 verbose parsed url auth: null,
2810 verbose parsed url host: null,
2810 verbose parsed url port: null,
2810 verbose parsed url hostname: null,
2810 verbose parsed url hash: null,
2810 verbose parsed url search: null,
2810 verbose parsed url query: null,
2810 verbose parsed url pathname: '0.0.5',
2810 verbose parsed url path: '0.0.5',
2810 verbose parsed url href: '0.0.5' }
2811 verbose addNamed [ 'delayed-stream', '0.0.5' ]
2812 verbose addNamed [ '0.0.5', '0.0.5' ]
2813 silly lockFile 1ace22b7-delayed-stream-0-0-5 delayed-stream@0.0.5
2814 verbose lock delayed-stream@0.0.5 /home/patcon/.npm/1ace22b7-delayed-stream-0-0-5.lock
2815 verbose url raw delayed-stream/0.0.5
2816 verbose url resolving [ 'https://registry.npmjs.org/', './delayed-stream/0.0.5' ]
2817 verbose url resolved https://registry.npmjs.org/delayed-stream/0.0.5
2818 info trying registry request attempt 1 at 12:17:30
2819 verbose etag "BROF11PT8LYP8TIEIMON0PVM7"
2820 http GET https://registry.npmjs.org/delayed-stream/0.0.5
2821 http 304 https://registry.npmjs.org/boom
2822 silly registry.get cb [ 304,
2822 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:30 GMT',
2822 silly registry.get server: 'Apache',
2822 silly registry.get via: '1.1 varnish',
2822 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:30 GMT',
2822 silly registry.get 'cache-control': 'max-age=1',
2822 silly registry.get etag: '"7DLMJ5NRLHSSKLS2LFWXBFC3C"',
2822 silly registry.get 'x-served-by': 'cache-lax1434-LAX',
2822 silly registry.get 'x-cache': 'HIT',
2822 silly registry.get 'x-cache-hits': '1',
2822 silly registry.get 'x-timer': 'S1396207050.559558868,VS0,VE66',
2822 silly registry.get vary: 'Accept',
2822 silly registry.get 'content-length': '0',
2822 silly registry.get 'keep-alive': 'timeout=10, max=49',
2822 silly registry.get connection: 'Keep-Alive' } ]
2823 verbose etag boom from cache
2824 http 304 https://registry.npmjs.org/asn1/0.1.11
2825 silly registry.get cb [ 304,
2825 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:30 GMT',
2825 silly registry.get server: 'Apache',
2825 silly registry.get via: '1.1 varnish',
2825 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:30 GMT',
2825 silly registry.get 'cache-control': 'max-age=1',
2825 silly registry.get etag: '"B74JHOHEJXMOVF1G3A5W2PJAM"',
2825 silly registry.get 'x-served-by': 'cache-lax1432-LAX',
2825 silly registry.get 'x-cache': 'HIT',
2825 silly registry.get 'x-cache-hits': '1',
2825 silly registry.get 'x-timer': 'S1396207050.582854271,VS0,VE64',
2825 silly registry.get vary: 'Accept',
2825 silly registry.get 'content-length': '0',
2825 silly registry.get 'keep-alive': 'timeout=10, max=50',
2825 silly registry.get connection: 'Keep-Alive' } ]
2826 verbose etag asn1/0.1.11 from cache
2827 http 304 https://registry.npmjs.org/punycode
2828 silly registry.get cb [ 304,
2828 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:30 GMT',
2828 silly registry.get server: 'Apache',
2828 silly registry.get via: '1.1 varnish',
2828 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:30 GMT',
2828 silly registry.get 'cache-control': 'max-age=1',
2828 silly registry.get etag: '"4WBOWTREJIDKTO80Y6MJI5S5X"',
2828 silly registry.get 'x-served-by': 'cache-lax1431-LAX',
2828 silly registry.get 'x-cache': 'HIT',
2828 silly registry.get 'x-cache-hits': '1',
2828 silly registry.get 'x-timer': 'S1396207050.564634800,VS0,VE90',
2828 silly registry.get vary: 'Accept',
2828 silly registry.get 'content-length': '0',
2828 silly registry.get 'keep-alive': 'timeout=10, max=50',
2828 silly registry.get connection: 'Keep-Alive' } ]
2829 verbose etag punycode from cache
2830 http 304 https://registry.npmjs.org/hoek
2831 silly registry.get cb [ 304,
2831 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:30 GMT',
2831 silly registry.get server: 'Apache',
2831 silly registry.get via: '1.1 varnish',
2831 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:30 GMT',
2831 silly registry.get 'cache-control': 'max-age=1',
2831 silly registry.get etag: '"6HLEJN27P5EQN2BK55PRGKEEZ"',
2831 silly registry.get 'x-served-by': 'cache-lax1421-LAX',
2831 silly registry.get 'x-cache': 'HIT',
2831 silly registry.get 'x-cache-hits': '1',
2831 silly registry.get 'x-timer': 'S1396207050.557112217,VS0,VE157',
2831 silly registry.get vary: 'Accept',
2831 silly registry.get 'content-length': '0',
2831 silly registry.get 'keep-alive': 'timeout=10, max=49',
2831 silly registry.get connection: 'Keep-Alive' } ]
2832 verbose etag hoek from cache
2833 silly addNameRange number 2 { name: 'boom', range: '>=0.4.0-0 <0.5.0-0', hasData: true }
2834 silly addNameRange versions [ 'boom',
2834 silly addNameRange [ '0.0.1',
2834 silly addNameRange '0.0.2',
2834 silly addNameRange '0.1.0',
2834 silly addNameRange '0.2.0',
2834 silly addNameRange '0.2.1',
2834 silly addNameRange '0.3.0',
2834 silly addNameRange '0.3.1',
2834 silly addNameRange '0.3.2',
2834 silly addNameRange '0.3.3',
2834 silly addNameRange '0.3.4',
2834 silly addNameRange '0.3.5',
2834 silly addNameRange '0.3.6',
2834 silly addNameRange '0.3.7',
2834 silly addNameRange '0.3.8',
2834 silly addNameRange '0.4.0',
2834 silly addNameRange '0.4.1',
2834 silly addNameRange '0.4.2',
2834 silly addNameRange '1.0.0',
2834 silly addNameRange '1.0.1',
2834 silly addNameRange '1.0.2',
2834 silly addNameRange '1.1.0',
2834 silly addNameRange '1.1.1',
2834 silly addNameRange '1.1.2',
2834 silly addNameRange '1.2.0',
2834 silly addNameRange '1.2.1',
2834 silly addNameRange '2.0.0',
2834 silly addNameRange '2.1.0',
2834 silly addNameRange '2.2.0',
2834 silly addNameRange '2.2.1',
2834 silly addNameRange '2.2.2',
2834 silly addNameRange '2.3.0',
2834 silly addNameRange '2.4.0' ] ]
2835 verbose addNamed [ 'boom', '0.4.2' ]
2836 verbose addNamed [ '0.4.2', '0.4.2' ]
2837 silly lockFile 5b106bb4-boom-0-4-2 boom@0.4.2
2838 verbose lock boom@0.4.2 /home/patcon/.npm/5b106bb4-boom-0-4-2.lock
2839 silly addNameRange number 2 { name: 'punycode', range: '>=0.2.0', hasData: true }
2840 silly addNameRange versions [ 'punycode',
2840 silly addNameRange [ '0.0.1',
2840 silly addNameRange '0.0.2',
2840 silly addNameRange '0.0.1337',
2840 silly addNameRange '0.1.0',
2840 silly addNameRange '0.1.1',
2840 silly addNameRange '0.1.2',
2840 silly addNameRange '0.2.0',
2840 silly addNameRange '0.2.1',
2840 silly addNameRange '0.2.2',
2840 silly addNameRange '0.3.0',
2840 silly addNameRange '1.0.0',
2840 silly addNameRange '1.1.0',
2840 silly addNameRange '1.1.1',
2840 silly addNameRange '1.2.0',
2840 silly addNameRange '1.2.1',
2840 silly addNameRange '1.2.2',
2840 silly addNameRange '1.2.3',
2840 silly addNameRange '1.2.4' ] ]
2841 verbose addNamed [ 'punycode', '1.2.4' ]
2842 verbose addNamed [ '1.2.4', '1.2.4' ]
2843 silly lockFile 741fec01-punycode-1-2-4 punycode@1.2.4
2844 verbose lock punycode@1.2.4 /home/patcon/.npm/741fec01-punycode-1-2-4.lock
2845 silly addNameRange number 2 { name: 'hoek', range: '>=0.9.0-0 <0.10.0-0', hasData: true }
2846 silly addNameRange versions [ 'hoek',
2846 silly addNameRange [ '0.0.1',
2846 silly addNameRange '0.0.2',
2846 silly addNameRange '0.0.3',
2846 silly addNameRange '0.0.4',
2846 silly addNameRange '0.0.5',
2846 silly addNameRange '0.0.6',
2846 silly addNameRange '0.0.7',
2846 silly addNameRange '0.0.8',
2846 silly addNameRange '0.0.9',
2846 silly addNameRange '0.0.10',
2846 silly addNameRange '0.0.11',
2846 silly addNameRange '0.0.12',
2846 silly addNameRange '0.0.13',
2846 silly addNameRange '0.0.14',
2846 silly addNameRange '0.0.15',
2846 silly addNameRange '0.0.16',
2846 silly addNameRange '0.0.17',
2846 silly addNameRange '0.0.18',
2846 silly addNameRange '0.0.19',
2846 silly addNameRange '0.0.21',
2846 silly addNameRange '0.1.0',
2846 silly addNameRange '0.2.0',
2846 silly addNameRange '0.3.0',
2846 silly addNameRange '0.4.0',
2846 silly addNameRange '0.4.1',
2846 silly addNameRange '0.4.2',
2846 silly addNameRange '0.4.3',
2846 silly addNameRange '0.4.4',
2846 silly addNameRange '0.4.5',
2846 silly addNameRange '0.5.0',
2846 silly addNameRange '0.6.0',
2846 silly addNameRange '0.6.1',
2846 silly addNameRange '0.6.2',
2846 silly addNameRange '0.7.0',
2846 silly addNameRange '0.7.1',
2846 silly addNameRange '0.7.2',
2846 silly addNameRange '0.7.3',
2846 silly addNameRange '0.7.4',
2846 silly addNameRange '0.7.5',
2846 silly addNameRange '0.7.6',
2846 silly addNameRange '0.8.0',
2846 silly addNameRange '0.8.1',
2846 silly addNameRange '0.8.2',
2846 silly addNameRange '0.8.3',
2846 silly addNameRange '0.8.4',
2846 silly addNameRange '0.8.5',
2846 silly addNameRange '0.9.0',
2846 silly addNameRange '0.9.1',
2846 silly addNameRange '0.10.0',
2846 silly addNameRange '1.0.0',
2846 silly addNameRange '1.0.1',
2846 silly addNameRange '1.0.2',
2846 silly addNameRange '1.0.3',
2846 silly addNameRange '1.1.0',
2846 silly addNameRange '1.1.1',
2846 silly addNameRange '1.1.2',
2846 silly addNameRange '1.2.0',
2846 silly addNameRange '1.3.0',
2846 silly addNameRange '1.4.0',
2846 silly addNameRange '1.4.1',
2846 silly addNameRange '1.5.0',
2846 silly addNameRange '1.5.1',
2846 silly addNameRange '1.5.2' ] ]
2847 verbose addNamed [ 'hoek', '0.9.1' ]
2848 verbose addNamed [ '0.9.1', '0.9.1' ]
2849 silly lockFile 8ffbae6b-hoek-0-9-1 hoek@0.9.1
2850 verbose lock hoek@0.9.1 /home/patcon/.npm/8ffbae6b-hoek-0-9-1.lock
2851 silly lockFile 41ecb821-asn1-0-1-11 asn1@0.1.11
2852 silly lockFile 41ecb821-asn1-0-1-11 asn1@0.1.11
2853 silly lockFile 5b106bb4-boom-0-4-2 boom@0.4.2
2854 silly lockFile 5b106bb4-boom-0-4-2 boom@0.4.2
2855 silly lockFile 225d04ea-boom-0-4-x boom@0.4.x
2856 silly lockFile 225d04ea-boom-0-4-x boom@0.4.x
2857 silly lockFile 741fec01-punycode-1-2-4 punycode@1.2.4
2858 silly lockFile 741fec01-punycode-1-2-4 punycode@1.2.4
2859 silly lockFile 8ffbae6b-hoek-0-9-1 hoek@0.9.1
2860 silly lockFile 8ffbae6b-hoek-0-9-1 hoek@0.9.1
2861 silly lockFile a6886041-punycode-0-2-0 punycode@>=0.2.0
2862 silly lockFile a6886041-punycode-0-2-0 punycode@>=0.2.0
2863 silly lockFile 58ccaf9a-hoek-0-9-x hoek@0.9.x
2864 silly lockFile 58ccaf9a-hoek-0-9-x hoek@0.9.x
2865 silly resolved [ { name: 'punycode',
2865 silly resolved version: '1.2.4',
2865 silly resolved description: 'A robust Punycode converter that fully complies to RFC 3492 and RFC 5891, and works on nearly all JavaScript platforms.',
2865 silly resolved homepage: 'http://mths.be/punycode',
2865 silly resolved main: 'punycode.js',
2865 silly resolved keywords: [ 'punycode', 'unicode', 'idn', 'idna', 'dns', 'url', 'domain' ],
2865 silly resolved licenses: [ [Object], [Object] ],
2865 silly resolved author:
2865 silly resolved { name: 'Mathias Bynens',
2865 silly resolved email: 'mathias@qiwi.be',
2865 silly resolved url: 'http://mathiasbynens.be/' },
2865 silly resolved contributors: [ [Object], [Object] ],
2865 silly resolved bugs: { url: 'https://github.com/bestiejs/punycode.js/issues' },
2865 silly resolved repository:
2865 silly resolved { type: 'git',
2865 silly resolved url: 'https://github.com/bestiejs/punycode.js.git' },
2865 silly resolved engines: [ 'node', 'rhino' ],
2865 silly resolved directories: { doc: 'docs', test: 'tests' },
2865 silly resolved scripts: { test: 'node tests/tests.js' },
2865 silly resolved devDependencies:
2865 silly resolved { grunt: '~0.4.1',
2865 silly resolved 'grunt-contrib-uglify': '~0.2.2',
2865 silly resolved 'grunt-shell': '~0.6.4',
2865 silly resolved istanbul: '~0.2.4',
2865 silly resolved 'qunit-clib': '~1.3.0',
2865 silly resolved qunitjs: '~1.11.0',
2865 silly resolved requirejs: '~2.1.6' },
2865 silly resolved readme: '# Punycode.js [![Build status](https://travis-ci.org/bestiejs/punycode.js.png?branch=master)](https://travis-ci.org/bestiejs/punycode.js) [![Dependency status](https://gemnasium.com/bestiejs/punycode.js.png)](https://gemnasium.com/bestiejs/punycode.js)\n\nA robust Punycode converter that fully complies to [RFC 3492](http://tools.ietf.org/html/rfc3492) and [RFC 5891](http://tools.ietf.org/html/rfc5891), and works on nearly all JavaScript platforms.\n\nThis JavaScript library is the result of comparing, optimizing and documenting different open-source implementations of the Punycode algorithm:\n\n* [The C example code from RFC 3492](http://tools.ietf.org/html/rfc3492#appendix-C)\n* [`punycode.c` by _Markus W. Scherer_ (IBM)](http://opensource.apple.com/source/ICU/ICU-400.42/icuSources/common/punycode.c)\n* [`punycode.c` by _Ben Noordhuis_](https://github.com/bnoordhuis/punycode/blob/master/punycode.c)\n* [JavaScript implementation by _some_](http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion/301287#301287)\n* [`punycode.js` by _Ben Noordhuis_](https://github.com/joyent/node/blob/426298c8c1c0d5b5224ac3658c41e7c2a3fe9377/lib/punycode.js) (note: [not fully compliant](https://github.com/joyent/node/issues/2072))\n\nThis project is [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with [Node.js v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc).\n\n## Installation\n\nVia [npm](http://npmjs.org/) (only required for Node.js releases older than v0.6.2):\n\n```bash\nnpm install punycode\n```\n\nVia [Bower](http://bower.io/):\n\n```bash\nbower install punycode\n```\n\nVia [Component](https://github.com/component/component):\n\n```bash\ncomponent install bestiejs/punycode.js\n```\n\nIn a browser:\n\n```html\n<script src="punycode.js"></script>\n```\n\nIn [Narwhal](http://narwhaljs.org/), [Node.js](http://nodejs.org/), and [RingoJS](http://ringojs.org/):\n\n```js\nvar punycode = require(\'punycode\');\n```\n\nIn [Rhino](http://www.mozilla.org/rhino/):\n\n```js\nload(\'punycode.js\');\n```\n\nUsing an AMD loader like [RequireJS](http://requirejs.org/):\n\n```js\nrequire(\n {\n \'paths\': {\n \'punycode\': \'path/to/punycode\'\n }\n },\n [\'punycode\'],\n function(punycode) {\n console.log(punycode);\n }\n);\n```\n\n## API\n\n### `punycode.decode(string)`\n\nConverts a Punycode string of ASCII symbols to a string of Unicode symbols.\n\n```js\n// decode domain name parts\npunycode.decode(\'maana-pta\'); // \'mañana\'\npunycode.decode(\'--dqo34k\'); // \'☃-⌘\'\n```\n\n### `punycode.encode(string)`\n\nConverts a string of Unicode symbols to a Punycode string of ASCII symbols.\n\n```js\n// encode domain name parts\npunycode.encode(\'mañana\'); // \'maana-pta\'\npunycode.encode(\'☃-⌘\'); // \'--dqo34k\'\n```\n\n### `punycode.toUnicode(domain)`\n\nConverts a Punycode string representing a domain name to Unicode. Only the Punycoded parts of the domain name will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode.\n\n```js\n// decode domain names\npunycode.toUnicode(\'xn--maana-pta.com\'); // \'mañana.com\'\npunycode.toUnicode(\'xn----dqo34k.com\'); // \'☃-⌘.com\'\n```\n\n### `punycode.toASCII(domain)`\n\nConverts a Unicode string representing a domain name to Punycode. Only the non-ASCII parts of the domain name will be converted, i.e. it doesn’t matter if you call it with a domain that\'s already in ASCII.\n\n```js\n// encode domain names\npunycode.toASCII(\'mañana.com\'); // \'xn--maana-pta.com\'\npunycode.toASCII(\'☃-⌘.com\'); // \'xn----dqo34k.com\'\n```\n\n### `punycode.ucs2`\n\n#### `punycode.ucs2.decode(string)`\n\nCreates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](http://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16.\n\n```js\npunycode.ucs2.decode(\'abc\'); // [0x61, 0x62, 0x63]\n// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE:\npunycode.ucs2.decode(\'\\uD834\\uDF06\'); // [0x1D306]\n```\n\n#### `punycode.ucs2.encode(codePoints)`\n\nCreates a string based on an array of numeric code point values.\n\n```js\npunycode.ucs2.encode([0x61, 0x62, 0x63]); // \'abc\'\npunycode.ucs2.encode([0x1D306]); // \'\\uD834\\uDF06\'\n```\n\n### `punycode.version`\n\nA string representing the current Punycode.js version number.\n\n[Full API documentation is available.](https://github.com/bestiejs/punycode.js/tree/master/docs#readme)\n\n## Unit tests & code coverage\n\nAfter cloning this repository, run `npm install --dev` to install the dependencies needed for Punycode.js development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`.\n\nOnce that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, PhantomJS, and web browsers as well, use `grunt test`.\n\nTo generate [the code coverage report](http://rawgithub.com/bestiejs/punycode.js/master/coverage/punycode.js/punycode.js.html), use `grunt cover`.\n\nFeel free to fork if you see possible improvements!\n\n## Author\n\n| [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](http://twitter.com/mathias "Follow @mathias on Twitter") |\n|---|\n| [Mathias Bynens](http://mathiasbynens.be/) |\n\n## Contributors\n\n| [![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](http://twitter.com/jdalton "Follow @jdalton on Twitter") |\n|---|\n| [John-David Dalton](http://allyoucanleet.com/) |\n\n## License\n\nPunycode.js is dual licensed under the [MIT](http://mths.be/mit) and [GPL](http://mths.be/gpl) licenses.\n',
2865 silly resolved readmeFilename: 'README.md',
2865 silly resolved _id: 'punycode@1.2.4',
2865 silly resolved _from: 'punycode@>=0.2.0' } ]
2866 info install punycode@1.2.4 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie
2867 info installOne punycode@1.2.4
2868 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie/node_modules/punycode unbuild
2869 verbose tar unpack /home/patcon/.npm/punycode/1.2.4/package.tgz
2870 silly lockFile cc5ebf16-ugh-cookie-node-modules-punycode tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie/node_modules/punycode
2871 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie/node_modules/punycode /home/patcon/.npm/cc5ebf16-ugh-cookie-node-modules-punycode.lock
2872 silly lockFile f782e196-n-npm-punycode-1-2-4-package-tgz tar:///home/patcon/.npm/punycode/1.2.4/package.tgz
2873 verbose lock tar:///home/patcon/.npm/punycode/1.2.4/package.tgz /home/patcon/.npm/f782e196-n-npm-punycode-1-2-4-package-tgz.lock
2874 silly gunzTarPerm modes [ '755', '644' ]
2875 silly gunzTarPerm extractEntry package.json
2876 silly gunzTarPerm extractEntry README.md
2877 silly gunzTarPerm extractEntry punycode.js
2878 silly gunzTarPerm extractEntry punycode.min.js
2879 silly gunzTarPerm extractEntry LICENSE-GPL.txt
2880 silly gunzTarPerm extractEntry LICENSE-MIT.txt
2881 silly lockFile cc5ebf16-ugh-cookie-node-modules-punycode tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie/node_modules/punycode
2882 silly lockFile cc5ebf16-ugh-cookie-node-modules-punycode tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie/node_modules/punycode
2883 silly lockFile f782e196-n-npm-punycode-1-2-4-package-tgz tar:///home/patcon/.npm/punycode/1.2.4/package.tgz
2884 silly lockFile f782e196-n-npm-punycode-1-2-4-package-tgz tar:///home/patcon/.npm/punycode/1.2.4/package.tgz
2885 info preinstall punycode@1.2.4
2886 verbose readDependencies using package.json deps
2887 verbose readDependencies using package.json deps
2888 silly resolved []
2889 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie/node_modules/punycode
2890 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie/node_modules/punycode
2891 verbose linkStuff [ true,
2891 verbose linkStuff '/usr/lib/node_modules',
2891 verbose linkStuff false,
2891 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie/node_modules' ]
2892 info linkStuff punycode@1.2.4
2893 verbose linkBins punycode@1.2.4
2894 verbose linkMans punycode@1.2.4
2895 verbose rebuildBundles punycode@1.2.4
2896 info install punycode@1.2.4
2897 info postinstall punycode@1.2.4
2898 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie
2899 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/tough-cookie
2900 verbose linkStuff [ true,
2900 verbose linkStuff '/usr/lib/node_modules',
2900 verbose linkStuff false,
2900 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules' ]
2901 info linkStuff tough-cookie@0.12.1
2902 verbose linkBins tough-cookie@0.12.1
2903 verbose linkMans tough-cookie@0.12.1
2904 verbose rebuildBundles tough-cookie@0.12.1
2905 verbose rebuildBundles [ 'punycode' ]
2906 info install tough-cookie@0.12.1
2907 info postinstall tough-cookie@0.12.1
2908 http 304 https://registry.npmjs.org/cryptiles
2909 silly registry.get cb [ 304,
2909 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:30 GMT',
2909 silly registry.get server: 'Apache',
2909 silly registry.get via: '1.1 varnish',
2909 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:30 GMT',
2909 silly registry.get 'cache-control': 'max-age=1',
2909 silly registry.get etag: '"4738Q5WWL0TB58OG2UNKBCFSE"',
2909 silly registry.get 'x-served-by': 'cache-lax1434-LAX',
2909 silly registry.get 'x-cache': 'HIT',
2909 silly registry.get 'x-cache-hits': '1',
2909 silly registry.get 'x-timer': 'S1396207050.847079515,VS0,VE64',
2909 silly registry.get vary: 'Accept',
2909 silly registry.get 'content-length': '0',
2909 silly registry.get 'keep-alive': 'timeout=10, max=48',
2909 silly registry.get connection: 'Keep-Alive' } ]
2910 verbose etag cryptiles from cache
2911 http 304 https://registry.npmjs.org/delayed-stream/0.0.5
2912 silly registry.get cb [ 304,
2912 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:30 GMT',
2912 silly registry.get server: 'Apache',
2912 silly registry.get via: '1.1 varnish',
2912 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:30 GMT',
2912 silly registry.get 'cache-control': 'max-age=1',
2912 silly registry.get etag: '"BROF11PT8LYP8TIEIMON0PVM7"',
2912 silly registry.get 'x-served-by': 'cache-lax1431-LAX',
2912 silly registry.get 'x-cache': 'HIT',
2912 silly registry.get 'x-cache-hits': '1',
2912 silly registry.get 'x-timer': 'S1396207050.855855703,VS0,VE64',
2912 silly registry.get vary: 'Accept',
2912 silly registry.get 'content-length': '0',
2912 silly registry.get 'keep-alive': 'timeout=10, max=49',
2912 silly registry.get connection: 'Keep-Alive' } ]
2913 verbose etag delayed-stream/0.0.5 from cache
2914 http 304 https://registry.npmjs.org/sntp
2915 silly registry.get cb [ 304,
2915 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:30 GMT',
2915 silly registry.get server: 'Apache',
2915 silly registry.get via: '1.1 varnish',
2915 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:31 GMT',
2915 silly registry.get 'cache-control': 'max-age=1',
2915 silly registry.get etag: '"3VCPLTX3X0K6NC6MZ8SXKFGLN"',
2915 silly registry.get 'x-served-by': 'cache-lax1432-LAX',
2915 silly registry.get 'x-cache': 'HIT',
2915 silly registry.get 'x-cache-hits': '1',
2915 silly registry.get 'x-timer': 'S1396207050.849957466,VS0,VE327',
2915 silly registry.get vary: 'Accept',
2915 silly registry.get 'content-length': '0',
2915 silly registry.get 'keep-alive': 'timeout=10, max=49',
2915 silly registry.get connection: 'Keep-Alive' } ]
2916 verbose etag sntp from cache
2917 silly addNameRange number 2 { name: 'cryptiles', range: '>=0.2.0-0 <0.3.0-0', hasData: true }
2918 silly addNameRange versions [ 'cryptiles',
2918 silly addNameRange [ '0.0.1',
2918 silly addNameRange '0.0.2',
2918 silly addNameRange '0.1.0',
2918 silly addNameRange '0.1.1',
2918 silly addNameRange '0.1.2',
2918 silly addNameRange '0.1.3',
2918 silly addNameRange '0.2.0',
2918 silly addNameRange '0.2.1',
2918 silly addNameRange '0.2.2',
2918 silly addNameRange '1.0.0',
2918 silly addNameRange '1.0.1',
2918 silly addNameRange '2.0.0' ] ]
2919 verbose addNamed [ 'cryptiles', '0.2.2' ]
2920 verbose addNamed [ '0.2.2', '0.2.2' ]
2921 silly lockFile d1e460c8-cryptiles-0-2-2 cryptiles@0.2.2
2922 verbose lock cryptiles@0.2.2 /home/patcon/.npm/d1e460c8-cryptiles-0-2-2.lock
2923 silly addNameRange number 2 { name: 'sntp', range: '>=0.2.0-0 <0.3.0-0', hasData: true }
2924 silly addNameRange versions [ 'sntp',
2924 silly addNameRange [ '0.0.0',
2924 silly addNameRange '0.0.1',
2924 silly addNameRange '0.1.0',
2924 silly addNameRange '0.1.1',
2924 silly addNameRange '0.1.2',
2924 silly addNameRange '0.1.3',
2924 silly addNameRange '0.1.4',
2924 silly addNameRange '0.2.0',
2924 silly addNameRange '0.2.1',
2924 silly addNameRange '0.2.2',
2924 silly addNameRange '0.2.3',
2924 silly addNameRange '0.2.4',
2924 silly addNameRange '1.0.0',
2924 silly addNameRange '1.0.1',
2924 silly addNameRange '1.0.2',
2924 silly addNameRange '1.0.3' ] ]
2925 verbose addNamed [ 'sntp', '0.2.4' ]
2926 verbose addNamed [ '0.2.4', '0.2.4' ]
2927 silly lockFile 92c13a43-sntp-0-2-4 sntp@0.2.4
2928 verbose lock sntp@0.2.4 /home/patcon/.npm/92c13a43-sntp-0-2-4.lock
2929 silly lockFile 1ace22b7-delayed-stream-0-0-5 delayed-stream@0.0.5
2930 silly lockFile 1ace22b7-delayed-stream-0-0-5 delayed-stream@0.0.5
2931 silly resolved [ { author:
2931 silly resolved { name: 'Felix Geisendörfer',
2931 silly resolved email: 'felix@debuggable.com',
2931 silly resolved url: 'http://debuggable.com/' },
2931 silly resolved name: 'delayed-stream',
2931 silly resolved description: 'Buffers events from a stream until you are ready to handle them.',
2931 silly resolved version: '0.0.5',
2931 silly resolved homepage: 'https://github.com/felixge/node-delayed-stream',
2931 silly resolved repository:
2931 silly resolved { type: 'git',
2931 silly resolved url: 'git://github.com/felixge/node-delayed-stream.git' },
2931 silly resolved main: './lib/delayed_stream',
2931 silly resolved engines: { node: '>=0.4.0' },
2931 silly resolved dependencies: {},
2931 silly resolved devDependencies: { fake: '0.2.0', far: '0.0.1' },
2931 silly resolved readme: '# delayed-stream\n\nBuffers events from a stream until you are ready to handle them.\n\n## Installation\n\n``` bash\nnpm install delayed-stream\n```\n\n## Usage\n\nThe following example shows how to write a http echo server that delays its\nresponse by 1000 ms.\n\n``` javascript\nvar DelayedStream = require(\'delayed-stream\');\nvar http = require(\'http\');\n\nhttp.createServer(function(req, res) {\n var delayed = DelayedStream.create(req);\n\n setTimeout(function() {\n res.writeHead(200);\n delayed.pipe(res);\n }, 1000);\n});\n```\n\nIf you are not using `Stream#pipe`, you can also manually release the buffered\nevents by calling `delayedStream.resume()`:\n\n``` javascript\nvar delayed = DelayedStream.create(req);\n\nsetTimeout(function() {\n // Emit all buffered events and resume underlaying source\n delayed.resume();\n}, 1000);\n```\n\n## Implementation\n\nIn order to use this meta stream properly, here are a few things you should\nknow about the implementation.\n\n### Event Buffering / Proxying\n\nAll events of the `source` stream are hijacked by overwriting the `source.emit`\nmethod. Until node implements a catch-all event listener, this is the only way.\n\nHowever, delayed-stream still continues to emit all events it captures on the\n`source`, regardless of whether you have released the delayed stream yet or\nnot.\n\nUpon creation, delayed-stream captures all `source` events and stores them in\nan internal event buffer. Once `delayedStream.release()` is called, all\nbuffered events are emitted on the `delayedStream`, and the event buffer is\ncleared. After that, delayed-stream merely acts as a proxy for the underlaying\nsource.\n\n### Error handling\n\nError events on `source` are buffered / proxied just like any other events.\nHowever, `delayedStream.create` attaches a no-op `\'error\'` listener to the\n`source`. This way you only have to handle errors on the `delayedStream`\nobject, rather than in two places.\n\n### Buffer limits\n\ndelayed-stream provides a `maxDataSize` property that can be used to limit\nthe amount of data being buffered. In order to protect you from bad `source`\nstreams that don\'t react to `source.pause()`, this feature is enabled by\ndefault.\n\n## API\n\n### DelayedStream.create(source, [options])\n\nReturns a new `delayedStream`. Available options are:\n\n* `pauseStream`\n* `maxDataSize`\n\nThe description for those properties can be found below.\n\n### delayedStream.source\n\nThe `source` stream managed by this object. This is useful if you are\npassing your `delayedStream` around, and you still want to access properties\non the `source` object.\n\n### delayedStream.pauseStream = true\n\nWhether to pause the underlaying `source` when calling\n`DelayedStream.create()`. Modifying this property afterwards has no effect.\n\n### delayedStream.maxDataSize = 1024 * 1024\n\nThe amount of data to buffer before emitting an `error`.\n\nIf the underlaying source is emitting `Buffer` objects, the `maxDataSize`\nrefers to bytes.\n\nIf the underlaying source is emitting JavaScript strings, the size refers to\ncharacters.\n\nIf you know what you are doing, you can set this property to `Infinity` to\ndisable this feature. You can also modify this property during runtime.\n\n### delayedStream.maxDataSize = 1024 * 1024\n\nThe amount of data to buffer before emitting an `error`.\n\nIf the underlaying source is emitting `Buffer` objects, the `maxDataSize`\nrefers to bytes.\n\nIf the underlaying source is emitting JavaScript strings, the size refers to\ncharacters.\n\nIf you know what you are doing, you can set this property to `Infinity` to\ndisable this feature.\n\n### delayedStream.dataSize = 0\n\nThe amount of data buffered so far.\n\n### delayedStream.readable\n\nAn ECMA5 getter that returns the value of `source.readable`.\n\n### delayedStream.resume()\n\nIf the `delayedStream` has not been released so far, `delayedStream.release()`\nis called.\n\nIn either case, `source.resume()` is called.\n\n### delayedStream.pause()\n\nCalls `source.pause()`.\n\n### delayedStream.pipe(dest)\n\nCalls `delayedStream.resume()` and then proxies the arguments to `source.pipe`.\n\n### delayedStream.release()\n\nEmits and clears all events that have been buffered up so far. This does not\nresume the underlaying source, use `delayedStream.resume()` instead.\n\n## License\n\ndelayed-stream is licensed under the MIT license.\n',
2931 silly resolved readmeFilename: 'Readme.md',
2931 silly resolved bugs: { url: 'https://github.com/felixge/node-delayed-stream/issues' },
2931 silly resolved _id: 'delayed-stream@0.0.5',
2931 silly resolved _from: 'delayed-stream@0.0.5' } ]
2932 info install delayed-stream@0.0.5 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream
2933 info installOne delayed-stream@0.0.5
2934 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream unbuild
2935 verbose tar unpack /home/patcon/.npm/delayed-stream/0.0.5/package.tgz
2936 silly lockFile b4df2728-ream-node-modules-delayed-stream tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream
2937 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream /home/patcon/.npm/b4df2728-ream-node-modules-delayed-stream.lock
2938 silly lockFile 723939ab-delayed-stream-0-0-5-package-tgz tar:///home/patcon/.npm/delayed-stream/0.0.5/package.tgz
2939 verbose lock tar:///home/patcon/.npm/delayed-stream/0.0.5/package.tgz /home/patcon/.npm/723939ab-delayed-stream-0-0-5-package-tgz.lock
2940 silly lockFile d1e460c8-cryptiles-0-2-2 cryptiles@0.2.2
2941 silly lockFile d1e460c8-cryptiles-0-2-2 cryptiles@0.2.2
2942 silly lockFile 92c13a43-sntp-0-2-4 sntp@0.2.4
2943 silly lockFile 92c13a43-sntp-0-2-4 sntp@0.2.4
2944 silly lockFile 75d7e584-cryptiles-0-2-x cryptiles@0.2.x
2945 silly lockFile 75d7e584-cryptiles-0-2-x cryptiles@0.2.x
2946 silly lockFile b35a0361-sntp-0-2-x sntp@0.2.x
2947 silly lockFile b35a0361-sntp-0-2-x sntp@0.2.x
2948 silly gunzTarPerm modes [ '755', '644' ]
2949 silly resolved [ { name: 'boom',
2949 silly resolved description: 'HTTP-friendly error objects',
2949 silly resolved version: '0.4.2',
2949 silly resolved author:
2949 silly resolved { name: 'Eran Hammer',
2949 silly resolved email: 'eran@hueniverse.com',
2949 silly resolved url: 'http://hueniverse.com' },
2949 silly resolved contributors: [],
2949 silly resolved repository: { type: 'git', url: 'git://github.com/spumko/boom' },
2949 silly resolved main: 'index',
2949 silly resolved keywords: [ 'error', 'http' ],
2949 silly resolved engines: { node: '>=0.8.0' },
2949 silly resolved dependencies: { hoek: '0.9.x' },
2949 silly resolved devDependencies: { lab: '0.1.x', 'complexity-report': '0.x.x' },
2949 silly resolved scripts: { test: 'make test-cov' },
2949 silly resolved licenses: [ [Object] ],
2949 silly resolved readme: '<a href="https://github.com/spumko"><img src="https://raw.github.com/spumko/spumko/master/images/from.png" align="right" /></a>\n![boom Logo](https://raw.github.com/spumko/boom/master/images/boom.png)\n\nHTTP-friendly error objects\n\n[![Build Status](https://secure.travis-ci.org/spumko/boom.png)](http://travis-ci.org/spumko/boom)\n',
2949 silly resolved readmeFilename: 'README.md',
2949 silly resolved bugs: { url: 'https://github.com/spumko/boom/issues' },
2949 silly resolved homepage: 'https://github.com/spumko/boom',
2949 silly resolved _id: 'boom@0.4.2',
2949 silly resolved _from: 'boom@0.4.x' },
2949 silly resolved { name: 'hoek',
2949 silly resolved description: 'General purpose node utilities',
2949 silly resolved version: '0.9.1',
2949 silly resolved author:
2949 silly resolved { name: 'Eran Hammer',
2949 silly resolved email: 'eran@hueniverse.com',
2949 silly resolved url: 'http://hueniverse.com' },
2949 silly resolved contributors: [ [Object] ],
2949 silly resolved repository: { type: 'git', url: 'git://github.com/spumko/hoek' },
2949 silly resolved main: 'index',
2949 silly resolved keywords: [ 'utilities' ],
2949 silly resolved engines: { node: '>=0.8.0' },
2949 silly resolved dependencies: {},
2949 silly resolved devDependencies: { lab: '0.1.x', 'complexity-report': '0.x.x' },
2949 silly resolved scripts: { test: 'make test-cov' },
2949 silly resolved licenses: [ [Object] ],
2949 silly resolved readme: '<a href="https://github.com/spumko"><img src="https://raw.github.com/spumko/spumko/master/images/from.png" align="right" /></a>\r\n![hoek Logo](https://raw.github.com/spumko/hoek/master/images/hoek.png)\r\n\r\nGeneral purpose node utilities\r\n\r\n[![Build Status](https://secure.travis-ci.org/spumko/hoek.png)](http://travis-ci.org/spumko/hoek)\r\n\r\n# Table of Contents\r\n\r\n* [Introduction](#introduction "Introduction")\r\n* [Object](#object "Object")\r\n * [clone](#cloneobj "clone")\r\n * [merge](#mergetarget-source-isnulloverride-ismergearrays "merge")\r\n * [applyToDefaults](#applytodefaultsdefaults-options "applyToDefaults")\r\n * [unique](#uniquearray-key "unique")\r\n * [mapToObject](#maptoobjectarray-key "mapToObject")\r\n * [intersect](#intersectarray1-array2 "intersect")\r\n * [matchKeys](#matchkeysobj-keys "matchKeys")\r\n * [flatten](#flattenarray-target "flatten")\r\n * [removeKeys](#removekeysobject-keys "removeKeys")\r\n * [reach](#reachobj-chain "reach")\r\n * [inheritAsync](#inheritasyncself-obj-keys "inheritAsync")\r\n * [rename](#renameobj-from-to "rename")\r\n* [Timer](#timer "Timer")\r\n* [Binary Encoding/Decoding](#binary "Binary Encoding/Decoding")\r\n * [base64urlEncode](#binary64urlEncodevalue "binary64urlEncode")\r\n * [base64urlDecode](#binary64urlDecodevalue "binary64urlDecode")\r\n* [Escaping Characters](#escaped "Escaping Characters")\r\n * [escapeHtml](#escapeHtmlstring "escapeHtml")\r\n * [escapeHeaderAttribute](#escapeHeaderAttributeattribute "escapeHeaderAttribute")\r\n * [escapeRegex](#escapeRegexstring "escapeRegex")\r\n* [Errors](#errors "Errors")\r\n * [assert](#assertmessage "assert")\r\n * [abort](#abortmessage "abort")\r\n * [displayStack](#displayStackslice "displayStack")\r\n * [callStack](#callStackslice "callStack")\r\n * [toss](#tosscondition "toss")\r\n* [Load files](#load-files "Load Files")\r\n * [loadPackage](#loadPackagedir "loadpackage")\r\n * [loadDirModules](#loadDirModulespath-excludefiles-target "loaddirmodules")\r\n\r\n\r\n\r\n# Introduction\r\n\r\nThe *Hoek* general purpose node utilities library is used to aid in a variety of manners. It comes with useful methods for Arrays (clone, merge, applyToDefaults), Objects (removeKeys, copy), Asserting and more. \r\n\r\nFor example, to use Hoek to set configuration with default options:\r\n```javascript\r\nvar Hoek = require(\'hoek\');\r\n\r\nvar default = {url : "www.github.com", port : "8000", debug : true}\r\n\r\nvar config = Hoek.applyToDefaults(default, {port : "3000", admin : true});\r\n\r\n// In this case, config would be { url: \'www.github.com\', port: \'3000\', debug: true, admin: true }\r\n```\r\n\r\nUnder each of the sections (such as Array), there are subsections which correspond to Hoek methods. Each subsection will explain how to use the corresponding method. In each js excerpt below, the var Hoek = require(\'hoek\') is omitted for brevity.\r\n\r\n## Object\r\n\r\nHoek provides several helpful methods for objects and arrays.\r\n\r\n### clone(obj)\r\n\r\nThis method is used to clone an object or an array. A *deep copy* is made (duplicates everything, including values that are objects). \r\n\r\n```javascript\r\n\r\nvar nestedObj = {\r\n w: /^something$/ig,\r\n x: {\r\n a: [1, 2, 3],\r\n b: 123456,\r\n c: new Date()\r\n },\r\n y: \'y\',\r\n z: new Date()\r\n };\r\n\r\nvar copy = Hoek.clone(nestedObj);\r\n\r\ncopy.x.b = 100;\r\n\r\nconsole.log(copy.y) // results in \'y\'\r\nconsole.log(nestedObj.x.b) // results in 123456\r\nconsole.log(copy.x.b) // results in 100\r\n```\r\n\r\n### merge(target, source, isNullOverride, isMergeArrays)\r\nisNullOverride, isMergeArrays default to true\r\n\r\nMerge all the properties of source into target, source wins in conflic, and by default null and undefined from source are applied\r\n\r\n\r\n```javascript\r\n\r\nvar target = {a: 1, b : 2}\r\nvar source = {a: 0, c: 5}\r\nvar source2 = {a: null, c: 5}\r\n\r\nvar targetArray = [1, 2, 3];\r\nvar sourceArray = [4, 5];\r\n\r\nvar newTarget = Hoek.merge(target, source); // results in {a: 0, b: 2, c: 5}\r\nnewTarget = Hoek.merge(target, source2); // results in {a: null, b: 2, c: 5}\r\nnewTarget = Hoek.merge(target, source2, false); // results in {a: 1, b: 2, c: 5}\r\n\r\nnewTarget = Hoek.merge(targetArray, sourceArray) // results in [1, 2, 3, 4, 5]\r\nnewTarget = Hoek.merge(targetArray, sourceArray, true, false) // results in [4, 5]\r\n\r\n\r\n\r\n\r\n```\r\n\r\n### applyToDefaults(defaults, options)\r\n\r\nApply options to a copy of the defaults\r\n\r\n```javascript\r\n\r\nvar defaults = {host: "localhost", port: 8000};\r\nvar options = {port: 8080};\r\n\r\nvar config = Hoek.applyToDefaults(defaults, options); // results in {host: "localhost", port: 8080};\r\n\r\n\r\n```\r\n\r\n### unique(array, key)\r\n\r\nRemove duplicate items from Array\r\n\r\n```javascript\r\n\r\nvar array = [1, 2, 2, 3, 3, 4, 5, 6];\r\n\r\nvar newArray = Hoek.unique(array); // results in [1,2,3,4,5,6];\r\n\r\narray = [{id: 1}, {id: 1}, {id: 2}];\r\n\r\nnewArray = Hoek.unique(array, "id") // results in [{id: 1}, {id: 2}]\r\n\r\n```\r\n\r\n### mapToObject(array, key)\r\n\r\nConvert an Array into an Object\r\n\r\n```javascript\r\n\r\nvar array = [1,2,3];\r\nvar newObject = Hoek.mapToObject(array); // results in [{"1": true}, {"2": true}, {"3": true}]\r\n\r\narray = [{id: 1}, {id: 2}];\r\nnewObject = Hoek.mapToObject(array, "id") // results in [{"id": 1}, {"id": 2}]\r\n\r\n```\r\n### intersect(array1, array2)\r\n\r\nFind the common unique items in two arrays\r\n\r\n```javascript\r\n\r\nvar array1 = [1, 2, 3];\r\nvar array2 = [1, 4, 5];\r\n\r\nvar newArray = Hoek.intersect(array1, array2) // results in [1]\r\n\r\n```\r\n\r\n### matchKeys(obj, keys) \r\n\r\nFind which keys are present\r\n\r\n```javascript\r\n\r\nvar obj = {a: 1, b: 2, c: 3};\r\nvar keys = ["a", "e"];\r\n\r\nHoek.matchKeys(obj, keys) // returns ["a"]\r\n\r\n```\r\n\r\n### flatten(array, target)\r\n\r\nFlatten an array\r\n\r\n```javascript\r\n\r\nvar array = [1, 2, 3];\r\nvar target = [4, 5]; \r\n\r\nvar flattenedArray = Hoek.flatten(array, target) // results in [4, 5, 1, 2, 3];\r\n\r\n```\r\n\r\n### removeKeys(object, keys)\r\n\r\nRemove keys\r\n\r\n```javascript\r\n\r\nvar object = {a: 1, b: 2, c: 3, d: 4};\r\n\r\nvar keys = ["a", "b"];\r\n\r\nHoek.removeKeys(object, keys) // object is now {c: 3, d: 4}\r\n\r\n```\r\n\r\n### reach(obj, chain)\r\n\r\nConverts an object key chain string to reference\r\n\r\n```javascript\r\n\r\nvar chain = \'a.b.c\';\r\nvar obj = {a : {b : { c : 1}}};\r\n\r\nHoek.reach(obj, chain) // returns 1\r\n\r\n```\r\n\r\n### inheritAsync(self, obj, keys) \r\n\r\nInherits a selected set of methods from an object, wrapping functions in asynchronous syntax and catching errors\r\n\r\n```javascript\r\n\r\nvar targetFunc = function () { };\r\n\r\nvar proto = {\r\n a: function () {\r\n return \'a!\';\r\n },\r\n b: function () {\r\n return \'b!\';\r\n },\r\n c: function () {\r\n throw new Error(\'c!\');\r\n }\r\n };\r\n\r\nvar keys = [\'a\', \'c\'];\r\n\r\nHoek.inheritAsync(targetFunc, proto, [\'a\', \'c\']);\r\n\r\nvar target = new targetFunc();\r\n\r\ntarget.a(function(err, result){console.log(result)} // returns \'a!\' \r\n\r\ntarget.c(function(err, result){console.log(result)} // returns undefined\r\n\r\ntarget.b(function(err, result){console.log(result)} // gives error: Object [object Object] has no method \'b\'\r\n\r\n```\r\n\r\n### rename(obj, from, to)\r\n\r\nRename a key of an object\r\n\r\n```javascript\r\n\r\nvar obj = {a : 1, b : 2};\r\n\r\nHoek.rename(obj, "a", "c"); // obj is now {c : 1, b : 2}\r\n\r\n```\r\n\r\n\r\n# Timer\r\n\r\nA Timer object. Initializing a new timer object sets the ts to the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.\r\n\r\n```javascript\r\n\r\n\r\nexample : \r\n\r\n\r\nvar timerObj = new Hoek.Timer();\r\nconsole.log("Time is now: " + timerObj.ts)\r\nconsole.log("Elapsed time from initialization: " + timerObj.elapsed() + \'milliseconds\')\r\n\r\n```\r\n\r\n# Binary Encoding/Decoding\r\n\r\n### base64urlEncode(value)\r\n\r\nEncodes value in Base64 or URL encoding\r\n\r\n### base64urlDecode(value)\r\n\r\nDecodes data in Base64 or URL encoding.\r\n# Escaping Characters\r\n\r\nHoek provides convenient methods for escaping html characters. The escaped characters are as followed:\r\n\r\n```javascript\r\n\r\ninternals.htmlEscaped = {\r\n \'&\': \'&amp;\',\r\n \'<\': \'&lt;\',\r\n \'>\': \'&gt;\',\r\n \'"\': \'&quot;\',\r\n "\'": \'&#x27;\',\r\n \'`\': \'&#x60;\'\r\n};\r\n\r\n```\r\n\r\n### escapeHtml(string)\r\n\r\n```javascript\r\n\r\nvar string = \'<html> hey </html>\';\r\nvar escapedString = Hoek.escapeHtml(string); // returns &lt;html&gt; hey &lt;/html&gt;\r\n\r\n```\r\n\r\n### escapeHeaderAttribute(attribute)\r\n\r\nEscape attribute value for use in HTTP header\r\n\r\n```javascript\r\n\r\nvar a = Hoek.escapeHeaderAttribute(\'I said "go w\\\\o me"\'); //returns I said \\"go w\\\\o me\\"\r\n\r\n\r\n```\r\n\r\n\r\n### escapeRegex(string)\r\n\r\nEscape string for Regex construction\r\n\r\n```javascript\r\n\r\nvar a = Hoek.escapeRegex(\'4^f$s.4*5+-_?%=#!:@|~\\\\/`"(>)[<]d{}s,\'); // returns 4\\^f\\$s\\.4\\*5\\+\\-_\\?%\\=#\\!\\:@\\|~\\\\\\/`"\\(>\\)\\[<\\]d\\{\\}s\\,\r\n\r\n\r\n\r\n```\r\n\r\n# Errors\r\n\r\n### assert(message)\r\n\r\n```javascript\r\n\r\nvar a = 1, b =2;\r\n\r\nHoek.assert(a === b, \'a should equal b\'); // ABORT: a should equal b\r\n\r\n```\r\n\r\n### abort(message)\r\n\r\nFirst checks if process.env.NODE_ENV === \'test\', and if so, throws error message. Otherwise,\r\ndisplays most recent stack and then exits process.\r\n\r\n\r\n\r\n### displayStack(slice)\r\n\r\nDisplays the trace stack\r\n\r\n```javascript\r\n\r\nvar stack = Hoek.displayStack();\r\nconsole.log(stack) // returns something like:\r\n\r\n[ \'null (/Users/user/Desktop/hoek/test.js:4:18)\',\r\n \'Module._compile (module.js:449:26)\',\r\n \'Module._extensions..js (module.js:467:10)\',\r\n \'Module.load (module.js:356:32)\',\r\n \'Module._load (module.js:312:12)\',\r\n \'Module.runMain (module.js:492:10)\',\r\n \'startup.processNextTick.process._tickCallback (node.js:244:9)\' ]\r\n\r\n```\r\n\r\n### callStack(slice)\r\n\r\nReturns a trace stack array.\r\n\r\n```javascript\r\n\r\nvar stack = Hoek.callStack();\r\nconsole.log(stack) // returns something like:\r\n\r\n[ [ \'/Users/user/Desktop/hoek/test.js\', 4, 18, null, false ],\r\n [ \'module.js\', 449, 26, \'Module._compile\', false ],\r\n [ \'module.js\', 467, 10, \'Module._extensions..js\', false ],\r\n [ \'module.js\', 356, 32, \'Module.load\', false ],\r\n [ \'module.js\', 312, 12, \'Module._load\', false ],\r\n [ \'module.js\', 492, 10, \'Module.runMain\', false ],\r\n [ \'node.js\',\r\n 244,\r\n 9,\r\n \'startup.processNextTick.process._tickCallback\',\r\n false ] ]\r\n\r\n\r\n```\r\n\r\n### toss(condition)\r\n\r\ntoss(condition /*, [message], callback */)\r\n\r\nReturn an error as first argument of a callback\r\n\r\n\r\n# Load Files\r\n\r\n### loadPackage(dir)\r\n\r\nLoad and parse package.json process root or given directory\r\n\r\n```javascript\r\n\r\nvar pack = Hoek.loadPackage(); // pack.name === \'hoek\'\r\n\r\n```\r\n\r\n### loadDirModules(path, excludeFiles, target) \r\n\r\nLoads modules from a given path; option to exclude files (array).\r\n\r\n\r\n\r\n\r\n',
2949 silly resolved readmeFilename: 'README.md',
2949 silly resolved bugs: { url: 'https://github.com/spumko/hoek/issues' },
2949 silly resolved homepage: 'https://github.com/spumko/hoek',
2949 silly resolved _id: 'hoek@0.9.1',
2949 silly resolved _from: 'hoek@0.9.x' },
2949 silly resolved { name: 'cryptiles',
2949 silly resolved description: 'General purpose crypto utilities',
2949 silly resolved version: '0.2.2',
2949 silly resolved author:
2949 silly resolved { name: 'Eran Hammer',
2949 silly resolved email: 'eran@hueniverse.com',
2949 silly resolved url: 'http://hueniverse.com' },
2949 silly resolved contributors: [],
2949 silly resolved repository: { type: 'git', url: 'git://github.com/hueniverse/cryptiles' },
2949 silly resolved main: 'index',
2949 silly resolved keywords: [ 'cryptography', 'security', 'utilites' ],
2949 silly resolved engines: { node: '>=0.8.0' },
2949 silly resolved dependencies: { boom: '0.4.x' },
2949 silly resolved devDependencies: { lab: '0.1.x', 'complexity-report': '0.x.x' },
2949 silly resolved scripts: { test: 'make test-cov' },
2949 silly resolved licenses: [ [Object] ],
2949 silly resolved readme: 'cryptiles\n=========\n\nGeneral purpose crypto utilities\n\n[![Build Status](https://secure.travis-ci.org/hueniverse/cryptiles.png)](http://travis-ci.org/hueniverse/cryptiles)\n',
2949 silly resolved readmeFilename: 'README.md',
2949 silly resolved bugs: { url: 'https://github.com/hueniverse/cryptiles/issues' },
2949 silly resolved homepage: 'https://github.com/hueniverse/cryptiles',
2949 silly resolved _id: 'cryptiles@0.2.2',
2949 silly resolved _from: 'cryptiles@0.2.x' },
2949 silly resolved { name: 'sntp',
2949 silly resolved description: 'SNTP Client',
2949 silly resolved version: '0.2.4',
2949 silly resolved author:
2949 silly resolved { name: 'Eran Hammer',
2949 silly resolved email: 'eran@hueniverse.com',
2949 silly resolved url: 'http://hueniverse.com' },
2949 silly resolved contributors: [],
2949 silly resolved repository: { type: 'git', url: 'git://github.com/hueniverse/sntp' },
2949 silly resolved main: 'index',
2949 silly resolved keywords: [ 'sntp', 'ntp', 'time' ],
2949 silly resolved engines: { node: '>=0.8.0' },
2949 silly resolved dependencies: { hoek: '0.9.x' },
2949 silly resolved devDependencies: { lab: '0.1.x', 'complexity-report': '0.x.x' },
2949 silly resolved scripts: { test: 'make test-cov' },
2949 silly resolved licenses: [ [Object] ],
2949 silly resolved readme: '# sntp\n\nAn SNTP v4 client (RFC4330) for node. Simpy connects to the NTP or SNTP server requested and returns the server time\nalong with the roundtrip duration and clock offset. To adjust the local time to the NTP time, add the returned `t` offset\nto the local time.\n\n[![Build Status](https://secure.travis-ci.org/hueniverse/sntp.png)](http://travis-ci.org/hueniverse/sntp)\n\n# Usage\n\n```javascript\nvar Sntp = require(\'sntp\');\n\n// All options are optional\n\nvar options = {\n host: \'nist1-sj.ustiming.org\', // Defaults to pool.ntp.org\n port: 123, // Defaults to 123 (NTP)\n resolveReference: true, // Default to false (not resolving)\n timeout: 1000 // Defaults to zero (no timeout)\n};\n\n// Request server time\n\nSntp.time(options, function (err, time) {\n\n if (err) {\n console.log(\'Failed: \' + err.message);\n process.exit(1);\n }\n\n console.log(\'Local clock is off by: \' + time.t + \' milliseconds\');\n process.exit(0);\n});\n```\n\nIf an application needs to maintain continuous time synchronization, the module provides a stateful method for\nquerying the current offset only when the last one is too old (defaults to daily).\n\n```javascript\n// Request offset once\n\nSntp.offset(function (err, offset) {\n\n console.log(offset); // New (served fresh)\n\n // Request offset again\n\n Sntp.offset(function (err, offset) {\n\n console.log(offset); // Identical (served from cache)\n });\n});\n```\n\nTo set a background offset refresh, start the interval and use the provided now() method. If for any reason the\nclient fails to obtain an up-to-date offset, the current system clock is used.\n\n```javascript\nvar before = Sntp.now(); // System time without offset\n\nSntp.start(function () {\n\n var now = Sntp.now(); // With offset\n Sntp.stop();\n});\n```\n\n',
2949 silly resolved readmeFilename: 'README.md',
2949 silly resolved bugs: { url: 'https://github.com/hueniverse/sntp/issues' },
2949 silly resolved homepage: 'https://github.com/hueniverse/sntp',
2949 silly resolved _id: 'sntp@0.2.4',
2949 silly resolved _from: 'sntp@0.2.x' } ]
2950 info install boom@0.4.2 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk
2951 info install hoek@0.9.1 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk
2952 info install cryptiles@0.2.2 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk
2953 info install sntp@0.2.4 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk
2954 info installOne boom@0.4.2
2955 info installOne hoek@0.9.1
2956 info installOne cryptiles@0.2.2
2957 info installOne sntp@0.2.4
2958 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/boom unbuild
2959 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/hoek unbuild
2960 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/cryptiles unbuild
2961 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/sntp unbuild
2962 verbose tar unpack /home/patcon/.npm/boom/0.4.2/package.tgz
2963 silly lockFile ea08b688-e-modules-hawk-node-modules-boom tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/boom
2964 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/boom /home/patcon/.npm/ea08b688-e-modules-hawk-node-modules-boom.lock
2965 silly lockFile f9199456-atcon-npm-boom-0-4-2-package-tgz tar:///home/patcon/.npm/boom/0.4.2/package.tgz
2966 verbose lock tar:///home/patcon/.npm/boom/0.4.2/package.tgz /home/patcon/.npm/f9199456-atcon-npm-boom-0-4-2-package-tgz.lock
2967 verbose tar unpack /home/patcon/.npm/hoek/0.9.1/package.tgz
2968 silly lockFile f56f736d-e-modules-hawk-node-modules-hoek tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/hoek
2969 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/hoek /home/patcon/.npm/f56f736d-e-modules-hawk-node-modules-hoek.lock
2970 silly lockFile ff3cc852-atcon-npm-hoek-0-9-1-package-tgz tar:///home/patcon/.npm/hoek/0.9.1/package.tgz
2971 verbose lock tar:///home/patcon/.npm/hoek/0.9.1/package.tgz /home/patcon/.npm/ff3cc852-atcon-npm-hoek-0-9-1-package-tgz.lock
2972 verbose tar unpack /home/patcon/.npm/cryptiles/0.2.2/package.tgz
2973 silly lockFile 874b3e9f-ules-hawk-node-modules-cryptiles tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/cryptiles
2974 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/cryptiles /home/patcon/.npm/874b3e9f-ules-hawk-node-modules-cryptiles.lock
2975 silly lockFile 3c5cf43e--npm-cryptiles-0-2-2-package-tgz tar:///home/patcon/.npm/cryptiles/0.2.2/package.tgz
2976 verbose lock tar:///home/patcon/.npm/cryptiles/0.2.2/package.tgz /home/patcon/.npm/3c5cf43e--npm-cryptiles-0-2-2-package-tgz.lock
2977 verbose tar unpack /home/patcon/.npm/sntp/0.2.4/package.tgz
2978 silly lockFile c8f0ccf8-e-modules-hawk-node-modules-sntp tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/sntp
2979 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/sntp /home/patcon/.npm/c8f0ccf8-e-modules-hawk-node-modules-sntp.lock
2980 silly lockFile efdad317-atcon-npm-sntp-0-2-4-package-tgz tar:///home/patcon/.npm/sntp/0.2.4/package.tgz
2981 verbose lock tar:///home/patcon/.npm/sntp/0.2.4/package.tgz /home/patcon/.npm/efdad317-atcon-npm-sntp-0-2-4-package-tgz.lock
2982 silly gunzTarPerm extractEntry package.json
2983 silly gunzTarPerm modes [ '755', '644' ]
2984 silly gunzTarPerm modes [ '755', '644' ]
2985 silly gunzTarPerm modes [ '755', '644' ]
2986 silly gunzTarPerm modes [ '755', '644' ]
2987 silly gunzTarPerm extractEntry .npmignore
2988 silly gunzTarPerm extractEntry License
2989 silly gunzTarPerm extractEntry package.json
2990 silly gunzTarPerm extractEntry package.json
2991 silly gunzTarPerm extractEntry package.json
2992 silly gunzTarPerm extractEntry package.json
2993 silly gunzTarPerm extractEntry .npmignore
2994 silly gunzTarPerm extractEntry README.md
2995 silly gunzTarPerm extractEntry .npmignore
2996 silly gunzTarPerm extractEntry README.md
2997 silly gunzTarPerm extractEntry .npmignore
2998 silly gunzTarPerm extractEntry README.md
2999 silly gunzTarPerm extractEntry .npmignore
3000 silly gunzTarPerm extractEntry README.md
3001 silly gunzTarPerm extractEntry Makefile
3002 silly gunzTarPerm extractEntry Readme.md
3003 silly gunzTarPerm extractEntry LICENSE
3004 silly gunzTarPerm extractEntry index.js
3005 silly gunzTarPerm extractEntry lib/delayed_stream.js
3006 silly gunzTarPerm extractEntry test/common.js
3007 silly gunzTarPerm extractEntry LICENSE
3008 silly gunzTarPerm extractEntry index.js
3009 silly gunzTarPerm extractEntry .travis.yml
3010 silly gunzTarPerm extractEntry Makefile
3011 silly gunzTarPerm extractEntry images/hoek.png
3012 silly gunzTarPerm extractEntry lib/escape.js
3013 silly gunzTarPerm extractEntry lib/index.js
3014 silly gunzTarPerm extractEntry test/escaper.js
3015 silly gunzTarPerm extractEntry test/index.js
3016 silly gunzTarPerm extractEntry test/modules/test1.js
3017 silly gunzTarPerm extractEntry test/modules/test2.js
3018 silly gunzTarPerm extractEntry test/modules/test3.js
3019 silly gunzTarPerm extractEntry LICENSE
3020 silly gunzTarPerm extractEntry index.js
3021 silly gunzTarPerm extractEntry LICENSE
3022 silly gunzTarPerm extractEntry index.js
3023 silly gunzTarPerm extractEntry .travis.yml
3024 silly gunzTarPerm extractEntry Makefile
3025 silly gunzTarPerm extractEntry .travis.yml
3026 silly gunzTarPerm extractEntry Makefile
3027 silly gunzTarPerm extractEntry .travis.yml
3028 silly gunzTarPerm extractEntry Makefile
3029 silly gunzTarPerm extractEntry test/run.js
3030 silly gunzTarPerm extractEntry test/integration/test-delayed-http-upload.js
3031 silly gunzTarPerm extractEntry images/boom.png
3032 silly gunzTarPerm extractEntry lib/index.js
3033 silly gunzTarPerm extractEntry test/index.js
3034 silly gunzTarPerm extractEntry lib/index.js
3035 silly gunzTarPerm extractEntry test/index.js
3036 silly gunzTarPerm extractEntry test/integration/test-delayed-stream-auto-pause.js
3037 silly gunzTarPerm extractEntry examples/offset.js
3038 silly gunzTarPerm extractEntry examples/time.js
3039 silly gunzTarPerm extractEntry lib/index.js
3040 silly gunzTarPerm extractEntry test/index.js
3041 silly gunzTarPerm extractEntry test/integration/test-delayed-stream-pause.js
3042 silly gunzTarPerm extractEntry test/integration/test-delayed-stream.js
3043 silly gunzTarPerm extractEntry test/integration/test-handle-source-errors.js
3044 silly gunzTarPerm extractEntry test/integration/test-max-data-size.js
3045 silly gunzTarPerm extractEntry test/integration/test-pipe-resumes.js
3046 silly gunzTarPerm extractEntry test/integration/test-proxy-readable.js
3047 silly lockFile 874b3e9f-ules-hawk-node-modules-cryptiles tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/cryptiles
3048 silly lockFile 874b3e9f-ules-hawk-node-modules-cryptiles tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/cryptiles
3049 silly lockFile 3c5cf43e--npm-cryptiles-0-2-2-package-tgz tar:///home/patcon/.npm/cryptiles/0.2.2/package.tgz
3050 silly lockFile 3c5cf43e--npm-cryptiles-0-2-2-package-tgz tar:///home/patcon/.npm/cryptiles/0.2.2/package.tgz
3051 info preinstall cryptiles@0.2.2
3052 verbose readDependencies using package.json deps
3053 verbose readDependencies using package.json deps
3054 silly resolved []
3055 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/cryptiles
3056 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/cryptiles
3057 verbose linkStuff [ true,
3057 verbose linkStuff '/usr/lib/node_modules',
3057 verbose linkStuff false,
3057 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules' ]
3058 info linkStuff cryptiles@0.2.2
3059 verbose linkBins cryptiles@0.2.2
3060 verbose linkMans cryptiles@0.2.2
3061 verbose rebuildBundles cryptiles@0.2.2
3062 info install cryptiles@0.2.2
3063 info postinstall cryptiles@0.2.2
3064 silly lockFile c8f0ccf8-e-modules-hawk-node-modules-sntp tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/sntp
3065 silly lockFile c8f0ccf8-e-modules-hawk-node-modules-sntp tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/sntp
3066 silly lockFile efdad317-atcon-npm-sntp-0-2-4-package-tgz tar:///home/patcon/.npm/sntp/0.2.4/package.tgz
3067 silly lockFile efdad317-atcon-npm-sntp-0-2-4-package-tgz tar:///home/patcon/.npm/sntp/0.2.4/package.tgz
3068 info preinstall sntp@0.2.4
3069 silly lockFile b4df2728-ream-node-modules-delayed-stream tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream
3070 silly lockFile b4df2728-ream-node-modules-delayed-stream tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream
3071 silly lockFile 723939ab-delayed-stream-0-0-5-package-tgz tar:///home/patcon/.npm/delayed-stream/0.0.5/package.tgz
3072 silly lockFile 723939ab-delayed-stream-0-0-5-package-tgz tar:///home/patcon/.npm/delayed-stream/0.0.5/package.tgz
3073 verbose readDependencies using package.json deps
3074 verbose readDependencies using package.json deps
3075 silly resolved []
3076 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/sntp
3077 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/sntp
3078 verbose linkStuff [ true,
3078 verbose linkStuff '/usr/lib/node_modules',
3078 verbose linkStuff false,
3078 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules' ]
3079 info linkStuff sntp@0.2.4
3080 verbose linkBins sntp@0.2.4
3081 verbose linkMans sntp@0.2.4
3082 verbose rebuildBundles sntp@0.2.4
3083 info install sntp@0.2.4
3084 info preinstall delayed-stream@0.0.5
3085 info postinstall sntp@0.2.4
3086 verbose readDependencies using package.json deps
3087 verbose readDependencies using package.json deps
3088 silly resolved []
3089 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream
3090 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream
3091 verbose linkStuff [ true,
3091 verbose linkStuff '/usr/lib/node_modules',
3091 verbose linkStuff false,
3091 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules' ]
3092 info linkStuff delayed-stream@0.0.5
3093 verbose linkBins delayed-stream@0.0.5
3094 verbose linkMans delayed-stream@0.0.5
3095 verbose rebuildBundles delayed-stream@0.0.5
3096 info install delayed-stream@0.0.5
3097 info postinstall delayed-stream@0.0.5
3098 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream
3099 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules/combined-stream
3100 verbose linkStuff [ true,
3100 verbose linkStuff '/usr/lib/node_modules',
3100 verbose linkStuff false,
3100 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data/node_modules' ]
3101 info linkStuff combined-stream@0.0.4
3102 verbose linkBins combined-stream@0.0.4
3103 verbose linkMans combined-stream@0.0.4
3104 verbose rebuildBundles combined-stream@0.0.4
3105 verbose rebuildBundles [ 'delayed-stream' ]
3106 info install combined-stream@0.0.4
3107 info postinstall combined-stream@0.0.4
3108 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data
3109 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/form-data
3110 verbose linkStuff [ true,
3110 verbose linkStuff '/usr/lib/node_modules',
3110 verbose linkStuff false,
3110 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules' ]
3111 info linkStuff form-data@0.1.2
3112 verbose linkBins form-data@0.1.2
3113 verbose linkMans form-data@0.1.2
3114 verbose rebuildBundles form-data@0.1.2
3115 silly lockFile ea08b688-e-modules-hawk-node-modules-boom tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/boom
3116 silly lockFile ea08b688-e-modules-hawk-node-modules-boom tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/boom
3117 verbose rebuildBundles [ 'async', 'combined-stream' ]
3118 info install form-data@0.1.2
3119 silly lockFile f9199456-atcon-npm-boom-0-4-2-package-tgz tar:///home/patcon/.npm/boom/0.4.2/package.tgz
3120 silly lockFile f9199456-atcon-npm-boom-0-4-2-package-tgz tar:///home/patcon/.npm/boom/0.4.2/package.tgz
3121 info postinstall form-data@0.1.2
3122 info preinstall boom@0.4.2
3123 verbose readDependencies using package.json deps
3124 verbose readDependencies using package.json deps
3125 silly resolved []
3126 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/boom
3127 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/boom
3128 verbose linkStuff [ true,
3128 verbose linkStuff '/usr/lib/node_modules',
3128 verbose linkStuff false,
3128 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules' ]
3129 info linkStuff boom@0.4.2
3130 verbose linkBins boom@0.4.2
3131 verbose linkMans boom@0.4.2
3132 verbose rebuildBundles boom@0.4.2
3133 info install boom@0.4.2
3134 info postinstall boom@0.4.2
3135 silly lockFile f56f736d-e-modules-hawk-node-modules-hoek tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/hoek
3136 silly lockFile f56f736d-e-modules-hawk-node-modules-hoek tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/hoek
3137 silly lockFile ff3cc852-atcon-npm-hoek-0-9-1-package-tgz tar:///home/patcon/.npm/hoek/0.9.1/package.tgz
3138 silly lockFile ff3cc852-atcon-npm-hoek-0-9-1-package-tgz tar:///home/patcon/.npm/hoek/0.9.1/package.tgz
3139 info preinstall hoek@0.9.1
3140 verbose readDependencies using package.json deps
3141 verbose readDependencies using package.json deps
3142 silly resolved []
3143 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/hoek
3144 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules/hoek
3145 verbose linkStuff [ true,
3145 verbose linkStuff '/usr/lib/node_modules',
3145 verbose linkStuff false,
3145 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk/node_modules' ]
3146 info linkStuff hoek@0.9.1
3147 verbose linkBins hoek@0.9.1
3148 verbose linkMans hoek@0.9.1
3149 verbose rebuildBundles hoek@0.9.1
3150 info install hoek@0.9.1
3151 info postinstall hoek@0.9.1
3152 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk
3153 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/hawk
3154 verbose linkStuff [ true,
3154 verbose linkStuff '/usr/lib/node_modules',
3154 verbose linkStuff false,
3154 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules' ]
3155 info linkStuff hawk@1.0.0
3156 verbose linkBins hawk@1.0.0
3157 verbose linkMans hawk@1.0.0
3158 verbose rebuildBundles hawk@1.0.0
3159 verbose rebuildBundles [ 'boom', 'cryptiles', 'hoek', 'sntp' ]
3160 info install hawk@1.0.0
3161 info postinstall hawk@1.0.0
3162 http 304 https://registry.npmjs.org/assert-plus/0.1.2
3163 silly registry.get cb [ 304,
3163 silly registry.get { date: 'Sun, 30 Mar 2014 19:17:31 GMT',
3163 silly registry.get server: 'Apache',
3163 silly registry.get via: '1.1 varnish',
3163 silly registry.get 'last-modified': 'Sun, 30 Mar 2014 19:17:31 GMT',
3163 silly registry.get 'cache-control': 'max-age=1',
3163 silly registry.get etag: '"8JQD6UZQ7AETWZEZUUAGB1E5M"',
3163 silly registry.get 'x-served-by': 'cache-lax1433-LAX',
3163 silly registry.get 'x-cache': 'HIT',
3163 silly registry.get 'x-cache-hits': '1',
3163 silly registry.get 'x-timer': 'S1396207051.495036125,VS0,VE64',
3163 silly registry.get vary: 'Accept',
3163 silly registry.get 'content-length': '0',
3163 silly registry.get 'keep-alive': 'timeout=10, max=50',
3163 silly registry.get connection: 'Keep-Alive' } ]
3164 verbose etag assert-plus/0.1.2 from cache
3165 silly lockFile 46222085-assert-plus-0-1-2 assert-plus@0.1.2
3166 silly lockFile 46222085-assert-plus-0-1-2 assert-plus@0.1.2
3167 silly resolved [ { name: 'ctype',
3167 silly resolved version: '0.5.2',
3167 silly resolved description: 'read and write binary structures and data types',
3167 silly resolved homepage: 'https://github.com/rmustacc/node-ctype',
3167 silly resolved author: { name: 'Robert Mustacchi', email: 'rm@fingolfin.org' },
3167 silly resolved engines: { node: '>= 0.4' },
3167 silly resolved main: 'ctype.js',
3167 silly resolved readme: 'Node-CType is a way to read and write binary data in structured and easy to use\nformat. Its name comes from the C header file.\n\nTo get started, simply clone the repository or use npm to install it. Once it is\nthere, simply require it.\n\ngit clone git://github.com/rmustacc/node-ctype\nnpm install ctype\nvar mod_ctype = require(\'ctype\')\n\n\nThere are two APIs that you can use, depending on what abstraction you\'d like.\nThe low level API let\'s you read and write individual integers and floats from\nbuffers. The higher level API let\'s you read and write structures of these. To\nillustrate this, let\'s looks look at how we would read and write a binary\nencoded x,y point.\n\nIn C we would define this structure as follows:\n\ntypedef struct point {\n\tuint16_t\tp_x;\n\tuint16_t\tp_y;\n} point_t;\n\nTo read a binary encoded point from a Buffer, we first need to create a CType\nparser (where we specify the endian and other options) and add the typedef.\n\nvar parser = new mod_ctype.Parser({ endian: \'big\' });\nparser.typedef(\'point_t\', [\n\t{ x: { type: \'uint16_t\' } },\n\t{ y: { type: \'uint16_t\' } }\n]);\n\nFrom here, given a buffer buf and an offset into it, we can read a point.\n\nvar out = parser.readData([ { point: { type: \'point_t\' } } ], buffer, 0);\nconsole.log(out);\n{ point: { x: 23, y: 42 } }\n\nAnother way to get the same information would be to use the low level methods.\nNote that these require you to manually deal with the offset. Here\'s how we\'d\nget the same values of x and y from the buffer.\n\nvar x = mod_ctype.ruint16(buf, \'big\', 0);\nvar y = mod_ctype.ruint16(buf, \'big\', 2);\nconsole.log(x + \', \' + y);\n23, 42\n\nThe true power of this API comes from the ability to define and nest typedefs,\njust as you would in C. By default, the following types are defined by default.\nNote that they return a Number, unless indicated otherwise.\n\n * int8_t\n * int16_t\n * int32_t\n * int64_t (returns an array where val[0] << 32 + val[1] would be the value)\n * uint8_t\n * uint16_t\n * uint32_t\n * uint64_t (returns an array where val[0] << 32 + val[1] would be the value)\n * float\n * double\n * char (either returns a buffer with that character or a uint8_t)\n * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0)\n\n\nctf2json integration:\n\nNode-CType supports consuming the output of ctf2json. Once you read in a JSON file,\nall you have to do to add all the definitions it contains is:\n\nvar data, parser;\ndata = JSON.parse(parsedJSONData);\nparser = mod_ctype.parseCTF(data, { endian: \'big\' });\n\nFor more documentation, see the file README.old. Full documentation is in the\nprocess of being rewritten as a series of manual pages which will be available\nin the repository and online for viewing.\n\nTo read the ctio manual page simple run, from the root of the workspace:\n\nman -Mman -s 3ctype ctio\n',
3167 silly resolved readmeFilename: 'README',
3167 silly resolved _id: 'ctype@0.5.2',
3167 silly resolved _from: 'ctype@0.5.2' },
3167 silly resolved { author: { name: 'Mark Cavage', email: 'mcavage@gmail.com' },
3167 silly resolved contributors: [ [Object], [Object] ],
3167 silly resolved name: 'asn1',
3167 silly resolved description: 'Contains parsers and serializers for ASN.1 (currently BER only)',
3167 silly resolved version: '0.1.11',
3167 silly resolved repository: { type: 'git', url: 'git://github.com/mcavage/node-asn1.git' },
3167 silly resolved main: 'lib/index.js',
3167 silly resolved engines: { node: '>=0.4.9' },
3167 silly resolved dependencies: {},
3167 silly resolved devDependencies: { tap: '0.1.4' },
3167 silly resolved scripts:
3167 silly resolved { pretest: 'which gjslint; if [[ "$?" = 0 ]] ; then gjslint --nojsdoc -r lib -r tst; else echo "Missing gjslint. Skipping lint"; fi',
3167 silly resolved test: 'tap ./tst' },
3167 silly resolved readme: 'node-asn1 is a library for encoding and decoding ASN.1 datatypes in pure JS.\nCurrently BER encoding is supported; at some point I\'ll likely have to do DER.\n\n## Usage\n\nMostly, if you\'re *actually* needing to read and write ASN.1, you probably don\'t\nneed this readme to explain what and why. If you have no idea what ASN.1 is,\nsee this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc\n\nThe source is pretty much self-explanatory, and has read/write methods for the\ncommon types out there.\n\n### Decoding\n\nThe following reads an ASN.1 sequence with a boolean.\n\n var Ber = require(\'asn1\').Ber;\n\n var reader = new Ber.Reader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff]));\n\n reader.readSequence();\n console.log(\'Sequence len: \' + reader.length);\n if (reader.peek() === Ber.Boolean)\n console.log(reader.readBoolean());\n\n### Encoding\n\nThe following generates the same payload as above.\n\n var Ber = require(\'asn1\').Ber;\n\n var writer = new Ber.Writer();\n\n writer.startSequence();\n writer.writeBoolean(true);\n writer.endSequence();\n\n console.log(writer.buffer);\n\n## Installation\n\n npm install asn1\n\n## License\n\nMIT.\n\n## Bugs\n\nSee <https://github.com/mcavage/node-asn1/issues>.\n',
3167 silly resolved readmeFilename: 'README.md',
3167 silly resolved bugs: { url: 'https://github.com/mcavage/node-asn1/issues' },
3167 silly resolved homepage: 'https://github.com/mcavage/node-asn1',
3167 silly resolved _id: 'asn1@0.1.11',
3167 silly resolved _from: 'asn1@0.1.11' },
3167 silly resolved { author: { name: 'Mark Cavage', email: 'mcavage@gmail.com' },
3167 silly resolved name: 'assert-plus',
3167 silly resolved description: 'Extra assertions on top of node\'s assert module',
3167 silly resolved version: '0.1.2',
3167 silly resolved main: './assert.js',
3167 silly resolved dependencies: {},
3167 silly resolved devDependencies: {},
3167 silly resolved optionalDependencies: {},
3167 silly resolved engines: { node: '>=0.6' },
3167 silly resolved readme: '# node-assert-plus\n\nThis library is a super small wrapper over node\'s assert module that has two\nthings: (1) the ability to disable assertions with the environment variable\nNODE_NDEBUG, and (2) some API wrappers for argument testing. Like\n`assert.string(myArg, \'myArg\')`. As a simple example, most of my code looks\nlike this:\n\n var assert = require(\'assert-plus\');\n\n function fooAccount(options, callback) {\n\t assert.object(options, \'options\');\n\t\tassert.number(options.id, \'options.id);\n\t\tassert.bool(options.isManager, \'options.isManager\');\n\t\tassert.string(options.name, \'options.name\');\n\t\tassert.arrayOfString(options.email, \'options.email\');\n\t\tassert.func(callback, \'callback\');\n\n // Do stuff\n\t\tcallback(null, {});\n }\n\n# API\n\nAll methods that *aren\'t* part of node\'s core assert API are simply assumed to\ntake an argument, and then a string \'name\' that\'s not a message; `AssertionError`\nwill be thrown if the assertion fails with a message like:\n\n AssertionError: foo (string) is required\n\tat test (/home/mark/work/foo/foo.js:3:9)\n\tat Object.<anonymous> (/home/mark/work/foo/foo.js:15:1)\n\tat Module._compile (module.js:446:26)\n\tat Object..js (module.js:464:10)\n\tat Module.load (module.js:353:31)\n\tat Function._load (module.js:311:12)\n\tat Array.0 (module.js:484:10)\n\tat EventEmitter._tickCallback (node.js:190:38)\n\nfrom:\n\n function test(foo) {\n\t assert.string(foo, \'foo\');\n }\n\nThere you go. You can check that arrays are of a homogenous type with `Arrayof$Type`:\n\n function test(foo) {\n\t assert.arrayOfString(foo, \'foo\');\n }\n\nYou can assert IFF an argument is not `undefined` (i.e., an optional arg):\n\n assert.optionalString(foo, \'foo\');\n\nLastly, you can opt-out of assertion checking altogether by setting the\nenvironment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have\nlots of assertions, and don\'t want to pay `typeof ()` taxes to v8 in\nproduction.\n\nThe complete list of APIs is:\n\n* assert.bool\n* assert.buffer\n* assert.func\n* assert.number\n* assert.object\n* assert.string\n* assert.arrayOfBool\n* assert.arrayOfFunc\n* assert.arrayOfNumber\n* assert.arrayOfObject\n* assert.arrayOfString\n* assert.optionalBool\n* assert.optionalBuffer\n* assert.optionalFunc\n* assert.optionalNumber\n* assert.optionalObject\n* assert.optionalString\n* assert.optionalArrayOfBool\n* assert.optionalArrayOfFunc\n* assert.optionalArrayOfNumber\n* assert.optionalArrayOfObject\n* assert.optionalArrayOfString\n* assert.AssertionError\n* assert.fail\n* assert.ok\n* assert.equal\n* assert.notEqual\n* assert.deepEqual\n* assert.notDeepEqual\n* assert.strictEqual\n* assert.notStrictEqual\n* assert.throws\n* assert.doesNotThrow\n* assert.ifError\n\n# Installation\n\n npm install assert-plus\n\n## License\n\nThe MIT License (MIT)\nCopyright (c) 2012 Mark Cavage\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the "Software"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n## Bugs\n\nSee <https://github.com/mcavage/node-assert-plus/issues>.\n',
3167 silly resolved readmeFilename: 'README.md',
3167 silly resolved _id: 'assert-plus@0.1.2',
3167 silly resolved _from: 'assert-plus@0.1.2' } ]
3168 info install ctype@0.5.2 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature
3169 info install asn1@0.1.11 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature
3170 info install assert-plus@0.1.2 into /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature
3171 info installOne ctype@0.5.2
3172 info installOne asn1@0.1.11
3173 info installOne assert-plus@0.1.2
3174 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/ctype unbuild
3175 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/asn1 unbuild
3176 info /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/assert-plus unbuild
3177 verbose tar unpack /home/patcon/.npm/ctype/0.5.2/package.tgz
3178 silly lockFile e5b2aa6f-ttp-signature-node-modules-ctype tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/ctype
3179 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/ctype /home/patcon/.npm/e5b2aa6f-ttp-signature-node-modules-ctype.lock
3180 silly lockFile ddcac277-tcon-npm-ctype-0-5-2-package-tgz tar:///home/patcon/.npm/ctype/0.5.2/package.tgz
3181 verbose lock tar:///home/patcon/.npm/ctype/0.5.2/package.tgz /home/patcon/.npm/ddcac277-tcon-npm-ctype-0-5-2-package-tgz.lock
3182 verbose tar unpack /home/patcon/.npm/asn1/0.1.11/package.tgz
3183 silly lockFile ab475028-http-signature-node-modules-asn1 tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/asn1
3184 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/asn1 /home/patcon/.npm/ab475028-http-signature-node-modules-asn1.lock
3185 silly lockFile 49aa26f0-tcon-npm-asn1-0-1-11-package-tgz tar:///home/patcon/.npm/asn1/0.1.11/package.tgz
3186 verbose lock tar:///home/patcon/.npm/asn1/0.1.11/package.tgz /home/patcon/.npm/49aa26f0-tcon-npm-asn1-0-1-11-package-tgz.lock
3187 verbose tar unpack /home/patcon/.npm/assert-plus/0.1.2/package.tgz
3188 silly lockFile c9775f08-gnature-node-modules-assert-plus tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/assert-plus
3189 verbose lock tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/assert-plus /home/patcon/.npm/c9775f08-gnature-node-modules-assert-plus.lock
3190 silly lockFile ad2dbdfc-pm-assert-plus-0-1-2-package-tgz tar:///home/patcon/.npm/assert-plus/0.1.2/package.tgz
3191 verbose lock tar:///home/patcon/.npm/assert-plus/0.1.2/package.tgz /home/patcon/.npm/ad2dbdfc-pm-assert-plus-0-1-2-package-tgz.lock
3192 silly gunzTarPerm modes [ '755', '644' ]
3193 silly gunzTarPerm modes [ '755', '644' ]
3194 silly gunzTarPerm modes [ '755', '644' ]
3195 silly gunzTarPerm extractEntry package.json
3196 silly gunzTarPerm extractEntry package.json
3197 silly gunzTarPerm extractEntry package.json
3198 silly gunzTarPerm extractEntry README
3199 silly gunzTarPerm extractEntry LICENSE
3200 silly gunzTarPerm extractEntry .npmignore
3201 silly gunzTarPerm extractEntry README.md
3202 silly gunzTarPerm extractEntry README.md
3203 silly gunzTarPerm extractEntry assert.js
3204 silly gunzTarPerm extractEntry ctio.js
3205 silly gunzTarPerm extractEntry ctf.js
3206 silly gunzTarPerm extractEntry LICENSE
3207 silly gunzTarPerm extractEntry lib/index.js
3208 silly gunzTarPerm extractEntry lib/ber/errors.js
3209 silly gunzTarPerm extractEntry lib/ber/index.js
3210 silly gunzTarPerm extractEntry ctype.js
3211 silly gunzTarPerm extractEntry CHANGELOG
3212 silly gunzTarPerm extractEntry lib/ber/reader.js
3213 silly gunzTarPerm extractEntry lib/ber/types.js
3214 silly gunzTarPerm extractEntry lib/ber/writer.js
3215 silly gunzTarPerm extractEntry tst/ber/reader.test.js
3216 silly gunzTarPerm extractEntry tst/ber/writer.test.js
3217 silly gunzTarPerm extractEntry man/man3ctype/ctio.3ctype
3218 silly gunzTarPerm extractEntry README.old
3219 silly lockFile c9775f08-gnature-node-modules-assert-plus tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/assert-plus
3220 silly lockFile c9775f08-gnature-node-modules-assert-plus tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/assert-plus
3221 silly lockFile ad2dbdfc-pm-assert-plus-0-1-2-package-tgz tar:///home/patcon/.npm/assert-plus/0.1.2/package.tgz
3222 silly lockFile ad2dbdfc-pm-assert-plus-0-1-2-package-tgz tar:///home/patcon/.npm/assert-plus/0.1.2/package.tgz
3223 info preinstall assert-plus@0.1.2
3224 verbose readDependencies using package.json deps
3225 verbose readDependencies using package.json deps
3226 silly resolved []
3227 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/assert-plus
3228 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/assert-plus
3229 verbose linkStuff [ true,
3229 verbose linkStuff '/usr/lib/node_modules',
3229 verbose linkStuff false,
3229 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules' ]
3230 info linkStuff assert-plus@0.1.2
3231 verbose linkBins assert-plus@0.1.2
3232 verbose linkMans assert-plus@0.1.2
3233 verbose rebuildBundles assert-plus@0.1.2
3234 info install assert-plus@0.1.2
3235 info postinstall assert-plus@0.1.2
3236 silly gunzTarPerm extractEntry tools/jsl.conf
3237 silly gunzTarPerm extractEntry tools/jsstyle
3238 silly gunzTarPerm extractEntry tst/ctf/tst.float.js
3239 silly gunzTarPerm extractEntry tst/ctf/tst.fail.js
3240 silly lockFile ab475028-http-signature-node-modules-asn1 tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/asn1
3241 silly lockFile ab475028-http-signature-node-modules-asn1 tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/asn1
3242 silly lockFile 49aa26f0-tcon-npm-asn1-0-1-11-package-tgz tar:///home/patcon/.npm/asn1/0.1.11/package.tgz
3243 silly lockFile 49aa26f0-tcon-npm-asn1-0-1-11-package-tgz tar:///home/patcon/.npm/asn1/0.1.11/package.tgz
3244 info preinstall asn1@0.1.11
3245 verbose readDependencies using package.json deps
3246 verbose readDependencies using package.json deps
3247 silly resolved []
3248 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/asn1
3249 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/asn1
3250 verbose linkStuff [ true,
3250 verbose linkStuff '/usr/lib/node_modules',
3250 verbose linkStuff false,
3250 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules' ]
3251 info linkStuff asn1@0.1.11
3252 verbose linkBins asn1@0.1.11
3253 verbose linkMans asn1@0.1.11
3254 verbose rebuildBundles asn1@0.1.11
3255 info install asn1@0.1.11
3256 info postinstall asn1@0.1.11
3257 silly gunzTarPerm extractEntry tst/ctf/tst.int.js
3258 silly gunzTarPerm extractEntry tst/ctf/tst.psinfo.js
3259 silly gunzTarPerm extractEntry tst/ctf/tst.struct.js
3260 silly gunzTarPerm extractEntry tst/ctf/tst.typedef.js
3261 silly gunzTarPerm extractEntry tst/ctf/psinfo.json
3262 silly gunzTarPerm extractEntry tst/ctf/struct.json
3263 silly gunzTarPerm extractEntry tst/ctf/float.json
3264 silly gunzTarPerm extractEntry tst/ctf/int.json
3265 silly gunzTarPerm extractEntry tst/ctf/typedef.json
3266 silly gunzTarPerm extractEntry tst/ctio/float/tst.rfloat.js
3267 silly gunzTarPerm extractEntry tst/ctio/float/tst.wfloat.js
3268 silly gunzTarPerm extractEntry tst/ctio/int/tst.64.js
3269 silly gunzTarPerm extractEntry tst/ctio/int/tst.rint.js
3270 silly gunzTarPerm extractEntry tst/ctio/int/tst.wbounds.js
3271 silly gunzTarPerm extractEntry tst/ctio/int/tst.wint.js
3272 silly gunzTarPerm extractEntry tst/ctio/uint/tst.64.js
3273 silly gunzTarPerm extractEntry tst/ctio/uint/tst.roundtrip.js
3274 silly gunzTarPerm extractEntry tst/ctio/uint/tst.ruint.js
3275 silly gunzTarPerm extractEntry tst/ctio/uint/tst.wuint.js
3276 silly gunzTarPerm extractEntry tst/ctype/tst.basicr.js
3277 silly gunzTarPerm extractEntry tst/ctype/tst.basicw.js
3278 silly gunzTarPerm extractEntry tst/ctype/tst.char.js
3279 silly gunzTarPerm extractEntry tst/ctype/tst.endian.js
3280 silly gunzTarPerm extractEntry tst/ctype/tst.oldwrite.js
3281 silly gunzTarPerm extractEntry tst/ctype/tst.readSize.js
3282 silly gunzTarPerm extractEntry tst/ctype/tst.structw.js
3283 silly gunzTarPerm extractEntry tst/ctype/tst.writeStruct.js
3284 silly lockFile e5b2aa6f-ttp-signature-node-modules-ctype tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/ctype
3285 silly lockFile e5b2aa6f-ttp-signature-node-modules-ctype tar:///usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/ctype
3286 silly lockFile ddcac277-tcon-npm-ctype-0-5-2-package-tgz tar:///home/patcon/.npm/ctype/0.5.2/package.tgz
3287 silly lockFile ddcac277-tcon-npm-ctype-0-5-2-package-tgz tar:///home/patcon/.npm/ctype/0.5.2/package.tgz
3288 info preinstall ctype@0.5.2
3289 verbose readDependencies using package.json deps
3290 verbose readDependencies using package.json deps
3291 silly resolved []
3292 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/ctype
3293 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules/ctype
3294 verbose linkStuff [ true,
3294 verbose linkStuff '/usr/lib/node_modules',
3294 verbose linkStuff false,
3294 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature/node_modules' ]
3295 info linkStuff ctype@0.5.2
3296 verbose linkBins ctype@0.5.2
3297 verbose linkMans ctype@0.5.2
3298 verbose rebuildBundles ctype@0.5.2
3299 info install ctype@0.5.2
3300 info postinstall ctype@0.5.2
3301 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature
3302 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules/http-signature
3303 verbose linkStuff [ true,
3303 verbose linkStuff '/usr/lib/node_modules',
3303 verbose linkStuff false,
3303 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request/node_modules' ]
3304 info linkStuff http-signature@0.10.0
3305 verbose linkBins http-signature@0.10.0
3306 verbose linkMans http-signature@0.10.0
3307 verbose rebuildBundles http-signature@0.10.0
3308 verbose rebuildBundles [ 'asn1', 'assert-plus', 'ctype' ]
3309 info install http-signature@0.10.0
3310 info postinstall http-signature@0.10.0
3311 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
3312 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules/request
3313 verbose linkStuff [ true,
3313 verbose linkStuff '/usr/lib/node_modules',
3313 verbose linkStuff false,
3313 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules/npm-registry-client/node_modules' ]
3314 info linkStuff request@2.34.0
3315 verbose linkBins request@2.34.0
3316 verbose linkMans request@2.34.0
3317 verbose rebuildBundles request@2.34.0
3318 verbose rebuildBundles [ 'aws-sign2',
3318 verbose rebuildBundles 'forever-agent',
3318 verbose rebuildBundles 'form-data',
3318 verbose rebuildBundles 'hawk',
3318 verbose rebuildBundles 'http-signature',
3318 verbose rebuildBundles 'json-stringify-safe',
3318 verbose rebuildBundles 'mime',
3318 verbose rebuildBundles 'node-uuid',
3318 verbose rebuildBundles 'oauth-sign',
3318 verbose rebuildBundles 'qs',
3318 verbose rebuildBundles 'tough-cookie',
3318 verbose rebuildBundles 'tunnel-agent' ]
3319 info install request@2.34.0
3320 info postinstall request@2.34.0
3321 verbose about to build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client
3322 info build /usr/lib/node_modules/npmsearch/node_modules/npm-registry-client
3323 verbose linkStuff [ true,
3323 verbose linkStuff '/usr/lib/node_modules',
3323 verbose linkStuff false,
3323 verbose linkStuff '/usr/lib/node_modules/npmsearch/node_modules' ]
3324 info linkStuff npm-registry-client@0.2.31
3325 verbose linkBins npm-registry-client@0.2.31
3326 verbose linkMans npm-registry-client@0.2.31
3327 verbose rebuildBundles npm-registry-client@0.2.31
3328 verbose rebuildBundles [ '.bin',
3328 verbose rebuildBundles 'chownr',
3328 verbose rebuildBundles 'couch-login',
3328 verbose rebuildBundles 'graceful-fs',
3328 verbose rebuildBundles 'npmlog',
3328 verbose rebuildBundles 'request',
3328 verbose rebuildBundles 'retry',
3328 verbose rebuildBundles 'rimraf',
3328 verbose rebuildBundles 'semver',
3328 verbose rebuildBundles 'slide' ]
3329 info install npm-registry-client@0.2.31
3330 info postinstall npm-registry-client@0.2.31
3331 info sqlite3@2.1.19 Failed to exec install script
3332 info /usr/lib/node_modules/npmsearch/node_modules/sqlite3 unbuild
3333 info preuninstall sqlite3@2.1.19
3334 info uninstall sqlite3@2.1.19
3335 verbose false,/usr/lib/node_modules,/usr/lib/node_modules/npmsearch/node_modules unbuild sqlite3@2.1.19
3336 info postuninstall sqlite3@2.1.19
3337 verbose about to build /usr/lib/node_modules/npmsearch
3338 info /usr/lib/node_modules/npmsearch unbuild
3339 info preuninstall npmsearch@0.6.1
3340 info uninstall npmsearch@0.6.1
3341 verbose true,/usr/lib/node_modules,/usr/lib/node_modules unbuild npmsearch@0.6.1
3342 verbose /usr/bin,[object Object] binRoot
3343 info postuninstall npmsearch@0.6.1
3344 error sqlite3@2.1.19 install: `node build.js`
3344 error Exit status 1
3345 error Failed at the sqlite3@2.1.19 install script.
3345 error This is most likely a problem with the sqlite3 package,
3345 error not with npm itself.
3345 error Tell the author that this fails on your system:
3345 error node build.js
3345 error You can get their info via:
3345 error npm owner ls sqlite3
3345 error There is likely additional logging output above.
3346 error System Linux 3.11.0-18-generic
3347 error command "/usr/bin/node" "/usr/bin/npm" "install" "-g" "npmsearch"
3348 error cwd /home/patcon/repos/roobot
3349 error node -v v0.10.26
3350 error npm -v 1.4.3
3351 error code ELIFECYCLE
3352 verbose exit [ 1, true ]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment