Skip to content

Instantly share code, notes, and snippets.

@joelmoss
Created December 18, 2013 17:36
Show Gist options
  • Save joelmoss/8026518 to your computer and use it in GitHub Desktop.
Save joelmoss/8026518 to your computer and use it in GitHub Desktop.
Last login: Wed Dec 18 17:11:36 on ttys004
~/dev/applicationcraft/codio/chef-repo  ± master ●  ssh [email protected]
Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.2.0-54-virtual x86_64)
* Documentation: https://help.ubuntu.com/
System information as of Wed Dec 18 17:35:40 UTC 2013
System load: 0.0 Processes: 70
Usage of /: 25.5% of 7.87GB Users logged in: 1
Memory usage: 26% IP address for eth0: 10.154.152.225
Swap usage: 0%
Graph this data and manage this system at https://landscape.canonical.com/
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
Use Juju to deploy your cloud instances and workloads:
https://juju.ubuntu.com/#cloud-precise
Last login: Wed Dec 18 17:27:39 2013 from host-80-47-34-222.as13285.net
sharejs@sharejsX:~$ cat /var/www/sharejs/releases/20131218171
20131218171339/ 20131218171509/
sharejs@sharejsX:~$ cat /var/www/sharejs/releases/20131218171
20131218171339/ 20131218171509/
sharejs@sharejsX:~$ cat /var/www/sharejs/releases/20131218171509/
bin/ config/ docs/ .gitignore .jshintrc node_modules/ Procfile test/
Capfile config-examples/ Gemfile gruntfile.coffee lib/ npm-debug.log README.md
codio-options.js CONTRIBUTING.md Gemfile.lock index.js logs/ package.json scripts/
sharejs@sharejsX:~$ cat /var/www/sharejs/releases/20131218171509/npm-debug.log
0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'install', '--production' ]
2 info using [email protected]
3 info using [email protected]
4 verbose node symlink /usr/bin/node
5 verbose readDependencies using package.json deps
6 verbose install where, deps [ '/var/www/sharejs/releases/20131218171509',
6 verbose install [ 'connect',
6 verbose install 'querystring',
6 verbose install 'amqp',
6 verbose install 'log4js',
6 verbose install 'nodetime',
6 verbose install 'share',
6 verbose install 'lodash',
6 verbose install 'newrelic',
6 verbose install 'commander',
6 verbose install 'transport-adapters',
6 verbose install 'redis',
6 verbose install 'sockjs',
6 verbose install 'livedb-mongo',
6 verbose install 'livedb',
6 verbose install 'express',
6 verbose install 'rbytes',
6 verbose install 'isbinaryfile',
6 verbose install 'ottypes',
6 verbose install 'async',
6 verbose install 'node-codio',
6 verbose install 'thalassa' ] ]
7 info preinstall [email protected]
8 verbose readDependencies using package.json deps
9 verbose cache add [ 'querystring@~0.2.0', null ]
10 verbose cache add name=undefined spec="querystring@~0.2.0" args=["querystring@~0.2.0",null]
11 verbose parsed url { protocol: null,
11 verbose parsed url slashes: null,
11 verbose parsed url auth: null,
11 verbose parsed url host: null,
11 verbose parsed url port: null,
11 verbose parsed url hostname: null,
11 verbose parsed url hash: null,
11 verbose parsed url search: null,
11 verbose parsed url query: null,
11 verbose parsed url pathname: 'querystring@~0.2.0',
11 verbose parsed url path: 'querystring@~0.2.0',
11 verbose parsed url href: 'querystring@~0.2.0' }
12 verbose cache add name="querystring" spec="~0.2.0" args=["querystring","~0.2.0"]
13 verbose parsed url { protocol: null,
13 verbose parsed url slashes: null,
13 verbose parsed url auth: null,
13 verbose parsed url host: null,
13 verbose parsed url port: null,
13 verbose parsed url hostname: null,
13 verbose parsed url hash: null,
13 verbose parsed url search: null,
13 verbose parsed url query: null,
13 verbose parsed url pathname: '~0.2.0',
13 verbose parsed url path: '~0.2.0',
13 verbose parsed url href: '~0.2.0' }
14 verbose addNamed [ 'querystring', '~0.2.0' ]
15 verbose addNamed [ null, '>=0.2.0-0 <0.3.0-0' ]
16 silly lockFile 4d77a706-querystring-0-2-0 querystring@~0.2.0
17 verbose lock querystring@~0.2.0 /home/sharejs/.npm/4d77a706-querystring-0-2-0.lock
18 verbose cache add [ '[email protected]', null ]
19 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
20 verbose parsed url { protocol: null,
20 verbose parsed url slashes: null,
20 verbose parsed url auth: null,
20 verbose parsed url host: null,
20 verbose parsed url port: null,
20 verbose parsed url hostname: null,
20 verbose parsed url hash: null,
20 verbose parsed url search: null,
20 verbose parsed url query: null,
20 verbose parsed url pathname: '[email protected]',
20 verbose parsed url path: '[email protected]',
20 verbose parsed url href: '[email protected]' }
21 verbose cache add name="nodetime" spec="0.8.13" args=["nodetime","0.8.13"]
22 verbose parsed url { protocol: null,
22 verbose parsed url slashes: null,
22 verbose parsed url auth: null,
22 verbose parsed url host: null,
22 verbose parsed url port: null,
22 verbose parsed url hostname: null,
22 verbose parsed url hash: null,
22 verbose parsed url search: null,
22 verbose parsed url query: null,
22 verbose parsed url pathname: '0.8.13',
22 verbose parsed url path: '0.8.13',
22 verbose parsed url href: '0.8.13' }
23 verbose addNamed [ 'nodetime', '0.8.13' ]
24 verbose addNamed [ '0.8.13', '0.8.13' ]
25 silly lockFile d0bab4ef-nodetime-0-8-13 [email protected]
26 verbose lock [email protected] /home/sharejs/.npm/d0bab4ef-nodetime-0-8-13.lock
27 verbose cache add [ 'amqp@~0.1.7', null ]
28 verbose cache add name=undefined spec="amqp@~0.1.7" args=["amqp@~0.1.7",null]
29 verbose parsed url { protocol: null,
29 verbose parsed url slashes: null,
29 verbose parsed url auth: null,
29 verbose parsed url host: null,
29 verbose parsed url port: null,
29 verbose parsed url hostname: null,
29 verbose parsed url hash: null,
29 verbose parsed url search: null,
29 verbose parsed url query: null,
29 verbose parsed url pathname: 'amqp@~0.1.7',
29 verbose parsed url path: 'amqp@~0.1.7',
29 verbose parsed url href: 'amqp@~0.1.7' }
30 verbose cache add name="amqp" spec="~0.1.7" args=["amqp","~0.1.7"]
31 verbose parsed url { protocol: null,
31 verbose parsed url slashes: null,
31 verbose parsed url auth: null,
31 verbose parsed url host: null,
31 verbose parsed url port: null,
31 verbose parsed url hostname: null,
31 verbose parsed url hash: null,
31 verbose parsed url search: null,
31 verbose parsed url query: null,
31 verbose parsed url pathname: '~0.1.7',
31 verbose parsed url path: '~0.1.7',
31 verbose parsed url href: '~0.1.7' }
32 verbose addNamed [ 'amqp', '~0.1.7' ]
33 verbose addNamed [ null, '>=0.1.7-0 <0.2.0-0' ]
34 silly lockFile 80654d4b-amqp-0-1-7 amqp@~0.1.7
35 verbose lock amqp@~0.1.7 /home/sharejs/.npm/80654d4b-amqp-0-1-7.lock
36 verbose cache add [ 'share@git://github.com/codio/ShareJS#7', null ]
37 verbose cache add name=undefined spec="share@git://github.com/codio/ShareJS#7" args=["share@git://github.com/codio/ShareJS#7",null]
38 verbose parsed url { protocol: null,
38 verbose parsed url slashes: null,
38 verbose parsed url auth: null,
38 verbose parsed url host: null,
38 verbose parsed url port: null,
38 verbose parsed url hostname: null,
38 verbose parsed url hash: '#7',
38 verbose parsed url search: null,
38 verbose parsed url query: null,
38 verbose parsed url pathname: 'share@git://github.com/codio/ShareJS',
38 verbose parsed url path: 'share@git://github.com/codio/ShareJS',
38 verbose parsed url href: 'share@git://github.com/codio/ShareJS#7' }
39 verbose cache add name="share" spec="git://github.com/codio/ShareJS#7" args=["share","git://github.com/codio/ShareJS#7"]
40 verbose parsed url { protocol: 'git:',
40 verbose parsed url slashes: true,
40 verbose parsed url auth: null,
40 verbose parsed url host: 'github.com',
40 verbose parsed url port: null,
40 verbose parsed url hostname: 'github.com',
40 verbose parsed url hash: '#7',
40 verbose parsed url search: null,
40 verbose parsed url query: null,
40 verbose parsed url pathname: '/codio/ShareJS',
40 verbose parsed url path: '/codio/ShareJS',
40 verbose parsed url href: 'git://github.com/codio/ShareJS#7' }
41 silly lockFile effd0fe9-git-github-com-codio-ShareJS-7 git://github.com/codio/ShareJS#7
42 verbose lock git://github.com/codio/ShareJS#7 /home/sharejs/.npm/effd0fe9-git-github-com-codio-ShareJS-7.lock
43 verbose cache add [ 'log4js@~0.6.6', null ]
44 verbose cache add name=undefined spec="log4js@~0.6.6" args=["log4js@~0.6.6",null]
45 verbose parsed url { protocol: null,
45 verbose parsed url slashes: null,
45 verbose parsed url auth: null,
45 verbose parsed url host: null,
45 verbose parsed url port: null,
45 verbose parsed url hostname: null,
45 verbose parsed url hash: null,
45 verbose parsed url search: null,
45 verbose parsed url query: null,
45 verbose parsed url pathname: 'log4js@~0.6.6',
45 verbose parsed url path: 'log4js@~0.6.6',
45 verbose parsed url href: 'log4js@~0.6.6' }
46 verbose cache add name="log4js" spec="~0.6.6" args=["log4js","~0.6.6"]
47 verbose parsed url { protocol: null,
47 verbose parsed url slashes: null,
47 verbose parsed url auth: null,
47 verbose parsed url host: null,
47 verbose parsed url port: null,
47 verbose parsed url hostname: null,
47 verbose parsed url hash: null,
47 verbose parsed url search: null,
47 verbose parsed url query: null,
47 verbose parsed url pathname: '~0.6.6',
47 verbose parsed url path: '~0.6.6',
47 verbose parsed url href: '~0.6.6' }
48 verbose addNamed [ 'log4js', '~0.6.6' ]
49 verbose addNamed [ null, '>=0.6.6-0 <0.7.0-0' ]
50 silly lockFile 7066bf70-log4js-0-6-6 log4js@~0.6.6
51 verbose lock log4js@~0.6.6 /home/sharejs/.npm/7066bf70-log4js-0-6-6.lock
52 verbose cache add [ 'lodash@~2.2.1', null ]
53 verbose cache add name=undefined spec="lodash@~2.2.1" args=["lodash@~2.2.1",null]
54 verbose parsed url { protocol: null,
54 verbose parsed url slashes: null,
54 verbose parsed url auth: null,
54 verbose parsed url host: null,
54 verbose parsed url port: null,
54 verbose parsed url hostname: null,
54 verbose parsed url hash: null,
54 verbose parsed url search: null,
54 verbose parsed url query: null,
54 verbose parsed url pathname: 'lodash@~2.2.1',
54 verbose parsed url path: 'lodash@~2.2.1',
54 verbose parsed url href: 'lodash@~2.2.1' }
55 verbose cache add name="lodash" spec="~2.2.1" args=["lodash","~2.2.1"]
56 verbose parsed url { protocol: null,
56 verbose parsed url slashes: null,
56 verbose parsed url auth: null,
56 verbose parsed url host: null,
56 verbose parsed url port: null,
56 verbose parsed url hostname: null,
56 verbose parsed url hash: null,
56 verbose parsed url search: null,
56 verbose parsed url query: null,
56 verbose parsed url pathname: '~2.2.1',
56 verbose parsed url path: '~2.2.1',
56 verbose parsed url href: '~2.2.1' }
57 verbose addNamed [ 'lodash', '~2.2.1' ]
58 verbose addNamed [ null, '>=2.2.1-0 <2.3.0-0' ]
59 silly lockFile c46ab6b5-lodash-2-2-1 lodash@~2.2.1
60 verbose lock lodash@~2.2.1 /home/sharejs/.npm/c46ab6b5-lodash-2-2-1.lock
61 verbose cache add [ 'newrelic@~1.0.1', null ]
62 verbose cache add name=undefined spec="newrelic@~1.0.1" args=["newrelic@~1.0.1",null]
63 verbose parsed url { protocol: null,
63 verbose parsed url slashes: null,
63 verbose parsed url auth: null,
63 verbose parsed url host: null,
63 verbose parsed url port: null,
63 verbose parsed url hostname: null,
63 verbose parsed url hash: null,
63 verbose parsed url search: null,
63 verbose parsed url query: null,
63 verbose parsed url pathname: 'newrelic@~1.0.1',
63 verbose parsed url path: 'newrelic@~1.0.1',
63 verbose parsed url href: 'newrelic@~1.0.1' }
64 verbose cache add name="newrelic" spec="~1.0.1" args=["newrelic","~1.0.1"]
65 verbose parsed url { protocol: null,
65 verbose parsed url slashes: null,
65 verbose parsed url auth: null,
65 verbose parsed url host: null,
65 verbose parsed url port: null,
65 verbose parsed url hostname: null,
65 verbose parsed url hash: null,
65 verbose parsed url search: null,
65 verbose parsed url query: null,
65 verbose parsed url pathname: '~1.0.1',
65 verbose parsed url path: '~1.0.1',
65 verbose parsed url href: '~1.0.1' }
66 verbose addNamed [ 'newrelic', '~1.0.1' ]
67 verbose addNamed [ null, '>=1.0.1-0 <1.1.0-0' ]
68 silly lockFile 84829e3f-newrelic-1-0-1 newrelic@~1.0.1
69 verbose lock newrelic@~1.0.1 /home/sharejs/.npm/84829e3f-newrelic-1-0-1.lock
70 verbose cache add [ 'commander@~2.0.0', null ]
71 verbose cache add name=undefined spec="commander@~2.0.0" args=["commander@~2.0.0",null]
72 verbose parsed url { protocol: null,
72 verbose parsed url slashes: null,
72 verbose parsed url auth: null,
72 verbose parsed url host: null,
72 verbose parsed url port: null,
72 verbose parsed url hostname: null,
72 verbose parsed url hash: null,
72 verbose parsed url search: null,
72 verbose parsed url query: null,
72 verbose parsed url pathname: 'commander@~2.0.0',
72 verbose parsed url path: 'commander@~2.0.0',
72 verbose parsed url href: 'commander@~2.0.0' }
73 verbose cache add name="commander" spec="~2.0.0" args=["commander","~2.0.0"]
74 verbose parsed url { protocol: null,
74 verbose parsed url slashes: null,
74 verbose parsed url auth: null,
74 verbose parsed url host: null,
74 verbose parsed url port: null,
74 verbose parsed url hostname: null,
74 verbose parsed url hash: null,
74 verbose parsed url search: null,
74 verbose parsed url query: null,
74 verbose parsed url pathname: '~2.0.0',
74 verbose parsed url path: '~2.0.0',
74 verbose parsed url href: '~2.0.0' }
75 verbose addNamed [ 'commander', '~2.0.0' ]
76 verbose addNamed [ null, '>=2.0.0-0 <2.1.0-0' ]
77 silly lockFile 00733c5f-commander-2-0-0 commander@~2.0.0
78 verbose lock commander@~2.0.0 /home/sharejs/.npm/00733c5f-commander-2-0-0.lock
79 verbose cache add [ 'transport-adapters@git://github.com/Dignifiedquire/transport-adapters',
79 verbose cache add null ]
80 verbose cache add name=undefined spec="transport-adapters@git://github.com/Dignifiedquire/transport-adapters" args=["transport-adapters@git://github.com/Dignifiedquire/transport-adapters",null]
81 verbose parsed url { protocol: null,
81 verbose parsed url slashes: null,
81 verbose parsed url auth: null,
81 verbose parsed url host: null,
81 verbose parsed url port: null,
81 verbose parsed url hostname: null,
81 verbose parsed url hash: null,
81 verbose parsed url search: null,
81 verbose parsed url query: null,
81 verbose parsed url pathname: 'transport-adapters@git://github.com/Dignifiedquire/transport-adapters',
81 verbose parsed url path: 'transport-adapters@git://github.com/Dignifiedquire/transport-adapters',
81 verbose parsed url href: 'transport-adapters@git://github.com/Dignifiedquire/transport-adapters' }
82 verbose cache add name="transport-adapters" spec="git://github.com/Dignifiedquire/transport-adapters" args=["transport-adapters","git://github.com/Dignifiedquire/transport-adapters"]
83 verbose parsed url { protocol: 'git:',
83 verbose parsed url slashes: true,
83 verbose parsed url auth: null,
83 verbose parsed url host: 'github.com',
83 verbose parsed url port: null,
83 verbose parsed url hostname: 'github.com',
83 verbose parsed url hash: null,
83 verbose parsed url search: null,
83 verbose parsed url query: null,
83 verbose parsed url pathname: '/Dignifiedquire/transport-adapters',
83 verbose parsed url path: '/Dignifiedquire/transport-adapters',
83 verbose parsed url href: 'git://github.com/Dignifiedquire/transport-adapters' }
84 silly lockFile 97302940-ignifiedquire-transport-adapters git://github.com/Dignifiedquire/transport-adapters
85 verbose lock git://github.com/Dignifiedquire/transport-adapters /home/sharejs/.npm/97302940-ignifiedquire-transport-adapters.lock
86 verbose cache add [ 'redis@~0.9.0', null ]
87 verbose cache add name=undefined spec="redis@~0.9.0" args=["redis@~0.9.0",null]
88 verbose parsed url { protocol: null,
88 verbose parsed url slashes: null,
88 verbose parsed url auth: null,
88 verbose parsed url host: null,
88 verbose parsed url port: null,
88 verbose parsed url hostname: null,
88 verbose parsed url hash: null,
88 verbose parsed url search: null,
88 verbose parsed url query: null,
88 verbose parsed url pathname: 'redis@~0.9.0',
88 verbose parsed url path: 'redis@~0.9.0',
88 verbose parsed url href: 'redis@~0.9.0' }
89 verbose cache add name="redis" spec="~0.9.0" args=["redis","~0.9.0"]
90 verbose parsed url { protocol: null,
90 verbose parsed url slashes: null,
90 verbose parsed url auth: null,
90 verbose parsed url host: null,
90 verbose parsed url port: null,
90 verbose parsed url hostname: null,
90 verbose parsed url hash: null,
90 verbose parsed url search: null,
90 verbose parsed url query: null,
90 verbose parsed url pathname: '~0.9.0',
90 verbose parsed url path: '~0.9.0',
90 verbose parsed url href: '~0.9.0' }
91 verbose addNamed [ 'redis', '~0.9.0' ]
92 verbose addNamed [ null, '>=0.9.0-0 <0.10.0-0' ]
93 silly lockFile dd751ec6-redis-0-9-0 redis@~0.9.0
94 verbose lock redis@~0.9.0 /home/sharejs/.npm/dd751ec6-redis-0-9-0.lock
95 verbose cache add [ 'sockjs@~0.3.8', null ]
96 verbose cache add name=undefined spec="sockjs@~0.3.8" args=["sockjs@~0.3.8",null]
97 verbose parsed url { protocol: null,
97 verbose parsed url slashes: null,
97 verbose parsed url auth: null,
97 verbose parsed url host: null,
97 verbose parsed url port: null,
97 verbose parsed url hostname: null,
97 verbose parsed url hash: null,
97 verbose parsed url search: null,
97 verbose parsed url query: null,
97 verbose parsed url pathname: 'sockjs@~0.3.8',
97 verbose parsed url path: 'sockjs@~0.3.8',
97 verbose parsed url href: 'sockjs@~0.3.8' }
98 verbose cache add name="sockjs" spec="~0.3.8" args=["sockjs","~0.3.8"]
99 verbose parsed url { protocol: null,
99 verbose parsed url slashes: null,
99 verbose parsed url auth: null,
99 verbose parsed url host: null,
99 verbose parsed url port: null,
99 verbose parsed url hostname: null,
99 verbose parsed url hash: null,
99 verbose parsed url search: null,
99 verbose parsed url query: null,
99 verbose parsed url pathname: '~0.3.8',
99 verbose parsed url path: '~0.3.8',
99 verbose parsed url href: '~0.3.8' }
100 verbose addNamed [ 'sockjs', '~0.3.8' ]
101 verbose addNamed [ null, '>=0.3.8-0 <0.4.0-0' ]
102 silly lockFile 8dbbeff0-sockjs-0-3-8 sockjs@~0.3.8
103 verbose lock sockjs@~0.3.8 /home/sharejs/.npm/8dbbeff0-sockjs-0-3-8.lock
104 verbose cache add [ 'livedb-mongo@~0.2.5', null ]
105 verbose cache add name=undefined spec="livedb-mongo@~0.2.5" args=["livedb-mongo@~0.2.5",null]
106 verbose parsed url { protocol: null,
106 verbose parsed url slashes: null,
106 verbose parsed url auth: null,
106 verbose parsed url host: null,
106 verbose parsed url port: null,
106 verbose parsed url hostname: null,
106 verbose parsed url hash: null,
106 verbose parsed url search: null,
106 verbose parsed url query: null,
106 verbose parsed url pathname: 'livedb-mongo@~0.2.5',
106 verbose parsed url path: 'livedb-mongo@~0.2.5',
106 verbose parsed url href: 'livedb-mongo@~0.2.5' }
107 verbose cache add name="livedb-mongo" spec="~0.2.5" args=["livedb-mongo","~0.2.5"]
108 verbose parsed url { protocol: null,
108 verbose parsed url slashes: null,
108 verbose parsed url auth: null,
108 verbose parsed url host: null,
108 verbose parsed url port: null,
108 verbose parsed url hostname: null,
108 verbose parsed url hash: null,
108 verbose parsed url search: null,
108 verbose parsed url query: null,
108 verbose parsed url pathname: '~0.2.5',
108 verbose parsed url path: '~0.2.5',
108 verbose parsed url href: '~0.2.5' }
109 verbose addNamed [ 'livedb-mongo', '~0.2.5' ]
110 verbose addNamed [ null, '>=0.2.5-0 <0.3.0-0' ]
111 silly lockFile 0d39849d-livedb-mongo-0-2-5 livedb-mongo@~0.2.5
112 verbose lock livedb-mongo@~0.2.5 /home/sharejs/.npm/0d39849d-livedb-mongo-0-2-5.lock
113 verbose cache add [ 'livedb@git://github.com/Dignifiedquire/livedb#old_snapshot',
113 verbose cache add null ]
114 verbose cache add name=undefined spec="livedb@git://github.com/Dignifiedquire/livedb#old_snapshot" args=["livedb@git://github.com/Dignifiedquire/livedb#old_snapshot",null]
115 verbose parsed url { protocol: null,
115 verbose parsed url slashes: null,
115 verbose parsed url auth: null,
115 verbose parsed url host: null,
115 verbose parsed url port: null,
115 verbose parsed url hostname: null,
115 verbose parsed url hash: '#old_snapshot',
115 verbose parsed url search: null,
115 verbose parsed url query: null,
115 verbose parsed url pathname: 'livedb@git://github.com/Dignifiedquire/livedb',
115 verbose parsed url path: 'livedb@git://github.com/Dignifiedquire/livedb',
115 verbose parsed url href: 'livedb@git://github.com/Dignifiedquire/livedb#old_snapshot' }
116 verbose cache add name="livedb" spec="git://github.com/Dignifiedquire/livedb#old_snapshot" args=["livedb","git://github.com/Dignifiedquire/livedb#old_snapshot"]
117 verbose parsed url { protocol: 'git:',
117 verbose parsed url slashes: true,
117 verbose parsed url auth: null,
117 verbose parsed url host: 'github.com',
117 verbose parsed url port: null,
117 verbose parsed url hostname: 'github.com',
117 verbose parsed url hash: '#old_snapshot',
117 verbose parsed url search: null,
117 verbose parsed url query: null,
117 verbose parsed url pathname: '/Dignifiedquire/livedb',
117 verbose parsed url path: '/Dignifiedquire/livedb',
117 verbose parsed url href: 'git://github.com/Dignifiedquire/livedb#old_snapshot' }
118 silly lockFile 5f3f3a31-gnifiedquire-livedb-old-snapshot git://github.com/Dignifiedquire/livedb#old_snapshot
119 verbose lock git://github.com/Dignifiedquire/livedb#old_snapshot /home/sharejs/.npm/5f3f3a31-gnifiedquire-livedb-old-snapshot.lock
120 verbose cache add [ 'express@~3.4.4', null ]
121 verbose cache add name=undefined spec="express@~3.4.4" args=["express@~3.4.4",null]
122 verbose parsed url { protocol: null,
122 verbose parsed url slashes: null,
122 verbose parsed url auth: null,
122 verbose parsed url host: null,
122 verbose parsed url port: null,
122 verbose parsed url hostname: null,
122 verbose parsed url hash: null,
122 verbose parsed url search: null,
122 verbose parsed url query: null,
122 verbose parsed url pathname: 'express@~3.4.4',
122 verbose parsed url path: 'express@~3.4.4',
122 verbose parsed url href: 'express@~3.4.4' }
123 verbose cache add name="express" spec="~3.4.4" args=["express","~3.4.4"]
124 verbose parsed url { protocol: null,
124 verbose parsed url slashes: null,
124 verbose parsed url auth: null,
124 verbose parsed url host: null,
124 verbose parsed url port: null,
124 verbose parsed url hostname: null,
124 verbose parsed url hash: null,
124 verbose parsed url search: null,
124 verbose parsed url query: null,
124 verbose parsed url pathname: '~3.4.4',
124 verbose parsed url path: '~3.4.4',
124 verbose parsed url href: '~3.4.4' }
125 verbose addNamed [ 'express', '~3.4.4' ]
126 verbose addNamed [ null, '>=3.4.4-0 <3.5.0-0' ]
127 silly lockFile c306bdaa-express-3-4-4 express@~3.4.4
128 verbose lock express@~3.4.4 /home/sharejs/.npm/c306bdaa-express-3-4-4.lock
129 verbose cache add [ 'rbytes@~1.0.0', null ]
130 verbose cache add name=undefined spec="rbytes@~1.0.0" args=["rbytes@~1.0.0",null]
131 verbose parsed url { protocol: null,
131 verbose parsed url slashes: null,
131 verbose parsed url auth: null,
131 verbose parsed url host: null,
131 verbose parsed url port: null,
131 verbose parsed url hostname: null,
131 verbose parsed url hash: null,
131 verbose parsed url search: null,
131 verbose parsed url query: null,
131 verbose parsed url pathname: 'rbytes@~1.0.0',
131 verbose parsed url path: 'rbytes@~1.0.0',
131 verbose parsed url href: 'rbytes@~1.0.0' }
132 verbose cache add name="rbytes" spec="~1.0.0" args=["rbytes","~1.0.0"]
133 verbose parsed url { protocol: null,
133 verbose parsed url slashes: null,
133 verbose parsed url auth: null,
133 verbose parsed url host: null,
133 verbose parsed url port: null,
133 verbose parsed url hostname: null,
133 verbose parsed url hash: null,
133 verbose parsed url search: null,
133 verbose parsed url query: null,
133 verbose parsed url pathname: '~1.0.0',
133 verbose parsed url path: '~1.0.0',
133 verbose parsed url href: '~1.0.0' }
134 verbose addNamed [ 'rbytes', '~1.0.0' ]
135 verbose addNamed [ null, '>=1.0.0-0 <1.1.0-0' ]
136 silly lockFile 791288aa-rbytes-1-0-0 rbytes@~1.0.0
137 verbose lock rbytes@~1.0.0 /home/sharejs/.npm/791288aa-rbytes-1-0-0.lock
138 silly addNameRange { name: 'querystring',
138 silly addNameRange range: '>=0.2.0-0 <0.3.0-0',
138 silly addNameRange hasData: false }
139 silly addNameRange { name: 'amqp', range: '>=0.1.7-0 <0.2.0-0', hasData: false }
140 silly addNameRange { name: 'log4js', range: '>=0.6.6-0 <0.7.0-0', hasData: false }
141 silly addNameRange { name: 'lodash', range: '>=2.2.1-0 <2.3.0-0', hasData: false }
142 verbose cache add [ 'isbinaryfile@~0.1.9', null ]
143 verbose cache add name=undefined spec="isbinaryfile@~0.1.9" args=["isbinaryfile@~0.1.9",null]
144 verbose parsed url { protocol: null,
144 verbose parsed url slashes: null,
144 verbose parsed url auth: null,
144 verbose parsed url host: null,
144 verbose parsed url port: null,
144 verbose parsed url hostname: null,
144 verbose parsed url hash: null,
144 verbose parsed url search: null,
144 verbose parsed url query: null,
144 verbose parsed url pathname: 'isbinaryfile@~0.1.9',
144 verbose parsed url path: 'isbinaryfile@~0.1.9',
144 verbose parsed url href: 'isbinaryfile@~0.1.9' }
145 verbose cache add name="isbinaryfile" spec="~0.1.9" args=["isbinaryfile","~0.1.9"]
146 verbose parsed url { protocol: null,
146 verbose parsed url slashes: null,
146 verbose parsed url auth: null,
146 verbose parsed url host: null,
146 verbose parsed url port: null,
146 verbose parsed url hostname: null,
146 verbose parsed url hash: null,
146 verbose parsed url search: null,
146 verbose parsed url query: null,
146 verbose parsed url pathname: '~0.1.9',
146 verbose parsed url path: '~0.1.9',
146 verbose parsed url href: '~0.1.9' }
147 verbose addNamed [ 'isbinaryfile', '~0.1.9' ]
148 verbose addNamed [ null, '>=0.1.9-0 <0.2.0-0' ]
149 silly lockFile 8b5b2b9d-isbinaryfile-0-1-9 isbinaryfile@~0.1.9
150 verbose lock isbinaryfile@~0.1.9 /home/sharejs/.npm/8b5b2b9d-isbinaryfile-0-1-9.lock
151 verbose cache add [ 'ottypes@~1.0.1', null ]
152 verbose cache add name=undefined spec="ottypes@~1.0.1" args=["ottypes@~1.0.1",null]
153 verbose parsed url { protocol: null,
153 verbose parsed url slashes: null,
153 verbose parsed url auth: null,
153 verbose parsed url host: null,
153 verbose parsed url port: null,
153 verbose parsed url hostname: null,
153 verbose parsed url hash: null,
153 verbose parsed url search: null,
153 verbose parsed url query: null,
153 verbose parsed url pathname: 'ottypes@~1.0.1',
153 verbose parsed url path: 'ottypes@~1.0.1',
153 verbose parsed url href: 'ottypes@~1.0.1' }
154 verbose cache add name="ottypes" spec="~1.0.1" args=["ottypes","~1.0.1"]
155 verbose parsed url { protocol: null,
155 verbose parsed url slashes: null,
155 verbose parsed url auth: null,
155 verbose parsed url host: null,
155 verbose parsed url port: null,
155 verbose parsed url hostname: null,
155 verbose parsed url hash: null,
155 verbose parsed url search: null,
155 verbose parsed url query: null,
155 verbose parsed url pathname: '~1.0.1',
155 verbose parsed url path: '~1.0.1',
155 verbose parsed url href: '~1.0.1' }
156 verbose addNamed [ 'ottypes', '~1.0.1' ]
157 verbose addNamed [ null, '>=1.0.1-0 <1.1.0-0' ]
158 silly lockFile 4cbb36db-ottypes-1-0-1 ottypes@~1.0.1
159 verbose lock ottypes@~1.0.1 /home/sharejs/.npm/4cbb36db-ottypes-1-0-1.lock
160 verbose cache add [ 'async@~0.2.9', null ]
161 verbose cache add name=undefined spec="async@~0.2.9" args=["async@~0.2.9",null]
162 verbose parsed url { protocol: null,
162 verbose parsed url slashes: null,
162 verbose parsed url auth: null,
162 verbose parsed url host: null,
162 verbose parsed url port: null,
162 verbose parsed url hostname: null,
162 verbose parsed url hash: null,
162 verbose parsed url search: null,
162 verbose parsed url query: null,
162 verbose parsed url pathname: 'async@~0.2.9',
162 verbose parsed url path: 'async@~0.2.9',
162 verbose parsed url href: 'async@~0.2.9' }
163 verbose cache add name="async" spec="~0.2.9" args=["async","~0.2.9"]
164 verbose parsed url { protocol: null,
164 verbose parsed url slashes: null,
164 verbose parsed url auth: null,
164 verbose parsed url host: null,
164 verbose parsed url port: null,
164 verbose parsed url hostname: null,
164 verbose parsed url hash: null,
164 verbose parsed url search: null,
164 verbose parsed url query: null,
164 verbose parsed url pathname: '~0.2.9',
164 verbose parsed url path: '~0.2.9',
164 verbose parsed url href: '~0.2.9' }
165 verbose addNamed [ 'async', '~0.2.9' ]
166 verbose addNamed [ null, '>=0.2.9-0 <0.3.0-0' ]
167 silly lockFile 5d51c871-async-0-2-9 async@~0.2.9
168 verbose lock async@~0.2.9 /home/sharejs/.npm/5d51c871-async-0-2-9.lock
169 verbose cache add [ 'node-codio@git+ssh://git@codio-node_deploy_key:codio/node-codio',
169 verbose cache add null ]
170 verbose cache add name=undefined spec="node-codio@git+ssh://git@codio-node_deploy_key:codio/node-codio" args=["node-codio@git+ssh://git@codio-node_deploy_key:codio/node-codio",null]
171 verbose parsed url { protocol: null,
171 verbose parsed url slashes: null,
171 verbose parsed url auth: null,
171 verbose parsed url host: null,
171 verbose parsed url port: null,
171 verbose parsed url hostname: null,
171 verbose parsed url hash: null,
171 verbose parsed url search: null,
171 verbose parsed url query: null,
171 verbose parsed url pathname: 'node-codio@git+ssh://git@codio-node_deploy_key:codio/node-codio',
171 verbose parsed url path: 'node-codio@git+ssh://git@codio-node_deploy_key:codio/node-codio',
171 verbose parsed url href: 'node-codio@git+ssh://git@codio-node_deploy_key:codio/node-codio' }
172 verbose cache add name="node-codio" spec="git+ssh://git@codio-node_deploy_key:codio/node-codio" args=["node-codio","git+ssh://git@codio-node_deploy_key:codio/node-codio"]
173 verbose parsed url { protocol: 'git+ssh:',
173 verbose parsed url slashes: true,
173 verbose parsed url auth: 'git',
173 verbose parsed url host: 'codio-node_deploy_key',
173 verbose parsed url port: null,
173 verbose parsed url hostname: 'codio-node_deploy_key',
173 verbose parsed url hash: null,
173 verbose parsed url search: null,
173 verbose parsed url query: null,
173 verbose parsed url pathname: '/:codio/node-codio',
173 verbose parsed url path: '/:codio/node-codio',
173 verbose parsed url href: 'git+ssh://git@codio-node_deploy_key/:codio/node-codio' }
174 silly lockFile 78371dad-node-deploy-key-codio-node-codio git+ssh://git@codio-node_deploy_key:codio/node-codio
175 verbose lock git+ssh://git@codio-node_deploy_key:codio/node-codio /home/sharejs/.npm/78371dad-node-deploy-key-codio-node-codio.lock
176 verbose cache add [ 'thalassa@~0.3.2', null ]
177 verbose cache add name=undefined spec="thalassa@~0.3.2" args=["thalassa@~0.3.2",null]
178 verbose parsed url { protocol: null,
178 verbose parsed url slashes: null,
178 verbose parsed url auth: null,
178 verbose parsed url host: null,
178 verbose parsed url port: null,
178 verbose parsed url hostname: null,
178 verbose parsed url hash: null,
178 verbose parsed url search: null,
178 verbose parsed url query: null,
178 verbose parsed url pathname: 'thalassa@~0.3.2',
178 verbose parsed url path: 'thalassa@~0.3.2',
178 verbose parsed url href: 'thalassa@~0.3.2' }
179 verbose cache add name="thalassa" spec="~0.3.2" args=["thalassa","~0.3.2"]
180 verbose parsed url { protocol: null,
180 verbose parsed url slashes: null,
180 verbose parsed url auth: null,
180 verbose parsed url host: null,
180 verbose parsed url port: null,
180 verbose parsed url hostname: null,
180 verbose parsed url hash: null,
180 verbose parsed url search: null,
180 verbose parsed url query: null,
180 verbose parsed url pathname: '~0.3.2',
180 verbose parsed url path: '~0.3.2',
180 verbose parsed url href: '~0.3.2' }
181 verbose addNamed [ 'thalassa', '~0.3.2' ]
182 verbose addNamed [ null, '>=0.3.2-0 <0.4.0-0' ]
183 silly lockFile d06bc841-thalassa-0-3-2 thalassa@~0.3.2
184 verbose lock thalassa@~0.3.2 /home/sharejs/.npm/d06bc841-thalassa-0-3-2.lock
185 verbose cache add [ 'connect@~2.7.9', null ]
186 verbose cache add name=undefined spec="connect@~2.7.9" args=["connect@~2.7.9",null]
187 verbose parsed url { protocol: null,
187 verbose parsed url slashes: null,
187 verbose parsed url auth: null,
187 verbose parsed url host: null,
187 verbose parsed url port: null,
187 verbose parsed url hostname: null,
187 verbose parsed url hash: null,
187 verbose parsed url search: null,
187 verbose parsed url query: null,
187 verbose parsed url pathname: 'connect@~2.7.9',
187 verbose parsed url path: 'connect@~2.7.9',
187 verbose parsed url href: 'connect@~2.7.9' }
188 verbose cache add name="connect" spec="~2.7.9" args=["connect","~2.7.9"]
189 verbose parsed url { protocol: null,
189 verbose parsed url slashes: null,
189 verbose parsed url auth: null,
189 verbose parsed url host: null,
189 verbose parsed url port: null,
189 verbose parsed url hostname: null,
189 verbose parsed url hash: null,
189 verbose parsed url search: null,
189 verbose parsed url query: null,
189 verbose parsed url pathname: '~2.7.9',
189 verbose parsed url path: '~2.7.9',
189 verbose parsed url href: '~2.7.9' }
190 verbose addNamed [ 'connect', '~2.7.9' ]
191 verbose addNamed [ null, '>=2.7.9-0 <2.8.0-0' ]
192 silly lockFile 4db1e39c-connect-2-7-9 connect@~2.7.9
193 verbose lock connect@~2.7.9 /home/sharejs/.npm/4db1e39c-connect-2-7-9.lock
194 silly addNameRange { name: 'newrelic', range: '>=1.0.1-0 <1.1.0-0', hasData: false }
195 silly addNameRange { name: 'commander',
195 silly addNameRange range: '>=2.0.0-0 <2.1.0-0',
195 silly addNameRange hasData: false }
196 verbose addRemoteGit [ 'git://github.com/Dignifiedquire/transport-adapters',
196 verbose addRemoteGit 'master' ]
197 silly addNameRange { name: 'redis', range: '>=0.9.0-0 <0.10.0-0', hasData: false }
198 silly addNameRange { name: 'sockjs', range: '>=0.3.8-0 <0.4.0-0', hasData: false }
199 silly addNameRange { name: 'livedb-mongo',
199 silly addNameRange range: '>=0.2.5-0 <0.3.0-0',
199 silly addNameRange hasData: false }
200 silly addNameRange { name: 'express', range: '>=3.4.4-0 <3.5.0-0', hasData: false }
201 silly addNameRange { name: 'rbytes', range: '>=1.0.0-0 <1.1.0-0', hasData: false }
202 silly addNameRange { name: 'isbinaryfile',
202 silly addNameRange range: '>=0.1.9-0 <0.2.0-0',
202 silly addNameRange hasData: false }
203 silly addNameRange { name: 'ottypes', range: '>=1.0.1-0 <1.1.0-0', hasData: false }
204 silly addNameRange { name: 'async', range: '>=0.2.9-0 <0.3.0-0', hasData: false }
205 silly addNameRange { name: 'thalassa', range: '>=0.3.2-0 <0.4.0-0', hasData: false }
206 silly addNameRange { name: 'connect', range: '>=2.7.9-0 <2.8.0-0', hasData: false }
207 verbose url raw querystring
208 verbose url resolving [ 'https://registry.npmjs.org/', './querystring' ]
209 verbose url resolved https://registry.npmjs.org/querystring
210 info trying registry request attempt 1 at 17:17:46
211 verbose etag "52DTTA8J6EE128N5FO1C8FKY8"
212 http GET https://registry.npmjs.org/querystring
213 verbose url raw nodetime/0.8.13
214 verbose url resolving [ 'https://registry.npmjs.org/', './nodetime/0.8.13' ]
215 verbose url resolved https://registry.npmjs.org/nodetime/0.8.13
216 info trying registry request attempt 1 at 17:17:46
217 verbose etag "6S46YJTGZY8ESXEE055RR0NCQ"
218 http GET https://registry.npmjs.org/nodetime/0.8.13
219 verbose url raw amqp
220 verbose url resolving [ 'https://registry.npmjs.org/', './amqp' ]
221 verbose url resolved https://registry.npmjs.org/amqp
222 info trying registry request attempt 1 at 17:17:46
223 verbose etag "DP4WLN7HOTLSM8DZZ3FFZS57O"
224 http GET https://registry.npmjs.org/amqp
225 verbose url raw log4js
226 verbose url resolving [ 'https://registry.npmjs.org/', './log4js' ]
227 verbose url resolved https://registry.npmjs.org/log4js
228 info trying registry request attempt 1 at 17:17:46
229 verbose etag "83RKMBAEAHHQNJ48FCXI1FCO2"
230 http GET https://registry.npmjs.org/log4js
231 verbose url raw lodash
232 verbose url resolving [ 'https://registry.npmjs.org/', './lodash' ]
233 verbose url resolved https://registry.npmjs.org/lodash
234 info trying registry request attempt 1 at 17:17:46
235 verbose etag "93VVQDOQAAMK99ABRCM1ZYFHK"
236 http GET https://registry.npmjs.org/lodash
237 verbose url raw newrelic
238 verbose url resolving [ 'https://registry.npmjs.org/', './newrelic' ]
239 verbose url resolved https://registry.npmjs.org/newrelic
240 info trying registry request attempt 1 at 17:17:46
241 verbose etag "214K3EG96PS1XA2DJLL4MWUD8"
242 http GET https://registry.npmjs.org/newrelic
243 verbose url raw commander
244 verbose url resolving [ 'https://registry.npmjs.org/', './commander' ]
245 verbose url resolved https://registry.npmjs.org/commander
246 info trying registry request attempt 1 at 17:17:46
247 verbose etag "6TUSC25XULV630WAWJ5MJN2W4"
248 http GET https://registry.npmjs.org/commander
249 verbose url raw redis
250 verbose url resolving [ 'https://registry.npmjs.org/', './redis' ]
251 verbose url resolved https://registry.npmjs.org/redis
252 info trying registry request attempt 1 at 17:17:46
253 verbose etag "E2PPTGX1WHN38SJOPTB8K7PZ1"
254 http GET https://registry.npmjs.org/redis
255 verbose url raw sockjs
256 verbose url resolving [ 'https://registry.npmjs.org/', './sockjs' ]
257 verbose url resolved https://registry.npmjs.org/sockjs
258 info trying registry request attempt 1 at 17:17:46
259 verbose etag "5PR9D6E6BD7MLJYYRN5VTU64D"
260 http GET https://registry.npmjs.org/sockjs
261 verbose url raw livedb-mongo
262 verbose url resolving [ 'https://registry.npmjs.org/', './livedb-mongo' ]
263 verbose url resolved https://registry.npmjs.org/livedb-mongo
264 info trying registry request attempt 1 at 17:17:46
265 verbose etag "CGXFGMHG1OARWFBRCU4MMTP7T"
266 http GET https://registry.npmjs.org/livedb-mongo
267 verbose url raw express
268 verbose url resolving [ 'https://registry.npmjs.org/', './express' ]
269 verbose url resolved https://registry.npmjs.org/express
270 info trying registry request attempt 1 at 17:17:46
271 verbose etag "EIL7AGBEJHIFIWHI9SJNC8S6B"
272 http GET https://registry.npmjs.org/express
273 verbose url raw rbytes
274 verbose url resolving [ 'https://registry.npmjs.org/', './rbytes' ]
275 verbose url resolved https://registry.npmjs.org/rbytes
276 info trying registry request attempt 1 at 17:17:46
277 verbose etag "APINDLVFJRQX6U7NFYII2ZQ5H"
278 http GET https://registry.npmjs.org/rbytes
279 verbose url raw isbinaryfile
280 verbose url resolving [ 'https://registry.npmjs.org/', './isbinaryfile' ]
281 verbose url resolved https://registry.npmjs.org/isbinaryfile
282 info trying registry request attempt 1 at 17:17:47
283 verbose etag "47PAUDKAGQZFFT4HO7LMNTZZ"
284 http GET https://registry.npmjs.org/isbinaryfile
285 verbose url raw ottypes
286 verbose url resolving [ 'https://registry.npmjs.org/', './ottypes' ]
287 verbose url resolved https://registry.npmjs.org/ottypes
288 info trying registry request attempt 1 at 17:17:47
289 verbose etag "3V9UPQXB7JFFF67Z0L0QJJCMQ"
290 http GET https://registry.npmjs.org/ottypes
291 verbose url raw async
292 verbose url resolving [ 'https://registry.npmjs.org/', './async' ]
293 verbose url resolved https://registry.npmjs.org/async
294 info trying registry request attempt 1 at 17:17:47
295 verbose etag "90GUDIE8G3Q43XFV2EPG6K2JZ"
296 http GET https://registry.npmjs.org/async
297 verbose url raw thalassa
298 verbose url resolving [ 'https://registry.npmjs.org/', './thalassa' ]
299 verbose url resolved https://registry.npmjs.org/thalassa
300 info trying registry request attempt 1 at 17:17:47
301 verbose etag "C3QLOC89PODR6RJGPV839GFDH"
302 http GET https://registry.npmjs.org/thalassa
303 verbose url raw connect
304 verbose url resolving [ 'https://registry.npmjs.org/', './connect' ]
305 verbose url resolved https://registry.npmjs.org/connect
306 info trying registry request attempt 1 at 17:17:47
307 verbose etag "1KOME83NOH3JLW3LY0ADM3QLT"
308 http GET https://registry.npmjs.org/connect
309 verbose git remote.origin.url git://github.com/Dignifiedquire/transport-adapters
310 verbose git fetch -a origin (git://github.com/Dignifiedquire/transport-adapters)
311 verbose git rev-list -n1 master f1c188a6bf42b247c981587e299e6405eb4492e9
312 verbose resolved git url git://github.com/Dignifiedquire/transport-adapters#f1c188a6bf42b247c981587e299e6405eb4492e9
313 verbose tar unpack /home/sharejs/tmp/npm-7091-_I7pIHma/1387387067184-0.3182910999748856/tmp.tgz
314 silly lockFile b8bc9667-67184-0-3182910999748856-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387067184-0.3182910999748856/package
315 verbose lock tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387067184-0.3182910999748856/package /home/sharejs/.npm/b8bc9667-67184-0-3182910999748856-package.lock
316 silly lockFile 1f95b197-67184-0-3182910999748856-tmp-tgz tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387067184-0.3182910999748856/tmp.tgz
317 verbose lock tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387067184-0.3182910999748856/tmp.tgz /home/sharejs/.npm/1f95b197-67184-0-3182910999748856-tmp-tgz.lock
318 silly gunzTarPerm modes [ '755', '644' ]
319 silly gunzTarPerm extractEntry
320 silly gunzTarPerm modified mode [ '', 509, 493 ]
321 silly gunzTarPerm extractEntry .gitignore
322 silly gunzTarPerm modified mode [ '.gitignore', 436, 420 ]
323 silly gunzTarPerm extractEntry .travis.yml
324 silly gunzTarPerm modified mode [ '.travis.yml', 436, 420 ]
325 silly gunzTarPerm extractEntry README.md
326 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ]
327 silly gunzTarPerm extractEntry examples/
328 silly gunzTarPerm modified mode [ 'examples/', 509, 493 ]
329 silly gunzTarPerm extractEntry examples/browserchannel/
330 silly gunzTarPerm modified mode [ 'examples/browserchannel/', 509, 493 ]
331 silly gunzTarPerm extractEntry examples/browserchannel/index.html
332 silly gunzTarPerm modified mode [ 'examples/browserchannel/index.html', 436, 420 ]
333 silly gunzTarPerm extractEntry examples/browserchannel/server.coffee
334 silly gunzTarPerm modified mode [ 'examples/browserchannel/server.coffee', 436, 420 ]
335 silly gunzTarPerm extractEntry examples/browserchannel/share-textarea.js
336 silly gunzTarPerm modified mode [ 'examples/browserchannel/share-textarea.js', 436, 420 ]
337 silly gunzTarPerm extractEntry examples/sockjs/
338 silly gunzTarPerm modified mode [ 'examples/sockjs/', 509, 493 ]
339 silly gunzTarPerm extractEntry examples/sockjs/index.html
340 silly gunzTarPerm modified mode [ 'examples/sockjs/index.html', 436, 420 ]
341 silly gunzTarPerm extractEntry examples/sockjs/index.js
342 silly gunzTarPerm modified mode [ 'examples/sockjs/index.js', 436, 420 ]
343 silly gunzTarPerm extractEntry examples/sockjs/package.json
344 silly gunzTarPerm modified mode [ 'examples/sockjs/package.json', 436, 420 ]
345 silly gunzTarPerm extractEntry examples/sockjs/server.js
346 silly gunzTarPerm modified mode [ 'examples/sockjs/server.js', 436, 420 ]
347 silly gunzTarPerm extractEntry examples/sockjs/share-textarea.js
348 silly gunzTarPerm modified mode [ 'examples/sockjs/share-textarea.js', 436, 420 ]
349 silly gunzTarPerm extractEntry index.js
350 silly gunzTarPerm modified mode [ 'index.js', 436, 420 ]
351 silly gunzTarPerm extractEntry lib/
352 silly gunzTarPerm modified mode [ 'lib/', 509, 493 ]
353 silly gunzTarPerm extractEntry lib/browserchannel.js
354 silly gunzTarPerm modified mode [ 'lib/browserchannel.js', 436, 420 ]
355 silly gunzTarPerm extractEntry lib/index.js
356 silly gunzTarPerm modified mode [ 'lib/index.js', 436, 420 ]
357 silly gunzTarPerm extractEntry lib/sockjs.js
358 silly gunzTarPerm modified mode [ 'lib/sockjs.js', 436, 420 ]
359 silly gunzTarPerm extractEntry package.json
360 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ]
361 silly gunzTarPerm extractEntry test/
362 silly gunzTarPerm modified mode [ 'test/', 509, 493 ]
363 silly gunzTarPerm extractEntry test/browserchannel.coffee
364 silly gunzTarPerm modified mode [ 'test/browserchannel.coffee', 436, 420 ]
365 silly gunzTarPerm extractEntry test/sockjs.coffee
366 silly gunzTarPerm modified mode [ 'test/sockjs.coffee', 436, 420 ]
367 http 304 https://registry.npmjs.org/querystring
368 silly registry.get cb [ 304,
368 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
368 silly registry.get etag: '"52DTTA8J6EE128N5FO1C8FKY8"',
368 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
368 silly registry.get 'content-length': '0' } ]
369 verbose etag querystring from cache
370 http 304 https://registry.npmjs.org/nodetime/0.8.13
371 silly registry.get cb [ 304,
371 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
371 silly registry.get etag: '"6S46YJTGZY8ESXEE055RR0NCQ"',
371 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
371 silly registry.get 'content-length': '0' } ]
372 verbose etag nodetime/0.8.13 from cache
373 http 304 https://registry.npmjs.org/lodash
374 silly registry.get cb [ 304,
374 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
374 silly registry.get etag: '"93VVQDOQAAMK99ABRCM1ZYFHK"',
374 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
374 silly registry.get 'content-length': '0' } ]
375 verbose etag lodash from cache
376 http 304 https://registry.npmjs.org/amqp
377 silly registry.get cb [ 304,
377 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
377 silly registry.get etag: '"DP4WLN7HOTLSM8DZZ3FFZS57O"',
377 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
377 silly registry.get 'content-length': '0' } ]
378 verbose etag amqp from cache
379 http 304 https://registry.npmjs.org/log4js
380 silly registry.get cb [ 304,
380 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
380 silly registry.get etag: '"83RKMBAEAHHQNJ48FCXI1FCO2"',
380 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
380 silly registry.get 'content-length': '0' } ]
381 verbose etag log4js from cache
382 http 304 https://registry.npmjs.org/newrelic
383 silly registry.get cb [ 304,
383 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
383 silly registry.get etag: '"214K3EG96PS1XA2DJLL4MWUD8"',
383 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
383 silly registry.get 'content-length': '0' } ]
384 verbose etag newrelic from cache
385 silly addNameRange number 2 { name: 'querystring',
385 silly addNameRange range: '>=0.2.0-0 <0.3.0-0',
385 silly addNameRange hasData: true }
386 silly addNameRange versions [ 'querystring', [ '0.0.1', '0.0.4', '0.1.0', '0.2.0' ] ]
387 verbose addNamed [ 'querystring', '0.2.0' ]
388 verbose addNamed [ '0.2.0', '0.2.0' ]
389 silly lockFile 3765abce-querystring-0-2-0 [email protected]
390 verbose lock [email protected] /home/sharejs/.npm/3765abce-querystring-0-2-0.lock
391 http 304 https://registry.npmjs.org/commander
392 silly registry.get cb [ 304,
392 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
392 silly registry.get etag: '"6TUSC25XULV630WAWJ5MJN2W4"',
392 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
392 silly registry.get 'content-length': '0' } ]
393 verbose etag commander from cache
394 silly addNameRange number 2 { name: 'lodash', range: '>=2.2.1-0 <2.3.0-0', hasData: true }
395 silly addNameRange versions [ 'lodash',
395 silly addNameRange [ '0.1.0',
395 silly addNameRange '0.2.0',
395 silly addNameRange '0.2.1',
395 silly addNameRange '0.2.2',
395 silly addNameRange '0.3.0',
395 silly addNameRange '0.3.1',
395 silly addNameRange '0.3.2',
395 silly addNameRange '0.4.0',
395 silly addNameRange '0.4.1',
395 silly addNameRange '0.4.2',
395 silly addNameRange '0.5.0-rc.1',
395 silly addNameRange '0.5.0',
395 silly addNameRange '0.5.1',
395 silly addNameRange '0.5.2',
395 silly addNameRange '0.6.0',
395 silly addNameRange '0.6.1',
395 silly addNameRange '0.7.0',
395 silly addNameRange '0.8.0',
395 silly addNameRange '0.8.1',
395 silly addNameRange '0.8.2',
395 silly addNameRange '0.9.0',
395 silly addNameRange '0.9.1',
395 silly addNameRange '0.9.2',
395 silly addNameRange '0.10.0',
395 silly addNameRange '1.0.0-rc.1',
395 silly addNameRange '1.0.0-rc.2',
395 silly addNameRange '1.0.0-rc.3',
395 silly addNameRange '1.0.0',
395 silly addNameRange '1.0.1',
395 silly addNameRange '1.1.0',
395 silly addNameRange '1.1.1',
395 silly addNameRange '1.2.0',
395 silly addNameRange '1.2.1',
395 silly addNameRange '1.3.0',
395 silly addNameRange '1.3.1',
395 silly addNameRange '2.0.0',
395 silly addNameRange '2.1.0',
395 silly addNameRange '2.2.0',
395 silly addNameRange '2.2.1',
395 silly addNameRange '2.3.0',
395 silly addNameRange '2.4.0',
395 silly addNameRange '2.4.1' ] ]
396 verbose addNamed [ 'lodash', '2.2.1' ]
397 verbose addNamed [ '2.2.1', '2.2.1' ]
398 silly lockFile 065ff042-lodash-2-2-1 [email protected]
399 verbose lock [email protected] /home/sharejs/.npm/065ff042-lodash-2-2-1.lock
400 silly addNameRange number 2 { name: 'amqp', range: '>=0.1.7-0 <0.2.0-0', hasData: true }
401 silly addNameRange versions [ 'amqp',
401 silly addNameRange [ '0.0.1',
401 silly addNameRange '0.0.2',
401 silly addNameRange '0.0.2-squaremo01.184010',
401 silly addNameRange '0.0.6',
401 silly addNameRange '0.0.7',
401 silly addNameRange '0.1.0',
401 silly addNameRange '0.1.1',
401 silly addNameRange '0.1.2',
401 silly addNameRange '0.1.3',
401 silly addNameRange '0.1.4',
401 silly addNameRange '0.1.6',
401 silly addNameRange '0.1.7',
401 silly addNameRange '0.1.8' ] ]
402 verbose addNamed [ 'amqp', '0.1.8' ]
403 verbose addNamed [ '0.1.8', '0.1.8' ]
404 silly lockFile 7317b97a-amqp-0-1-8 [email protected]
405 verbose lock [email protected] /home/sharejs/.npm/7317b97a-amqp-0-1-8.lock
406 http 304 https://registry.npmjs.org/redis
407 silly registry.get cb [ 304,
407 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
407 silly registry.get etag: '"E2PPTGX1WHN38SJOPTB8K7PZ1"',
407 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
407 silly registry.get 'content-length': '0' } ]
408 verbose etag redis from cache
409 http 304 https://registry.npmjs.org/sockjs
410 silly registry.get cb [ 304,
410 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
410 silly registry.get etag: '"5PR9D6E6BD7MLJYYRN5VTU64D"',
410 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
410 silly registry.get 'content-length': '0' } ]
411 verbose etag sockjs from cache
412 silly addNameRange number 2 { name: 'log4js', range: '>=0.6.6-0 <0.7.0-0', hasData: true }
413 silly addNameRange versions [ 'log4js',
413 silly addNameRange [ '0.1.0',
413 silly addNameRange '0.2.0',
413 silly addNameRange '0.2.2',
413 silly addNameRange '0.2.3',
413 silly addNameRange '0.2.4',
413 silly addNameRange '0.2.5',
413 silly addNameRange '0.2.6',
413 silly addNameRange '0.3.0',
413 silly addNameRange '0.3.1',
413 silly addNameRange '0.3.2',
413 silly addNameRange '0.3.3',
413 silly addNameRange '0.3.4',
413 silly addNameRange '0.3.5',
413 silly addNameRange '0.3.6',
413 silly addNameRange '0.3.7',
413 silly addNameRange '0.3.8',
413 silly addNameRange '0.3.9',
413 silly addNameRange '0.4.0',
413 silly addNameRange '0.4.1',
413 silly addNameRange '0.4.2',
413 silly addNameRange '0.4.3',
413 silly addNameRange '0.5.0',
413 silly addNameRange '0.5.1',
413 silly addNameRange '0.5.2',
413 silly addNameRange '0.5.3',
413 silly addNameRange '0.5.4',
413 silly addNameRange '0.5.5',
413 silly addNameRange '0.5.6',
413 silly addNameRange '0.5.7',
413 silly addNameRange '0.6.0',
413 silly addNameRange '0.6.1',
413 silly addNameRange '0.5.8',
413 silly addNameRange '0.6.2',
413 silly addNameRange '0.6.3',
413 silly addNameRange '0.6.4',
413 silly addNameRange '0.6.5',
413 silly addNameRange '0.6.6',
413 silly addNameRange '0.6.7',
413 silly addNameRange '0.6.8',
413 silly addNameRange '0.6.9' ] ]
414 verbose addNamed [ 'log4js', '0.6.9' ]
415 verbose addNamed [ '0.6.9', '0.6.9' ]
416 silly lockFile 80af7d90-log4js-0-6-9 [email protected]
417 verbose lock [email protected] /home/sharejs/.npm/80af7d90-log4js-0-6-9.lock
418 http 304 https://registry.npmjs.org/livedb-mongo
419 silly registry.get cb [ 304,
419 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
419 silly registry.get etag: '"CGXFGMHG1OARWFBRCU4MMTP7T"',
419 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
419 silly registry.get 'content-length': '0' } ]
420 verbose etag livedb-mongo from cache
421 http 304 https://registry.npmjs.org/rbytes
422 silly registry.get cb [ 304,
422 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
422 silly registry.get etag: '"APINDLVFJRQX6U7NFYII2ZQ5H"',
422 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
422 silly registry.get 'content-length': '0' } ]
423 verbose etag rbytes from cache
424 http 304 https://registry.npmjs.org/express
425 silly registry.get cb [ 304,
425 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
425 silly registry.get etag: '"EIL7AGBEJHIFIWHI9SJNC8S6B"',
425 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
425 silly registry.get 'content-length': '0' } ]
426 verbose etag express from cache
427 silly addNameRange number 2 { name: 'newrelic', range: '>=1.0.1-0 <1.1.0-0', hasData: true }
428 silly addNameRange versions [ 'newrelic',
428 silly addNameRange [ '0.0.0-1',
428 silly addNameRange '0.9.4-61',
428 silly addNameRange '0.9.4-62',
428 silly addNameRange '0.9.4-63',
428 silly addNameRange '0.9.5-65',
428 silly addNameRange '0.9.6-70',
428 silly addNameRange '0.9.6-72',
428 silly addNameRange '0.9.7-75',
428 silly addNameRange '0.9.9-82',
428 silly addNameRange '0.9.10-85',
428 silly addNameRange '0.9.11-88',
428 silly addNameRange '0.9.12-91',
428 silly addNameRange '0.9.12-92',
428 silly addNameRange '0.9.13-101',
428 silly addNameRange '0.9.14-105',
428 silly addNameRange '0.9.15-107',
428 silly addNameRange '0.9.16-121',
428 silly addNameRange '0.9.17-132',
428 silly addNameRange '0.9.18-137',
428 silly addNameRange '0.9.18-138',
428 silly addNameRange '0.9.19',
428 silly addNameRange '0.9.20',
428 silly addNameRange '0.9.21',
428 silly addNameRange '0.9.22',
428 silly addNameRange '0.10.0',
428 silly addNameRange '0.10.1',
428 silly addNameRange '0.10.2',
428 silly addNameRange '0.10.3',
428 silly addNameRange '0.11.0',
428 silly addNameRange '0.11.1',
428 silly addNameRange '0.11.2',
428 silly addNameRange '0.11.3',
428 silly addNameRange '0.11.4',
428 silly addNameRange '0.11.5',
428 silly addNameRange '0.11.6',
428 silly addNameRange '0.11.7',
428 silly addNameRange '0.11.8',
428 silly addNameRange '0.11.9',
428 silly addNameRange '0.12.0',
428 silly addNameRange '0.12.1',
428 silly addNameRange '1.0.0',
428 silly addNameRange '1.0.1',
428 silly addNameRange '1.1.0',
428 silly addNameRange '1.1.1',
428 silly addNameRange '1.2.0' ] ]
429 verbose addNamed [ 'newrelic', '1.0.1' ]
430 verbose addNamed [ '1.0.1', '1.0.1' ]
431 silly lockFile 4748c617-newrelic-1-0-1 [email protected]
432 verbose lock [email protected] /home/sharejs/.npm/4748c617-newrelic-1-0-1.lock
433 silly addNameRange number 2 { name: 'commander', range: '>=2.0.0-0 <2.1.0-0', hasData: true }
434 silly addNameRange versions [ 'commander',
434 silly addNameRange [ '0.0.1',
434 silly addNameRange '0.0.3',
434 silly addNameRange '0.0.4',
434 silly addNameRange '0.0.5',
434 silly addNameRange '0.1.0',
434 silly addNameRange '0.2.0',
434 silly addNameRange '0.2.1',
434 silly addNameRange '0.3.0',
434 silly addNameRange '0.3.1',
434 silly addNameRange '0.3.2',
434 silly addNameRange '0.3.3',
434 silly addNameRange '0.4.0',
434 silly addNameRange '0.4.1',
434 silly addNameRange '0.4.2',
434 silly addNameRange '0.4.3',
434 silly addNameRange '0.5.0',
434 silly addNameRange '0.5.1',
434 silly addNameRange '0.6.0',
434 silly addNameRange '0.6.1',
434 silly addNameRange '0.5.2',
434 silly addNameRange '1.0.0',
434 silly addNameRange '1.0.1',
434 silly addNameRange '1.0.2',
434 silly addNameRange '1.0.3',
434 silly addNameRange '1.0.4',
434 silly addNameRange '1.0.5',
434 silly addNameRange '1.1.0',
434 silly addNameRange '1.1.1',
434 silly addNameRange '1.2.0',
434 silly addNameRange '1.3.0',
434 silly addNameRange '1.3.1',
434 silly addNameRange '1.3.2',
434 silly addNameRange '2.0.0',
434 silly addNameRange '2.1.0' ] ]
435 verbose addNamed [ 'commander', '2.0.0' ]
436 verbose addNamed [ '2.0.0', '2.0.0' ]
437 silly lockFile d5315eb7-commander-2-0-0 [email protected]
438 verbose lock [email protected] /home/sharejs/.npm/d5315eb7-commander-2-0-0.lock
439 http 304 https://registry.npmjs.org/isbinaryfile
440 silly registry.get cb [ 304,
440 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
440 silly registry.get etag: '"47PAUDKAGQZFFT4HO7LMNTZZ"',
440 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
440 silly registry.get 'content-length': '0' } ]
441 verbose etag isbinaryfile from cache
442 http 304 https://registry.npmjs.org/ottypes
443 silly registry.get cb [ 304,
443 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
443 silly registry.get etag: '"3V9UPQXB7JFFF67Z0L0QJJCMQ"',
443 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
443 silly registry.get 'content-length': '0' } ]
444 verbose etag ottypes from cache
445 http 304 https://registry.npmjs.org/async
446 silly registry.get cb [ 304,
446 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
446 silly registry.get etag: '"90GUDIE8G3Q43XFV2EPG6K2JZ"',
446 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
446 silly registry.get 'content-length': '0' } ]
447 verbose etag async from cache
448 http 304 https://registry.npmjs.org/thalassa
449 silly registry.get cb [ 304,
449 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
449 silly registry.get etag: '"C3QLOC89PODR6RJGPV839GFDH"',
449 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
449 silly registry.get 'content-length': '0' } ]
450 verbose etag thalassa from cache
451 silly addNameRange number 2 { name: 'redis', range: '>=0.9.0-0 <0.10.0-0', hasData: true }
452 silly addNameRange versions [ 'redis',
452 silly addNameRange [ '0.0.1',
452 silly addNameRange '0.0.2',
452 silly addNameRange '0.0.3',
452 silly addNameRange '0.0.4',
452 silly addNameRange '0.0.7',
452 silly addNameRange '0.0.8',
452 silly addNameRange '0.1.0',
452 silly addNameRange '0.1.1',
452 silly addNameRange '0.1.2',
452 silly addNameRange '0.2.0',
452 silly addNameRange '0.2.1',
452 silly addNameRange '0.2.2',
452 silly addNameRange '0.2.3',
452 silly addNameRange '0.2.4',
452 silly addNameRange '0.2.6',
452 silly addNameRange '0.3.0',
452 silly addNameRange '0.3.1',
452 silly addNameRange '0.3.2',
452 silly addNameRange '0.3.3',
452 silly addNameRange '0.3.4',
452 silly addNameRange '0.3.5',
452 silly addNameRange '0.3.6',
452 silly addNameRange '0.3.7',
452 silly addNameRange '0.3.9',
452 silly addNameRange '0.4.0',
452 silly addNameRange '0.4.1',
452 silly addNameRange '0.4.2',
452 silly addNameRange '0.5.0',
452 silly addNameRange '0.5.1',
452 silly addNameRange '0.5.2',
452 silly addNameRange '0.5.3',
452 silly addNameRange '0.5.4',
452 silly addNameRange '0.5.5',
452 silly addNameRange '0.5.6',
452 silly addNameRange '0.5.7',
452 silly addNameRange '0.5.8',
452 silly addNameRange '0.5.9',
452 silly addNameRange '0.5.10',
452 silly addNameRange '0.5.11',
452 silly addNameRange '0.6.0',
452 silly addNameRange '0.6.1',
452 silly addNameRange '0.6.2',
452 silly addNameRange '0.6.3',
452 silly addNameRange '0.6.4',
452 silly addNameRange '0.6.5',
452 silly addNameRange '0.6.6',
452 silly addNameRange '0.6.7',
452 silly addNameRange '0.7.0',
452 silly addNameRange '0.7.1',
452 silly addNameRange '0.7.2',
452 silly addNameRange '0.7.3',
452 silly addNameRange '0.8.0',
452 silly addNameRange '0.8.1',
452 silly addNameRange '0.8.2',
452 silly addNameRange '0.8.3',
452 silly addNameRange '0.8.4',
452 silly addNameRange '0.8.5',
452 silly addNameRange '0.8.6',
452 silly addNameRange '0.9.0',
452 silly addNameRange '0.9.1',
452 silly addNameRange '0.9.2' ] ]
453 verbose addNamed [ 'redis', '0.9.2' ]
454 verbose addNamed [ '0.9.2', '0.9.2' ]
455 silly lockFile e9b6ade2-redis-0-9-2 [email protected]
456 verbose lock [email protected] /home/sharejs/.npm/e9b6ade2-redis-0-9-2.lock
457 silly addNameRange number 2 { name: 'sockjs', range: '>=0.3.8-0 <0.4.0-0', hasData: true }
458 silly addNameRange versions [ 'sockjs',
458 silly addNameRange [ '0.0.0-rc1',
458 silly addNameRange '0.0.0-rc2',
458 silly addNameRange '0.0.1',
458 silly addNameRange '0.0.2',
458 silly addNameRange '0.0.3',
458 silly addNameRange '0.0.4',
458 silly addNameRange '0.0.5',
458 silly addNameRange '0.1.0',
458 silly addNameRange '0.1.1',
458 silly addNameRange '0.1.2',
458 silly addNameRange '0.2.0',
458 silly addNameRange '0.2.1',
458 silly addNameRange '0.3.0',
458 silly addNameRange '0.3.1',
458 silly addNameRange '0.3.3',
458 silly addNameRange '0.3.4',
458 silly addNameRange '0.3.5',
458 silly addNameRange '0.3.6',
458 silly addNameRange '0.3.7',
458 silly addNameRange '0.3.8' ] ]
459 verbose addNamed [ 'sockjs', '0.3.8' ]
460 verbose addNamed [ '0.3.8', '0.3.8' ]
461 silly lockFile 1847718c-sockjs-0-3-8 [email protected]
462 verbose lock [email protected] /home/sharejs/.npm/1847718c-sockjs-0-3-8.lock
463 http 304 https://registry.npmjs.org/connect
464 silly registry.get cb [ 304,
464 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
464 silly registry.get etag: '"1KOME83NOH3JLW3LY0ADM3QLT"',
464 silly registry.get date: 'Wed, 18 Dec 2013 17:17:47 GMT',
464 silly registry.get 'content-length': '0' } ]
465 verbose etag connect from cache
466 silly addNameRange number 2 { name: 'livedb-mongo',
466 silly addNameRange range: '>=0.2.5-0 <0.3.0-0',
466 silly addNameRange hasData: true }
467 silly addNameRange versions [ 'livedb-mongo',
467 silly addNameRange [ '0.1.0',
467 silly addNameRange '0.1.2',
467 silly addNameRange '0.1.3',
467 silly addNameRange '0.2.0',
467 silly addNameRange '0.2.1',
467 silly addNameRange '0.2.2',
467 silly addNameRange '0.2.3',
467 silly addNameRange '0.2.4',
467 silly addNameRange '0.2.5',
467 silly addNameRange '0.2.6',
467 silly addNameRange '0.3.0' ] ]
468 verbose addNamed [ 'livedb-mongo', '0.2.6' ]
469 verbose addNamed [ '0.2.6', '0.2.6' ]
470 silly lockFile cfd3d2f4-livedb-mongo-0-2-6 [email protected]
471 verbose lock [email protected] /home/sharejs/.npm/cfd3d2f4-livedb-mongo-0-2-6.lock
472 silly lockFile d0bab4ef-nodetime-0-8-13 [email protected]
473 silly lockFile d0bab4ef-nodetime-0-8-13 [email protected]
474 silly addNameRange number 2 { name: 'rbytes', range: '>=1.0.0-0 <1.1.0-0', hasData: true }
475 silly addNameRange versions [ 'rbytes', [ '0.0.1', '0.0.2', '1.0.0' ] ]
476 verbose addNamed [ 'rbytes', '1.0.0' ]
477 verbose addNamed [ '1.0.0', '1.0.0' ]
478 silly lockFile b505cd20-rbytes-1-0-0 [email protected]
479 verbose lock [email protected] /home/sharejs/.npm/b505cd20-rbytes-1-0-0.lock
480 silly addNameRange number 2 { name: 'express', range: '>=3.4.4-0 <3.5.0-0', hasData: true }
481 silly addNameRange versions [ 'express',
481 silly addNameRange [ '0.14.0',
481 silly addNameRange '0.14.1',
481 silly addNameRange '1.0.0',
481 silly addNameRange '1.0.1',
481 silly addNameRange '1.0.2',
481 silly addNameRange '1.0.3',
481 silly addNameRange '1.0.4',
481 silly addNameRange '1.0.5',
481 silly addNameRange '1.0.6',
481 silly addNameRange '1.0.7',
481 silly addNameRange '1.0.8',
481 silly addNameRange '2.0.0',
481 silly addNameRange '2.1.0',
481 silly addNameRange '2.1.1',
481 silly addNameRange '2.2.0',
481 silly addNameRange '2.2.1',
481 silly addNameRange '2.2.2',
481 silly addNameRange '2.3.0',
481 silly addNameRange '2.3.1',
481 silly addNameRange '2.3.2',
481 silly addNameRange '2.3.3',
481 silly addNameRange '2.3.4',
481 silly addNameRange '2.3.5',
481 silly addNameRange '2.3.6',
481 silly addNameRange '2.3.7',
481 silly addNameRange '2.3.8',
481 silly addNameRange '2.3.9',
481 silly addNameRange '2.3.10',
481 silly addNameRange '2.3.11',
481 silly addNameRange '2.3.12',
481 silly addNameRange '2.4.0',
481 silly addNameRange '2.4.1',
481 silly addNameRange '2.4.2',
481 silly addNameRange '2.4.3',
481 silly addNameRange '2.4.4',
481 silly addNameRange '2.4.5',
481 silly addNameRange '2.4.6',
481 silly addNameRange '2.4.7',
481 silly addNameRange '2.5.0',
481 silly addNameRange '2.5.1',
481 silly addNameRange '2.5.2',
481 silly addNameRange '2.5.3',
481 silly addNameRange '2.5.4',
481 silly addNameRange '2.5.5',
481 silly addNameRange '2.5.6',
481 silly addNameRange '2.5.7',
481 silly addNameRange '2.5.8',
481 silly addNameRange '2.5.9',
481 silly addNameRange '2.5.10',
481 silly addNameRange '2.5.11',
481 silly addNameRange '3.0.0',
481 silly addNameRange '3.0.1',
481 silly addNameRange '3.0.2',
481 silly addNameRange '3.0.3',
481 silly addNameRange '3.0.4',
481 silly addNameRange '3.0.5',
481 silly addNameRange '3.0.6',
481 silly addNameRange '3.1.0',
481 silly addNameRange '3.1.1',
481 silly addNameRange '3.1.2',
481 silly addNameRange '3.2.0',
481 silly addNameRange '3.2.1',
481 silly addNameRange '3.2.2',
481 silly addNameRange '3.2.3',
481 silly addNameRange '3.2.4',
481 silly addNameRange '3.2.5',
481 silly addNameRange '3.2.6',
481 silly addNameRange '3.3.0',
481 silly addNameRange '3.3.1',
481 silly addNameRange '3.3.2',
481 silly addNameRange '3.3.3',
481 silly addNameRange '3.3.4',
481 silly addNameRange '3.3.5',
481 silly addNameRange '3.3.6',
481 silly addNameRange '1.0.0-beta',
481 silly addNameRange '1.0.0-beta2',
481 silly addNameRange '1.0.0-rc',
481 silly addNameRange '1.0.0-rc2',
481 silly addNameRange '1.0.0-rc3',
481 silly addNameRange '1.0.0-rc4',
481 silly addNameRange '2.0.0-beta',
481 silly addNameRange '2.0.0-beta2',
481 silly addNameRange '2.0.0-beta3',
481 silly addNameRange '2.0.0-rc',
481 silly addNameRange '2.0.0-rc2',
481 silly addNameRange '2.0.0-rc3',
481 silly addNameRange '3.0.0-alpha1',
481 silly addNameRange '3.0.0-alpha2',
481 silly addNameRange '3.0.0-alpha3',
481 silly addNameRange '3.0.0-alpha4',
481 silly addNameRange '3.0.0-alpha5',
481 silly addNameRange '3.0.0-beta1',
481 silly addNameRange '3.0.0-beta2',
481 silly addNameRange '3.0.0-beta3',
481 silly addNameRange '3.0.0-beta4',
481 silly addNameRange '3.0.0-beta6',
481 silly addNameRange '3.0.0-beta7',
481 silly addNameRange '3.0.0-rc1',
481 silly addNameRange '3.0.0-rc2',
481 silly addNameRange '3.0.0-rc3',
481 silly addNameRange '3.0.0-rc4',
481 silly addNameRange '3.0.0-rc5',
481 silly addNameRange '3.3.7',
481 silly addNameRange '3.3.8',
481 silly addNameRange '3.4.0',
481 silly addNameRange '3.4.1',
481 silly addNameRange '3.4.2',
481 silly addNameRange '3.4.3',
481 silly addNameRange '3.4.4',
481 silly addNameRange '3.4.5',
481 silly addNameRange '3.4.6',
481 silly addNameRange '3.4.7' ] ]
482 verbose addNamed [ 'express', '3.4.7' ]
483 verbose addNamed [ '3.4.7', '3.4.7' ]
484 silly lockFile fb24baa2-express-3-4-7 [email protected]
485 verbose lock [email protected] /home/sharejs/.npm/fb24baa2-express-3-4-7.lock
486 silly lockFile 3765abce-querystring-0-2-0 [email protected]
487 silly lockFile 3765abce-querystring-0-2-0 [email protected]
488 silly lockFile 4d77a706-querystring-0-2-0 querystring@~0.2.0
489 silly lockFile 4d77a706-querystring-0-2-0 querystring@~0.2.0
490 silly lockFile 065ff042-lodash-2-2-1 [email protected]
491 silly lockFile 065ff042-lodash-2-2-1 [email protected]
492 silly addNameRange number 2 { name: 'isbinaryfile',
492 silly addNameRange range: '>=0.1.9-0 <0.2.0-0',
492 silly addNameRange hasData: true }
493 silly addNameRange versions [ 'isbinaryfile',
493 silly addNameRange [ '0.1.0',
493 silly addNameRange '0.1.1',
493 silly addNameRange '0.1.2',
493 silly addNameRange '0.1.3',
493 silly addNameRange '0.1.4',
493 silly addNameRange '0.1.5',
493 silly addNameRange '0.1.6',
493 silly addNameRange '0.1.7',
493 silly addNameRange '0.1.8',
493 silly addNameRange '0.1.9',
493 silly addNameRange '1.0.0' ] ]
494 verbose addNamed [ 'isbinaryfile', '0.1.9' ]
495 verbose addNamed [ '0.1.9', '0.1.9' ]
496 silly lockFile 3ac6f8ea-isbinaryfile-0-1-9 [email protected]
497 verbose lock [email protected] /home/sharejs/.npm/3ac6f8ea-isbinaryfile-0-1-9.lock
498 silly addNameRange number 2 { name: 'ottypes', range: '>=1.0.1-0 <1.1.0-0', hasData: true }
499 silly addNameRange versions [ 'ottypes',
499 silly addNameRange [ '0.6.1', '0.6.2', '1.0.0', '1.0.1', '1.0.0-alpha' ] ]
500 verbose addNamed [ 'ottypes', '1.0.1' ]
501 verbose addNamed [ '1.0.1', '1.0.1' ]
502 silly lockFile 2b437525-ottypes-1-0-1 [email protected]
503 verbose lock [email protected] /home/sharejs/.npm/2b437525-ottypes-1-0-1.lock
504 silly lockFile c46ab6b5-lodash-2-2-1 lodash@~2.2.1
505 silly lockFile c46ab6b5-lodash-2-2-1 lodash@~2.2.1
506 silly lockFile 7317b97a-amqp-0-1-8 [email protected]
507 silly lockFile 7317b97a-amqp-0-1-8 [email protected]
508 silly addNameRange number 2 { name: 'async', range: '>=0.2.9-0 <0.3.0-0', hasData: true }
509 silly addNameRange versions [ 'async',
509 silly addNameRange [ '0.1.0',
509 silly addNameRange '0.1.1',
509 silly addNameRange '0.1.2',
509 silly addNameRange '0.1.3',
509 silly addNameRange '0.1.4',
509 silly addNameRange '0.1.5',
509 silly addNameRange '0.1.6',
509 silly addNameRange '0.1.7',
509 silly addNameRange '0.1.8',
509 silly addNameRange '0.1.9',
509 silly addNameRange '0.1.10',
509 silly addNameRange '0.1.11',
509 silly addNameRange '0.1.12',
509 silly addNameRange '0.1.13',
509 silly addNameRange '0.1.14',
509 silly addNameRange '0.1.15',
509 silly addNameRange '0.1.16',
509 silly addNameRange '0.1.17',
509 silly addNameRange '0.1.18',
509 silly addNameRange '0.1.19',
509 silly addNameRange '0.1.20',
509 silly addNameRange '0.1.21',
509 silly addNameRange '0.1.22',
509 silly addNameRange '0.2.0',
509 silly addNameRange '0.2.1',
509 silly addNameRange '0.2.2',
509 silly addNameRange '0.2.3',
509 silly addNameRange '0.2.4',
509 silly addNameRange '0.2.5',
509 silly addNameRange '0.2.6',
509 silly addNameRange '0.2.7',
509 silly addNameRange '0.2.8',
509 silly addNameRange '0.2.9' ] ]
510 verbose addNamed [ 'async', '0.2.9' ]
511 verbose addNamed [ '0.2.9', '0.2.9' ]
512 silly lockFile be62480b-async-0-2-9 [email protected]
513 verbose lock [email protected] /home/sharejs/.npm/be62480b-async-0-2-9.lock
514 silly addNameRange number 2 { name: 'thalassa', range: '>=0.3.2-0 <0.4.0-0', hasData: true }
515 silly addNameRange versions [ 'thalassa', [ '0.1.0', '0.3.2' ] ]
516 verbose addNamed [ 'thalassa', '0.3.2' ]
517 verbose addNamed [ '0.3.2', '0.3.2' ]
518 silly lockFile 19ed8135-thalassa-0-3-2 [email protected]
519 verbose lock [email protected] /home/sharejs/.npm/19ed8135-thalassa-0-3-2.lock
520 silly lockFile 80654d4b-amqp-0-1-7 amqp@~0.1.7
521 silly lockFile 80654d4b-amqp-0-1-7 amqp@~0.1.7
522 silly lockFile 80af7d90-log4js-0-6-9 [email protected]
523 silly lockFile 80af7d90-log4js-0-6-9 [email protected]
524 silly addNameRange number 2 { name: 'connect', range: '>=2.7.9-0 <2.8.0-0', hasData: true }
525 silly addNameRange versions [ 'connect',
525 silly addNameRange [ '0.0.1',
525 silly addNameRange '0.0.2',
525 silly addNameRange '0.0.3',
525 silly addNameRange '0.0.4',
525 silly addNameRange '0.0.5',
525 silly addNameRange '0.0.6',
525 silly addNameRange '0.1.0',
525 silly addNameRange '0.2.0',
525 silly addNameRange '0.2.1',
525 silly addNameRange '0.2.2',
525 silly addNameRange '0.2.3',
525 silly addNameRange '0.2.4',
525 silly addNameRange '0.2.5',
525 silly addNameRange '0.2.6',
525 silly addNameRange '0.2.7',
525 silly addNameRange '0.3.0',
525 silly addNameRange '0.4.0',
525 silly addNameRange '0.5.0',
525 silly addNameRange '0.5.1',
525 silly addNameRange '0.5.2',
525 silly addNameRange '0.5.3',
525 silly addNameRange '0.5.4',
525 silly addNameRange '0.5.5',
525 silly addNameRange '0.5.6',
525 silly addNameRange '0.5.7',
525 silly addNameRange '0.5.8',
525 silly addNameRange '0.5.9',
525 silly addNameRange '0.5.10',
525 silly addNameRange '1.0.0',
525 silly addNameRange '1.0.1',
525 silly addNameRange '1.0.2',
525 silly addNameRange '1.0.3',
525 silly addNameRange '1.0.4',
525 silly addNameRange '1.0.5',
525 silly addNameRange '1.0.6',
525 silly addNameRange '1.1.0',
525 silly addNameRange '1.1.1',
525 silly addNameRange '1.1.2',
525 silly addNameRange '1.1.3',
525 silly addNameRange '1.1.4',
525 silly addNameRange '1.1.5',
525 silly addNameRange '1.2.0',
525 silly addNameRange '1.2.1',
525 silly addNameRange '1.2.2',
525 silly addNameRange '1.2.3',
525 silly addNameRange '1.3.0',
525 silly addNameRange '1.4.0',
525 silly addNameRange '1.4.1',
525 silly addNameRange '1.4.2',
525 silly addNameRange '1.4.3',
525 silly addNameRange '1.4.4',
525 silly addNameRange '1.4.5',
525 silly addNameRange '1.4.6',
525 silly addNameRange '1.5.0',
525 silly addNameRange '1.5.1',
525 silly addNameRange '1.5.2',
525 silly addNameRange '1.6.0',
525 silly addNameRange '1.6.1',
525 silly addNameRange '1.6.2',
525 silly addNameRange '1.6.3',
525 silly addNameRange '1.6.4',
525 silly addNameRange '1.7.0',
525 silly addNameRange '1.7.1',
525 silly addNameRange '1.7.2',
525 silly addNameRange '1.7.3',
525 silly addNameRange '1.8.0',
525 silly addNameRange '1.8.1',
525 silly addNameRange '1.8.2',
525 silly addNameRange '1.8.3',
525 silly addNameRange '1.8.4',
525 silly addNameRange '1.8.5',
525 silly addNameRange '2.0.0',
525 silly addNameRange '2.0.1',
525 silly addNameRange '2.0.2',
525 silly addNameRange '2.0.3',
525 silly addNameRange '1.8.6',
525 silly addNameRange '2.1.0',
525 silly addNameRange '2.1.1',
525 silly addNameRange '2.1.2',
525 silly addNameRange '1.8.7',
525 silly addNameRange '2.1.3',
525 silly addNameRange '2.2.0',
525 silly addNameRange '2.2.1',
525 silly addNameRange '2.2.2',
525 silly addNameRange '2.3.0',
525 silly addNameRange '2.3.1',
525 silly addNameRange '2.3.2',
525 silly addNameRange '2.3.3',
525 silly addNameRange '1.9.0',
525 silly addNameRange '1.9.1',
525 silly addNameRange '2.3.4',
525 silly addNameRange '2.3.5',
525 silly addNameRange '2.3.6',
525 silly addNameRange '2.3.7',
525 silly addNameRange '1.9.2',
525 silly addNameRange '2.3.8',
525 silly addNameRange '2.3.9',
525 silly addNameRange '2.4.0',
525 silly addNameRange '2.4.1',
525 silly addNameRange '2.4.2',
525 silly addNameRange '2.4.3',
525 silly addNameRange '2.4.4',
525 silly addNameRange '2.4.5',
525 silly addNameRange '2.4.6',
525 silly addNameRange '2.5.0',
525 silly addNameRange '2.6.0',
525 silly addNameRange '2.6.1',
525 silly addNameRange '2.6.2',
525 silly addNameRange '2.7.0',
525 silly addNameRange '2.7.1',
525 silly addNameRange '2.7.2',
525 silly addNameRange '2.7.3',
525 silly addNameRange '2.7.4',
525 silly addNameRange '2.7.5',
525 silly addNameRange '2.7.6',
525 silly addNameRange '2.7.7',
525 silly addNameRange '2.7.8',
525 silly addNameRange '2.7.9',
525 silly addNameRange '2.7.10',
525 silly addNameRange '2.7.11',
525 silly addNameRange '2.8.0',
525 silly addNameRange '2.8.1',
525 silly addNameRange '2.8.2',
525 silly addNameRange '2.8.3',
525 silly addNameRange '2.8.4',
525 silly addNameRange '2.8.5',
525 silly addNameRange '2.8.6',
525 silly addNameRange '2.8.7',
525 silly addNameRange '2.8.8',
525 silly addNameRange '2.9.0',
525 silly addNameRange '2.9.1',
525 silly addNameRange '2.9.2',
525 silly addNameRange '2.10.0',
525 silly addNameRange '2.10.1',
525 silly addNameRange '2.11.0',
525 silly addNameRange '2.11.1',
525 silly addNameRange '2.11.2',
525 silly addNameRange '2.12.0' ] ]
526 verbose addNamed [ 'connect', '2.7.11' ]
527 verbose addNamed [ '2.7.11', '2.7.11' ]
528 silly lockFile 4ba73353-connect-2-7-11 [email protected]
529 verbose lock [email protected] /home/sharejs/.npm/4ba73353-connect-2-7-11.lock
530 silly lockFile 7066bf70-log4js-0-6-6 log4js@~0.6.6
531 silly lockFile 7066bf70-log4js-0-6-6 log4js@~0.6.6
532 silly lockFile 4748c617-newrelic-1-0-1 [email protected]
533 silly lockFile 4748c617-newrelic-1-0-1 [email protected]
534 silly lockFile 84829e3f-newrelic-1-0-1 newrelic@~1.0.1
535 silly lockFile 84829e3f-newrelic-1-0-1 newrelic@~1.0.1
536 silly lockFile d5315eb7-commander-2-0-0 [email protected]
537 silly lockFile d5315eb7-commander-2-0-0 [email protected]
538 silly lockFile 00733c5f-commander-2-0-0 commander@~2.0.0
539 silly lockFile 00733c5f-commander-2-0-0 commander@~2.0.0
540 silly lockFile e9b6ade2-redis-0-9-2 [email protected]
541 silly lockFile e9b6ade2-redis-0-9-2 [email protected]
542 silly lockFile 1847718c-sockjs-0-3-8 [email protected]
543 silly lockFile 1847718c-sockjs-0-3-8 [email protected]
544 silly lockFile b8bc9667-67184-0-3182910999748856-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387067184-0.3182910999748856/package
545 silly lockFile b8bc9667-67184-0-3182910999748856-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387067184-0.3182910999748856/package
546 silly lockFile dd751ec6-redis-0-9-0 redis@~0.9.0
547 silly lockFile dd751ec6-redis-0-9-0 redis@~0.9.0
548 silly lockFile 8dbbeff0-sockjs-0-3-8 sockjs@~0.3.8
549 silly lockFile 8dbbeff0-sockjs-0-3-8 sockjs@~0.3.8
550 silly lockFile cfd3d2f4-livedb-mongo-0-2-6 [email protected]
551 silly lockFile cfd3d2f4-livedb-mongo-0-2-6 [email protected]
552 silly lockFile 1f95b197-67184-0-3182910999748856-tmp-tgz tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387067184-0.3182910999748856/tmp.tgz
553 silly lockFile 1f95b197-67184-0-3182910999748856-tmp-tgz tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387067184-0.3182910999748856/tmp.tgz
554 silly lockFile 0d39849d-livedb-mongo-0-2-5 livedb-mongo@~0.2.5
555 silly lockFile 0d39849d-livedb-mongo-0-2-5 livedb-mongo@~0.2.5
556 silly lockFile b505cd20-rbytes-1-0-0 [email protected]
557 silly lockFile b505cd20-rbytes-1-0-0 [email protected]
558 silly lockFile 791288aa-rbytes-1-0-0 rbytes@~1.0.0
559 silly lockFile 791288aa-rbytes-1-0-0 rbytes@~1.0.0
560 silly lockFile fb24baa2-express-3-4-7 [email protected]
561 silly lockFile fb24baa2-express-3-4-7 [email protected]
562 silly lockFile c306bdaa-express-3-4-4 express@~3.4.4
563 silly lockFile c306bdaa-express-3-4-4 express@~3.4.4
564 verbose tar pack [ '/home/sharejs/.npm/transport-adapters/0.1.0/package.tgz',
564 verbose tar pack '/home/sharejs/tmp/npm-7091-_I7pIHma/1387387067184-0.3182910999748856/package' ]
565 verbose tarball /home/sharejs/.npm/transport-adapters/0.1.0/package.tgz
566 verbose folder /home/sharejs/tmp/npm-7091-_I7pIHma/1387387067184-0.3182910999748856/package
567 silly lockFile b8bc9667-67184-0-3182910999748856-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387067184-0.3182910999748856/package
568 verbose lock tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387067184-0.3182910999748856/package /home/sharejs/.npm/b8bc9667-67184-0-3182910999748856-package.lock
569 silly lockFile 60fc8962-sport-adapters-0-1-0-package-tgz tar:///home/sharejs/.npm/transport-adapters/0.1.0/package.tgz
570 verbose lock tar:///home/sharejs/.npm/transport-adapters/0.1.0/package.tgz /home/sharejs/.npm/60fc8962-sport-adapters-0-1-0-package-tgz.lock
571 silly lockFile 3ac6f8ea-isbinaryfile-0-1-9 [email protected]
572 silly lockFile 3ac6f8ea-isbinaryfile-0-1-9 [email protected]
573 silly lockFile 2b437525-ottypes-1-0-1 [email protected]
574 silly lockFile 2b437525-ottypes-1-0-1 [email protected]
575 silly lockFile 8b5b2b9d-isbinaryfile-0-1-9 isbinaryfile@~0.1.9
576 silly lockFile 8b5b2b9d-isbinaryfile-0-1-9 isbinaryfile@~0.1.9
577 silly lockFile 4cbb36db-ottypes-1-0-1 ottypes@~1.0.1
578 silly lockFile 4cbb36db-ottypes-1-0-1 ottypes@~1.0.1
579 silly lockFile be62480b-async-0-2-9 [email protected]
580 silly lockFile be62480b-async-0-2-9 [email protected]
581 silly lockFile 19ed8135-thalassa-0-3-2 [email protected]
582 silly lockFile 19ed8135-thalassa-0-3-2 [email protected]
583 silly lockFile 5d51c871-async-0-2-9 async@~0.2.9
584 silly lockFile 5d51c871-async-0-2-9 async@~0.2.9
585 silly lockFile d06bc841-thalassa-0-3-2 thalassa@~0.3.2
586 silly lockFile d06bc841-thalassa-0-3-2 thalassa@~0.3.2
587 silly lockFile 4ba73353-connect-2-7-11 [email protected]
588 silly lockFile 4ba73353-connect-2-7-11 [email protected]
589 silly lockFile 4db1e39c-connect-2-7-9 connect@~2.7.9
590 silly lockFile 4db1e39c-connect-2-7-9 connect@~2.7.9
591 silly lockFile b8bc9667-67184-0-3182910999748856-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387067184-0.3182910999748856/package
592 silly lockFile b8bc9667-67184-0-3182910999748856-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387067184-0.3182910999748856/package
593 silly lockFile 60fc8962-sport-adapters-0-1-0-package-tgz tar:///home/sharejs/.npm/transport-adapters/0.1.0/package.tgz
594 silly lockFile 60fc8962-sport-adapters-0-1-0-package-tgz tar:///home/sharejs/.npm/transport-adapters/0.1.0/package.tgz
595 silly lockFile 177111e3-transport-adapters-0-1-0-package /home/sharejs/.npm/transport-adapters/0.1.0/package
596 verbose lock /home/sharejs/.npm/transport-adapters/0.1.0/package /home/sharejs/.npm/177111e3-transport-adapters-0-1-0-package.lock
597 silly lockFile 177111e3-transport-adapters-0-1-0-package /home/sharejs/.npm/transport-adapters/0.1.0/package
598 silly lockFile 177111e3-transport-adapters-0-1-0-package /home/sharejs/.npm/transport-adapters/0.1.0/package
599 verbose tar unpack /home/sharejs/.npm/transport-adapters/0.1.0/package.tgz
600 silly lockFile dca92b22-transport-adapters-0-1-0-package tar:///home/sharejs/.npm/transport-adapters/0.1.0/package
601 verbose lock tar:///home/sharejs/.npm/transport-adapters/0.1.0/package /home/sharejs/.npm/dca92b22-transport-adapters-0-1-0-package.lock
602 silly lockFile 60fc8962-sport-adapters-0-1-0-package-tgz tar:///home/sharejs/.npm/transport-adapters/0.1.0/package.tgz
603 verbose lock tar:///home/sharejs/.npm/transport-adapters/0.1.0/package.tgz /home/sharejs/.npm/60fc8962-sport-adapters-0-1-0-package-tgz.lock
604 silly gunzTarPerm modes [ '755', '644' ]
605 silly gunzTarPerm extractEntry package.json
606 silly gunzTarPerm extractEntry .npmignore
607 silly gunzTarPerm extractEntry README.md
608 silly gunzTarPerm extractEntry index.js
609 silly gunzTarPerm extractEntry .travis.yml
610 silly gunzTarPerm extractEntry examples/browserchannel/share-textarea.js
611 silly gunzTarPerm extractEntry examples/browserchannel/index.html
612 silly gunzTarPerm extractEntry examples/browserchannel/server.coffee
613 silly gunzTarPerm extractEntry examples/sockjs/package.json
614 silly gunzTarPerm extractEntry examples/sockjs/index.js
615 silly gunzTarPerm extractEntry examples/sockjs/server.js
616 silly gunzTarPerm extractEntry examples/sockjs/share-textarea.js
617 silly gunzTarPerm extractEntry examples/sockjs/index.html
618 silly gunzTarPerm extractEntry lib/browserchannel.js
619 silly gunzTarPerm extractEntry lib/index.js
620 silly gunzTarPerm extractEntry lib/sockjs.js
621 silly gunzTarPerm extractEntry test/browserchannel.coffee
622 silly gunzTarPerm extractEntry test/sockjs.coffee
623 silly lockFile dca92b22-transport-adapters-0-1-0-package tar:///home/sharejs/.npm/transport-adapters/0.1.0/package
624 silly lockFile dca92b22-transport-adapters-0-1-0-package tar:///home/sharejs/.npm/transport-adapters/0.1.0/package
625 silly lockFile 60fc8962-sport-adapters-0-1-0-package-tgz tar:///home/sharejs/.npm/transport-adapters/0.1.0/package.tgz
626 silly lockFile 60fc8962-sport-adapters-0-1-0-package-tgz tar:///home/sharejs/.npm/transport-adapters/0.1.0/package.tgz
627 verbose chmod /home/sharejs/.npm/transport-adapters/0.1.0/package.tgz 644
628 verbose chown /home/sharejs/.npm/transport-adapters/0.1.0/package.tgz [ 1005, 1005 ]
629 silly lockFile 97302940-ignifiedquire-transport-adapters git://github.com/Dignifiedquire/transport-adapters
630 silly lockFile 97302940-ignifiedquire-transport-adapters git://github.com/Dignifiedquire/transport-adapters
631 verbose addRemoteGit [ 'git@codio-node_deploy_key:codio/node-codio', 'master' ]
632 verbose addRemoteGit [ 'git://github.com/codio/ShareJS', '7' ]
633 verbose addRemoteGit [ 'git://github.com/Dignifiedquire/livedb', 'old_snapshot' ]
634 verbose git remote.origin.url git://github.com/codio/ShareJS
635 verbose git remote.origin.url git@codio-node_deploy_key:codio/node-codio
636 verbose git remote.origin.url git://github.com/Dignifiedquire/livedb
637 verbose git fetch -a origin (git://github.com/Dignifiedquire/livedb)
638 verbose git rev-list -n1 old_snapshot f5646f505131fc398df8098fafac6af2c9aab8a6
639 verbose resolved git url git://github.com/Dignifiedquire/livedb#f5646f505131fc398df8098fafac6af2c9aab8a6
640 verbose tar unpack /home/sharejs/tmp/npm-7091-_I7pIHma/1387387093445-0.0651844497770071/tmp.tgz
641 silly lockFile 7f94afd6-93445-0-0651844497770071-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093445-0.0651844497770071/package
642 verbose lock tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093445-0.0651844497770071/package /home/sharejs/.npm/7f94afd6-93445-0-0651844497770071-package.lock
643 silly lockFile d60bca5c-93445-0-0651844497770071-tmp-tgz tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093445-0.0651844497770071/tmp.tgz
644 verbose lock tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093445-0.0651844497770071/tmp.tgz /home/sharejs/.npm/d60bca5c-93445-0-0651844497770071-tmp-tgz.lock
645 silly gunzTarPerm modes [ '755', '644' ]
646 silly gunzTarPerm extractEntry
647 silly gunzTarPerm modified mode [ '', 509, 493 ]
648 silly gunzTarPerm extractEntry .gitignore
649 silly gunzTarPerm modified mode [ '.gitignore', 436, 420 ]
650 silly gunzTarPerm extractEntry .npmignore
651 silly gunzTarPerm modified mode [ '.npmignore', 436, 420 ]
652 silly gunzTarPerm extractEntry .travis.yml
653 silly gunzTarPerm modified mode [ '.travis.yml', 436, 420 ]
654 silly gunzTarPerm extractEntry LICENSE
655 silly gunzTarPerm modified mode [ 'LICENSE', 436, 420 ]
656 silly gunzTarPerm extractEntry README.md
657 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ]
658 silly gunzTarPerm extractEntry example-backend.coffee
659 silly gunzTarPerm modified mode [ 'example-backend.coffee', 436, 420 ]
660 silly gunzTarPerm extractEntry lib/
661 silly gunzTarPerm modified mode [ 'lib/', 509, 493 ]
662 silly gunzTarPerm extractEntry lib/index.js
663 silly gunzTarPerm modified mode [ 'lib/index.js', 436, 420 ]
664 silly gunzTarPerm extractEntry lib/memory.js
665 silly gunzTarPerm modified mode [ 'lib/memory.js', 436, 420 ]
666 silly gunzTarPerm extractEntry lib/ot.js
667 silly gunzTarPerm modified mode [ 'lib/ot.js', 436, 420 ]
668 silly gunzTarPerm extractEntry lib/ratelimit.js
669 silly gunzTarPerm modified mode [ 'lib/ratelimit.js', 436, 420 ]
670 silly gunzTarPerm extractEntry lib/scripts/
671 silly gunzTarPerm modified mode [ 'lib/scripts/', 509, 493 ]
672 silly gunzTarPerm extractEntry lib/scripts/bulkGetOpsSince.lua
673 silly gunzTarPerm modified mode [ 'lib/scripts/bulkGetOpsSince.lua', 436, 420 ]
674 silly gunzTarPerm extractEntry lib/scripts/getOps.lua
675 silly gunzTarPerm modified mode [ 'lib/scripts/getOps.lua', 436, 420 ]
676 silly gunzTarPerm extractEntry lib/scripts/setExpire.lua
677 silly gunzTarPerm modified mode [ 'lib/scripts/setExpire.lua', 436, 420 ]
678 silly gunzTarPerm extractEntry lib/scripts/submit.lua
679 silly gunzTarPerm modified mode [ 'lib/scripts/submit.lua', 436, 420 ]
680 silly gunzTarPerm extractEntry package.json
681 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ]
682 silly gunzTarPerm extractEntry test/
683 silly gunzTarPerm modified mode [ 'test/', 509, 493 ]
684 silly gunzTarPerm extractEntry test/memory.coffee
685 silly gunzTarPerm modified mode [ 'test/memory.coffee', 436, 420 ]
686 silly gunzTarPerm extractEntry test/mocha.opts
687 silly gunzTarPerm modified mode [ 'test/mocha.opts', 436, 420 ]
688 silly gunzTarPerm extractEntry test/oplog.coffee
689 silly gunzTarPerm modified mode [ 'test/oplog.coffee', 436, 420 ]
690 silly gunzTarPerm extractEntry test/ot.coffee
691 silly gunzTarPerm modified mode [ 'test/ot.coffee', 436, 420 ]
692 silly gunzTarPerm extractEntry test/snapshotdb.coffee
693 silly gunzTarPerm modified mode [ 'test/snapshotdb.coffee', 436, 420 ]
694 silly gunzTarPerm extractEntry test/test.coffee
695 silly gunzTarPerm modified mode [ 'test/test.coffee', 436, 420 ]
696 silly lockFile 7f94afd6-93445-0-0651844497770071-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093445-0.0651844497770071/package
697 silly lockFile 7f94afd6-93445-0-0651844497770071-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093445-0.0651844497770071/package
698 silly lockFile d60bca5c-93445-0-0651844497770071-tmp-tgz tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093445-0.0651844497770071/tmp.tgz
699 silly lockFile d60bca5c-93445-0-0651844497770071-tmp-tgz tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093445-0.0651844497770071/tmp.tgz
700 verbose tar pack [ '/home/sharejs/.npm/livedb/0.2.8/package.tgz',
700 verbose tar pack '/home/sharejs/tmp/npm-7091-_I7pIHma/1387387093445-0.0651844497770071/package' ]
701 verbose tarball /home/sharejs/.npm/livedb/0.2.8/package.tgz
702 verbose folder /home/sharejs/tmp/npm-7091-_I7pIHma/1387387093445-0.0651844497770071/package
703 silly lockFile 7f94afd6-93445-0-0651844497770071-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093445-0.0651844497770071/package
704 verbose lock tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093445-0.0651844497770071/package /home/sharejs/.npm/7f94afd6-93445-0-0651844497770071-package.lock
705 silly lockFile 4d9255f1-ejs-npm-livedb-0-2-8-package-tgz tar:///home/sharejs/.npm/livedb/0.2.8/package.tgz
706 verbose lock tar:///home/sharejs/.npm/livedb/0.2.8/package.tgz /home/sharejs/.npm/4d9255f1-ejs-npm-livedb-0-2-8-package-tgz.lock
707 verbose git fetch -a origin (git@codio-node_deploy_key:codio/node-codio)
708 verbose git rev-list -n1 master b26ffbb9211ee576556903fcc23f8db2339392cf
709 verbose resolved git url git+ssh://git@codio-node_deploy_key:codio/node-codio#b26ffbb9211ee576556903fcc23f8db2339392cf
710 verbose tar unpack /home/sharejs/tmp/npm-7091-_I7pIHma/1387387093728-0.24091318738646805/tmp.tgz
711 silly lockFile 873c5837-3728-0-24091318738646805-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093728-0.24091318738646805/package
712 verbose lock tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093728-0.24091318738646805/package /home/sharejs/.npm/873c5837-3728-0-24091318738646805-package.lock
713 silly lockFile e91a870a-3728-0-24091318738646805-tmp-tgz tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093728-0.24091318738646805/tmp.tgz
714 verbose lock tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093728-0.24091318738646805/tmp.tgz /home/sharejs/.npm/e91a870a-3728-0-24091318738646805-tmp-tgz.lock
715 silly gunzTarPerm modes [ '755', '644' ]
716 silly gunzTarPerm extractEntry
717 silly gunzTarPerm modified mode [ '', 509, 493 ]
718 silly gunzTarPerm extractEntry .gitignore
719 silly gunzTarPerm modified mode [ '.gitignore', 436, 420 ]
720 silly gunzTarPerm extractEntry .jshintrc
721 silly gunzTarPerm modified mode [ '.jshintrc', 436, 420 ]
722 silly gunzTarPerm extractEntry README.md
723 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ]
724 silly gunzTarPerm extractEntry gruntfile.coffee
725 silly gunzTarPerm modified mode [ 'gruntfile.coffee', 436, 420 ]
726 silly gunzTarPerm extractEntry index.js
727 silly gunzTarPerm modified mode [ 'index.js', 436, 420 ]
728 silly gunzTarPerm extractEntry lib/
729 silly gunzTarPerm modified mode [ 'lib/', 509, 493 ]
730 silly gunzTarPerm extractEntry lib/project-manager.js
731 silly gunzTarPerm modified mode [ 'lib/project-manager.js', 436, 420 ]
732 silly gunzTarPerm extractEntry lib/project-structure-manager.js
733 silly gunzTarPerm modified mode [ 'lib/project-structure-manager.js', 436, 420 ]
734 silly gunzTarPerm extractEntry lib/request.js
735 silly gunzTarPerm modified mode [ 'lib/request.js', 436, 420 ]
736 silly gunzTarPerm extractEntry package.json
737 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ]
738 silly gunzTarPerm extractEntry test/
739 silly gunzTarPerm modified mode [ 'test/', 509, 493 ]
740 silly gunzTarPerm extractEntry test/index.spec.js
741 silly gunzTarPerm modified mode [ 'test/index.spec.js', 436, 420 ]
742 silly gunzTarPerm extractEntry test/mocha-globals.js
743 silly gunzTarPerm modified mode [ 'test/mocha-globals.js', 436, 420 ]
744 silly gunzTarPerm extractEntry test/project-manager.spec.js
745 silly gunzTarPerm modified mode [ 'test/project-manager.spec.js', 436, 420 ]
746 silly gunzTarPerm extractEntry test/project-structure-manager.spec.js
747 silly gunzTarPerm modified mode [ 'test/project-structure-manager.spec.js', 436, 420 ]
748 silly gunzTarPerm extractEntry test/request.spec.js
749 silly gunzTarPerm modified mode [ 'test/request.spec.js', 436, 420 ]
750 silly lockFile 7f94afd6-93445-0-0651844497770071-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093445-0.0651844497770071/package
751 silly lockFile 7f94afd6-93445-0-0651844497770071-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093445-0.0651844497770071/package
752 silly lockFile 4d9255f1-ejs-npm-livedb-0-2-8-package-tgz tar:///home/sharejs/.npm/livedb/0.2.8/package.tgz
753 silly lockFile 4d9255f1-ejs-npm-livedb-0-2-8-package-tgz tar:///home/sharejs/.npm/livedb/0.2.8/package.tgz
754 silly lockFile 549b1f7e-sharejs-npm-livedb-0-2-8-package /home/sharejs/.npm/livedb/0.2.8/package
755 verbose lock /home/sharejs/.npm/livedb/0.2.8/package /home/sharejs/.npm/549b1f7e-sharejs-npm-livedb-0-2-8-package.lock
756 silly lockFile 549b1f7e-sharejs-npm-livedb-0-2-8-package /home/sharejs/.npm/livedb/0.2.8/package
757 silly lockFile 549b1f7e-sharejs-npm-livedb-0-2-8-package /home/sharejs/.npm/livedb/0.2.8/package
758 verbose tar unpack /home/sharejs/.npm/livedb/0.2.8/package.tgz
759 silly lockFile f62a7f8c-sharejs-npm-livedb-0-2-8-package tar:///home/sharejs/.npm/livedb/0.2.8/package
760 verbose lock tar:///home/sharejs/.npm/livedb/0.2.8/package /home/sharejs/.npm/f62a7f8c-sharejs-npm-livedb-0-2-8-package.lock
761 silly lockFile 4d9255f1-ejs-npm-livedb-0-2-8-package-tgz tar:///home/sharejs/.npm/livedb/0.2.8/package.tgz
762 verbose lock tar:///home/sharejs/.npm/livedb/0.2.8/package.tgz /home/sharejs/.npm/4d9255f1-ejs-npm-livedb-0-2-8-package-tgz.lock
763 silly gunzTarPerm modes [ '755', '644' ]
764 silly gunzTarPerm extractEntry package.json
765 silly gunzTarPerm extractEntry .npmignore
766 silly gunzTarPerm extractEntry README.md
767 silly lockFile 873c5837-3728-0-24091318738646805-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093728-0.24091318738646805/package
768 silly lockFile 873c5837-3728-0-24091318738646805-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093728-0.24091318738646805/package
769 silly lockFile e91a870a-3728-0-24091318738646805-tmp-tgz tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093728-0.24091318738646805/tmp.tgz
770 silly lockFile e91a870a-3728-0-24091318738646805-tmp-tgz tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093728-0.24091318738646805/tmp.tgz
771 silly gunzTarPerm extractEntry LICENSE
772 silly gunzTarPerm extractEntry .travis.yml
773 verbose tar pack [ '/home/sharejs/.npm/node-codio/0.0.1/package.tgz',
773 verbose tar pack '/home/sharejs/tmp/npm-7091-_I7pIHma/1387387093728-0.24091318738646805/package' ]
774 verbose tarball /home/sharejs/.npm/node-codio/0.0.1/package.tgz
775 verbose folder /home/sharejs/tmp/npm-7091-_I7pIHma/1387387093728-0.24091318738646805/package
776 silly lockFile 873c5837-3728-0-24091318738646805-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093728-0.24091318738646805/package
777 verbose lock tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093728-0.24091318738646805/package /home/sharejs/.npm/873c5837-3728-0-24091318738646805-package.lock
778 silly lockFile 99388702-npm-node-codio-0-0-1-package-tgz tar:///home/sharejs/.npm/node-codio/0.0.1/package.tgz
779 verbose lock tar:///home/sharejs/.npm/node-codio/0.0.1/package.tgz /home/sharejs/.npm/99388702-npm-node-codio-0-0-1-package-tgz.lock
780 silly gunzTarPerm extractEntry example-backend.coffee
781 silly gunzTarPerm extractEntry lib/index.js
782 silly gunzTarPerm extractEntry lib/memory.js
783 silly gunzTarPerm extractEntry lib/ot.js
784 silly gunzTarPerm extractEntry lib/ratelimit.js
785 silly gunzTarPerm extractEntry lib/scripts/bulkGetOpsSince.lua
786 silly gunzTarPerm extractEntry lib/scripts/getOps.lua
787 silly gunzTarPerm extractEntry lib/scripts/setExpire.lua
788 silly gunzTarPerm extractEntry lib/scripts/submit.lua
789 silly lockFile 873c5837-3728-0-24091318738646805-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093728-0.24091318738646805/package
790 silly lockFile 873c5837-3728-0-24091318738646805-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387093728-0.24091318738646805/package
791 silly lockFile 99388702-npm-node-codio-0-0-1-package-tgz tar:///home/sharejs/.npm/node-codio/0.0.1/package.tgz
792 silly lockFile 99388702-npm-node-codio-0-0-1-package-tgz tar:///home/sharejs/.npm/node-codio/0.0.1/package.tgz
793 silly lockFile 9aae7159-ejs-npm-node-codio-0-0-1-package /home/sharejs/.npm/node-codio/0.0.1/package
794 verbose lock /home/sharejs/.npm/node-codio/0.0.1/package /home/sharejs/.npm/9aae7159-ejs-npm-node-codio-0-0-1-package.lock
795 silly lockFile 9aae7159-ejs-npm-node-codio-0-0-1-package /home/sharejs/.npm/node-codio/0.0.1/package
796 silly lockFile 9aae7159-ejs-npm-node-codio-0-0-1-package /home/sharejs/.npm/node-codio/0.0.1/package
797 verbose tar unpack /home/sharejs/.npm/node-codio/0.0.1/package.tgz
798 silly lockFile 6209bbdd-ejs-npm-node-codio-0-0-1-package tar:///home/sharejs/.npm/node-codio/0.0.1/package
799 verbose lock tar:///home/sharejs/.npm/node-codio/0.0.1/package /home/sharejs/.npm/6209bbdd-ejs-npm-node-codio-0-0-1-package.lock
800 silly lockFile 99388702-npm-node-codio-0-0-1-package-tgz tar:///home/sharejs/.npm/node-codio/0.0.1/package.tgz
801 verbose lock tar:///home/sharejs/.npm/node-codio/0.0.1/package.tgz /home/sharejs/.npm/99388702-npm-node-codio-0-0-1-package-tgz.lock
802 silly gunzTarPerm modes [ '755', '644' ]
803 silly gunzTarPerm extractEntry package.json
804 silly gunzTarPerm extractEntry .npmignore
805 silly gunzTarPerm extractEntry README.md
806 silly gunzTarPerm extractEntry index.js
807 silly gunzTarPerm extractEntry .jshintrc
808 silly gunzTarPerm extractEntry gruntfile.coffee
809 silly gunzTarPerm extractEntry lib/project-manager.js
810 silly gunzTarPerm extractEntry test/memory.coffee
811 silly gunzTarPerm extractEntry test/mocha.opts
812 silly gunzTarPerm extractEntry lib/project-structure-manager.js
813 silly gunzTarPerm extractEntry lib/request.js
814 silly gunzTarPerm extractEntry test/index.spec.js
815 silly gunzTarPerm extractEntry test/mocha-globals.js
816 silly gunzTarPerm extractEntry test/project-manager.spec.js
817 silly gunzTarPerm extractEntry test/project-structure-manager.spec.js
818 silly gunzTarPerm extractEntry test/request.spec.js
819 silly gunzTarPerm extractEntry test/oplog.coffee
820 silly gunzTarPerm extractEntry test/ot.coffee
821 silly gunzTarPerm extractEntry test/snapshotdb.coffee
822 silly gunzTarPerm extractEntry test/test.coffee
823 silly lockFile 6209bbdd-ejs-npm-node-codio-0-0-1-package tar:///home/sharejs/.npm/node-codio/0.0.1/package
824 silly lockFile 6209bbdd-ejs-npm-node-codio-0-0-1-package tar:///home/sharejs/.npm/node-codio/0.0.1/package
825 silly lockFile 99388702-npm-node-codio-0-0-1-package-tgz tar:///home/sharejs/.npm/node-codio/0.0.1/package.tgz
826 silly lockFile 99388702-npm-node-codio-0-0-1-package-tgz tar:///home/sharejs/.npm/node-codio/0.0.1/package.tgz
827 verbose chmod /home/sharejs/.npm/node-codio/0.0.1/package.tgz 644
828 verbose chown /home/sharejs/.npm/node-codio/0.0.1/package.tgz [ 1005, 1005 ]
829 silly lockFile 799634bd-node-deploy-key-codio-node-codio git@codio-node_deploy_key:codio/node-codio
830 silly lockFile f62a7f8c-sharejs-npm-livedb-0-2-8-package tar:///home/sharejs/.npm/livedb/0.2.8/package
831 silly lockFile f62a7f8c-sharejs-npm-livedb-0-2-8-package tar:///home/sharejs/.npm/livedb/0.2.8/package
832 silly lockFile 4d9255f1-ejs-npm-livedb-0-2-8-package-tgz tar:///home/sharejs/.npm/livedb/0.2.8/package.tgz
833 silly lockFile 4d9255f1-ejs-npm-livedb-0-2-8-package-tgz tar:///home/sharejs/.npm/livedb/0.2.8/package.tgz
834 verbose chmod /home/sharejs/.npm/livedb/0.2.8/package.tgz 644
835 verbose chown /home/sharejs/.npm/livedb/0.2.8/package.tgz [ 1005, 1005 ]
836 silly lockFile 264ecefb-github-com-Dignifiedquire-livedb git://github.com/Dignifiedquire/livedb
837 verbose git fetch -a origin (git://github.com/codio/ShareJS)
838 verbose git rev-list -n1 7 0f1ef2a85f75b8344d15c458ccedc9be4a1d7cbe
839 verbose resolved git url git://github.com/codio/ShareJS#0f1ef2a85f75b8344d15c458ccedc9be4a1d7cbe
840 verbose tar unpack /home/sharejs/tmp/npm-7091-_I7pIHma/1387387095392-0.7199489949271083/tmp.tgz
841 silly lockFile 99618df5-95392-0-7199489949271083-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387095392-0.7199489949271083/package
842 verbose lock tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387095392-0.7199489949271083/package /home/sharejs/.npm/99618df5-95392-0-7199489949271083-package.lock
843 silly lockFile 65fe85f3-95392-0-7199489949271083-tmp-tgz tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387095392-0.7199489949271083/tmp.tgz
844 verbose lock tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387095392-0.7199489949271083/tmp.tgz /home/sharejs/.npm/65fe85f3-95392-0-7199489949271083-tmp-tgz.lock
845 silly gunzTarPerm modes [ '755', '644' ]
846 silly gunzTarPerm extractEntry
847 silly gunzTarPerm modified mode [ '', 509, 493 ]
848 silly gunzTarPerm extractEntry .gitignore
849 silly gunzTarPerm modified mode [ '.gitignore', 436, 420 ]
850 silly gunzTarPerm extractEntry .npmignore
851 silly gunzTarPerm modified mode [ '.npmignore', 436, 420 ]
852 silly gunzTarPerm extractEntry .travis.yml
853 silly gunzTarPerm modified mode [ '.travis.yml', 436, 420 ]
854 silly gunzTarPerm extractEntry LICENSE
855 silly gunzTarPerm modified mode [ 'LICENSE', 436, 420 ]
856 silly gunzTarPerm extractEntry Makefile
857 silly gunzTarPerm modified mode [ 'Makefile', 436, 420 ]
858 silly gunzTarPerm extractEntry README.md
859 silly gunzTarPerm modified mode [ 'README.md', 436, 420 ]
860 silly gunzTarPerm extractEntry bin/
861 silly gunzTarPerm modified mode [ 'bin/', 509, 493 ]
862 silly gunzTarPerm extractEntry bin/options.js
863 silly gunzTarPerm modified mode [ 'bin/options.js', 436, 420 ]
864 silly gunzTarPerm extractEntry bin/setup_amazon
865 silly gunzTarPerm modified mode [ 'bin/setup_amazon', 509, 493 ]
866 silly gunzTarPerm extractEntry bin/setup_couch
867 silly gunzTarPerm modified mode [ 'bin/setup_couch', 509, 493 ]
868 silly gunzTarPerm extractEntry bin/setup_mysql
869 silly gunzTarPerm modified mode [ 'bin/setup_mysql', 509, 493 ]
870 silly gunzTarPerm extractEntry bin/setup_pg
871 silly gunzTarPerm modified mode [ 'bin/setup_pg', 509, 493 ]
872 silly gunzTarPerm extractEntry bin/sharejs
873 silly gunzTarPerm modified mode [ 'bin/sharejs', 509, 493 ]
874 silly gunzTarPerm extractEntry bin/sourceserver
875 silly gunzTarPerm modified mode [ 'bin/sourceserver', 509, 493 ]
876 silly gunzTarPerm extractEntry karma.conf.coffee
877 silly gunzTarPerm modified mode [ 'karma.conf.coffee', 436, 420 ]
878 silly gunzTarPerm extractEntry lib/
879 silly gunzTarPerm modified mode [ 'lib/', 509, 493 ]
880 silly gunzTarPerm extractEntry lib/client/
881 silly gunzTarPerm modified mode [ 'lib/client/', 509, 493 ]
882 silly gunzTarPerm extractEntry lib/client/connection.js
883 silly gunzTarPerm modified mode [ 'lib/client/connection.js', 436, 420 ]
884 silly gunzTarPerm extractEntry lib/client/doc.js
885 silly gunzTarPerm modified mode [ 'lib/client/doc.js', 436, 420 ]
886 silly gunzTarPerm extractEntry lib/client/index.js
887 silly gunzTarPerm modified mode [ 'lib/client/index.js', 436, 420 ]
888 silly gunzTarPerm extractEntry lib/client/microevent.js
889 silly gunzTarPerm modified mode [ 'lib/client/microevent.js', 436, 420 ]
890 silly gunzTarPerm extractEntry lib/client/query.js
891 silly gunzTarPerm modified mode [ 'lib/client/query.js', 436, 420 ]
892 silly gunzTarPerm extractEntry lib/client/textarea.js
893 silly gunzTarPerm modified mode [ 'lib/client/textarea.js', 436, 420 ]
894 silly gunzTarPerm extractEntry lib/index.js
895 silly gunzTarPerm modified mode [ 'lib/index.js', 436, 420 ]
896 silly gunzTarPerm extractEntry lib/server/
897 silly gunzTarPerm modified mode [ 'lib/server/', 509, 493 ]
898 silly gunzTarPerm extractEntry lib/server/index.js
899 silly gunzTarPerm modified mode [ 'lib/server/index.js', 436, 420 ]
900 silly gunzTarPerm extractEntry lib/server/rest.js
901 silly gunzTarPerm modified mode [ 'lib/server/rest.js', 436, 420 ]
902 silly gunzTarPerm extractEntry lib/server/session.js
903 silly gunzTarPerm modified mode [ 'lib/server/session.js', 436, 420 ]
904 silly gunzTarPerm extractEntry lib/server/useragent.js
905 silly gunzTarPerm modified mode [ 'lib/server/useragent.js', 436, 420 ]
906 silly gunzTarPerm extractEntry lib/types/
907 silly gunzTarPerm modified mode [ 'lib/types/', 509, 493 ]
908 silly gunzTarPerm extractEntry lib/types/README.md
909 silly gunzTarPerm modified mode [ 'lib/types/README.md', 436, 420 ]
910 silly gunzTarPerm extractEntry lib/types/index.js
911 silly gunzTarPerm modified mode [ 'lib/types/index.js', 436, 420 ]
912 silly gunzTarPerm extractEntry lib/types/json-api.js
913 silly gunzTarPerm modified mode [ 'lib/types/json-api.js', 436, 420 ]
914 silly gunzTarPerm extractEntry lib/types/text-api.js
915 silly gunzTarPerm modified mode [ 'lib/types/text-api.js', 436, 420 ]
916 silly gunzTarPerm extractEntry lib/types/text-tp2-api.js
917 silly gunzTarPerm modified mode [ 'lib/types/text-tp2-api.js', 436, 420 ]
918 silly gunzTarPerm extractEntry metadata.md
919 silly gunzTarPerm modified mode [ 'metadata.md', 436, 420 ]
920 silly gunzTarPerm extractEntry package.json
921 silly gunzTarPerm modified mode [ 'package.json', 436, 420 ]
922 silly gunzTarPerm extractEntry prototype/
923 silly gunzTarPerm modified mode [ 'prototype/', 509, 493 ]
924 silly gunzTarPerm extractEntry prototype/clock.coffee
925 silly gunzTarPerm modified mode [ 'prototype/clock.coffee', 436, 420 ]
926 silly gunzTarPerm extractEntry prototype/package.json
927 silly gunzTarPerm modified mode [ 'prototype/package.json', 436, 420 ]
928 silly gunzTarPerm extractEntry prototype/public/
929 silly gunzTarPerm modified mode [ 'prototype/public/', 509, 493 ]
930 silly gunzTarPerm extractEntry prototype/public/create.html
931 silly gunzTarPerm modified mode [ 'prototype/public/create.html', 436, 420 ]
932 silly gunzTarPerm extractEntry prototype/public/img/
933 silly gunzTarPerm modified mode [ 'prototype/public/img/', 509, 493 ]
934 silly gunzTarPerm extractEntry prototype/public/img/jsoneditor-icons.png
935 silly gunzTarPerm modified mode [ 'prototype/public/img/jsoneditor-icons.png', 436, 420 ]
936 silly gunzTarPerm extractEntry prototype/public/index.html
937 silly gunzTarPerm modified mode [ 'prototype/public/index.html', 436, 420 ]
938 silly gunzTarPerm extractEntry prototype/public/json.html
939 silly gunzTarPerm modified mode [ 'prototype/public/json.html', 436, 420 ]
940 silly gunzTarPerm extractEntry prototype/public/json_list.html
941 silly gunzTarPerm modified mode [ 'prototype/public/json_list.html', 436, 420 ]
942 silly gunzTarPerm extractEntry prototype/public/jsoneditor-min.css
943 silly gunzTarPerm modified mode [ 'prototype/public/jsoneditor-min.css', 436, 420 ]
944 silly gunzTarPerm extractEntry prototype/public/jsoneditor-min.js
945 silly gunzTarPerm modified mode [ 'prototype/public/jsoneditor-min.js', 436, 420 ]
946 silly gunzTarPerm extractEntry prototype/public/list.html
947 silly gunzTarPerm modified mode [ 'prototype/public/list.html', 436, 420 ]
948 silly gunzTarPerm extractEntry prototype/public/multi.html
949 silly gunzTarPerm modified mode [ 'prototype/public/multi.html', 436, 420 ]
950 silly gunzTarPerm extractEntry prototype/server.js
951 silly gunzTarPerm modified mode [ 'prototype/server.js', 436, 420 ]
952 silly gunzTarPerm extractEntry scripts/
953 silly gunzTarPerm modified mode [ 'scripts/', 509, 493 ]
954 silly gunzTarPerm extractEntry scripts/apply.csv
955 silly gunzTarPerm modified mode [ 'scripts/apply.csv', 436, 420 ]
956 silly gunzTarPerm extractEntry scripts/bench-composable.coffee
957 silly gunzTarPerm modified mode [ 'scripts/bench-composable.coffee', 436, 420 ]
958 silly gunzTarPerm extractEntry scripts/bench.coffee
959 silly gunzTarPerm modified mode [ 'scripts/bench.coffee', 436, 420 ]
960 silly gunzTarPerm extractEntry scripts/benchmark/
961 silly gunzTarPerm modified mode [ 'scripts/benchmark/', 509, 493 ]
962 silly gunzTarPerm extractEntry scripts/benchmark/benchmark.coffee
963 silly gunzTarPerm modified mode [ 'scripts/benchmark/benchmark.coffee', 436, 420 ]
964 silly gunzTarPerm extractEntry scripts/cat.coffee
965 silly gunzTarPerm modified mode [ 'scripts/cat.coffee', 436, 420 ]
966 silly gunzTarPerm extractEntry scripts/stats.coffee
967 silly gunzTarPerm modified mode [ 'scripts/stats.coffee', 436, 420 ]
968 silly gunzTarPerm extractEntry scripts/talk.coffee
969 silly gunzTarPerm modified mode [ 'scripts/talk.coffee', 436, 420 ]
970 silly gunzTarPerm extractEntry test/
971 silly gunzTarPerm modified mode [ 'test/', 509, 493 ]
972 silly gunzTarPerm extractEntry test/browser/
973 silly gunzTarPerm modified mode [ 'test/browser/', 509, 493 ]
974 silly gunzTarPerm extractEntry test/browser/connection.coffee
975 silly gunzTarPerm modified mode [ 'test/browser/connection.coffee', 436, 420 ]
976 silly gunzTarPerm extractEntry test/browser/doc.coffee
977 silly gunzTarPerm modified mode [ 'test/browser/doc.coffee', 436, 420 ]
978 silly gunzTarPerm extractEntry test/browser/queries.coffee
979 silly gunzTarPerm modified mode [ 'test/browser/queries.coffee', 436, 420 ]
980 silly gunzTarPerm extractEntry test/browser/subscribed.coffee
981 silly gunzTarPerm modified mode [ 'test/browser/subscribed.coffee', 436, 420 ]
982 silly gunzTarPerm extractEntry test/helpers/
983 silly gunzTarPerm modified mode [ 'test/helpers/', 509, 493 ]
984 silly gunzTarPerm extractEntry test/helpers/fixtures.coffee
985 silly gunzTarPerm modified mode [ 'test/helpers/fixtures.coffee', 436, 420 ]
986 silly gunzTarPerm extractEntry test/helpers/index.coffee
987 silly gunzTarPerm modified mode [ 'test/helpers/index.coffee', 436, 420 ]
988 silly gunzTarPerm extractEntry test/helpers/mersenne.js
989 silly gunzTarPerm modified mode [ 'test/helpers/mersenne.js', 436, 420 ]
990 silly gunzTarPerm extractEntry test/helpers/ot_number.js
991 silly gunzTarPerm modified mode [ 'test/helpers/ot_number.js', 436, 420 ]
992 silly gunzTarPerm extractEntry test/helpers/phantom.coffee
993 silly gunzTarPerm modified mode [ 'test/helpers/phantom.coffee', 436, 420 ]
994 silly gunzTarPerm extractEntry test/helpers/randomizer.coffee
995 silly gunzTarPerm modified mode [ 'test/helpers/randomizer.coffee', 436, 420 ]
996 silly gunzTarPerm extractEntry test/helpers/server.coffee
997 silly gunzTarPerm modified mode [ 'test/helpers/server.coffee', 436, 420 ]
998 silly gunzTarPerm extractEntry test/helpers/socket.coffee
999 silly gunzTarPerm modified mode [ 'test/helpers/socket.coffee', 436, 420 ]
1000 silly gunzTarPerm extractEntry test/helpers/webclient.coffee
1001 silly gunzTarPerm modified mode [ 'test/helpers/webclient.coffee', 436, 420 ]
1002 silly gunzTarPerm extractEntry test/server/
1003 silly gunzTarPerm modified mode [ 'test/server/', 509, 493 ]
1004 silly gunzTarPerm extractEntry test/server/connection.coffee
1005 silly gunzTarPerm modified mode [ 'test/server/connection.coffee', 436, 420 ]
1006 silly gunzTarPerm extractEntry test/server/doc.coffee
1007 silly gunzTarPerm modified mode [ 'test/server/doc.coffee', 436, 420 ]
1008 silly gunzTarPerm extractEntry test/server/integration.coffee
1009 silly gunzTarPerm modified mode [ 'test/server/integration.coffee', 436, 420 ]
1010 silly gunzTarPerm extractEntry test/server/json-api.coffee
1011 silly gunzTarPerm modified mode [ 'test/server/json-api.coffee', 436, 420 ]
1012 silly gunzTarPerm extractEntry test/server/microevent.coffee
1013 silly gunzTarPerm modified mode [ 'test/server/microevent.coffee', 436, 420 ]
1014 silly gunzTarPerm extractEntry test/server/middleware.coffee
1015 silly gunzTarPerm modified mode [ 'test/server/middleware.coffee', 436, 420 ]
1016 silly gunzTarPerm extractEntry test/server/query.coffee
1017 silly gunzTarPerm modified mode [ 'test/server/query.coffee', 436, 420 ]
1018 silly gunzTarPerm extractEntry test/server/rest.coffee
1019 silly gunzTarPerm modified mode [ 'test/server/rest.coffee', 436, 420 ]
1020 silly gunzTarPerm extractEntry test/server/session.coffee
1021 silly gunzTarPerm modified mode [ 'test/server/session.coffee', 436, 420 ]
1022 silly gunzTarPerm extractEntry test/server/testhelpers.coffee
1023 silly gunzTarPerm modified mode [ 'test/server/testhelpers.coffee', 436, 420 ]
1024 silly gunzTarPerm extractEntry test/server/text-api.coffee
1025 silly gunzTarPerm modified mode [ 'test/server/text-api.coffee', 436, 420 ]
1026 silly gunzTarPerm extractEntry test/server/useragent.coffee
1027 silly gunzTarPerm modified mode [ 'test/server/useragent.coffee', 436, 420 ]
1028 silly gunzTarPerm extractEntry test/server/version.coffee
1029 silly gunzTarPerm modified mode [ 'test/server/version.coffee', 436, 420 ]
1030 silly lockFile 99618df5-95392-0-7199489949271083-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387095392-0.7199489949271083/package
1031 silly lockFile 99618df5-95392-0-7199489949271083-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387095392-0.7199489949271083/package
1032 silly lockFile 65fe85f3-95392-0-7199489949271083-tmp-tgz tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387095392-0.7199489949271083/tmp.tgz
1033 silly lockFile 65fe85f3-95392-0-7199489949271083-tmp-tgz tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387095392-0.7199489949271083/tmp.tgz
1034 verbose tar pack [ '/home/sharejs/.npm/share/0.7.0-alpha9/package.tgz',
1034 verbose tar pack '/home/sharejs/tmp/npm-7091-_I7pIHma/1387387095392-0.7199489949271083/package' ]
1035 verbose tarball /home/sharejs/.npm/share/0.7.0-alpha9/package.tgz
1036 verbose folder /home/sharejs/tmp/npm-7091-_I7pIHma/1387387095392-0.7199489949271083/package
1037 silly lockFile 99618df5-95392-0-7199489949271083-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387095392-0.7199489949271083/package
1038 verbose lock tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387095392-0.7199489949271083/package /home/sharejs/.npm/99618df5-95392-0-7199489949271083-package.lock
1039 silly lockFile a733730d-m-share-0-7-0-alpha9-package-tgz tar:///home/sharejs/.npm/share/0.7.0-alpha9/package.tgz
1040 verbose lock tar:///home/sharejs/.npm/share/0.7.0-alpha9/package.tgz /home/sharejs/.npm/a733730d-m-share-0-7-0-alpha9-package-tgz.lock
1041 silly lockFile 99618df5-95392-0-7199489949271083-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387095392-0.7199489949271083/package
1042 silly lockFile 99618df5-95392-0-7199489949271083-package tar:///home/sharejs/tmp/npm-7091-_I7pIHma/1387387095392-0.7199489949271083/package
1043 silly lockFile a733730d-m-share-0-7-0-alpha9-package-tgz tar:///home/sharejs/.npm/share/0.7.0-alpha9/package.tgz
1044 silly lockFile a733730d-m-share-0-7-0-alpha9-package-tgz tar:///home/sharejs/.npm/share/0.7.0-alpha9/package.tgz
1045 silly lockFile 71b87c39-s-npm-share-0-7-0-alpha9-package /home/sharejs/.npm/share/0.7.0-alpha9/package
1046 verbose lock /home/sharejs/.npm/share/0.7.0-alpha9/package /home/sharejs/.npm/71b87c39-s-npm-share-0-7-0-alpha9-package.lock
1047 silly lockFile 71b87c39-s-npm-share-0-7-0-alpha9-package /home/sharejs/.npm/share/0.7.0-alpha9/package
1048 silly lockFile 71b87c39-s-npm-share-0-7-0-alpha9-package /home/sharejs/.npm/share/0.7.0-alpha9/package
1049 verbose tar unpack /home/sharejs/.npm/share/0.7.0-alpha9/package.tgz
1050 silly lockFile f64388dd-s-npm-share-0-7-0-alpha9-package tar:///home/sharejs/.npm/share/0.7.0-alpha9/package
1051 verbose lock tar:///home/sharejs/.npm/share/0.7.0-alpha9/package /home/sharejs/.npm/f64388dd-s-npm-share-0-7-0-alpha9-package.lock
1052 silly lockFile a733730d-m-share-0-7-0-alpha9-package-tgz tar:///home/sharejs/.npm/share/0.7.0-alpha9/package.tgz
1053 verbose lock tar:///home/sharejs/.npm/share/0.7.0-alpha9/package.tgz /home/sharejs/.npm/a733730d-m-share-0-7-0-alpha9-package-tgz.lock
1054 silly gunzTarPerm modes [ '755', '644' ]
1055 silly gunzTarPerm extractEntry package.json
1056 silly gunzTarPerm extractEntry .npmignore
1057 silly gunzTarPerm extractEntry README.md
1058 silly gunzTarPerm extractEntry LICENSE
1059 silly gunzTarPerm extractEntry test/browser/connection.coffee
1060 silly gunzTarPerm extractEntry test/browser/doc.coffee
1061 silly gunzTarPerm extractEntry test/browser/queries.coffee
1062 silly gunzTarPerm extractEntry test/browser/subscribed.coffee
1063 silly gunzTarPerm extractEntry test/helpers/mersenne.js
1064 silly gunzTarPerm extractEntry test/helpers/ot_number.js
1065 silly gunzTarPerm extractEntry test/helpers/fixtures.coffee
1066 silly gunzTarPerm extractEntry test/helpers/index.coffee
1067 silly gunzTarPerm extractEntry test/helpers/phantom.coffee
1068 silly gunzTarPerm extractEntry test/helpers/randomizer.coffee
1069 silly gunzTarPerm extractEntry test/helpers/server.coffee
1070 silly gunzTarPerm extractEntry test/helpers/socket.coffee
1071 silly gunzTarPerm extractEntry test/helpers/webclient.coffee
1072 silly gunzTarPerm extractEntry test/server/query.coffee
1073 silly gunzTarPerm extractEntry test/server/connection.coffee
1074 silly gunzTarPerm extractEntry test/server/integration.coffee
1075 silly gunzTarPerm extractEntry test/server/json-api.coffee
1076 silly gunzTarPerm extractEntry test/server/microevent.coffee
1077 silly gunzTarPerm extractEntry test/server/middleware.coffee
1078 silly gunzTarPerm extractEntry test/server/doc.coffee
1079 silly gunzTarPerm extractEntry test/server/rest.coffee
1080 silly gunzTarPerm extractEntry test/server/session.coffee
1081 silly gunzTarPerm extractEntry test/server/testhelpers.coffee
1082 silly gunzTarPerm extractEntry test/server/text-api.coffee
1083 silly gunzTarPerm extractEntry test/server/useragent.coffee
1084 silly gunzTarPerm extractEntry test/server/version.coffee
1085 silly gunzTarPerm extractEntry bin/options.js
1086 silly gunzTarPerm extractEntry bin/setup_amazon
1087 silly gunzTarPerm extractEntry bin/setup_couch
1088 silly gunzTarPerm extractEntry bin/setup_mysql
1089 silly gunzTarPerm extractEntry bin/setup_pg
1090 silly gunzTarPerm extractEntry bin/sharejs
1091 silly gunzTarPerm extractEntry bin/sourceserver
1092 silly gunzTarPerm extractEntry .travis.yml
1093 silly gunzTarPerm extractEntry lib/index.js
1094 silly gunzTarPerm extractEntry lib/client/connection.js
1095 silly gunzTarPerm extractEntry lib/client/doc.js
1096 silly gunzTarPerm extractEntry lib/client/index.js
1097 silly gunzTarPerm extractEntry lib/client/microevent.js
1098 silly gunzTarPerm extractEntry lib/client/query.js
1099 silly gunzTarPerm extractEntry lib/client/textarea.js
1100 silly gunzTarPerm extractEntry lib/server/index.js
1101 silly gunzTarPerm extractEntry lib/server/rest.js
1102 silly gunzTarPerm extractEntry lib/server/session.js
1103 silly gunzTarPerm extractEntry lib/server/useragent.js
1104 silly gunzTarPerm extractEntry lib/types/README.md
1105 silly gunzTarPerm extractEntry lib/types/index.js
1106 silly gunzTarPerm extractEntry lib/types/json-api.js
1107 silly gunzTarPerm extractEntry lib/types/text-api.js
1108 silly gunzTarPerm extractEntry lib/types/text-tp2-api.js
1109 silly gunzTarPerm extractEntry metadata.md
1110 silly gunzTarPerm extractEntry Makefile
1111 silly gunzTarPerm extractEntry prototype/package.json
1112 silly gunzTarPerm extractEntry prototype/server.js
1113 silly gunzTarPerm extractEntry prototype/clock.coffee
1114 silly gunzTarPerm extractEntry prototype/public/jsoneditor-min.js
1115 silly gunzTarPerm extractEntry prototype/public/create.html
1116 silly gunzTarPerm extractEntry prototype/public/img/jsoneditor-icons.png
1117 silly gunzTarPerm extractEntry prototype/public/index.html
1118 silly gunzTarPerm extractEntry prototype/public/json.html
1119 silly gunzTarPerm extractEntry prototype/public/json_list.html
1120 silly gunzTarPerm extractEntry prototype/public/jsoneditor-min.css
1121 silly gunzTarPerm extractEntry prototype/public/list.html
1122 silly gunzTarPerm extractEntry prototype/public/multi.html
1123 silly gunzTarPerm extractEntry scripts/apply.csv
1124 silly gunzTarPerm extractEntry scripts/bench-composable.coffee
1125 silly gunzTarPerm extractEntry scripts/bench.coffee
1126 silly gunzTarPerm extractEntry scripts/benchmark/benchmark.coffee
1127 silly gunzTarPerm extractEntry scripts/cat.coffee
1128 silly gunzTarPerm extractEntry scripts/stats.coffee
1129 silly gunzTarPerm extractEntry scripts/talk.coffee
1130 silly gunzTarPerm extractEntry karma.conf.coffee
1131 silly lockFile f64388dd-s-npm-share-0-7-0-alpha9-package tar:///home/sharejs/.npm/share/0.7.0-alpha9/package
1132 silly lockFile f64388dd-s-npm-share-0-7-0-alpha9-package tar:///home/sharejs/.npm/share/0.7.0-alpha9/package
1133 silly lockFile a733730d-m-share-0-7-0-alpha9-package-tgz tar:///home/sharejs/.npm/share/0.7.0-alpha9/package.tgz
1134 silly lockFile a733730d-m-share-0-7-0-alpha9-package-tgz tar:///home/sharejs/.npm/share/0.7.0-alpha9/package.tgz
1135 verbose chmod /home/sharejs/.npm/share/0.7.0-alpha9/package.tgz 644
1136 verbose chown /home/sharejs/.npm/share/0.7.0-alpha9/package.tgz [ 1005, 1005 ]
1137 silly lockFile 941feb8a-git-github-com-codio-ShareJS git://github.com/codio/ShareJS
1138 silly resolved [ { name: 'nodetime',
1138 silly resolved version: '0.8.13',
1138 silly resolved description: 'Performance Profiler and Monitor',
1138 silly resolved author: { name: 'Nodetime', email: '[email protected]' },
1138 silly resolved homepage: 'http://nodetime.com',
1138 silly resolved keywords:
1138 silly resolved [ 'profiler',
1138 silly resolved 'profiling',
1138 silly resolved 'tracing',
1138 silly resolved 'cpu',
1138 silly resolved 'heap',
1138 silly resolved 'performance',
1138 silly resolved 'instrumentation',
1138 silly resolved 'response time',
1138 silly resolved 'performance',
1138 silly resolved 'bottlenecks',
1138 silly resolved 'monitoring',
1138 silly resolved 'analytics',
1138 silly resolved 'metrics',
1138 silly resolved 'alerts',
1138 silly resolved 'dtrace' ],
1138 silly resolved contributors: [],
1138 silly resolved main: './index.js',
1138 silly resolved directories: { lib: './lib' },
1138 silly resolved repository: { type: 'git', url: 'git://github.com/nodetime/nodetime.git' },
1138 silly resolved dependencies: { 'nodetime-native': '0.1.0' },
1138 silly resolved optionalDependencies: { 'nodetime-native': '0.1.0' },
1138 silly resolved devDependencies:
1138 silly resolved { mocha: '*',
1138 silly resolved memwatch: '*',
1138 silly resolved async: '*',
1138 silly resolved express: '*',
1138 silly resolved 'socket.io': '*',
1138 silly resolved redis: '*',
1138 silly resolved mongodb: '*',
1138 silly resolved mongoose: '*',
1138 silly resolved mysql: '*',
1138 silly resolved pg: '*',
1138 silly resolved memcached: '*',
1138 silly resolved memcache: '*',
1138 silly resolved 'cassandra-client': '*',
1138 silly resolved cassandra: '*' },
1138 silly resolved engines: { node: '>=0.6.0' },
1138 silly resolved licenses: [ [Object] ],
1138 silly resolved readme: 'Nodetime - Performance Profiler and Monitor for Node.js Applications\n===========================================\nNodetime reveals response time and other internals of HTTP requests and underlying HTTP, database, file system and other API calls in your Node.js application. Coupled with related process and OS state information, real-time and historical metrics, monitoring as well as CPU and memory profiling it enables tracing performance problems down to the root cause. Nodetime supports multiple APIs including native HTTP client, file system, cluster and sockets, Socket.io, Redis, MongoDB, MySQL, PostgreSQL, Memcached and Cassandra. HTTP based data stores like CouchDB and Riak are supported via HTTP API.\n\nThis repository contains the source code of Nodetime agent. Agent runs within the application and securely sends profiling data and metrics to Nodetime server, where they are made available via web console at nodetime.com.\n\nFull documentation at [nodetime.com](http://nodetime.com) [Docs section](http://nodetime.com/docs).\n\nFor questions or technical issues please contact our [support team](http://support.nodetime.com).\n\n\n',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved bugs: { url: 'https://github.com/nodetime/nodetime/issues' },
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: '[email protected]' },
1138 silly resolved { name: 'querystring',
1138 silly resolved id: 'querystring',
1138 silly resolved version: '0.2.0',
1138 silly resolved description: 'Node\'s querystring module for all engines.',
1138 silly resolved keywords: [ 'commonjs', 'query', 'querystring' ],
1138 silly resolved author: { name: 'Irakli Gozalishvili', email: '[email protected]' },
1138 silly resolved repository:
1138 silly resolved { type: 'git',
1138 silly resolved url: 'git://github.com/Gozala/querystring.git',
1138 silly resolved web: 'https://github.com/Gozala/querystring' },
1138 silly resolved bugs: { url: 'http://github.com/Gozala/querystring/issues/' },
1138 silly resolved devDependencies:
1138 silly resolved { test: '~0.x.0',
1138 silly resolved phantomify: '~0.x.0',
1138 silly resolved retape: '~0.x.0',
1138 silly resolved tape: '~0.1.5' },
1138 silly resolved engines: { node: '>=0.4.x' },
1138 silly resolved scripts:
1138 silly resolved { test: 'npm run test-node && npm run test-browser && npm run test-tap',
1138 silly resolved 'test-browser': 'node ./node_modules/phantomify/bin/cmd.js ./test/common-index.js',
1138 silly resolved 'test-node': 'node ./test/common-index.js',
1138 silly resolved 'test-tap': 'node ./test/tap-index.js' },
1138 silly resolved testling: { files: 'test/tap-index.js', browsers: [Object] },
1138 silly resolved licenses: [ [Object] ],
1138 silly resolved readme: '# querystring\n\n[![Build Status](https://secure.travis-ci.org/Gozala/querystring.png)](http://travis-ci.org/Gozala/querystring)\n\n\n[![Browser support](http://ci.testling.com/Gozala/querystring.png)](http://ci.testling.com/Gozala/querystring)\n\n\n\nNode\'s querystring module for all engines.\n\n## Install ##\n\n npm install querystring\n\n',
1138 silly resolved readmeFilename: 'Readme.md',
1138 silly resolved homepage: 'https://github.com/Gozala/querystring',
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'querystring@~0.2.0' },
1138 silly resolved { name: 'lodash',
1138 silly resolved version: '2.2.1',
1138 silly resolved description: 'A utility library delivering consistency, customization, performance, & extras.',
1138 silly resolved homepage: 'http://lodash.com/',
1138 silly resolved license: 'MIT',
1138 silly resolved main: 'dist/lodash.js',
1138 silly resolved keywords:
1138 silly resolved [ 'amd',
1138 silly resolved 'browser',
1138 silly resolved 'client',
1138 silly resolved 'customize',
1138 silly resolved 'functional',
1138 silly resolved 'server',
1138 silly resolved 'util' ],
1138 silly resolved author:
1138 silly resolved { name: 'John-David Dalton',
1138 silly resolved email: '[email protected]',
1138 silly resolved url: 'http://allyoucanleet.com/' },
1138 silly resolved contributors: [ [Object], [Object], [Object], [Object] ],
1138 silly resolved bugs: { url: 'https://github.com/lodash/lodash/issues' },
1138 silly resolved repository: { type: 'git', url: 'https://github.com/lodash/lodash.git' },
1138 silly resolved engines: [ 'node', 'rhino' ],
1138 silly resolved files:
1138 silly resolved [ 'LICENSE.txt',
1138 silly resolved 'lodash.js',
1138 silly resolved 'dist/lodash.js',
1138 silly resolved 'dist/lodash.min.js',
1138 silly resolved 'dist/lodash.compat.js',
1138 silly resolved 'dist/lodash.compat.min.js',
1138 silly resolved 'dist/lodash.underscore.js',
1138 silly resolved 'dist/lodash.underscore.min.js' ],
1138 silly resolved jam: { main: 'dist/lodash.compat.js', include: [Object] },
1138 silly resolved volo: { type: 'directory', ignore: [Object] },
1138 silly resolved readme: '# Lo-Dash v2.2.1\nA utility library delivering consistency, [customization](http://lodash.com/custom-builds), [performance](http://lodash.com/benchmarks), & [extras](http://lodash.com/#features).\n\n## Download\n\n* Modern builds perfect for newer browsers/environments:<br>\n[Development](https://raw.github.com/lodash/lodash/2.2.1/dist/lodash.js) &\n[Production](https://raw.github.com/lodash/lodash/2.2.1/dist/lodash.min.js)\n\n* Compatibility builds for older environment support too:<br>\n[Development](https://raw.github.com/lodash/lodash/2.2.1/dist/lodash.compat.js) &\n[Production](https://raw.github.com/lodash/lodash/2.2.1/dist/lodash.compat.min.js)\n\n* Underscore builds to use as a drop-in replacement:<br>\n[Development](https://raw.github.com/lodash/lodash/2.2.1/dist/lodash.underscore.js) &\n[Production](https://raw.github.com/lodash/lodash/2.2.1/dist/lodash.underscore.min.js)\n\nCDN copies are available on [cdnjs](http://cdnjs.com/libraries/lodash.js/) & [jsDelivr](http://www.jsdelivr.com/#!lodash).<br>\nFor smaller file sizes, create [custom builds](http://lodash.com/custom-builds) with only the features needed.<br>\nLove modules? We’ve got you covered with [lodash-amd](https://npmjs.org/package/lodash-amd), [lodash-node](https://npmjs.org/package/lodash-node), & [npm packages](https://npmjs.org/browse/keyword/lodash-modularized) per method.\n\n## Dive in\n\nThere’s plenty of [documentation](http://lodash.com/docs), [unit tests](http://lodash.com/tests), & [benchmarks](http://lodash.com/benchmarks).<br>\nFor a list of upcoming features, check out our [roadmap](https://github.com/lodash/lodash/wiki/Roadmap).<br>\nThe full changelog for this release is available on our [wiki](https://github.com/lodash/lodash/wiki/Changelog).\n\n## Features *not* in Underscore\n\n * AMD loader support ([curl](https://github.com/cujojs/curl), [dojo](http://dojotoolkit.org/), [requirejs](http://requirejs.org/), etc.)\n * [_(…)](http://lodash.com/docs#_) supports intuitive chaining\n * [_.at](http://lodash.com/docs#at) for cherry-picking collection values\n * [_.bindKey](http://lodash.com/docs#bindKey) for binding [*“lazy”*](http://michaux.ca/articles/lazy-function-definition-pattern) defined methods\n * [_.clone](http://lodash.com/docs#clone) supports shallow cloning of `Date` & `RegExp` objects\n * [_.cloneDeep](http://lodash.com/docs#cloneDeep) for deep cloning arrays & objects\n * [_.contains](http://lodash.com/docs#contains) accepts a `fromIndex`\n * [_.createCallback](http://lodash.com/docs#createCallback) for extending callbacks in methods & mixins\n * [_.curry](http://lodash.com/docs#curry) for creating [curried](http://hughfdjackson.com/javascript/2013/07/06/why-curry-helps/) functions\n * [_.debounce](http://lodash.com/docs#debounce) & [_.throttle](http://lodash.com/docs#throttle) accept additional `options` for more control\n * [_.findIndex](http://lodash.com/docs#findIndex) & [_.findKey](http://lodash.com/docs#findKey) for finding indexes & keys\n * [_.forEach](http://lodash.com/docs#forEach) is chainable & supports exiting early\n * [_.forIn](http://lodash.com/docs#forIn) for iterating own & inherited properties\n * [_.forOwn](http://lodash.com/docs#forOwn) for iterating own properties\n * [_.isPlainObject](http://lodash.com/docs#isPlainObject) for checking if values are created by `Object`\n * [_.memoize](http://lodash.com/docs#memoize) exposes the `cache` of memoized functions\n * [_.merge](http://lodash.com/docs#merge) for a deep [_.extend](http://lodash.com/docs#extend)\n * [_.parseInt](http://lodash.com/docs#parseInt) for consistent behavior\n * [_.partialRight](http://lodash.com/docs#partialRight) for [partial application](http://lodash.com/docs#partial) from the right\n * [_.pull](http://lodash.com/docs#pull) & [_.remove](http://lodash.com/docs#remove) for mutating arrays\n * [_.random](http://lodash.com/docs#random) supports returning floating-point numbers\n * [_.runInContext](http://lodash.com/docs#runInContext) for easier mocking\n * [_.support](http://lodash.com/docs#support) for flagging environment features\n * [_.template](http://lodash.com/docs#template) supports [*“imports”*](http://lodash.com/docs#templateSettings_imports) options & [ES6 template delimiters](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-7.8.6)\n * [_.transform](http://lodash.com/docs#transform) as a powerful alternative to [_.reduce](http://lodash.com/docs#reduce) for transforming objects\n * [_.where](http://lodash.com/docs#where) supports deep object comparisons\n * [_.zip](http://lodash.com/docs#zip) is capable of unzipping values\n * [_.omit](http://lodash.com/docs#omit), [_.pick](http://lodash.com/docs#pick), &\n [more](http://lodash.com/docs "_.assign, _.clone, _.cloneDeep, _.first, _.initial, _.isEqual, _.last, _.merge, _.rest") accept callbacks\n * [_.contains](http://lodash.com/docs#contains), [_.toArray](http://lodash.com/docs#toArray), &\n [more](http://lodash.com/docs "_.at, _.countBy, _.every, _.filter, _.find, _.forEach, _.forEachRight, _.groupBy, _.invoke, _.map, _.max, _.min, _.pluck, _.reduce, _.reduceRight, _.reject, _.shuffle, _.size, _.some, _.sortBy, _.where") accept strings\n * [_.filter](http://lodash.com/docs#filter), [_.map](http://lodash.com/docs#map), &\n [more](http://lodash.com/docs "_.countBy, _.every, _.find, _.findKey, _.findLast, _.findLastIndex, _.findLastKey, _.first, _.groupBy, _.initial, _.last, _.max, _.min, _.reject, _.rest, _.some, _.sortBy, _.sortedIndex, _.uniq") support *“_.pluck”* & *“_.where”* shorthands\n * [_.findLast](http://lodash.com/docs#findLast), [_.findLastIndex](http://lodash.com/docs#findLastIndex), &\n [more](http://lodash.com/docs "_.findLastKey, _.forEachRight, _.forInRight, _.forOwnRight") right-associative methods\n\n## Resources\n\n * Posts\n - [Say “Hello” to Lo-Dash](http://kitcambridge.be/blog/say-hello-to-lo-dash/)\n - [Custom builds in Lo-Dash 2.0](http://kitcambridge.be/blog/custom-builds-in-lo-dash-2-dot-0/)\n\n * Videos\n - [Introduction](https://vimeo.com/44154599)\n - [Origins](https://vimeo.com/44154600)\n - [Optimizations & builds](https://vimeo.com/44154601)\n - [Native method use](https://vimeo.com/48576012)\n - [Testing](https://vimeo.com/45865290)\n - [CascadiaJS ’12](http://www.youtube.com/watch?v=dpPy4f_SeEk)\n\n## Support\n\nTested in Chrome 5~29, Firefox 2~24, IE 6-10, Opera 9.25~16, Safari 3-6, Node.js 0.6.8-0.10.20, Narwhal 0.3.2, PhantomJS 1.9.2, RingoJS 0.9, & Rhino 1.7RC5.\n\n## Installation & usage\n\nIn browsers:\n\n```html\n<script src="lodash.js"></script>\n```\n\nUsing [`npm`](http://npmjs.org/):\n\n```bash\nnpm i --save lodash\n\n{sudo} npm i -g lodash\nnpm ln lodash\n```\n\nIn [Node.js](http://nodejs.org/) & [Ringo](http://ringojs.org/):\n\n```js\nvar _ = require(\'lodash\');\n// or as Underscore\nvar _ = require(\'lodash/dist/lodash.underscore\');\n```\n\n**Notes:**\n * Don’t assign values to [special variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` when in the REPL\n * If Lo-Dash is installed globally, run [`npm ln lodash`](http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/) in your project’s root directory *before* requiring it\n * Node.js 0.10.8-0.10.11 [have](https://github.com/joyent/node/issues/5622) [bugs](https://github.com/joyent/node/issues/5688) preventing minified builds\n\nIn [Rhino](http://www.mozilla.org/rhino/):\n\n```js\nload(\'lodash.js\');\n```\n\nIn an AMD loader:\n\n```js\nrequire({\n \'packages\': [\n { \'name\': \'lodash\', \'location\': \'path/to/lodash\', \'main\': \'lodash\' }\n ]\n},\n[\'lodash\'], function(_) {\n console.log(_.VERSION);\n});\n```\n\n## Author\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## Contributors\n\n| [![twitter/blainebublitz](http://gravatar.com/avatar/ac1c67fd906c9fecd823ce302283b4c1?s=70)](http://twitter.com/blainebublitz "Follow @BlaineBublitz on Twitter") | [![twitter/kitcambridge](http://gravatar.com/avatar/6662a1d02f351b5ef2f8b4d815804661?s=70)](https://twitter.com/kitcambridge "Follow @kitcambridge on Twitter") | [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](http://twitter.com/mathias "Follow @mathias on Twitter") |\n|---|---|---|\n| [Blaine Bublitz](http://iceddev.com/) | [Kit Cambridge](http://kitcambridge.github.io/) | [Mathias Bynens](http://mathiasbynens.be/) |\n',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'lodash@~2.2.1' },
1138 silly resolved { name: 'amqp',
1138 silly resolved description: 'AMQP driver for node',
1138 silly resolved keywords: [ 'amqp' ],
1138 silly resolved version: '0.1.8',
1138 silly resolved author: { name: 'Ryan Dahl' },
1138 silly resolved contributors:
1138 silly resolved [ [Object],
1138 silly resolved [Object],
1138 silly resolved [Object],
1138 silly resolved [Object],
1138 silly resolved [Object],
1138 silly resolved [Object],
1138 silly resolved [Object],
1138 silly resolved [Object],
1138 silly resolved [Object],
1138 silly resolved [Object],
1138 silly resolved [Object],
1138 silly resolved [Object],
1138 silly resolved [Object],
1138 silly resolved [Object] ],
1138 silly resolved repository: { type: 'git', url: 'git://github.com/postwait/node-amqp.git' },
1138 silly resolved bugs: { url: 'http://github.com/postwait/node-amqp/issues' },
1138 silly resolved main: './amqp',
1138 silly resolved engines: { node: '0.4 || 0.6 || 0.8 || 0.9 || 0.10' },
1138 silly resolved licenses: [ [Object] ],
1138 silly resolved dependencies: { lodash: '~1.3.1', longjohn: '~0.2.1' },
1138 silly resolved devDependencies: { optimist: '~0.6.0' },
1138 silly resolved readme: '[![build status](https://secure.travis-ci.org/postwait/node-amqp.png)](http://travis-ci.org/postwait/node-amqp)\n\n# node-amqp\n\nThis is a client for RabbitMQ (and maybe other servers?). It partially\nimplements the 0.9.1 version of the AMQP protocol.\n\n## Table of Contents \n\n- [Installation](#installation)\n- [Synopsis](#synopsis)\n- [Connection](#connection)\n - [Connection options and URL](#connection-options-and-url)\n - [connection.publish(queueName, body, options, callback)](#connectionpublishqueuename-body-options-callback)\n - [connection.end()](#connectionend)\n- [Queue](#queue)\n - [connection.queue(name, options, openCallback)](#connectionqueuename-options-opencallback)\n - [queue.subscribe([options,] listener)](#queuesubscribeoptions-listener)\n - [queue.subscribeRaw([options,] listener)](#queuesubscriberawoptions-listener)\n - [queue.unsubscribe(consumerTag)](#queueunsubscribeconsumertag)\n - [queue.shift([reject[, requeue]])](#queueshiftreject-requeue)\n - [queue.bind([exchange,] routing)](#queuebindexchange-routing)\n - [queue.unbind([exchange,] routing)](#queueunbindexchange-routing)\n - [queue.bind_headers([exchange,] routing)](#queuebind_headersexchange-routing)\n - [queue.destroy(options)](#queuedestroyoptions)\n- [Exchange](#exchange)\n - [exchange.on(\'open\', callback)](#exchangeon\'open\'-callback)\n - [connection.exchange()](#connectionexchange)\n - [connection.exchange(name, options={}, openCallback)](#connectionexchangename-options={}-opencallback)\n - [exchange.publish(routingKey, message, options, callback)](#exchangepublishroutingkey-message-options-callback)\n - [exchange.destroy(ifUnused = true)](#exchangedestroyifunused-=-true)\n - [exchange.bind(srcExchange, routingKey [, callback])](#exchangebindsrcexchange-routingkey--callback)\n - [exchange.unbind(srcExchange, routingKey [, callback])](#exchangeunbindsrcexchange-routingkey--callback)\n - [exchange.bind_headers(exchange, routing [, bindCallback])](#exchangebind_headersexchange-routing--bindcallback)\n\n## Installation\n\n npm install amqp\n\n## Synopsis\n\nIMPORTANT: This module only works with node v0.4.0 and later.\n\nAn example of connecting to a server and listening on a queue.\n\n```javascript\nvar amqp = require(\'amqp\');\n\nvar connection = amqp.createConnection({ host: \'dev.rabbitmq.com\' });\n\n// Wait for connection to become established.\nconnection.on(\'ready\', function () {\n // Use the default \'amq.topic\' exchange\n connection.queue(\'my-queue\', function(q){\n // Catch all messages\n q.bind(\'#\');\n \n // Receive messages\n q.subscribe(function (message) {\n // Print messages to stdout\n console.log(message);\n });\n });\n});\n```\n\n## Connection\n\n`new amqp.Connection()` Instantiates a new connection. Use\n`connection.connect()` to connect to a server.\n\n`amqp.createConnection()` returns an instance of `amqp.Connection`, which contains\nan instance of `net.Socket` at its `socket` property. All events and methods which work on\n`net.Socket` can also be used on an `amqp.Connection` instance. (e.g., the\nevents `\'connect\'` and `\'close\'`.)\n\n### Connection options and URL\n\n`amqp.createConnection([options, [implOptions]])` takes two options\nobjects as parameters. The first options object has these defaults:\n\n { host: \'localhost\'\n , port: 5672\n , login: \'guest\'\n , password: \'guest\'\n , authMechanism: \'AMQPLAIN\'\n , vhost: \'/\'\n , ssl: { enabled : false\n }\n }\n\nAn example `options` object for creating an SSL connection has these properties:\n\n { host: \'localhost\'\n , port: 5671\n , login: \'guest\'\n , password: \'guest\'\n , authMechanism: \'AMQPLAIN\'\n , vhost: \'/\'\n , ssl: { enabled : true\n , keyFile : \'/path/to/key/file\'\n , certFile : \'/path/to/cert/file\'\n , caFile : \'/path/to/cacert/file\'\n , rejectUnauthorized : true\n }\n }\n\nThe key, certificate, and certificate authority files must be in pem format.\nIf `port` is not specified, the default AMQPS port 5671 is used.\nIf `rejectUnauthorized` is not specified, it defaults to true.\n\nOptions can also be passed in a single URL of the form\n\n amqp[s]://[user:password@]hostname[:port][/vhost]\n\nAMQPLAIN is assumed for the auth mechanism.\n\nNote that the vhost must be URL-encoded and appear as the only segment\nof the path, i.e., the only unencoded slash is that leading; leaving\nthe path entirely empty indicates that the vhost `/`, as\nabove, should be used (it could also be supplied as the path `/%2f`).\n\nThis URL is supplied as the field `url` in the options; for example\n\n```javascript\nvar conn =\n amqp.createConnection({url: "amqp://guest:guest@localhost:5672"});\n\n```\n\n\nOptions provided as individual fields will override values given in\nthe URL.\n\n\nYou can also specify additional client properties for your connection\nby setting the `clientProperties` field on the `options` object.\n\n { clientProperties: { applicationName: \'myApplication\'\n }\n }\n\nBy default the following client properties are set\n\n { product: \'node-amqp\'\n , platform: \'node-\' + process.version\n , version: nodeAMQPVersion\n }\n\n\nThe second options are specific to the node AMQP implementation. It has\nthe default values:\n\n { defaultExchangeName: \'\'\n , reconnect: true\n , reconnectBackoffStrategy: \'linear\'\n , reconnectExponentialLimit: 120000\n , reconnectBackoffTime: 1000\n }\n\nThe defaultExchangeName is the default exchange to which\nconnection.publish will publish. In the past, the default exchange was\n`amq.topic`, which is not ideal. To emulate this behaviour, one can\ncreate a connection like:\n\n```javascript\nvar conn =\n amqp.createConnection({url: "amqp://guest:guest@localhost:5672"},\n {defaultExchangeName: "amq.topic"});\n```\n\n If the `reconnect` option is true, then the driver will attempt to reconnect using the\n configured strategy *any time* the connection becomes unavailable. If this is not\n appropriate for your application, set this option to false.\n\n If you would like this option, you can set parameters controlling how aggressively the\n reconnections will be attempted. Valid strategies are "linear" and "exponential".\n\n Backoff times are in milliseconds. Under the "linear" strategy, the driver will pause\n `reconnectBackoffTime` ms before the first attempt, and between each subsequent attempt.\n Under the "exponential" strategy, the driver will pause `reconnectBackoffTime` ms before\n the first attempt, and will double the previous pause between each subsequent attempt\n until a connection is reestablished.\n\nAfter a connection is established the `\'connect\'` event is fired as it is\nwith any `net.Connection` instance. AMQP requires a 7-way handshake which\nmust be completed before any communication can begin. `net.Connection` does\nthe handshake automatically and emits the `\'ready\'` event when the handshaking\nis complete.\n\nFor backward compatibility, two additional options are available. Older\nversions of this library placed the routingKey and deliveryTag for incoming\nmessages into the JSON payload received. This module was changed to\nleave inbound JSON payloads pristine. Some applications may need the\nold behaviour. If the key `routingKeyInPayload` is set to true in the\nconnection `options`, the messages resulting from a subscribe call will\ninclude a \'routingKey\' key in the JSON payload. If the key\n`deliveryTagInPayload` is set to true in the connection options, the\ndeliveryTag of the incoming message will be placed in the JSON payload.\n\n\n### connection.publish(queueName, body, options, callback)\n\nPublishes a message to the default exchange; if the defaultExchange is\nleft as `\'\'`, this effectively publishes the message to the queue\nnamed.\n\nThis method proxies to the default exchange\'s `publish` method and parameters are passed\nthrough untouched.\n\n### connection.end()\n\n`amqp.Connection` is derived from `net.Stream` and has all the same methods.\nSo use `connection.end()` to terminate a connection gracefully.\n\n\n\n\n## Queue\n\nEvents: A queue will call the callback given to the `connection.queue()`\nmethod once it is usable. For example:\n\n```javascript\nvar q = connection.queue(\'my-queue\', function (queue) {\n console.log(\'Queue \' + queue.name + \' is open\');\n});\n```\n\n\nDeclaring a queue with an empty name will make the server generate a\nrandom name.\n\n### connection.queue(name, options, openCallback)\n\nReturns a reference to a queue. The options are\n\n- `passive`: boolean, default false.\n If set, the server will not create the queue. The client can use\n this to check whether a queue exists without modifying the server\n state.\n- `durable`: boolean, default false.\n Durable queues remain active when a server restarts.\n Non-durable queues (transient queues) are purged if/when a\n server restarts. Note that durable queues do not necessarily\n hold persistent messages, although it does not make sense to\n send persistent messages to a transient queue.\n- `exclusive`: boolean, default false.\n Exclusive queues may only be consumed from by the current connection.\n Setting the \'exclusive\' flag always implies \'autoDelete\'.\n- `autoDelete`: boolean, default true.\n If set, the queue is deleted when all consumers have finished\n using it. Last consumer can be cancelled either explicitly or because\n its channel is closed. If there was no consumer ever on the queue, it\n won\'t be deleted.\n- `noDeclare`: boolean, default false.\n If set, the queue will not be declared, this will allow a queue to be\n deleted if you don\'t know its previous options.\n- `arguments`: a map of additional arguments to pass in when creating a queue.\n- `closeChannelOnUnsubscribe` : a boolean when true the channel will close on \n unsubscrube, default false.\n\n### queue.subscribe([options,] listener)\n\nAn easy subscription command. It works like this\n\n```javascript\nq.subscribe(function (message, headers, deliveryInfo) {\n console.log(\'Got a message with routing key \' + deliveryInfo.routingKey);\n});\n \n```\n\nIt will automatically acknowledge receipt of each message.\n\nThere are several options available. Setting the options argument to\n`{ ack: true }` (which defaults to false) will make it so that the AMQP\nserver only delivers a single message at a time. When you want the next\nmessage, call `q.shift()`. When `ack` is false then you will receive\nmessages as fast as they come in. \n\nYou can also use the prefetchCount option to increase the window of how\nmany messages the server will send you before you need to ack (quality of service).\n`{ ack: true, prefetchCount: 1 }` is the default and will only send you one\nmessage before you ack. Setting prefetchCount to 0 will make that window unlimited.\n\nThe `routingKeyInPayload` and `deliveryKeyInPayload` options determine\nif the reception process will inject the routingKey and deliveryKey,\nrespectively, into the JSON payload received. These default to unset\nthus adopting the parent connection\'s values (which default to false).\nSetting these to true provide backward compatibility for older\napplications.\n\nThe `exclusive` option will subscribe to the queue in exclusive mode. Only one\nsubscriber is allowed at a time, and subsequent attempts to subscribe to the\nsame queue will result in an exception. This option differs from the exclusive\noption passed when creating in a queue in that the queue itself is not exclusive,\nonly the consumers. This means that long lived durable queues can be used\nas exclusive queues.\n\nThis method will emit `\'basicQosOk\'` when ready.\n\n\n### queue.subscribeRaw([options,] listener)\n\nSubscribes to a queue. The `listener` argument should be a function which\nreceives a message. This is a low-level interface - the message that the\nlistener receives will be a stream of binary data. You probably want to use\n`subscribe` instead. For now this low-level interface is left undocumented.\nLook at the source code if you need to do this.\n\nThis method will emit `\'basicConsumeOk\'` when ready.\n\n### queue.unsubscribe(consumerTag)\n\nUnsubscribe from a queue, given the consumer tag. The consumer tag is\nsupplied to the *promise callback* of `Queue.subscribeRaw` or\n`Queue.subscribe`:\n\n```javascript\nconnection.queue(\'foo\', function(queue) {\n var ctag;\n queue.subscribe(function(msg) {...})\n .addCallback(function(ok) { ctag = ok.consumerTag; });\n // ... and in some other callback\n queue.unsubscribe(ctag);\n});\n```\n\nNote that `Queue.unsubscribe` will not requeue messages that have not\nbeen acknowledged. You need to close the queue or connection for that\nto happen. You may also receive messages after calling `unsubscribe`;\nyou will **not** receive messages from the queue after the unsubscribe\npromise callback has been invoked, however.\n\n### queue.shift([reject[, requeue]])\n\nFor use with `subscribe({ack: true}, fn)`. Acknowledges the last\nmessage if no arguments are provided or if `reject` is false. If\n`reject` is true then the message will be rejected and put back onto\nthe queue if `requeue` is true, otherwise it will be discarded.\n\n\n### queue.bind([exchange,] routing)\n\nThis method binds a queue to an exchange. Until a queue is\nbound it will not receive any messages, unless they are sent through\nthe unnamed exchange (see `defaultExchangeName` above).\n\nIf the `exchange` argument is left out `\'amq.topic\'` will be used.\n\nThis method will emit `\'queueBindOk\'` when complete.\n\n\n### queue.unbind([exchange,] routing)\n\nThis method unbinds a queue from an exchange.\n\nIf the exchange argument is left out `\'amq.topic\'` will be used.\n\nThs method will emit `\'queueUnbindOk\'` when complete.\n\n\n### queue.bind_headers([exchange,] routing)\n\nThis method binds a queue to an exchange. Until a queue is\nbound it will not receive any messages.\n\nThis method is to be used on an "headers"-type exchange. The routing\nargument must contain the routing keys and the `x-match` value (`all` or `any`).\n\nIf the `exchange` argument is left out `\'amq.headers\'` will be used.\n\n### queue.destroy(options)\n\nDelete the queue. Without options, the queue will be deleted even if it has\npending messages or attached consumers. If +options.ifUnused+ is true, then\nthe queue will only be deleted if there are no consumers. If\n+options.ifEmpty+ is true, the queue will only be deleted if it has no\nmessages.\n\n\n\n\n## Exchange\n\nEvents: An exchange will call the callback given to the `connection.exchange()`\nmethod once it is usable. For example:\n\n```javascript\nvar exc = connection.exchange(\'my-exchange\', function (exchange) {\n console.log(\'Exchange \' + exchange.name + \' is open\');\n});\n```\n\n### exchange.on(\'open\', callback)\n\nThe open event is emitted when the exchange is declared and ready to\nbe used. This interface is considered deprecated.\n\n\n### connection.exchange()\n### connection.exchange(name, options={}, openCallback)\n\nAn exchange can be created using `connection.exchange()`. The method returns\nan `amqp.Exchange` object.\n\nWithout any arguments, this method returns the default exchange.\nOtherwise a string, `name`, is given as the first argument and an `options`\nobject for the second. The options are\n\n- `type`: the type of exchange `\'direct\'`, `\'fanout\'`, or `\'topic\'` (default).\n- `passive`: boolean, default false.\n If set, the server will not create the exchange. The client can use\n this to check whether an exchange exists without modifying the server\n state.\n- `durable`: boolean, default false.\n If set when creating a new exchange, the exchange will be marked as\n durable. Durable exchanges remain active when a server restarts.\n Non-durable exchanges (transient exchanges) are purged if/when a\n server restarts.\n- `confirm`: boolean, default false.\n If set when connecting to a exchange the channel will send acks \n for publishes. Published tasks will emit \'ack\' when it is acked.\n- `autoDelete`: boolean, default true.\n If set, the exchange is deleted when there are no longer queues\n bound to it.\n- `noDeclare`: boolean, default false.\n If set, the exchange will not be declared, this will allow the exchange\n to be deleted if you dont know its previous options.\n- `confirm`: boolean, default false.\n If set, the exchange will be in confirm mode, and you will get a \n \'ack\'|\'error\' event emitted on a publish, or the callback on the publish\n will be called.\n\nAn exchange will emit the `\'open\'` event when it is finally declared.\n\n\n### exchange.publish(routingKey, message, options, callback)\n\nPublishes a message to the exchange. The `routingKey` argument is a string\nwhich helps routing in `topic` and `direct` exchanges. The `message` can be\neither a Buffer or Object. A Buffer is used for sending raw bytes; an Object\nis converted to JSON.\n\n`options` is an object with any of the following\n\n- `mandatory`: boolean, default false.\n This flag tells the server how to react if the message cannot be\n routed to a queue. If this flag is set, the server will return an\n unroutable message with a Return method. If this flag is false, the\n server silently drops the message.\n- `immediate`: boolean, default false.\n This flag tells the server how to react if the message cannot be\n routed to a queue consumer immediately. If this flag is set, the\n server will return an undeliverable message with a Return method.\n If this flag is false, the server will queue the message, but with\n no guarantee that it will ever be consumed.\n- `contentType`: default `\'application/octet-stream\'`\n- `contentEncoding`: default null.\n- `headers`: default `{}`. Arbitrary application-specific message headers.\n- `deliveryMode`: Non-persistent (1) or persistent (2)\n- `priority`: The message priority, 0 to 9.\n- `correlationId`: default null. Application correlation identifier\n- `replyTo`: Usually used to name a reply queue for a request message.\n- `expiration`: default null. Message expiration specification\n- `messageId`: default null. Application message identifier\n- `timestamp`: default null. Message timestamp\n- `type`: default null. Message type name\n- `userId`: default null. Creating user id\n- `appId`: default null. Creating application id\n\n`callback` is a function that will get called if the exchange is in confirm mode,\nthe value sent will be true or false, this is the presense of a error so true, means\nan error occured and false, means the publish was successfull\n\n### exchange.destroy(ifUnused = true)\n\nDeletes an exchange.\nIf the optional boolean second argument is set, the server will only\ndelete the exchange if it has no queue bindings. If the exchange has queue\nbindings the server does not delete it but raises a channel exception\ninstead.\n\n### exchange.bind(srcExchange, routingKey [, callback])\n\nBinds the exchange (destination) to the given source exchange (srcExchange). \nWhen one exchange is bound to another, the destination (or receiving) exchange \nwill receive all messages published to the source exchange that match the \ngiven routingKey. \n\nThis method will emit `\'exchangeBindOk\'` when complete.\n\nPlease note that Exchange to Exchange Bindings (E2E) are an extension to the \nAMQP spec introduced by RabbitMQ, and that by using this feature, you will be \nreliant on RabbitMQ\'s AMQP implementation. For more information on E2E \nBindings with RabbitMQ see:\n\nhttp://www.rabbitmq.com/e2e.html\n\n### exchange.unbind(srcExchange, routingKey [, callback])\n\nUnbinds the exchange (destination) from the given source exchange (srcExchange). \nThis is the reverse of the exchange.bind method above, and will stop messages \nfrom srcExchange/routingKey from being sent to the destination exchange. \n\nThis method will emit `\'exchangeUnbindOk\'` when complete.\n\n### exchange.bind_headers(exchange, routing [, bindCallback])\n\nThis method is to be used on an "headers"-type exchange. The routing\nargument must contain the routing keys and the `x-match` value (`all` or `any`).\n',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved homepage: 'https://github.com/postwait/node-amqp',
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'amqp@~0.1.7' },
1138 silly resolved { name: 'log4js',
1138 silly resolved version: '0.6.9',
1138 silly resolved description: 'Port of Log4js to work with node.',
1138 silly resolved keywords: [ 'logging', 'log', 'log4j', 'node' ],
1138 silly resolved main: './lib/log4js',
1138 silly resolved author: { name: 'Gareth Jones', email: '[email protected]' },
1138 silly resolved repository:
1138 silly resolved { type: 'git',
1138 silly resolved url: 'https://github.com/nomiddlename/log4js-node.git' },
1138 silly resolved bugs: { url: 'http://github.com/nomiddlename/log4js-node/issues' },
1138 silly resolved engines: { node: '>=0.8' },
1138 silly resolved scripts: { test: 'vows' },
1138 silly resolved directories: { test: 'test', lib: 'lib' },
1138 silly resolved dependencies:
1138 silly resolved { async: '0.1.15',
1138 silly resolved semver: '~1.1.4',
1138 silly resolved 'readable-stream': '~1.0.2' },
1138 silly resolved devDependencies:
1138 silly resolved { vows: '0.7.0',
1138 silly resolved 'sandboxed-module': '0.1.3',
1138 silly resolved 'hook.io': '0.8.10',
1138 silly resolved underscore: '1.2.1' },
1138 silly resolved browser: { os: false },
1138 silly resolved readme: '# log4js-node [![Build Status](https://secure.travis-ci.org/nomiddlename/log4js-node.png?branch=master)](http://travis-ci.org/nomiddlename/log4js-node)\n\n\nThis is a conversion of the [log4js](http://log4js.berlios.de/index.html)\nframework to work with [node](http://nodejs.org). I\'ve mainly stripped out the browser-specific code and tidied up some of the javascript. \n\nOut of the box it supports the following features:\n\n* coloured console logging\n* replacement of node\'s console.log functions (optional)\n* file appender, with log rolling based on file size\n* SMTP appender\n* GELF appender\n* hook.io appender\n* multiprocess appender (useful when you\'ve got worker processes)\n* a logger for connect/express servers\n* configurable log message layout/patterns\n* different log levels for different log categories (make some parts of your app log as DEBUG, others only ERRORS, etc.)\n\nNOTE: from log4js 0.5 onwards you\'ll need to explicitly enable replacement of node\'s console.log functions. Do this either by calling `log4js.replaceConsole()` or configuring with an object or json file like this:\n\n```javascript\n{\n appenders: [\n { type: "console" }\n ],\n replaceConsole: true\n}\n```\n\n## installation\n\nnpm install log4js\n\n\n## usage\n\nMinimalist version:\n```javascript\nvar log4js = require(\'log4js\');\nvar logger = log4js.getLogger();\nlogger.debug("Some debug messages");\n```\nBy default, log4js outputs to stdout with the coloured layout (thanks to [masylum](http://github.com/masylum)), so for the above you would see:\n```bash\n[2010-01-17 11:43:37.987] [DEBUG] [default] - Some debug messages\n```\nSee example.js for a full example, but here\'s a snippet (also in fromreadme.js):\n```javascript\nvar log4js = require(\'log4js\'); \n//console log is loaded by default, so you won\'t normally need to do this\n//log4js.loadAppender(\'console\');\nlog4js.loadAppender(\'file\');\n//log4js.addAppender(log4js.appenders.console());\nlog4js.addAppender(log4js.appenders.file(\'logs/cheese.log\'), \'cheese\');\n\nvar logger = log4js.getLogger(\'cheese\');\nlogger.setLevel(\'ERROR\');\n\nlogger.trace(\'Entering cheese testing\');\nlogger.debug(\'Got cheese.\');\nlogger.info(\'Cheese is Gouda.\');\nlogger.warn(\'Cheese is quite smelly.\');\nlogger.error(\'Cheese is too ripe!\');\nlogger.fatal(\'Cheese was breeding ground for listeria.\');\n```\nOutput:\n```bash\n[2010-01-17 11:43:37.987] [ERROR] cheese - Cheese is too ripe!\n[2010-01-17 11:43:37.990] [FATAL] cheese - Cheese was breeding ground for listeria.\n``` \nThe first 5 lines of the code above could also be written as:\n```javascript\nvar log4js = require(\'log4js\');\nlog4js.configure({\n appenders: [\n { type: \'console\' },\n { type: \'file\', filename: \'logs/cheese.log\', category: \'cheese\' }\n ]\n});\n```\n\n## configuration\n\nYou can configure the appenders and log levels manually (as above), or provide a\nconfiguration file (`log4js.configure(\'path/to/file.json\')`), or a configuration object. The \nconfiguration file location may also be specified via the environment variable \nLOG4JS_CONFIG (`export LOG4JS_CONFIG=path/to/file.json`). \nAn example file can be found in `test/log4js.json`. An example config file with log rolling is in `test/with-log-rolling.json`.\nBy default, the configuration file is checked for changes every 60 seconds, and if changed, reloaded. This allows changes to logging levels to occur without restarting the application.\n\nTo turn off configuration file change checking, configure with:\n\n```javascript\nvar log4js = require(\'log4js\');\nlog4js.configure(\'my_log4js_configuration.json\', {});\n```\nTo specify a different period:\n\n```javascript\nlog4js.configure(\'file.json\', { reloadSecs: 300 });\n```\nFor FileAppender you can also pass the path to the log directory as an option where all your log files would be stored.\n\n```javascript\nlog4js.configure(\'my_log4js_configuration.json\', { cwd: \'/absolute/path/to/log/dir\' });\n```\nIf you have already defined an absolute path for one of the FileAppenders in the configuration file, you could add a "absolute": true to the particular FileAppender to override the cwd option passed. Here is an example configuration file:\n```json\n#### my_log4js_configuration.json ####\n{\n "appenders": [\n {\n "type": "file",\n "filename": "relative/path/to/log_file.log",\n "maxLogSize": 20480,\n "backups": 3,\n "category": "relative-logger"\n },\n {\n "type": "file",\n "absolute": true,\n "filename": "/absolute/path/to/log_file.log",\n "maxLogSize": 20480,\n "backups": 10,\n "category": "absolute-logger" \n }\n ]\n}\n``` \nDocumentation for most of the core appenders can be found on the [wiki](https://github.com/nomiddlename/log4js-node/wiki/Appenders), otherwise take a look at the tests and the examples.\n\n## Documentation\nSee the [wiki](https://github.com/nomiddlename/log4js-node/wiki). Improve the [wiki](https://github.com/nomiddlename/log4js-node/wiki), please.\n\n## Contributing\nContributions welcome, but take a look at the [rules](https://github.com/nomiddlename/log4js-node/wiki/Contributing) first.\n\n## License\n\nThe original log4js was distributed under the Apache 2.0 License, and so is this. I\'ve tried to\nkeep the original copyright and author credits in place, except in sections that I have rewritten\nextensively.\n',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved homepage: 'https://github.com/nomiddlename/log4js-node',
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'log4js@~0.6.6' },
1138 silly resolved { name: 'newrelic',
1138 silly resolved version: '1.0.1',
1138 silly resolved author:
1138 silly resolved { name: 'New Relic Node.js agent team',
1138 silly resolved email: '[email protected]' },
1138 silly resolved licenses: [ [Object] ],
1138 silly resolved contributors: [ [Object], [Object], [Object] ],
1138 silly resolved description: 'New Relic agent',
1138 silly resolved keywords:
1138 silly resolved [ 'apm',
1138 silly resolved 'performance',
1138 silly resolved 'monitoring',
1138 silly resolved 'instrumentation',
1138 silly resolved 'debugging',
1138 silly resolved 'profiling' ],
1138 silly resolved homepage: 'http://github.com/newrelic/node-newrelic',
1138 silly resolved engines: { node: '>=0.6.0' },
1138 silly resolved directories: { lib: 'lib' },
1138 silly resolved scripts: { test: 'make test' },
1138 silly resolved dependencies: { bunyan: '0.14.6', 'continuation-local-storage': '2.5.2' },
1138 silly resolved devDependencies:
1138 silly resolved { mocha: '*',
1138 silly resolved chai: '*',
1138 silly resolved cover: '*',
1138 silly resolved request: '*',
1138 silly resolved sinon: '*',
1138 silly resolved architect: '*',
1138 silly resolved wrench: '*',
1138 silly resolved carrier: '*',
1138 silly resolved restify: '*',
1138 silly resolved tap: '*',
1138 silly resolved memcached: '*',
1138 silly resolved sequelize: '*',
1138 silly resolved redis: '*',
1138 silly resolved q: '*',
1138 silly resolved qx: '*',
1138 silly resolved nave: '*',
1138 silly resolved should: '*',
1138 silly resolved nock: '*',
1138 silly resolved split: '*' },
1138 silly resolved repository:
1138 silly resolved { type: 'git',
1138 silly resolved url: 'https://github.com/newrelic/node-newrelic.git' },
1138 silly resolved readme: '[![npm status badge](https://nodei.co/npm/newrelic.png?stars=true&downloads=true)](https://nodei.co/npm/newrelic/)\n\n# New Relic for Node.js\n\nThis package instruments your application for performance monitoring\nwith [New Relic](http://newrelic.com).\n\nThis is a new product. You should try it in your staging or development\nenvironment first to verify it works for you.\n\nMake sure you have a [New Relic account](http://newrelic.com) before\nstarting. To see all the features, such as slow transaction traces, you will\nneed a New Relic Pro subscription (or equivalent).\n\n## Table of contents\n\n* [Getting started](#getting-started)\n* [Transactions and request naming](#transactions-and-request-naming)\n* [Configuration](#configuring-the-agent)\n* [Contributions](#contributions)\n* [Known issues](#known-issues)\n\n## Getting started\n\n1. [Install node](http://nodejs.org/#download). For now, at least 0.8 is\n required. Some features (e.g. error tracing) depend in whole or in\n part on features in 0.10 and above. Development work on the agent is\n being done against the latest released non-development version of Node.\n2. Install this module via `npm install newrelic` for the application you\n want to monitor.\n3. Copy `newrelic.js` from `node_modules/newrelic` into the root directory of\n your application.\n4. Edit `newrelic.js` and replace `license_key`\'s value with the license key\n for your account.\n5. Add `require(\'newrelic\');` as the first line of the app\'s main module.\n\nIf you wish to keep the configuration for the agent separate from your\napplication, the agent will look for newrelic.js in the directory referenced\nby the environment variable `NEW_RELIC_HOME` if it\'s set.\n\nWhen you start your app, the agent should start up with it and start reporting\ndata that will appear within [the New Relic UI](https://rpm.newrelic.com/)\nafter a few minutes. Because the agent minimizes the amount of bandwidth it\nconsumes, it only reports data once a minute, so if you add the agent to tests\nthat take less than a minute to run, the agent won\'t have time to report data\nto New Relic. The agent will write its log to a file named `newrelic_agent.log`\nin the application directory. If the agent doesn\'t send data or crashes your\napp, the log can help New Relic determine what went wrong, so be sure to send\nit along with any bug reports or support requests.\n\n## Transactions and request naming\n\nIn order to get the most value out of the New Relic agent for Node.js, you may\nhave to do a little work to help us figure out how your application is\nstructured. New Relic works on the assumption that it can group requests to\nyour application into transactions, which are defined by giving one or more\nrequest paths a name. These names are used to visualize where your app is\nspending its time (in transaction breakdowns), to identify slow requests, and\nto group scoped metrics, to tell you which portions of your application are,\nfor example, suffering from slow database performance.\n\nIf you\'re using Express or Restify with their default routers and are satisfied\nwith your application being represented by those frameworks\' route names, you\nmay not need to do anything. However, if you want more specific names than are\nprovided by your framework, you may want to use one or more of the tools\ndescribed further on.\n\nThe simplest way to tell that you need to read further in this document is if\nyou feel too many of your requests are being lumped together under the\ncatch-all name `/*`. All requests that aren\'t otherwise named by the agent will\nend up grouped under `/*`.\n\n### Background\n\nIf you\'ve been working with Node for a while, you\'re probably accustomed to\nthinking of your application\'s requests in terms of raw URLs. One of the great\nthings about Node is that it makes it so easy and simple to work with HTTP, and\nthat extends to things like parsing URLs and creating your own strategies for\nnaming and routing requests for services like RESTful APIs. This presents a\nchallenge for us, because we need to keep the number of names we\'re tracking\nsmall enough that we can keep the New Relic user experience snappy, and also so\nwe don\'t overwhelm you with so much data that it\'s difficult for you to see the\nproblem spots in your applications. URLs are not a good fit for how New Relic\nsees performance.\n\nAnother of Node\'s great strengths is that it provides a lot of tools that build\non top of the `http` module to simplify writing web services. Unfortunately,\nthat variety greatly complicates things for us, with our limited resources, and\nso we offer a few different tools to help you give us the information we need\nto provide you useful metrics about your application:\n\n* we can read the route names from the Express and Restify routers, if you\'re\n using them (and as said above, for many of you, this may be all you need)\n* we offer an API for naming the current request, either with simple names or,\n if you prefer, grouped into controllers with actions\n* and we support rules stored in your agent\'s configuration that can mark\n requests to be renamed or ignored based on regular expressions matched\n against the request\'s raw URLs (also available as API calls)\n\nLet\'s go through those tools one at a time.\n\n### Router introspection\n\nExpress is the most popular web framework in use within the Node community, and\na number of important services are also using Restify. Both frameworks map\nroutes to handlers, and both use a similar pattern to do so: they match one or\nmore HTTP methods (e.g. `GET` or the ever-popular `OPTIONS` – let\'s hear it\nfor CORS) along with a potentially parameterized path (e.g. `/user/:id`) or a\nregular expression (e.g. `/^/user/([-0-9a-f]+)$/`). The New Relic agent will\ncapture both those pieces of information in the request name. If you have\nsupport for slow transaction traces and have enabled `capture_params`, the\ntransaction trace will also have the request\'s parameters and their values\nattached to it.\n\nThe only important thing to know about New Relic\'s support for Express and\nRestify is that if you\'re dissatisfied with the names it comes up with, you can\nuse the API calls described below to come up with more descriptive names. Also,\nif you use a different web framework or router and would like to see support\nfor it added, please let us know.\n\n### The request naming API\n\nThe API is what\'s handed back from `require(\'newrelic\')`, so\n\n```javascript\nvar newrelic = require(\'newrelic\');\n```\n\nis all you need. Please note that you still need to ensure that loading the New\nRelic module is the first thing your application does, as it needs to bootstrap\nitself before the rest of your application loads, but you can safely require\nthe module from multiple modules in your application – it will only initialize\nitself once.\n\n#### newrelic.setTransactionName(name)\n\nName the current request. You can call this function anywhere within the\ncontext of an HTTP request handler, at any time after handling of the request\nhas started, but before the request has finished. A good rule of thumb is that\nif the request and response objects are in scope, you can set the name.\n\nExplicitly calling `newrelic.setTransactionName()` will override any names set\nby Express or Restify routes. Calls to `newrelic.setTransactionName()` and\n`newrelic.setControllerName()` will overwrite each other. The last one to run\nbefore the request ends wins.\n\n**VERY IMPORTANT NOTE:** Do not include highly variable information like GUIDs,\nnumerical IDs, or timestamps in the request names you create. If your request\nis slow enough to generate a transaction trace, that trace will contain the\noriginal URL. If you enable parameter capture, the parameters will also be\nattached to the trace. The request names are used to group requests for New\nRelic\'s many charts and tables, and those visualizations\' value drops as the\nnumber of different request names increases. If you have 50 or so different\ntransaction names, you\'re probably pushing it. If you have more than a couple\nhundred, you need to rethink your naming strategy.\n\n#### newrelic.setControllerName(name, [action])\n\nName the current request using a controller-style pattern, optionally including\nthe current controller action. If the action is omitted, New Relic will include\nthe HTTP method (e.g. `GET`, `POST`) as the action. The rules for when you can\ncall `newrelic.setControllerName()` are the same as they are for\n`newrelic.setTransactionName()`.\n\nExplicitly calling `newrelic.setControllerName()` will override any names set\nby Express or Restify routes. Calls to `newrelic.setTransactionName()` and\n`newrelic.setControllerName()` will overwrite each other. The last one to run\nbefore the request ends wins.\n\nSee the above note on `newrelic.setTransactionName()`, which also applies to\nthis function.\n\n#### newrelic.setIgnoreTransaction(ignored)\n\nTell the module explicitly whether or not a given request should be ignored.\nAllows you to explicitly filter out long-polling routes or requests you know\nare going to be time-consuming in an uninteresting way, and also allows you\nto gather metrics for requests that would otherwise be ignored. Note that\nto prevent a transaction from being ignored with this function, you **must**\npass `false` as the parameter – in this case `null` or `undefined` will be\nignored.\n\n### Rules for naming and ignoring requests\n\nIf you don\'t feel like putting calls to the New Relic module directly into your\napplication code, you can use pattern-based rules to name requests. There are\ntwo sets of rules: one for renaming requests, and one to mark requests to be\nignored by New Relic\'s instrumentation.\n\nIf you\'re using socket.io, you will have a use case for ignoring rules right\nout of the box. You\'ll probably want to add a rule like the following:\n\n```javascript\n// newrelic.js\nexports.config = {\n // other configuration\n rules : {\n ignore : [\n \'^/socket.io/.*/xhr-polling\'\n ]\n }\n};\n```\n\nThis will keep socket.io long-polling from dominating your response-time\nmetrics and blowing out the apdex metrics for your application.\n\n#### rules.name\n\nA list of rules of the format `{pattern : "pattern", name : "name"}` for\nmatching incoming request URLs to `pattern` and naming the matching New Relic\ntransactions `name`. The pattern can be set as either a string or a JavaScript\nregular expression literal. Both pattern and name are required. Additional\nattributes are ignored.\n\nCan also be set via the environment variable `NEW_RELIC_NAMING_RULES`, with\nmultiple rules passed in as a list of comma-delimited JSON object literals:\n`NEW_RELIC_NAMING_RULES=\'{"pattern":"^t","name":"u"},{"pattern":"^u","name":"t"}\'`\n\n#### rules.ignore\n\nA list of patterns for matching incoming request URLs to be ignored. Patterns\nmay be strings or regular expressions.\n\nCan also be set via the environment variable `NEW_RELIC_IGNORING_RULES`, with\nmultiple rules passed in as a list of comma-delimited patterns:\n`NEW_RELIC_IGNORING_RULES=\'^/socket\\.io/\\*/xhr-polling,ignore_me\'` Note that\ncurrently there is no way to escape commas in patterns.\n\n### API for adding naming and ignoring rules\n\n#### newrelic.addNamingRule(pattern, name)\n\nProgrammatic version of `rules.name` above. Naming rules can not be removed\nuntil the Node process is restarted. They can also be added via the agent\'s\nconfiguration. Both parameters are mandatory.\n\n#### newrelic.addIgnoringRule(pattern)\n\nProgrammatic version of `rules.ignore` above. Ignoring rules can not be removed\nuntil the Node process is restarted. They can also be added via the agent\'s\nconfiguration. The pattern is mandatory.\n\n### The fine print\n\nThis is the Node-specific version of New Relic\'s transaction naming API\ndocumentation. The naming API exists to help us deal with the very real problem\nthat trying to handle too many metrics will make New Relic slow for everybody,\nnot just the account with too many metrics. If, in conversation with New Relic\nSupport, you see discussion of "metric explosion", this is what they\'re talking\nabout.\n\nWhile we have a variety of strategies for dealing with these issues, the most\nsevere is simply to blacklist offending applications. The main reason for you\nto be careful in using our request-naming tools is to prevent that from\nhappening to your applications. We will do everything in our power to ensure\nthat you have a good experience with New Relic even if your application is\ncausing us trouble, but sometimes this will require manual intervention on the\npart of our team, and this can take a little while.\n\n## Configuring the agent\n\nThe agent can be tailored to your app\'s requirements, both from the server and\nvia the newrelic.js configuration file you created. For complete details on\nwhat can be configured, refer to\n[`lib/config.default.js`](https://github.com/newrelic/node-newrelic/blob/master/lib/config.default.js),\nwhich documents the available variables and their default values.\n\nIn addition, for those of you running in PaaS environments like Heroku or\nMicrosoft Azure, all of the configuration variables in `newrelic.js` have\ncounterparts that can be set via environment variables. You can mix and match\nvariables in the configuration file and environment variables freely;\nenvironment variables take precedence.\n\nHere\'s the list of the most important variables and their values:\n\n* `NEW_RELIC_LICENSE_KEY`: Your New Relic license key. This is a required\n setting with no default value.\n* `NEW_RELIC_APP_NAME`: The name of this application, for reporting to\n New Relic\'s servers. This value can be also be a comma-delimited list of\n names. This is a required setting with no default value. (NOTE: as a\n convenience to Azure users, the agent will use `APP_POOL_ID` as the\n application name if it\'s set, so you can use the name you chose for\n your Azure Web Server without setting it twice.)\n* `NEW_RELIC_NO_CONFIG_FILE`: Inhibit loading of the configuration file\n altogether. Use with care. This presumes that all important configuration\n will be available via environment variables, and some log messages\n assume that a config file exists.\n* `NEW_RELIC_HOME`: path to the directory in which you\'ve placed newrelic.js.\n* `NEW_RELIC_LOG`: Complete path to the New Relic agent log, including\n the filename. The agent will shut down the process if it can\'t create\n this file, and it creates the log file with the same umask of the\n process. Setting this to `stdout` will write all logging to stdout, and\n `stderr` will write all logging to stderr.\n* `NEW_RELIC_LOG_LEVEL`: Logging priority for the New Relic agent. Can be one of\n `error`, `warn`, `info`, `debug`, or `trace`. `debug` and `trace` are\n pretty chatty; unless you\'re helping New Relic figure out irregularities\n with the agent, you\'re probably best off using `info` or higher.\n\nFor completeness, here\'s the rest of the list:\n\n* `NEW_RELIC_ENABLED`: Whether or not the agent should run. Good for\n temporarily disabling the agent while debugging other issues with your\n code. It doesn\'t prevent the agent from bootstrapping its instrumentation\n or setting up all its pieces, it just prevents it from starting up or\n connecting to New Relic\'s servers. Defaults to true.\n* `NEW_RELIC_ERROR_COLLECTOR_ENABLED`: Whether or not to trace errors within\n your application. Values are `true` or `false`. Defaults to true.\n* `NEW_RELIC_ERROR_COLLECTOR_IGNORE_ERROR_CODES`: Comma-delimited list of HTTP\n status codes to ignore. Maybe you don\'t care if payment is required? Ignoring\n a status code means that the transaction is not renamed to match the code,\n and the request is not treated as an error by the error collector. Defaults\n to ignoring 404.\n* `NEW_RELIC_IGNORE_SERVER_CONFIGURATION`: Whether to ignore server-side\n configuration for this application. Defaults to false.\n* `NEW_RELIC_TRACER_ENABLED`: Whether to collect and submit slow\n transaction traces to New Relic. Values are `true` or `false`. Defaults to\n true.\n* `NEW_RELIC_TRACER_THRESHOLD`: Duration (in seconds) at which a transaction\n trace will count as slow and be sent to New Relic. Can also be set to\n `apdex_f`, at which point it will set the trace threshold to 4 times the\n current ApdexT.\n* `NEW_RELIC_APDEX`: Set the initial Apdex tolerating / threshold value in\n seconds. This is more often than not set from the server. Defaults to 0.100.\n* `NEW_RELIC_CAPTURE_PARAMS`: Whether to capture request parameters on\n slow transaction or error traces. Defaults to false.\n* `NEW_RELIC_IGNORED_PARAMS`: Some parameters may contain sensitive\n values you don\'t want being sent out of your application. This setting\n is a comma-delimited list of names of parameters to ignore. Defaults to\n empty.\n* `NEW_RELIC_NAMING_RULES`: A list of comma-delimited JSON object literals:\n `NEW_RELIC_NAMING_RULES=\'{"pattern":"^t","name":"u"},{"pattern":"^u","name":"t"}\'`\n See the section on request and transaction naming for details. Defaults to\n empty.\n* `NEW_RELIC_IGNORING_RULES`: A list of comma-delimited patterns:\n `NEW_RELIC_IGNORING_RULES=\'^/socket\\.io/\\*/xhr-polling,ignore_me\'` Note that\n currently there is no way to escape commas in patterns. Defaults to empty.\n* `NEW_RELIC_TRACER_TOP_N`: Increase this number to increase the diversity\n of slow transaction traces sent to New Relic. Defaults to 1. See the\n description in `lib/config.default.js`, as this feature is exceedingly hard\n to summarize.\n* `NEW_RELIC_HOST`: Hostname for the New Relic collector proxy. You\n shouldn\'t need to change this.\n* `NEW_RELIC_PORT`: Port number on which the New Relic collector proxy\n will be listening. You shouldn\'t need to change this either.\n* `NEW_RELIC_DEBUG_METRICS`: Whether to collect internal supportability\n metrics for the agent. Don\'t mess with this unless New Relic asks you to.\n* `NEW_RELIC_DEBUG_TRACER`: Whether to dump traces of the transaction tracer\'s\n internal operation. You\'re welcome to enable it, but it\'s unlikely to be\n edifying unless you\'re a New Relic Node.js engineer.\n\n## Contributions\n\nWe owe a debt to all of the beta testers who have provided us with feedback,\nand in some cases significant pieces of code. (If you wish to contribute,\nplease see CONTRIBUTING.md in this package.) In particular, we\'re indebted\nto these people:\n\n* Hernan Silberman, for his work on the memcached instrumentation\n* Jeff Howell &lt;[email protected]&gt;, for coming up with a much simpler way\n to instrument node-mongodb-native, as well as pointing out a problem with the\n Connect instrumentation.\n\n## Recent changes\n\nInformation about changes to the agent are in NEWS.md.\n\n### Known issues:\n\n* The agent is only supported on Node.js 0.8 and newer. Some features may\n behave differently between 0.8 and 0.10. The agent has been tested but not\n extensively so on Node 0.11. The agent is optimized for newer versions of\n Node.\n* There are irregularities around transaction trace capture and display.\n If you notice missing or incorrect information from transaction traces,\n let us know.\n* There are <del>over 20,000</del> <del>30,000</del> <del>40,000</del> <ins>*A\n LOT* of</ins> modules on npm. We can only instrument a tiny number of them.\n Even for the modules we support, there are a very large number of ways to use\n them. If you see data you don\'t expect on New Relic and have the time to\n produce a reduced version of the code that is producing the strange data, it\n will be used to improve the agent and you will have the Node team\'s gratitude.\n* The CPU and memory overhead incurred by the Node agent is relatively minor\n (~1-10%, depending on how much of the instrumentation your apps end up\n using). GC activity is significantly increased while the agent is active,\n due to the large number of ephemeral objects created by metrics gathering.\n* When using Node\'s included clustering support, each worker process will\n open its own connection to New Relic\'s servers, and will incur its own\n overhead costs.\n\n### New Relic features available for other platforms not yet in Node.js\n\n* Real User Monitoring (RUM)\n* custom instrumentation APIs\n* slow SQL traces and explain plans\n* custom parameters\n* garbage collector instrumentation\n* capacity planning\n* thread profiling\n\n## LICENSE\n\nThe New Relic Node.js agent is free-to-use, proprietary software. Please see\nthe full license (found in LICENSE in this distribution) for details on its\nlicense and the licenses of its dependencies.\n',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved bugs: { url: 'https://github.com/newrelic/node-newrelic/issues' },
1138 silly resolved bundleDependencies: [ 'bunyan', 'continuation-local-storage' ],
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'newrelic@~1.0.1' },
1138 silly resolved { name: 'commander',
1138 silly resolved version: '2.0.0',
1138 silly resolved description: 'the complete solution for node.js command-line programs',
1138 silly resolved keywords: [ 'command', 'option', 'parser', 'prompt', 'stdin' ],
1138 silly resolved author: { name: 'TJ Holowaychuk', email: '[email protected]' },
1138 silly resolved repository:
1138 silly resolved { type: 'git',
1138 silly resolved url: 'https://github.com/visionmedia/commander.js.git' },
1138 silly resolved devDependencies: { should: '>= 0.0.1' },
1138 silly resolved scripts: { test: 'make test' },
1138 silly resolved main: 'index',
1138 silly resolved engines: { node: '>= 0.6.x' },
1138 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(\' - pineapple\');\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 pineapple\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## .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;[email protected]&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',
1138 silly resolved readmeFilename: 'Readme.md',
1138 silly resolved bugs: { url: 'https://github.com/visionmedia/commander.js/issues' },
1138 silly resolved homepage: 'https://github.com/visionmedia/commander.js',
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'commander@~2.0.0' },
1138 silly resolved { name: 'redis',
1138 silly resolved version: '0.9.2',
1138 silly resolved description: 'Redis client library',
1138 silly resolved keywords: [ 'redis', 'database' ],
1138 silly resolved author: { name: 'Matt Ranney', email: '[email protected]' },
1138 silly resolved main: './index.js',
1138 silly resolved scripts: { test: 'node ./test.js' },
1138 silly resolved devDependencies: { metrics: '>=0.1.5', colors: '~0.6.0-1', underscore: '~1.4.4' },
1138 silly resolved repository: { type: 'git', url: 'git://github.com/mranney/node_redis.git' },
1138 silly resolved readme: 'redis - a node.js redis client\n===========================\n\nThis is a complete Redis client for node.js. It supports all Redis commands, including many recently added commands like EVAL from\nexperimental Redis server branches.\n\n\nInstall with:\n\n npm install redis\n\nPieter Noordhuis has provided a binding to the official `hiredis` C library, which is non-blocking and fast. To use `hiredis`, do:\n\n npm install hiredis redis\n\nIf `hiredis` is installed, `node_redis` will use it by default. Otherwise, a pure JavaScript parser will be used.\n\nIf you use `hiredis`, be sure to rebuild it whenever you upgrade your version of node. There are mysterious failures that can\nhappen between node and native code modules after a node upgrade.\n\n\n## Usage\n\nSimple example, included as `examples/simple.js`:\n\n```js\n var redis = require("redis"),\n client = redis.createClient();\n\n // if you\'d like to select database 3, instead of 0 (default), call\n // client.select(3, function() { /* ... */ });\n\n client.on("error", function (err) {\n console.log("Error " + err);\n });\n\n client.set("string key", "string val", redis.print);\n client.hset("hash key", "hashtest 1", "some value", redis.print);\n client.hset(["hash key", "hashtest 2", "some other value"], redis.print);\n client.hkeys("hash key", function (err, replies) {\n console.log(replies.length + " replies:");\n replies.forEach(function (reply, i) {\n console.log(" " + i + ": " + reply);\n });\n client.quit();\n });\n```\n\nThis will display:\n\n mjr:~/work/node_redis (master)$ node example.js\n Reply: OK\n Reply: 0\n Reply: 0\n 2 replies:\n 0: hashtest 1\n 1: hashtest 2\n mjr:~/work/node_redis (master)$\n\n\n## Performance\n\nHere are typical results of `multi_bench.js` which is similar to `redis-benchmark` from the Redis distribution.\nIt uses 50 concurrent connections with no pipelining.\n\nJavaScript parser:\n\n PING: 20000 ops 42283.30 ops/sec 0/5/1.182\n SET: 20000 ops 32948.93 ops/sec 1/7/1.515\n GET: 20000 ops 28694.40 ops/sec 0/9/1.740\n INCR: 20000 ops 39370.08 ops/sec 0/8/1.269\n LPUSH: 20000 ops 36429.87 ops/sec 0/8/1.370\n LRANGE (10 elements): 20000 ops 9891.20 ops/sec 1/9/5.048\n LRANGE (100 elements): 20000 ops 1384.56 ops/sec 10/91/36.072\n\nhiredis parser:\n\n PING: 20000 ops 46189.38 ops/sec 1/4/1.082\n SET: 20000 ops 41237.11 ops/sec 0/6/1.210\n GET: 20000 ops 39682.54 ops/sec 1/7/1.257\n INCR: 20000 ops 40080.16 ops/sec 0/8/1.242\n LPUSH: 20000 ops 41152.26 ops/sec 0/3/1.212\n LRANGE (10 elements): 20000 ops 36563.07 ops/sec 1/8/1.363\n LRANGE (100 elements): 20000 ops 21834.06 ops/sec 0/9/2.287\n\nThe performance of `node_redis` improves dramatically with pipelining, which happens automatically in most normal programs.\n\n\n### Sending Commands\n\nEach Redis command is exposed as a function on the `client` object.\nAll functions take either an `args` Array plus optional `callback` Function or\na variable number of individual arguments followed by an optional callback.\nHere is an example of passing an array of arguments and a callback:\n\n client.mset(["test keys 1", "test val 1", "test keys 2", "test val 2"], function (err, res) {});\n\nHere is that same call in the second style:\n\n client.mset("test keys 1", "test val 1", "test keys 2", "test val 2", function (err, res) {});\n\nNote that in either form the `callback` is optional:\n\n client.set("some key", "some val");\n client.set(["some other key", "some val"]);\n\nIf the key is missing, reply will be null (probably):\n\n client.get("missingkey", function(err, reply) {\n // reply is null when the key is missing\n console.log(reply);\n });\n\nFor a list of Redis commands, see [Redis Command Reference](http://redis.io/commands)\n\nThe commands can be specified in uppercase or lowercase for convenience. `client.get()` is the same as `client.GET()`.\n\nMinimal parsing is done on the replies. Commands that return a single line reply return JavaScript Strings,\ninteger replies return JavaScript Numbers, "bulk" replies return node Buffers, and "multi bulk" replies return a\nJavaScript Array of node Buffers. `HGETALL` returns an Object with Buffers keyed by the hash keys.\n\n# API\n\n## Connection Events\n\n`client` will emit some events about the state of the connection to the Redis server.\n\n### "ready"\n\n`client` will emit `ready` a connection is established to the Redis server and the server reports\nthat it is ready to receive commands. Commands issued before the `ready` event are queued,\nthen replayed just before this event is emitted.\n\n### "connect"\n\n`client` will emit `connect` at the same time as it emits `ready` unless `client.options.no_ready_check`\nis set. If this options is set, `connect` will be emitted when the stream is connected, and then\nyou are free to try to send commands.\n\n### "error"\n\n`client` will emit `error` when encountering an error connecting to the Redis server.\n\nNote that "error" is a special event type in node. If there are no listeners for an\n"error" event, node will exit. This is usually what you want, but it can lead to some\ncryptic error messages like this:\n\n mjr:~/work/node_redis (master)$ node example.js\n\n node.js:50\n throw e;\n ^\n Error: ECONNREFUSED, Connection refused\n at IOWatcher.callback (net:870:22)\n at node.js:607:9\n\nNot very useful in diagnosing the problem, but if your program isn\'t ready to handle this,\nit is probably the right thing to just exit.\n\n`client` will also emit `error` if an exception is thrown inside of `node_redis` for whatever reason.\nIt would be nice to distinguish these two cases.\n\n### "end"\n\n`client` will emit `end` when an established Redis server connection has closed.\n\n### "drain"\n\n`client` will emit `drain` when the TCP connection to the Redis server has been buffering, but is now\nwritable. This event can be used to stream commands in to Redis and adapt to backpressure. Right now,\nyou need to check `client.command_queue.length` to decide when to reduce your send rate. Then you can\nresume sending when you get `drain`.\n\n### "idle"\n\n`client` will emit `idle` when there are no outstanding commands that are awaiting a response.\n\n## redis.createClient(port, host, options)\n\nCreate a new client connection. `port` defaults to `6379` and `host` defaults\nto `127.0.0.1`. If you have `redis-server` running on the same computer as node, then the defaults for\nport and host are probably fine. `options` in an object with the following possible properties:\n\n* `parser`: which Redis protocol reply parser to use. Defaults to `hiredis` if that module is installed.\nThis may also be set to `javascript`.\n* `return_buffers`: defaults to `false`. If set to `true`, then all replies will be sent to callbacks as node Buffer\nobjects instead of JavaScript Strings.\n* `detect_buffers`: default to `false`. If set to `true`, then replies will be sent to callbacks as node Buffer objects\nif any of the input arguments to the original command were Buffer objects.\nThis option lets you switch between Buffers and Strings on a per-command basis, whereas `return_buffers` applies to\nevery command on a client.\n* `socket_nodelay`: defaults to `true`. Whether to call setNoDelay() on the TCP stream, which disables the\nNagle algorithm on the underlying socket. Setting this option to `false` can result in additional throughput at the\ncost of more latency. Most applications will want this set to `true`.\n* `no_ready_check`: defaults to `false`. When a connection is established to the Redis server, the server might still\nbe loading the database from disk. While loading, the server not respond to any commands. To work around this,\n`node_redis` has a "ready check" which sends the `INFO` command to the server. The response from the `INFO` command\nindicates whether the server is ready for more commands. When ready, `node_redis` emits a `ready` event.\nSetting `no_ready_check` to `true` will inhibit this check.\n* `enable_offline_queue`: defaults to `true`. By default, if there is no active\nconnection to the redis server, commands are added to a queue and are executed\nonce the connection has been established. Setting `enable_offline_queue` to\n`false` will disable this feature and the callback will be execute immediately\nwith an error, or an error will be thrown if no callback is specified.\n* `retry_max_delay`: defaults to `null`. By default every time the client tries to connect and fails time before\nreconnection (delay) almost doubles. This delay normally grows infinitely, but setting `retry_max_delay` limits delay\nto maximum value, provided in milliseconds.\n* `connect_timeout` defaults to `false`. By default client will try reconnecting until connected. Setting `connect_timeout`\nlimits total time for client to reconnect. Value is provided in milliseconds and is counted once the disconnect occured.\n* `max_attempts` defaults to `null`. By default client will try reconnecting until connected. Setting `max_attempts`\nlimits total amount of reconnects.\n* `auth_pass` defaults to `null`. By default client will try connecting without auth. If set, client will run redis auth command on connect.\n\n```js\n var redis = require("redis"),\n client = redis.createClient(null, null, {detect_buffers: true});\n\n client.set("foo_rand000000000000", "OK");\n\n // This will return a JavaScript String\n client.get("foo_rand000000000000", function (err, reply) {\n console.log(reply.toString()); // Will print `OK`\n });\n\n // This will return a Buffer since original key is specified as a Buffer\n client.get(new Buffer("foo_rand000000000000"), function (err, reply) {\n console.log(reply.toString()); // Will print `<Buffer 4f 4b>`\n });\n client.end();\n```\n\n`createClient()` returns a `RedisClient` object that is named `client` in all of the examples here.\n\n### Unix Domain Socket\n\nYou can also create a connection to Redis server via the unix domain socket if the server\nhas it enabled:\n\n```js\nvar redis = require("redis");\nvar client = redis.createClient("/tmp/redis.sock");\n```\n\nSample `redis.conf` configuration to enable unix domain socket listening:\n\n```conf\nunixsocket /tmp/redis.sock\nunixsocketperm 755\n```\n\nSee [issue #204](https://github.com/mranney/node_redis/issues/204) for more information.\n\n## client.auth(password, callback)\n\nWhen connecting to Redis servers that require authentication, the `AUTH` command must be sent as the\nfirst command after connecting. This can be tricky to coordinate with reconnections, the ready check,\netc. To make this easier, `client.auth()` stashes `password` and will send it after each connection,\nincluding reconnections. `callback` is invoked only once, after the response to the very first\n`AUTH` command sent.\nNOTE: Your call to `client.auth()` should not be inside the ready handler. If\nyou are doing this wrong, `client` will emit an error that looks\nsomething like this `Error: Ready check failed: ERR operation not permitted`.\n\n## client.end()\n\nForcibly close the connection to the Redis server. Note that this does not wait until all replies have been parsed.\nIf you want to exit cleanly, call `client.quit()` to send the `QUIT` command after you have handled all replies.\n\nThis example closes the connection to the Redis server before the replies have been read. You probably don\'t\nwant to do this:\n\n```js\n var redis = require("redis"),\n client = redis.createClient();\n\n client.set("foo_rand000000000000", "some fantastic value");\n client.get("foo_rand000000000000", function (err, reply) {\n console.log(reply.toString());\n });\n client.end();\n```\n\n`client.end()` is useful for timeout cases where something is stuck or taking too long and you want\nto start over.\n\n## client.unref()\n\nCall `unref()` on the underlying socket connection to the Redis server, allowing the program to exit once no more commands are pending.\n\nThis is an **experimental** feature, and only supports a subset of the Redis protocol. Any commands where client state is saved on the Redis server, e.g. `*SUBSCRIBE` or the blocking `BL*` commands will *NOT* work with `.unref()`.\n\n```js\nvar redis = require("redis")\nvar client = redis.createClient()\n\n/*\n Calling unref() will allow this program to exit immediately after the get command finishes. Otherwise the client would hang as long as the client-server connection is alive.\n*/\nclient.unref()\nclient.get("foo", function (err, value){\n if (err) throw(err)\n console.log(value)\n})\n```\n\n## Friendlier hash commands\n\nMost Redis commands take a single String or an Array of Strings as arguments, and replies are sent back as a single String or an Array of Strings.\nWhen dealing with hash values, there are a couple of useful exceptions to this.\n\n### client.hgetall(hash)\n\nThe reply from an HGETALL command will be converted into a JavaScript Object by `node_redis`. That way you can interact\nwith the responses using JavaScript syntax.\n\nExample:\n\n client.hmset("hosts", "mjr", "1", "another", "23", "home", "1234");\n client.hgetall("hosts", function (err, obj) {\n console.dir(obj);\n });\n\nOutput:\n\n { mjr: \'1\', another: \'23\', home: \'1234\' }\n\n### client.hmset(hash, obj, [callback])\n\nMultiple values in a hash can be set by supplying an object:\n\n client.HMSET(key2, {\n "0123456789": "abcdefghij", // NOTE: key and value will be coerced to strings\n "some manner of key": "a type of value"\n });\n\nThe properties and values of this Object will be set as keys and values in the Redis hash.\n\n### client.hmset(hash, key1, val1, ... keyn, valn, [callback])\n\nMultiple values may also be set by supplying a list:\n\n client.HMSET(key1, "0123456789", "abcdefghij", "some manner of key", "a type of value");\n\n\n## Publish / Subscribe\n\nHere is a simple example of the API for publish / subscribe. This program opens two\nclient connections, subscribes to a channel on one of them, and publishes to that\nchannel on the other:\n\n```js\n var redis = require("redis"),\n client1 = redis.createClient(), client2 = redis.createClient(),\n msg_count = 0;\n\n client1.on("subscribe", function (channel, count) {\n client2.publish("a nice channel", "I am sending a message.");\n client2.publish("a nice channel", "I am sending a second message.");\n client2.publish("a nice channel", "I am sending my last message.");\n });\n\n client1.on("message", function (channel, message) {\n console.log("client1 channel " + channel + ": " + message);\n msg_count += 1;\n if (msg_count === 3) {\n client1.unsubscribe();\n client1.end();\n client2.end();\n }\n });\n\n client1.incr("did a thing");\n client1.subscribe("a nice channel");\n```\n\nWhen a client issues a `SUBSCRIBE` or `PSUBSCRIBE`, that connection is put into a "subscriber" mode.\nAt that point, only commands that modify the subscription set are valid. When the subscription\nset is empty, the connection is put back into regular mode.\n\nIf you need to send regular commands to Redis while in subscriber mode, just open another connection.\n\n## Subscriber Events\n\nIf a client has subscriptions active, it may emit these events:\n\n### "message" (channel, message)\n\nClient will emit `message` for every message received that matches an active subscription.\nListeners are passed the channel name as `channel` and the message Buffer as `message`.\n\n### "pmessage" (pattern, channel, message)\n\nClient will emit `pmessage` for every message received that matches an active subscription pattern.\nListeners are passed the original pattern used with `PSUBSCRIBE` as `pattern`, the sending channel\nname as `channel`, and the message Buffer as `message`.\n\n### "subscribe" (channel, count)\n\nClient will emit `subscribe` in response to a `SUBSCRIBE` command. Listeners are passed the\nchannel name as `channel` and the new count of subscriptions for this client as `count`.\n\n### "psubscribe" (pattern, count)\n\nClient will emit `psubscribe` in response to a `PSUBSCRIBE` command. Listeners are passed the\noriginal pattern as `pattern`, and the new count of subscriptions for this client as `count`.\n\n### "unsubscribe" (channel, count)\n\nClient will emit `unsubscribe` in response to a `UNSUBSCRIBE` command. Listeners are passed the\nchannel name as `channel` and the new count of subscriptions for this client as `count`. When\n`count` is 0, this client has left subscriber mode and no more subscriber events will be emitted.\n\n### "punsubscribe" (pattern, count)\n\nClient will emit `punsubscribe` in response to a `PUNSUBSCRIBE` command. Listeners are passed the\nchannel name as `channel` and the new count of subscriptions for this client as `count`. When\n`count` is 0, this client has left subscriber mode and no more subscriber events will be emitted.\n\n## client.multi([commands])\n\n`MULTI` commands are queued up until an `EXEC` is issued, and then all commands are run atomically by\nRedis. The interface in `node_redis` is to return an individual `Multi` object by calling `client.multi()`.\n\n```js\n var redis = require("./index"),\n client = redis.createClient(), set_size = 20;\n\n client.sadd("bigset", "a member");\n client.sadd("bigset", "another member");\n\n while (set_size > 0) {\n client.sadd("bigset", "member " + set_size);\n set_size -= 1;\n }\n\n // multi chain with an individual callback\n client.multi()\n .scard("bigset")\n .smembers("bigset")\n .keys("*", function (err, replies) {\n // NOTE: code in this callback is NOT atomic\n // this only happens after the the .exec call finishes.\n client.mget(replies, redis.print);\n })\n .dbsize()\n .exec(function (err, replies) {\n console.log("MULTI got " + replies.length + " replies");\n replies.forEach(function (reply, index) {\n console.log("Reply " + index + ": " + reply.toString());\n });\n });\n```\n\n### Multi.exec( callback )\n\n`client.multi()` is a constructor that returns a `Multi` object. `Multi` objects share all of the\nsame command methods as `client` objects do. Commands are queued up inside the `Multi` object\nuntil `Multi.exec()` is invoked.\n\nThe `callback` of `.exec()` will get invoked with two arguments:\n\n* `err` **type:** `null | Array` err is either null or an array of Error Objects corresponding the the sequence the commands where chained. The last item of the array will always be an `EXECABORT` type of error originating from the `.exec()` itself.\n* `results` **type:** `null | Array` results is an array of responses corresponding the the sequence the commands where chained.\n\nYou can either chain together `MULTI` commands as in the above example, or you can queue individual\ncommands while still sending regular client command as in this example:\n\n```js\n var redis = require("redis"),\n client = redis.createClient(), multi;\n\n // start a separate multi command queue\n multi = client.multi();\n multi.incr("incr thing", redis.print);\n multi.incr("incr other thing", redis.print);\n\n // runs immediately\n client.mset("incr thing", 100, "incr other thing", 1, redis.print);\n\n // drains multi queue and runs atomically\n multi.exec(function (err, replies) {\n console.log(replies); // 101, 2\n });\n\n // you can re-run the same transaction if you like\n multi.exec(function (err, replies) {\n console.log(replies); // 102, 3\n client.quit();\n });\n```\n\nIn addition to adding commands to the `MULTI` queue individually, you can also pass an array\nof commands and arguments to the constructor:\n\n```js\n var redis = require("redis"),\n client = redis.createClient(), multi;\n\n client.multi([\n ["mget", "multifoo", "multibar", redis.print],\n ["incr", "multifoo"],\n ["incr", "multibar"]\n ]).exec(function (err, replies) {\n console.log(replies);\n });\n```\n\n\n## Monitor mode\n\nRedis supports the `MONITOR` command, which lets you see all commands received by the Redis server\nacross all client connections, including from other client libraries and other computers.\n\nAfter you send the `MONITOR` command, no other commands are valid on that connection. `node_redis`\nwill emit a `monitor` event for every new monitor message that comes across. The callback for the\n`monitor` event takes a timestamp from the Redis server and an array of command arguments.\n\nHere is a simple example:\n\n```js\n var client = require("redis").createClient(),\n util = require("util");\n\n client.monitor(function (err, res) {\n console.log("Entering monitoring mode.");\n });\n\n client.on("monitor", function (time, args) {\n console.log(time + ": " + util.inspect(args));\n });\n```\n\n# Extras\n\nSome other things you might like to know about.\n\n## client.server_info\n\nAfter the ready probe completes, the results from the INFO command are saved in the `client.server_info`\nobject.\n\nThe `versions` key contains an array of the elements of the version string for easy comparison.\n\n > client.server_info.redis_version\n \'2.3.0\'\n > client.server_info.versions\n [ 2, 3, 0 ]\n\n## redis.print()\n\nA handy callback function for displaying return values when testing. Example:\n\n```js\n var redis = require("redis"),\n client = redis.createClient();\n\n client.on("connect", function () {\n client.set("foo_rand000000000000", "some fantastic value", redis.print);\n client.get("foo_rand000000000000", redis.print);\n });\n```\n\nThis will print:\n\n Reply: OK\n Reply: some fantastic value\n\nNote that this program will not exit cleanly because the client is still connected.\n\n## redis.debug_mode\n\nBoolean to enable debug mode and protocol tracing.\n\n```js\n var redis = require("redis"),\n client = redis.createClient();\n\n redis.debug_mode = true;\n\n client.on("connect", function () {\n client.set("foo_rand000000000000", "some fantastic value");\n });\n```\n\nThis will display:\n\n mjr:~/work/node_redis (master)$ node ~/example.js\n send command: *3\n $3\n SET\n $20\n foo_rand000000000000\n $20\n some fantastic value\n\n on_data: +OK\n\n`send command` is data sent into Redis and `on_data` is data received from Redis.\n\n## Multi-word commands\n\nTo execute redis multi-word commands like `SCRIPT LOAD` or `CLIENT LIST` pass\nthe second word as first parameter:\n\n client.script(\'load\', \'return 1\');\n client.multi().script(\'load\', \'return 1\').exec(...);\n client.multi([[\'script\', \'load\', \'return 1\']]).exec(...);\n\n## client.send_command(command_name, args, callback)\n\nUsed internally to send commands to Redis. For convenience, nearly all commands that are published on the Redis\nWiki have been added to the `client` object. However, if I missed any, or if new commands are introduced before\nthis library is updated, you can use `send_command()` to send arbitrary commands to Redis.\n\nAll commands are sent as multi-bulk commands. `args` can either be an Array of arguments, or omitted.\n\n## client.connected\n\nBoolean tracking the state of the connection to the Redis server.\n\n## client.command_queue.length\n\nThe number of commands that have been sent to the Redis server but not yet replied to. You can use this to\nenforce some kind of maximum queue depth for commands while connected.\n\nDon\'t mess with `client.command_queue` though unless you really know what you are doing.\n\n## client.offline_queue.length\n\nThe number of commands that have been queued up for a future connection. You can use this to enforce\nsome kind of maximum queue depth for pre-connection commands.\n\n## client.retry_delay\n\nCurrent delay in milliseconds before a connection retry will be attempted. This starts at `250`.\n\n## client.retry_backoff\n\nMultiplier for future retry timeouts. This should be larger than 1 to add more time between retries.\nDefaults to 1.7. The default initial connection retry is 250, so the second retry will be 425, followed by 723.5, etc.\n\n### Commands with Optional and Keyword arguments\n\nThis applies to anything that uses an optional `[WITHSCORES]` or `[LIMIT offset count]` in the [redis.io/commands](http://redis.io/commands) documentation.\n\nExample:\n```js\nvar args = [ \'myzset\', 1, \'one\', 2, \'two\', 3, \'three\', 99, \'ninety-nine\' ];\nclient.zadd(args, function (err, response) {\n if (err) throw err;\n console.log(\'added \'+response+\' items.\');\n\n // -Infinity and +Infinity also work\n var args1 = [ \'myzset\', \'+inf\', \'-inf\' ];\n client.zrevrangebyscore(args1, function (err, response) {\n if (err) throw err;\n console.log(\'example1\', response);\n // write your code here\n });\n\n var max = 3, min = 1, offset = 1, count = 2;\n var args2 = [ \'myzset\', max, min, \'WITHSCORES\', \'LIMIT\', offset, count ];\n client.zrevrangebyscore(args2, function (err, response) {\n if (err) throw err;\n console.log(\'example2\', response);\n // write your code here\n });\n});\n```\n\n## TODO\n\nBetter tests for auth, disconnect/reconnect, and all combinations thereof.\n\nStream large set/get values into and out of Redis. Otherwise the entire value must be in node\'s memory.\n\nPerformance can be better for very large values.\n\nI think there are more performance improvements left in there for smaller values, especially for large lists of small values.\n\n## How to Contribute\n- open a pull request and then wait for feedback (if\n [DTrejo](http://github.com/dtrejo) does not get back to you within 2 days,\n comment again with indignation!)\n\n## Contributors\nSome people have have added features and fixed bugs in `node_redis` other than me.\n\nOrdered by date of first contribution.\n[Auto-generated](http://github.com/dtrejo/node-authors) on Wed Jul 25 2012 19:14:59 GMT-0700 (PDT).\n\n- [Matt Ranney aka `mranney`](https://github.com/mranney)\n- [Tim-Smart aka `tim-smart`](https://github.com/tim-smart)\n- [Tj Holowaychuk aka `visionmedia`](https://github.com/visionmedia)\n- [rick aka `technoweenie`](https://github.com/technoweenie)\n- [Orion Henry aka `orionz`](https://github.com/orionz)\n- [Aivo Paas aka `aivopaas`](https://github.com/aivopaas)\n- [Hank Sims aka `hanksims`](https://github.com/hanksims)\n- [Paul Carey aka `paulcarey`](https://github.com/paulcarey)\n- [Pieter Noordhuis aka `pietern`](https://github.com/pietern)\n- [nithesh aka `nithesh`](https://github.com/nithesh)\n- [Andy Ray aka `andy2ray`](https://github.com/andy2ray)\n- [unknown aka `unknowdna`](https://github.com/unknowdna)\n- [Dave Hoover aka `redsquirrel`](https://github.com/redsquirrel)\n- [Vladimir Dronnikov aka `dvv`](https://github.com/dvv)\n- [Umair Siddique aka `umairsiddique`](https://github.com/umairsiddique)\n- [Louis-Philippe Perron aka `lp`](https://github.com/lp)\n- [Mark Dawson aka `markdaws`](https://github.com/markdaws)\n- [Ian Babrou aka `bobrik`](https://github.com/bobrik)\n- [Felix Geisendörfer aka `felixge`](https://github.com/felixge)\n- [Jean-Hugues Pinson aka `undefined`](https://github.com/undefined)\n- [Maksim Lin aka `maks`](https://github.com/maks)\n- [Owen Smith aka `orls`](https://github.com/orls)\n- [Zachary Scott aka `zzak`](https://github.com/zzak)\n- [TEHEK Firefox aka `TEHEK`](https://github.com/TEHEK)\n- [Isaac Z. Schlueter aka `isaacs`](https://github.com/isaacs)\n- [David Trejo aka `DTrejo`](https://github.com/DTrejo)\n- [Brian Noguchi aka `bnoguchi`](https://github.com/bnoguchi)\n- [Philip Tellis aka `bluesmoon`](https://github.com/bluesmoon)\n- [Marcus Westin aka `marcuswestin2`](https://github.com/marcuswestin2)\n- [Jed Schmidt aka `jed`](https://github.com/jed)\n- [Dave Peticolas aka `jdavisp3`](https://github.com/jdavisp3)\n- [Trae Robrock aka `trobrock`](https://github.com/trobrock)\n- [Shankar Karuppiah aka `shankar0306`](https://github.com/shankar0306)\n- [Ignacio Burgueño aka `ignacio`](https://github.com/ignacio)\n\nThanks.\n\n## LICENSE - "MIT License"\n\nCopyright (c) 2010 Matthew Ranney, http://ranney.com/\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the "Software"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\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\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\n![spacer](http://ranney.com/1px.gif)\n',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved bugs: { url: 'https://github.com/mranney/node_redis/issues' },
1138 silly resolved homepage: 'https://github.com/mranney/node_redis',
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'redis@~0.9.0' },
1138 silly resolved { name: 'sockjs',
1138 silly resolved author: { name: 'Marek Majkowski' },
1138 silly resolved version: '0.3.8',
1138 silly resolved description: 'SockJS-node is a server counterpart of SockJS-client a JavaScript library that provides a WebSocket-like object in the browser. SockJS gives you a coherent, cross-browser, Javascript API which creates a low latency, full duplex, cross-domain communication channel between the browser and the web server.',
1138 silly resolved keywords: [ 'websockets', 'websocket' ],
1138 silly resolved homepage: 'https://github.com/sockjs/sockjs-node',
1138 silly resolved repository:
1138 silly resolved { type: 'git',
1138 silly resolved url: 'https://github.com/sockjs/sockjs-node.git' },
1138 silly resolved dependencies: { 'node-uuid': '1.3.3', 'faye-websocket': '0.7.0' },
1138 silly resolved devDependencies: { 'coffee-script': '1.2.x' },
1138 silly resolved main: 'index',
1138 silly resolved readme: 'SockJS family:\n\n * [SockJS-client](https://github.com/sockjs/sockjs-client) JavaScript client library\n * [SockJS-node](https://github.com/sockjs/sockjs-node) Node.js server\n * [SockJS-erlang](https://github.com/sockjs/sockjs-erlang) Erlang server\n * [SockJS-tornado](https://github.com/MrJoes/sockjs-tornado) Python/Tornado server\n * [vert.x](https://github.com/purplefox/vert.x) Java/vert.x server\n\nWork in progress:\n\n * [SockJS-ruby](https://github.com/nyarly/sockjs-ruby)\n * [SockJS-netty](https://github.com/cgbystrom/sockjs-netty)\n * [SockJS-gevent](https://github.com/sdiehl/sockjs-gevent) ([and a fork](https://github.com/njoyce/sockjs-gevent))\n * [pyramid-SockJS](https://github.com/fafhrd91/pyramid_sockjs)\n * [wildcloud-websockets](https://github.com/wildcloud/wildcloud-websockets)\n * [SockJS-cyclone](https://github.com/flaviogrossi/sockjs-cyclone)\n * [SockJS-twisted](https://github.com/Fugiman/sockjs-twisted/)\n * [wai-SockJS](https://github.com/Palmik/wai-sockjs)\n * [SockJS-perl](https://github.com/vti/sockjs-perl)\n * [SockJS-go](https://github.com/igm/sockjs-go/)\n\nWhat is SockJS?\n===============\n\nSockJS is a JavaScript library (for browsers) that provides a WebSocket-like\nobject. SockJS gives you a coherent, cross-browser, Javascript API\nwhich creates a low latency, full duplex, cross-domain communication\nchannel between the browser and the web server, with WebSockets or without.\nThis necessitates the use of a server, which this is one version of, for Node.js.\n\n\nSockJS-node server\n==================\n\nSockJS-node is a Node.js server side counterpart of\n[SockJS-client browser library](https://github.com/sockjs/sockjs-client)\nwritten in CoffeeScript.\n\nTo install `sockjs-node` run:\n\n npm install sockjs\n\nFor additional security (true random numbers) you might want to\ninstall `rbytes` package - SockJS will use it if available:\n\n npm install rbytes\n\n\nA simplified echo SockJS server could look more or less like:\n\n```javascript\nvar http = require(\'http\');\nvar sockjs = require(\'sockjs\');\n\nvar echo = sockjs.createServer();\necho.on(\'connection\', function(conn) {\n conn.on(\'data\', function(message) {\n conn.write(message);\n });\n conn.on(\'close\', function() {});\n});\n\nvar server = http.createServer();\necho.installHandlers(server, {prefix:\'/echo\'});\nserver.listen(9999, \'0.0.0.0\');\n```\n\n(Take look at\n[examples](https://github.com/sockjs/sockjs-node/tree/master/examples/echo)\ndirectory for a complete version.)\n\nSubscribe to\n[SockJS mailing list](https://groups.google.com/forum/#!forum/sockjs) for\ndiscussions and support.\n\n\nLive QUnit tests and smoke tests\n--------------------------------\n\n[SockJS-client](https://github.com/sockjs/sockjs-client) comes with\nsome QUnit tests and a few smoke tests that are using SockJS-node. At\nthe moment they are deployed in few places, just click to see if\nSockJS is working in your browser:\n\n * http://sockjs.popcnt.org/ and https://sockjs.popcnt.org/ (hosted in Europe)\n * http://sockjs.cloudfoundry.com/ (CloudFoundry, websockets disabled, loadbalanced)\n * https://sockjs.cloudfoundry.com/ (CloudFoundry SSL, websockets disabled, loadbalanced)\n\n\nSockJS-node API\n---------------\n\nThe API design is based on the common Node API\'s like\n[Streams API](http://nodejs.org/docs/v0.5.8/api/streams.html) or\n[Http.Server API](http://nodejs.org/docs/v0.5.8/api/http.html#http.Server).\n\n### Server class\n\nSockJS module is generating a `Server` class, similar to\n[Node.js http.createServer](http://nodejs.org/docs/v0.5.8/api/http.html#http.createServer)\nmodule.\n\n```javascript\nvar sockjs_server = sockjs.createServer(options);\n```\n\nWhere `options` is a hash which can contain:\n\n<dl>\n<dt>sockjs_url (string, required)</dt>\n<dd>Transports which don\'t support cross-domain communication natively\n (\'eventsource\' to name one) use an iframe trick. A simple page is\n served from the SockJS server (using its foreign domain) and is\n placed in an invisible iframe. Code run from this iframe doesn\'t\n need to worry about cross-domain issues, as it\'s being run from\n domain local to the SockJS server. This iframe also does need to\n load SockJS javascript client library, and this option lets you specify\n its url (if you\'re unsure, point it to\n <a href="http://cdn.sockjs.org/sockjs-0.3.min.js">\n the latest minified SockJS client release</a>, this is the default).\n You must explicitly specify this url on the server side for security\n reasons - we don\'t want the possibility of running any foreign\n javascript within the SockJS domain (aka cross site scripting attack).\n Also, sockjs javascript library is probably already cached by the\n browser - it makes sense to reuse the sockjs url you\'re using in\n normally.</dd>\n\n<dt>prefix (string)</dt>\n<dd>A url prefix for the server. All http requests which paths begins\n with selected prefix will be handled by SockJS. All other requests\n will be passed through, to previously registered handlers.</dd>\n\n<dt>response_limit (integer)</dt>\n<dd>Most streaming transports save responses on the client side and\n don\'t free memory used by delivered messages. Such transports need\n to be garbage-collected once in a while. `response_limit` sets\n a minimum number of bytes that can be send over a single http streaming\n request before it will be closed. After that client needs to open\n new request. Setting this value to one effectively disables\n streaming and will make streaming transports to behave like polling\n transports. The default value is 128K.</dd>\n\n<dt>websocket (boolean)</dt>\n<dd>Some load balancers don\'t support websockets. This option can be used\n to disable websockets support by the server. By default websockets are\n enabled.</dd>\n\n<dt>jsessionid (boolean or function)</dt>\n<dd>Some hosting providers enable sticky sessions only to requests that\n have JSESSIONID cookie set. This setting controls if the server should\n set this cookie to a dummy value. By default setting JSESSIONID cookie\n is disabled. More sophisticated behaviour can be achieved by supplying\n a function.</dd>\n\n<dt>log (function(severity, message))</dt>\n<dd>It\'s quite useful, especially for debugging, to see some messages\n printed by a SockJS-node library. This is done using this `log`\n function, which is by default set to `console.log`. If this\n behaviour annoys you for some reason, override `log` setting with a\n custom handler. The following `severities` are used: `debug`\n (miscellaneous logs), `info` (requests logs), `error` (serious\n errors, consider filing an issue).</dd>\n\n<dt>heartbeat_delay (milliseconds)</dt>\n<dd>In order to keep proxies and load balancers from closing long\n running http requests we need to pretend that the connection is\n active and send a heartbeat packet once in a while. This setting\n controls how often this is done. By default a heartbeat packet is\n sent every 25 seconds. </dd>\n\n<dt>disconnect_delay (milliseconds)</dt>\n<dd>The server sends a `close` event when a client receiving\n connection have not been seen for a while. This delay is configured\n by this setting. By default the `close` event will be emitted when a\n receiving connection wasn\'t seen for 5 seconds. </dd>\n</dl>\n\n\n### Server instance\n\nOnce you have create `Server` instance you can hook it to the\n[http.Server instance](http://nodejs.org/docs/v0.5.8/api/http.html#http.createServer).\n\n```javascript\nvar http_server = http.createServer();\nsockjs_server.installHandlers(http_server, options);\nhttp_server.listen(...);\n```\n\nWhere `options` can overshadow options given when creating `Server`\ninstance.\n\n`Server` instance is an\n[EventEmitter](http://nodejs.org/docs/v0.4.10/api/events.html#events.EventEmitter),\nand emits following event:\n\n<dl>\n<dt>Event: connection (connection)</dt>\n<dd>A new connection has been successfully opened.</dd>\n</dl>\n\nAll http requests that don\'t go under the path selected by `prefix`\nwill remain unanswered and will be passed to previously registered\nhandlers. You must install your custom http handlers before calling\n`installHandlers`.\n\n### Connection instance\n\nA `Connection` instance supports\n[Node Stream API](http://nodejs.org/docs/v0.5.8/api/streams.html) and\nhas following methods and properties:\n\n<dl>\n<dt>Property: readable (boolean)</dt>\n<dd>Is the stream readable?</dd>\n\n<dt>Property: writable (boolean)</dt>\n<dd>Is the stream writable?</dd>\n\n<dt>Property: remoteAddress (string)</dt>\n<dd>Last known IP address of the client.</dd>\n\n<dt>Property: remotePort (number)</dt>\n<dd>Last known port number of the client.</dd>\n\n<dt>Property: address (object)</dt>\n<dd>Hash with \'address\' and \'port\' fields.</dd>\n\n<dt>Property: headers (object)</dt>\n<dd>Hash containing various headers copied from last receiving request\n on that connection. Exposed headers include: `origin`, `referer`\n and `x-forwarded-for` (and friends). We explicitly do not grant\n access to `cookie` header, as using it may easily lead to security\n issues (for details read the section "Authorisation").</dd>\n\n<dt>Property: url (string)</dt>\n<dd><a href="http://nodejs.org/docs/v0.4.10/api/http.html#request.url">Url</a>\n property copied from last request.</dd>\n\n<dt>Property: pathname (string)</dt>\n<dd>`pathname` from parsed url, for convenience.</dd>\n\n<dt>Property: prefix (string)</dt>\n<dd>Prefix of the url on which the request was handled.</dd>\n\n<dt>Property: protocol (string)</dt>\n<dd>Protocol used by the connection. Keep in mind that some protocols\n are indistinguishable - for example "xhr-polling" and "xdr-polling".</dd>\n\n<dt>Property: readyState (integer)</dt>\n<dd>Current state of the connection:\n 0-connecting, 1-open, 2-closing, 3-closed.</dd>\n\n<dt>write(message)</dt>\n<dd>Sends a message over opened connection. A message must be a\n non-empty string. It\'s illegal to send a message after the connection was\n closed (either after \'close\' or \'end\' method or \'close\' event).</dd>\n\n<dt>close([code], [reason])</dt>\n<dd>Asks the remote client to disconnect. \'code\' and \'reason\'\n parameters are optional and can be used to share the reason of\n disconnection.</dd>\n\n<dt>end()</dt>\n<dd>Asks the remote client to disconnect with default \'code\' and\n \'reason\' values.</dd>\n\n</dl>\n\nA `Connection` instance emits the following events:\n\n<dl>\n<dt>Event: data (message)</dt>\n<dd>A message arrived on the connection. Message is a unicode\n string.</dd>\n\n<dt>Event: close ()</dt>\n<dd>Connection was closed. This event is triggered exactly once for\n every connection.</dd>\n</dl>\n\nFor example:\n\n```javascript\nsockjs_server.on(\'connection\', function(conn) {\n console.log(\'connection\' + conn);\n conn.on(\'close\', function() {\n console.log(\'close \' + conn);\n });\n conn.on(\'data\', function(message) {\n console.log(\'message \' + conn,\n message);\n });\n});\n```\n\n### Footnote\n\nA fully working echo server does need a bit more boilerplate (to\nhandle requests unanswered by SockJS), see the\n[`echo` example](https://github.com/sockjs/sockjs-node/tree/master/examples/echo)\nfor a complete code.\n\n### Examples\n\nIf you want to see samples of running code, take a look at:\n\n * [./examples/echo](https://github.com/sockjs/sockjs-node/tree/master/examples/echo)\n directory, which contains a full example of a echo server.\n * [./examples/test_server](https://github.com/sockjs/sockjs-node/tree/master/examples/test_server) a standard SockJS test server.\n\n\nConnecting to SockJS-node without the client\n--------------------------------------------\n\nAlthough the main point of SockJS it to enable browser-to-server\nconnectivity, it is possible to connect to SockJS from an external\napplication. Any SockJS server complying with 0.3 protocol does\nsupport a raw WebSocket url. The raw WebSocket url for the test server\nlooks like:\n\n * ws://localhost:8081/echo/websocket\n\nYou can connect any WebSocket RFC 6455 compliant WebSocket client to\nthis url. This can be a command line client, external application,\nthird party code or even a browser (though I don\'t know why you would\nwant to do so).\n\n\nDeployment and load balancing\n-----------------------------\n\nThere are two issues that need to be considered when planning a\nnon-trivial SockJS-node deployment: WebSocket-compatible load balancer\nand sticky sessions (aka session affinity).\n\n### WebSocket compatible load balancer\n\nOften WebSockets don\'t play nicely with proxies and load balancers.\nDeploying a SockJS server behind Nginx or Apache could be painful.\n\nFortunately recent versions of an excellent load balancer\n[HAProxy](http://haproxy.1wt.eu/) are able to proxy WebSocket\nconnections. We propose to put HAProxy as a front line load balancer\nand use it to split SockJS traffic from normal HTTP data. Take a look\nat the sample\n[SockJS HAProxy configuration](https://github.com/sockjs/sockjs-node/blob/master/examples/haproxy.cfg).\n\nThe config also shows how to use HAproxy balancing to split traffic\nbetween multiple Node.js servers. You can also do balancing using dns\nnames.\n\n### Sticky sessions\n\nIf you plan deploying more than one SockJS server, you must make sure\nthat all HTTP requests for a single session will hit the same server.\nSockJS has two mechanisms that can be useful to achieve that:\n\n * Urls are prefixed with server and session id numbers, like:\n `/resource/<server_number>/<session_id>/transport`. This is\n useful for load balancers that support prefix-based affinity\n (HAProxy does).\n * `JSESSIONID` cookie is being set by SockJS-node. Many load\n balancers turn on sticky sessions if that cookie is set. This\n technique is derived from Java applications, where sticky sessions\n are often necessary. HAProxy does support this method, as well as\n some hosting providers, for example CloudFoundry. In order to\n enable this method on the client side, please supply a\n `cookie:true` option to SockJS constructor.\n\n\nDevelopment and testing\n-----------------------\n\nIf you want to work on SockJS-node source code, you need to clone the\ngit repo and follow these steps. First you need to install\ndependencies:\n\n cd sockjs-node\n npm install\n npm install --dev\n ln -s .. node_modules/sockjs\n\nYou\'re ready to compile CoffeeScript:\n\n make build\n\nIf compilation succeeds you may want to test if your changes pass all\nthe tests. Currently, there are two separate test suites. For both of\nthem you need to start a SockJS-node test server (by default listening\non port 8081):\n\n make test_server\n\n### SockJS-protocol Python tests\n\nTo run it run something like:\n\n cd sockjs-protocol\n make test_deps\n ./venv/bin/python sockjs-protocol-0.3.py\n\nFor details see\n[SockJS-protocol README](https://github.com/sockjs/sockjs-protocol#readme).\n\n### SockJS-client QUnit tests\n\nYou need to start a second web server (by default listening on 8080)\nthat is serving various static html and javascript files:\n\n cd sockjs-client\n make test\n\nAt that point you should have two web servers running: sockjs-node on\n8081 and sockjs-client on 8080. When you open the browser on\n[http://localhost:8080/](http://localhost:8080/) you should be able\nrun the QUnit tests against your sockjs-node server.\n\nFor details see\n[SockJS-client README](https://github.com/sockjs/sockjs-client#readme).\n\nAdditionally, if you\'re doing more serious development consider using\n`make serve`, which will automatically the server when you modify the\nsource code.\n\n\nVarious issues and design considerations\n----------------------------------------\n\n### Authorisation\n\nSockJS-node does not expose cookies to the application. This is done\ndeliberately as using cookie-based authorisation with SockJS simply\ndoesn\'t make sense and will lead to security issues.\n\nCookies are a contract between a browser and an http server, and are\nidentified by a domain name. If a browser has a cookie set for\nparticular domain, it will pass it as a part of all http requests to\nthe host. But to get various transports working, SockJS uses a middleman\n- an iframe hosted from target SockJS domain. That means the server\nwill receive requests from the iframe, and not from the real\ndomain. The domain of an iframe is the same as the SockJS domain. The\nproblem is that any website can embed the iframe and communicate with\nit - and request establishing SockJS connection. Using cookies for\nauthorisation in this scenario will result in granting full access to\nSockJS communication with your website from any website. This is a\nclassic CSRF attack.\n\nBasically - cookies are not suited for SockJS model. If you want to\nauthorise a session - provide a unique token on a page, send it as a\nfirst thing over SockJS connection and validate it on the server\nside. In essence, this is how cookies work.\n\n\n### Deploying SockJS on Heroku\n\nLong polling is known to cause problems on Heroku, but\n[workaround for SockJS is available](https://github.com/sockjs/sockjs-node/issues/57#issuecomment-5242187).\n',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved bugs: { url: 'https://github.com/sockjs/sockjs-node/issues' },
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'sockjs@~0.3.8' },
1138 silly resolved { name: 'livedb-mongo',
1138 silly resolved version: '0.2.6',
1138 silly resolved description: 'MongoDB database adapter for livedb',
1138 silly resolved main: 'mongo.js',
1138 silly resolved dependencies: { mongoskin: '~0.5', async: '~0.2.9' },
1138 silly resolved devDependencies: { mocha: '~1', 'coffee-script': '~1', livedb: '>=0.2.7' },
1138 silly resolved scripts: { test: 'mocha --compilers coffee:coffee-script --reporter spec --check-leaks test.coffee' },
1138 silly resolved repository: { type: 'git', url: 'git://github.com/share/livedb-mongo.git' },
1138 silly resolved author: { name: 'Joseph Gentle and Nate Smith' },
1138 silly resolved license: 'MIT',
1138 silly resolved readme: '# livedb-mongo\n\nMongoDB database adapter for livedb. This driver can be used both as a snapshot\nstore and oplog.\n\nSnapshots are stored where you\'d expect (the named collection with\n\\_id=docName). Operations are stored in `COLLECTION_ops`. If you have a\nusers collection, the operations are stored in `users_ops`. If you have a\ndocument called `fred`, operations will be stored in documents called `fred\nv0`, `fred v1`, `fred v2` and so on.\n\nJSON document snapshots in livedb-mongo are unwrapped so you can use mongo\nqueries directly against JSON documents. (They just have some extra fields in\n the form of `_v` and `_type`). You should always use livedb to edit\ndocuments - don\'t just edit them directly in mongo. You\'ll get weird behaviour\nif you do.\n\n## Usage\n\nLiveDB-mongo wraps [mongoskin](https://github.com/kissjs/node-mongoskin). It\npasses all the arguments straight to mongoskin\'s constructor. `npm install\nlivedb-mongo` then create your database wrapper using the same arguments you\nwould pass to mongoskin:\n\n```javascript\nvar livedbmongo = require(\'livedb-mongo\');\nvar mongo = livedbmongo(\'localhost:27017/test?auto_reconnect\', {safe:true});\n\nvar livedb = require(\'livedb\')(mongo); // Or whatever. See livedb\'s docs.\n```\n\nIf you prefer, you can instead create a mongoskin instance yourself and pass it to livedb-mongo:\n\n```javascript\nvar mongoskin = require(\'mongoskin\');\nvar skin = mongoskin(\'localhost:27017/test?auto_reconnect\', {safe:true});\n\nvar livedbmongo = require(\'livedb-mongo\');\nvar mongo = livedbmongo(skin);\n```\n\n\n## MIT License\nCopyright (c) 2013 by Joseph Gentle and Nate Smith\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the "Software"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies 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 FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved bugs: { url: 'https://github.com/share/livedb-mongo/issues' },
1138 silly resolved homepage: 'https://github.com/share/livedb-mongo',
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'livedb-mongo@~0.2.5' },
1138 silly resolved { name: 'rbytes',
1138 silly resolved version: '1.0.0',
1138 silly resolved description: 'Generates cryptographically secure random byte sequences',
1138 silly resolved author: { name: 'Aleksander Williams' },
1138 silly resolved contributors: [],
1138 silly resolved engines: { node: '>=0.3.0' },
1138 silly resolved url: 'http://akdubya.github.com/rbytes/',
1138 silly resolved keywords: [ 'random', 'crypto' ],
1138 silly resolved main: './index',
1138 silly resolved scripts: { install: 'node-gyp configure build' },
1138 silly resolved readme: 'rbytes\n======\n\n> Generates cryptographically secure random byte sequences\n\nrbytes generates cryptographically secure random byte sequences using native bindings to OpenSSL\'s [pseudo random number generator](http://www.openssl.org/docs/crypto/rand.html). Use rbytes to generate session keys, UUIDs or anything else that requires fast generation of blocks of random data.\n\nSynopsis\n--------\n\nCreate a buffer holding 16 random bytes:\n\n var rbytes = require(\'rbytes\');\n\n var rbuff = rbytes.randomBytes(16);\n // <Buffer 69 5d 5d f6 42 04 1b 86 f2 77 5d 2b 4f 0f 72 26>\n\nrbytes adds two convenience methods to Node\'s Buffer class for easy conversion between Buffers and hex strings:\n\n rbuff.toHex();\n // \'695d5df642041b86f2775d2b4f0f7226\'\n\n var buff = Buffer(1);\n buff.writeHex(\'f);\n // <Buffer 0f>\n\n buff.writeHex(\'g);\n // TypeError: Invalid hex string\n\nInstallation\n------------\n\n $ npm install rbytes\n\nrbytes requires node version 0.3.0 or higher.\n\nNotes\n-----\n\nrbytes binds to OpenSSL\'s [RAND_bytes](http://www.openssl.org/docs/crypto/RAND_bytes.html) function, which generates cryptographically strong pseudorandom bytes. This function does not block, however it will throw an error if there isn\'t enough random seed data on your system. Support is planned for RAND_pseudo_bytes, which are guaranteed to be available at the cost of being (potentially) less secure.\n\nSimple random number generation (like Math.rand()) is planned for a future version.',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'rbytes@~1.0.0' },
1138 silly resolved { name: 'express',
1138 silly resolved description: 'Sinatra inspired web development framework',
1138 silly resolved version: '3.4.7',
1138 silly resolved author: { name: 'TJ Holowaychuk', email: '[email protected]' },
1138 silly resolved contributors: [ [Object], [Object], [Object], [Object] ],
1138 silly resolved dependencies:
1138 silly resolved { connect: '2.12.0',
1138 silly resolved commander: '1.3.2',
1138 silly resolved 'range-parser': '0.0.4',
1138 silly resolved mkdirp: '0.3.5',
1138 silly resolved cookie: '0.1.0',
1138 silly resolved 'buffer-crc32': '0.2.1',
1138 silly resolved fresh: '0.2.0',
1138 silly resolved methods: '0.1.0',
1138 silly resolved send: '0.1.4',
1138 silly resolved 'cookie-signature': '1.0.1',
1138 silly resolved 'merge-descriptors': '0.0.1',
1138 silly resolved debug: '>= 0.7.3 < 1' },
1138 silly resolved devDependencies:
1138 silly resolved { ejs: '~0.8.4',
1138 silly resolved mocha: '~1.15.1',
1138 silly resolved jade: '~0.30.0',
1138 silly resolved hjs: '~0.0.6',
1138 silly resolved stylus: '~0.40.0',
1138 silly resolved should: '~2.1.1',
1138 silly resolved 'connect-redis': '~1.4.5',
1138 silly resolved marked: '0.2.10',
1138 silly resolved supertest: '~0.8.1' },
1138 silly resolved keywords:
1138 silly resolved [ 'express',
1138 silly resolved 'framework',
1138 silly resolved 'sinatra',
1138 silly resolved 'web',
1138 silly resolved 'rest',
1138 silly resolved 'restful',
1138 silly resolved 'router',
1138 silly resolved 'app',
1138 silly resolved 'api' ],
1138 silly resolved repository: { type: 'git', url: 'git://github.com/visionmedia/express' },
1138 silly resolved main: 'index',
1138 silly resolved bin: { express: './bin/express' },
1138 silly resolved scripts: { prepublish: 'npm prune', test: 'make test' },
1138 silly resolved engines: { node: '>= 0.8.0' },
1138 silly resolved readme: '[![express logo](http://f.cl.ly/items/0V2S1n0K1i3y1c122g04/Screen%20Shot%202012-04-11%20at%209.59.42%20AM.png)](http://expressjs.com/)\n\n Fast, unopinionated, minimalist web framework for [node](http://nodejs.org).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/express.png)](http://travis-ci.org/visionmedia/express) [![Gittip](http://img.shields.io/gittip/visionmedia.png)](https://www.gittip.com/visionmedia/)\n\n```js\nvar express = require(\'express\');\nvar app = express();\n\napp.get(\'/\', function(req, res){\n res.send(\'Hello World\');\n});\n\napp.listen(3000);\n```\n\n## Installation\n\n $ npm install -g express\n\n## Quick Start\n\n The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below:\n\n Create the app:\n\n $ npm install -g express\n $ express /tmp/foo && cd /tmp/foo\n\n Install dependencies:\n\n $ npm install\n\n Start the server:\n\n $ node app\n\n## Features\n\n * Built on [Connect](http://github.com/senchalabs/connect)\n * Robust routing\n * HTTP helpers (redirection, caching, etc)\n * View system supporting 14+ template engines\n * Content negotiation\n * Focus on high performance\n * Environment based configuration\n * Executable for generating applications quickly\n * High test coverage\n\n## Philosophy\n\n The Express philosophy is to provide small, robust tooling for HTTP servers, making\n it a great solution for single page applications, web sites, hybrids, or public\n HTTP APIs.\n\n Built on Connect, you can use _only_ what you need, and nothing more. Applications\n can be as big or as small as you like, even a single file. Express does\n not force you to use any specific ORM or template engine. With support for over\n 14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js),\n you can quickly craft your perfect framework.\n\n## More Information\n\n * [Website and Documentation](http://expressjs.com/) stored at [visionmedia/expressjs.com](https://github.com/visionmedia/expressjs.com)\n * Join #express on freenode\n * [Google Group](http://groups.google.com/group/express-js) for discussion\n * Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates\n * Visit the [Wiki](http://github.com/visionmedia/express/wiki)\n * [Русскоязычная документация](http://jsman.ru/express/)\n * Run express examples [online](https://runnable.com/express)\n\n## Viewing Examples\n\nClone the Express repo, then install the dev dependencies to install all the example / test suite dependencies:\n\n $ git clone git://github.com/visionmedia/express.git --depth 1\n $ cd express\n $ npm install\n\nThen run whichever tests you want:\n\n $ node examples/content-negotiation\n\nYou can also view live examples here:\n\n<a href="https://runnable.com/express" target="_blank"><img src="https://runnable.com/external/styles/assets/runnablebtn.png" style="width:67px;height:25px;"></a>\n\n## Running Tests\n\nTo run the test suite, first invoke the following command within the repo, installing the development dependencies:\n\n $ npm install\n\nThen run the tests:\n\n $ make test\n\n## Contributors\n\n https://github.com/visionmedia/express/graphs/contributors\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2009-2012 TJ Holowaychuk &lt;[email protected]&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',
1138 silly resolved readmeFilename: 'Readme.md',
1138 silly resolved bugs: { url: 'https://github.com/visionmedia/express/issues' },
1138 silly resolved homepage: 'https://github.com/visionmedia/express',
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'express@~3.4.4' },
1138 silly resolved { name: 'isbinaryfile',
1138 silly resolved version: '0.1.9',
1138 silly resolved description: 'Detects if a file is binary in Node.js. Similar to Perl\'s -B.',
1138 silly resolved main: './lib/panino.js',
1138 silly resolved engines: { node: '>=0.6.0' },
1138 silly resolved maintainers: [ [Object] ],
1138 silly resolved repository:
1138 silly resolved { type: 'git',
1138 silly resolved url: 'https://github.com/gjtorikian/isBinaryFile' },
1138 silly resolved devDependencies: { mocha: '' },
1138 silly resolved scripts: { test: 'mocha tests/test.js' },
1138 silly resolved readme: 'isBinaryFile\n============\n\nDetects if a file is binary in Node.js. Similar to [Perl\'s `-B` switch](http://stackoverflow.com/questions/899206/how-does-perl-know-a-file-is-binary), in that:\n\n* it reads the first few thousand bytes of a file\n* checks for a `null` byte; if it\'s found, it\'s binary\n* flags non-ASCII characters. After a certain number of "weird" characters, the file is flagged as binary\n\nAll the logic is also pretty much ported from [ag](https://github.com/ggreer/the_silver_searcher).\n\nNote: if the file doesn\'t exist or it is empty, this function returns `false`.\n\n## Installation\n\n```\nnpm install isBinaryFile\n```\n\n## Usage\n\nIf you pass in one argument, this module assumes it\'s just the file path, and performs the appropriate file read and stat functionality internally:\n\n```javascript\nvar isBinaryFile = require("isbinaryfile");\n\nif (isBinaryFile(process.argv[2]))\n\tconsole.log("It is!")\nelse\n\tconsole.log("No.")\n```\n\nTa da. \n\n\nHowever, if you\'ve already read and `stat()`-ed a file (for some other reason), you can pass in both the file\'s raw data and the stat\'s `size` info to save time:\n\n```javascript\nfs.readFile(process.argv[2], function(err, data) {\n\tfs.lstat(process.argv[2], function(err, stat) {\n\t\tif (isBinaryFile(data, stat))\n\t\t\tconsole.log("It is!")\n\t\telse\n\t\t\tconsole.log("No.")\n\t});\n});\n```\n\n## Testing\n\nInstall mocha on your machine:\n\n```\nnpm install mocha -g\n```\n\nThen go into the _tests_ directory, and type `mocha test.js`.\n',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved bugs: { url: 'https://github.com/gjtorikian/isBinaryFile/issues' },
1138 silly resolved homepage: 'https://github.com/gjtorikian/isBinaryFile',
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'isbinaryfile@~0.1.9' },
1138 silly resolved { name: 'ottypes',
1138 silly resolved version: '1.0.1',
1138 silly resolved description: 'Operational transform types collection',
1138 silly resolved main: 'lib/index.js',
1138 silly resolved directories: { test: 'test' },
1138 silly resolved dependencies: {},
1138 silly resolved devDependencies: { 'coffee-script': '*', mocha: '~1', 'uglify-js': '*' },
1138 silly resolved scripts: { prepublish: 'make all', test: 'node_modules/.bin/mocha' },
1138 silly resolved repository: { type: 'git', url: 'git://github.com/share/ot-types.git' },
1138 silly resolved keywords: [ 'OT', 'operational transformation', 'transform' ],
1138 silly resolved author: { name: 'Joseph Gentle', email: '[email protected]' },
1138 silly resolved license: 'MIT',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved gitHead: '1ca38c758dd0ae57142bf892e318ea5a29e9cf92',
1138 silly resolved readme: '# Operational transform types, sir?\n\nWe have a lovely buffet of operational transform types. Each type has many fine features, including thorough testing, browser support and documentation.\n\nThese types have been finely aged in [ShareJS](https://github.com/josephg/sharejs)\'s type labs. We are quite proud of them.\n\nPlease port any types you find useful to your favorite languages so we can do operational transform in more places. I have a sister project for C versions [here](https://github.com/share/libot) that I might merge in at some point.\n\n[![Build Status](https://secure.travis-ci.org/josephg/ot-types.png)](http://travis-ci.org/josephg/ot-types)\n\n## Spec\n\nEach OT type exposes a single object with the following properties. Note that only *name*, *create*, *apply* and *transform* are strictly required, though most types should also include *url* and *compose*.\n\n### Standard properties\n\n- **name**: A user-readable name for the type. This is not guaranteed to be unique.\n- **url**: *(Optional, will be required soon)* A canonical location for this type. The spec for the OT type should be at this address. Remember kids, Tim Burners-Lee says [cool URLs don\'t change](http://www.w3.org/Provider/Style/URI.html).\n- **create([initialData]) -> snapshot**: A function to create the initial document snapshot. Create may accept initial snapshot data as its only argument. Either the return value must be a valid target for `JSON.stringify` or you must specify *serialize* and *deserialize* functions (described below).\n- **apply(snapshot, op) -> snapshot\'**: Apply an operation to a document snapshot. Returns the changed snapshot. For performance, old document must not be used after this function call, so apply may reuse and return the current snapshot object.\n- **transform(op1, op2, side) -> op1\'**: Transform op1 by op2. Return the new op1. Side is either `\'left\'` or `\'right\'`. It exists to break ties, for example if two operations insert at the same position in a string. Both op1 and op2 must not be modified by transform.\nTransform must conform to Transform Property 1. That is, apply(apply(snapshot, op1), transform(op2, op1, \'left\')) == apply(apply(snapshot, op2), transform(op1, op2, \'right\')).\n- **compose(op1, op2) -> op**: *(optional)* Compose op1 and op2 to produce a new operation. The new operation must subsume the behaviour of op1 and op2. Specifically, apply(snapshot, apply(op1), op2) == apply(snapshot, compose(op1, op2)). Note: transforming by a composed operation is *NOT* guaranteed to produce the same result as transforming by each operation in order. This function is optional, but unless you have a good reason to do otherwise, you should provide a compose function for your type.\n\n### Optional properties\n\n- **invert(op) -> op\'**: *(optional)* Invert the given operation. The original operation must not be edited in the process. If supplied, apply(apply(snapshot, op), invert(op)) == snapshot.\n- **normalize(op) -> op\'**: *(optional)* Normalize an operation, converting it to a canonical representation. normalize(normalize(op)) == normalize(op).\n- **transformCursor(cursor, op, isOwnOp) -> cursor\'**: *(optional)* transform the specified cursor by the provided operation. If isOwnOp is true, this function should return the final editing position of the provided operation. If isOwnOp is false, the cursor position should move with the content to its immediate left.\n- **serialize(snapshot) -> data**: *(optional)* convert the document snapshot data into a form that may be passed to JSON.stringify. If you have a *serialize* function, you must have a *deserialize* function.\n- **deserialize(data) -> snapshot**: *(optional)* convert data generated by *serialize* back into its internal snapshot format. deserialize(serialize(snapshot)) == snapshot. If you have a *deserialize* function, you must have a *serialize* function.\n\n> Do I need serialize and deserialize? Maybe JSON.stringify is sufficiently customizable..?\n\n### TP2 Properties\n\nIf your OT type supports [transform property 2](http://en.wikipedia.org/wiki/Operational_transformation#Convergence_properties), set the *tp2* property to true and define a *prune* function.\n\nTransform property 2 is an additional requirement on your *transform* function. Specifically, transform(op3, compose(op1, transform(op2, op1)) == transform(op3, compose(op2, transform(op1, op2)).\n\n- **tp2**: *(optional)* Boolean property. Make this truthy to declare that the type has tp2 support. Types with TP2 support must define *prune*.\n- **prune(op, otherOp)**: The inverse of transform. Formally, apply(snapshot, op1) == apply(snapshot, prune(transform(op1, op2), op2)). Usually, prune will simply be the inverse of transform and prune(transform(op1, op2), op2) == op1.\n\n\n---\n\n# License\n\nAll code contributed to this repository is licensed under the standard MIT license:\n\nCopyright 2011 ottypes library contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the "Software"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following condition:\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\nTHE SOFTWARE.\n\n',
1138 silly resolved bugs: { url: 'https://github.com/share/ot-types/issues' },
1138 silly resolved homepage: 'https://github.com/share/ot-types',
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'ottypes@~1.0.1' },
1138 silly resolved { name: 'async',
1138 silly resolved description: 'Higher-order functions and common patterns for asynchronous code',
1138 silly resolved main: './lib/async',
1138 silly resolved author: { name: 'Caolan McMahon' },
1138 silly resolved version: '0.2.9',
1138 silly resolved repository: { type: 'git', url: 'https://github.com/caolan/async.git' },
1138 silly resolved bugs: { url: 'https://github.com/caolan/async/issues' },
1138 silly resolved licenses: [ [Object] ],
1138 silly resolved devDependencies: { nodeunit: '>0.0.0', 'uglify-js': '1.2.x', nodelint: '>0.0.0' },
1138 silly resolved jam: { main: 'lib/async.js', include: [Object] },
1138 silly resolved scripts: { test: 'nodeunit test/test-async.js' },
1138 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* [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* [doWhilst](#doWhilst)\n* [until](#until)\n* [doUntil](#doUntil)\n* [forever](#forever)\n* [waterfall](#waterfall)\n* [compose](#compose)\n* [applyEach](#applyEach)\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.map([\'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',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved homepage: 'https://github.com/caolan/async',
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'async@~0.2.9' },
1138 silly resolved { name: 'thalassa',
1138 silly resolved version: '0.3.2',
1138 silly resolved description: 'A lightweight service registry using Redis inspired by Seaport',
1138 silly resolved main: 'index.js',
1138 silly resolved scripts: { test: 'jshint *.js lib/**/*.js test/*.js --config .jshintrc && mocha test/test*' },
1138 silly resolved bin:
1138 silly resolved { 'thalassa-server': './bin/server.js',
1138 silly resolved 'thalassa-client': './bin/client.js' },
1138 silly resolved repository:
1138 silly resolved { type: 'git',
1138 silly resolved url: 'git://github.com/PearsonEducation/Thalassa.git' },
1138 silly resolved keywords: [ 'service', 'registry', 'haproxy' ],
1138 silly resolved author: { name: 'Mike Brevoort', email: '[email protected]' },
1138 silly resolved license: 'Apache2',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved bugs: { url: 'https://github.com/PearsonEducation/Thalassa/issues' },
1138 silly resolved devDependencies:
1138 silly resolved { mocha: '~1.12.0',
1138 silly resolved jshint: '~2.1.4',
1138 silly resolved portfinder: '~0.2.1',
1138 silly resolved request: '~2.21.0' },
1138 silly resolved optionalDependencies: { hiredis: '~0.1.15' },
1138 silly resolved dependencies:
1138 silly resolved { hapi: '~1.8.2',
1138 silly resolved optimist: '~0.6.0',
1138 silly resolved 'cli-color': '~0.2.2',
1138 silly resolved redis: '~0.8.4',
1138 silly resolved ip: '~0.1.0',
1138 silly resolved request: '~2.27.0',
1138 silly resolved 'thalassa-registrations': '~0.1.0',
1138 silly resolved axon: '~1.0.0',
1138 silly resolved hiredis: '~0.1.15' },
1138 silly resolved engines: { node: '>0.10.0' },
1138 silly resolved readme: 'Thalassa\n========\n\nThalassa is a lightweight service registry build primarily on [node.js](http://nodejs.org/), [Redis](http://redis.io/) and [Axon](https://github.com/visionmedia/axon), inspired by [Seaport](https://github.com/substack/seaport). Thalassa is actually a system of components primarily geared to enable continuous deployment scenarios through dynamic configuration of [HAProxy](http://haproxy.1wt.eu/) load balancers and seamless, no connection drop A/B deploys.\n\nThis is the central module that includes the server registry and client. The registry uses a ping and expiration type approach. Clients register with the server and pass an optional `secondsToExpire` property telling the server when it is acceptable to expire the registration if the registration is not updated in that time. There is an internal "reaper" function that runs periodically to reap expired registrations. More on that later.\n\n[![NPM](https://nodei.co/npm/thalassa.png)](https://nodei.co/npm/thalassa/)\n\n### History\n\nThalassa is a second generation system, superseding what was otherwise knows as "Spindrift" inside of [Pearson](http://www.pearson.com/). Spindrift leaned heavily on [@substack](https://github.com/substack)\'s Seaport module. Incidentally, Seaport was the original inspiration for the aquatic theme of Spindrift and Thalassa. \n\nIn Greek mythology, Thalassa was the primeval spirit of the sea. In the fables of Aesop, Thalassa appears as a woman formed of sea water rising up from her native element. Thalassa was depicted in Roman-era mosaics as a woman half submerged in the sea, with crab-claw horns, clothed in bands of seaweed, and holding a ship\'s oar.<sup>[1](http://www.theoi.com/Protogenos/Thalassa.html)</sup>\n\n\n\n# Installation\n\n npm install thalassa\n \nor globally\n \n npm install -g thalassa\n \n# Running the Server\n\nThe Thalassa server and client may be run from the command line or embedded as a module within your application.\n\n## Running from Command Line\n \nAssuming Redis is installed and running, start the thalassa server with default options:\n\n ./node_modules/.bin/thalassa-server --debug\n \nor\n\n thalassa-server --debug\n\n \n### Server Command Line Options\n\n thalassa-server --help\n Options:\n --host host to bind to [default: "127.0.0.1"]\n --port port to bind to for axon socket [default: 5001]\n --apihost host to bind to [default: "127.0.0.1"]\n --apiport port to bind to for http api [default: 9000]\n --redisHost Redis host [default: "127.0.0.1"]\n --redisPort Redis port [default: 6379]\n --redisDatabase Redis database to select [default: 0]\n --reaperFreq Reaper frequency (ms) [default: 2000]\n --debug enabled debug logging\n\n\n## Server as an Embedded Module\n\nThe same options above (except `debug`) may be passed by properties set in the `opts` object. For example using `new Thalassa.Server(opts)`:\n\n var Thalassa = require(\'thalassa\');\n \n var server = new Thalassa.Server({\n port: 4444,\n apiport: 4445,\n host: \'localhost\'\n });\n \nIn addition `opts.log` may be optionally set to your own function to handle logging. `opts.log` expects this signature: `function log (level, message, object){}`. `level` will be one of `debug`, `info`, and `error`. `message` is a string and `object` is an optional object with key value pairs. Of `opts.log` is not passed, the module will be quiet.\n\n\n# Running the Client\n\nThe client can be run any of three ways. \n\n1. From the command-line\n2. As a module\n3. Over HTTP\n\n## Running Client from Command Line\n\nWhy would you do this? Let\'s say you have an existing legacy Java application that you\'d rather not change. You can create a sister service that invokes the command line client to register the service on it\'s behalf.\n\nFor example, if Thalassa is installed globally (other wise `./node_modules/.bin/thalassa-client):\n\n thalassa-client --register [email protected]:8080 --debug\n \nThis registers the application named `my app` at version `1.0.0` that\'s on the current host on port `8080`. The client will continue to ping the Thalassa server with updates.\n\n### Client Command Line Options\n\n thalassa-client --help\n Options:\n --host thalassa host [default: "127.0.0.1"]\n --port thalassa axon socket port [default: 5001]\n --apiport thalassa http api port [default: 9000]\n --register [email protected]:port,[email protected]:port [required]\n --debug enabled debug logging\n\n## Client as an Embedded Module\n\nUsing the client from within a node.js application to register your service is simple. Pass options via the `opts` object like `new Thalassa.Client(opts)`:\n\n var Thalassa = require(\'thalassa\');\n \n var client = new Thalassa.Client({\n port: 4444,\n apiport: 4445,\n host: \'localhost\'\n });\n \n client.register(\'myapp\', \'1.0.0\', 8080);\n \n // start reporting registrations to the server\n client.start();\n\n // stop reporting registrations to the server\n client.stop();\n \n`opts.log` may be passed just like the server.\n\n### `updateSuccessful` and `updateFailed` Events\n\nThe client will periodically check in with the Thalassa server according to `opts.updateFreq` (default 5000ms). Each registration will product a `updateSuccessful` or `updateFailed` event to be emitted.\n\n client.on(\'updateSuccessful\', function () {});\n client.on(\'updateFailed\', function (error) {});\n\n### Subscriptions and `online` and `offline` Events\n\nIf running as a module, you also have access to `subscribe` to `online` and `offline` events of certain applications. For example:\n\n client.subscribe(\'myapp\', \'1.0.0\');\n client.on(\'online\', function (registration) {});\n client.on(\'offline\', function (registration) {});\n\nAlternatively for all versions of `myapp`:\n\n client.subscribe(\'myapp\');\n \nOr every service registration:\n\n client.subscribe();\n\n### Querying Registrations\n\nAlso as a module, you can use the client API to query for registrations. \n\n client.getRegistrations(\'myapp\', \'1.0.0\', function (err, registrations) {\n // registrations is an Array of Registrations\n }\nSee the HTTP API section for the `Registration` structure.\n\n### Metadata\n\nYou can also pass metadata with any registration as a fourth parameter. This can be any javascript object with properties. For example:\n\n var meta = {\n az: \'use1a\',\n size: \'m1.large\',\n foo: {\n bar: \'baz\'\n }\n };\n client.register(\'myapp\', \'1.0.0\', 8080, meta)\n\n## HTTP Client \n\nThe Thalassa server exposes a simple HTTP API so it\'s not necessary to use the `node.js` client and any application that\'s capable of calling HTTP can participate as an application in the system. See the HTTP API.\n\n# HTTP API\n\n### GET `/registrations/{name}/{version}`\n### GET `/registrations/{name}`\n### GET `/registrations`\n\nReturn `Registrations[]` of all registrations for the optionally provided `name` and `version`. `/registrations` returns everything.\n\n\n`Registration` is defined in it\'s own module `thalassa-registrations`. A typical registration looks like this:\n\n {\n "name": "myapp",\n "version": "1.0.0",\n "host": "192.168.8.106",\n "port": 8080,\n "lastKnown": 1378682020883,\n "meta": {\n "hostname": "mb-mbp.local",\n "pid": 66593,\n "registered": 1378682010864\n },\n "id": "/myapp/1.0.0/192.168.8.106/8080"\n }\n\nAll times are in Unix time since epoch form.\n\nThe Thalassa client will automatically add `meta.pid` and the server will automatically add `registered` and `hostname` if not provided. If a `hostname` is not provided by the client, the IP will be used instead. Additionally, the Thalassa client will automatically set `hostname` to `require(\'os\').hostname()`.\n\n### POST `/registrations/{name}/{version}/{host}/{port}`\n\nCreate or update a registration.\n\nThe BODY of the POST should be `application/json` and will be added to `meta`. \n\nAdditionally `meta.secondsToExpire` should be set to explicitly set the expiration time of the registration. In essence you are telling the Thalassa server, if you don\'t hear back from me in so many seconds, expire my registration and fire an `offline` event. This properly allows the client to tune how often they poll balanced with how long they are willing to accept stale registration data. If you set `secondsToExpire` to `300` then you may poll every ten minutes, but if your service goes down or is underplayed, consumers won\'t know it for at most `300` seconds. \n\n### DELETE `/registrations/{name}/{version}/{host}/{port}`\n\nExplicitly delete a registration, causing an `offline` event.\n\n# Known Limitations and Roadmap\n\nThalassa currently doesn\'t implement any type of authentication or authorization and at this point expects to be running on a trusted private network. This will be addressed in the future. Ultimately auth should be extensible and customizable. Suggestions and pull requests welcome!\n\n# License\n\nLicensed under Apache 2.0. See [LICENSE](https://github.com/PearsonEducation/thalassa/blob/master/LICENSE) file.\n',
1138 silly resolved homepage: 'https://github.com/PearsonEducation/Thalassa',
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'thalassa@~0.3.2' },
1138 silly resolved { name: 'connect',
1138 silly resolved version: '2.7.11',
1138 silly resolved description: 'High performance middleware framework',
1138 silly resolved keywords: [ 'framework', 'web', 'middleware', 'connect', 'rack' ],
1138 silly resolved repository: { type: 'git', url: 'git://github.com/senchalabs/connect.git' },
1138 silly resolved author:
1138 silly resolved { name: 'TJ Holowaychuk',
1138 silly resolved email: '[email protected]',
1138 silly resolved url: 'http://tjholowaychuk.com' },
1138 silly resolved dependencies:
1138 silly resolved { qs: '0.6.5',
1138 silly resolved formidable: '1.0.14',
1138 silly resolved 'cookie-signature': '1.0.1',
1138 silly resolved 'buffer-crc32': '0.2.1',
1138 silly resolved cookie: '0.0.5',
1138 silly resolved send: '0.1.1',
1138 silly resolved bytes: '0.2.0',
1138 silly resolved fresh: '0.1.0',
1138 silly resolved pause: '0.0.1',
1138 silly resolved debug: '*' },
1138 silly resolved devDependencies: { should: '*', mocha: '*', jade: '*', dox: '*' },
1138 silly resolved main: 'index',
1138 silly resolved engines: { node: '>= 0.8.0' },
1138 silly resolved scripts: { test: 'make' },
1138 silly resolved readme: '[![build status](https://secure.travis-ci.org/senchalabs/connect.png)](http://travis-ci.org/senchalabs/connect)\n# Connect\n\n Connect is an extensible HTTP server framework for [node](http://nodejs.org), providing high performance "plugins" known as _middleware_.\n\n Connect is bundled with over _20_ commonly used middleware, including\n a logger, session support, cookie parser, and [more](http://senchalabs.github.com/connect). Be sure to view the 2.x [documentation](http://senchalabs.github.com/connect/).\n\n```js\nvar connect = require(\'connect\')\n , http = require(\'http\');\n\nvar app = connect()\n .use(connect.favicon())\n .use(connect.logger(\'dev\'))\n .use(connect.static(\'public\'))\n .use(connect.directory(\'public\'))\n .use(connect.cookieParser())\n .use(connect.session({ secret: \'my secret here\' }))\n .use(function(req, res){\n res.end(\'Hello from Connect!\\n\');\n });\n\nhttp.createServer(app).listen(3000);\n```\n\n## Middleware\n\n - [csrf](http://www.senchalabs.org/connect/csrf.html)\n - [basicAuth](http://www.senchalabs.org/connect/basicAuth.html)\n - [bodyParser](http://www.senchalabs.org/connect/bodyParser.html)\n - [json](http://www.senchalabs.org/connect/json.html)\n - [multipart](http://www.senchalabs.org/connect/multipart.html)\n - [urlencoded](http://www.senchalabs.org/connect/urlencoded.html)\n - [cookieParser](http://www.senchalabs.org/connect/cookieParser.html)\n - [directory](http://www.senchalabs.org/connect/directory.html)\n - [compress](http://www.senchalabs.org/connect/compress.html)\n - [errorHandler](http://www.senchalabs.org/connect/errorHandler.html)\n - [favicon](http://www.senchalabs.org/connect/favicon.html)\n - [limit](http://www.senchalabs.org/connect/limit.html)\n - [logger](http://www.senchalabs.org/connect/logger.html)\n - [methodOverride](http://www.senchalabs.org/connect/methodOverride.html)\n - [query](http://www.senchalabs.org/connect/query.html)\n - [responseTime](http://www.senchalabs.org/connect/responseTime.html)\n - [session](http://www.senchalabs.org/connect/session.html)\n - [static](http://www.senchalabs.org/connect/static.html)\n - [staticCache](http://www.senchalabs.org/connect/staticCache.html)\n - [vhost](http://www.senchalabs.org/connect/vhost.html)\n - [subdomains](http://www.senchalabs.org/connect/subdomains.html)\n - [cookieSession](http://www.senchalabs.org/connect/cookieSession.html)\n\n## Running Tests\n\nfirst:\n\n $ npm install -d\n\nthen:\n\n $ make test\n\n## Authors\n\n Below is the output from [git-summary](http://github.com/visionmedia/git-extras).\n\n\n project: connect\n commits: 2033\n active : 301 days\n files : 171\n authors: \n 1414\tTj Holowaychuk 69.6%\n 298\tvisionmedia 14.7%\n 191\tTim Caswell 9.4%\n 51\tTJ Holowaychuk 2.5%\n 10\tRyan Olds 0.5%\n 8\tAstro 0.4%\n 5\tNathan Rajlich 0.2%\n 5\tJakub Nešetřil 0.2%\n 3\tDaniel Dickison 0.1%\n 3\tDavid Rio Deiros 0.1%\n 3\tAlexander Simmerl 0.1%\n 3\tAndreas Lind Petersen 0.1%\n 2\tAaron Heckmann 0.1%\n 2\tJacques Crocker 0.1%\n 2\tFabian Jakobs 0.1%\n 2\tBrian J Brennan 0.1%\n 2\tAdam Malcontenti-Wilson 0.1%\n 2\tGlen Mailer 0.1%\n 2\tJames Campos 0.1%\n 1\tTrent Mick 0.0%\n 1\tTroy Kruthoff 0.0%\n 1\tWei Zhu 0.0%\n 1\tcomerc 0.0%\n 1\tdarobin 0.0%\n 1\tnateps 0.0%\n 1\tMarco Sanson 0.0%\n 1\tArthur Taylor 0.0%\n 1\tAseem Kishore 0.0%\n 1\tBart Teeuwisse 0.0%\n 1\tCameron Howey 0.0%\n 1\tChad Weider 0.0%\n 1\tCraig Barnes 0.0%\n 1\tEran Hammer-Lahav 0.0%\n 1\tGregory McWhirter 0.0%\n 1\tGuillermo Rauch 0.0%\n 1\tJae Kwon 0.0%\n 1\tJakub Nesetril 0.0%\n 1\tJoshua Peek 0.0%\n 1\tJxck 0.0%\n 1\tAJ ONeal 0.0%\n 1\tMichael Hemesath 0.0%\n 1\tMorten Siebuhr 0.0%\n 1\tSamori Gorse 0.0%\n 1\tTom Jensen 0.0%\n\n## Node Compatibility\n\n Connect `< 1.x` is compatible with node 0.2.x\n\n\n Connect `1.x` is compatible with node 0.4.x\n\n\n Connect (_master_) `2.x` is compatible with node 0.6.x\n\n## CLA\n\n [http://sencha.com/cla](http://sencha.com/cla)\n\n## License\n\nView the [LICENSE](https://github.com/senchalabs/connect/blob/master/LICENSE) file. The [Silk](http://www.famfamfam.com/lab/icons/silk/) icons used by the `directory` middleware created by/copyright of [FAMFAMFAM](http://www.famfamfam.com/).\n',
1138 silly resolved readmeFilename: 'Readme.md',
1138 silly resolved bugs: { url: 'https://github.com/senchalabs/connect/issues' },
1138 silly resolved homepage: 'https://github.com/senchalabs/connect',
1138 silly resolved _id: '[email protected]',
1138 silly resolved _from: 'connect@~2.7.9' },
1138 silly resolved { name: 'transport-adapters',
1138 silly resolved version: '0.1.0',
1138 silly resolved description: 'Transport adapters for ShareJS',
1138 silly resolved main: 'index.js',
1138 silly resolved directories: { example: 'examples', test: 'test' },
1138 silly resolved scripts: { test: './node_modules/.bin/mocha --ui bdd --reporter spec --compilers coffee:coffee-script test/*.coffee' },
1138 silly resolved repository:
1138 silly resolved { type: 'git',
1138 silly resolved url: 'https://github.com/Dignifiedquire/transport-adapters.git' },
1138 silly resolved keywords: [ 'ShareJS', 'SockJS', 'browserchannel' ],
1138 silly resolved author:
1138 silly resolved { name: 'Friedel Ziegelmayer',
1138 silly resolved email: '[email protected]' },
1138 silly resolved license: 'MIT',
1138 silly resolved bugs: { url: 'https://github.com/Dignifiedquire/transport-adapters/issues' },
1138 silly resolved devDependencies:
1138 silly resolved { chai: '~1.8.1',
1138 silly resolved mocha: '~1.13.0',
1138 silly resolved share: '~0.7.0-alpha9',
1138 silly resolved 'coffee-script': '~1.6.3' },
1138 silly resolved readme: '# Transport Adapters for ShareJS [![Build Status](https://travis-ci.org/Dignifiedquire/transport-adapters.png)](https://travis-ci.org/Dignifiedquire/transport-adapters)\n\nThis is a collection of adapters to use different transports\nwith ShareJS 0.7.\n\n\n## Available Adapters\n\n\n### Browserchannel\n\nUsage example:\n\n```bash\n$ cd examples/browserchannel\n$ npm install\n$ node server.js\n$ open http://localhost:3000\n```\n\n\n### SockJS\n\nUsage example:\n\n```bash\n$ cd examples/sockjs\n$ npm install\n$ node server.js\n$ open http://localhost:3000\n```\n\n\n## Development\n\nRun `npm install` to install all dependencies and `npm test` to run the\ntests.\n',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved homepage: 'https://github.com/Dignifiedquire/transport-adapters',
1138 silly resolved _id: '[email protected]',
1138 silly resolved dist: { shasum: 'db9ed5ce1e84d609ab5ad1766767205f1d331da9' },
1138 silly resolved _resolved: 'git://github.com/Dignifiedquire/transport-adapters#f1c188a6bf42b247c981587e299e6405eb4492e9',
1138 silly resolved _from: 'transport-adapters@git://github.com/Dignifiedquire/transport-adapters' },
1138 silly resolved { name: 'node-codio',
1138 silly resolved version: '0.0.1',
1138 silly resolved description: 'Codio API',
1138 silly resolved main: 'index.js',
1138 silly resolved private: true,
1138 silly resolved scripts: { test: './node_modules/.bin/grunt' },
1138 silly resolved repository: { type: 'git', url: 'https://github.com/codio/node-codio.git' },
1138 silly resolved author: { name: 'Codio', email: '[email protected]' },
1138 silly resolved bugs: { url: 'https://github.com/codio/node-codio/issues' },
1138 silly resolved engines: { node: '~0.10' },
1138 silly resolved devDependencies:
1138 silly resolved { 'grunt-notify': '~0.2.16',
1138 silly resolved 'grunt-contrib-watch': '~0.5.3',
1138 silly resolved 'grunt-simple-mocha': '~0.4.0',
1138 silly resolved grunt: '~0.4.2',
1138 silly resolved 'grunt-contrib-jshint': '~0.7.2' },
1138 silly resolved dependencies: { lodash: '~2.4.0' },
1138 silly resolved readme: '# Node Codio\n\nAPI to connect to [codio/server] from a node.js client.\n\n\n\n## Usage\n\n```js\nvar API = require(\'node-codio\');\n\nvar api = new API(options);\n\napi.projectStructureManager.getFile(\'hello.txt\', auth, function (err, data) {\n if (err) return console.error(err);\n console.log(\'Got data: \', data);\n});\n```\n\n## Configuration\n\nYou can pass the constructor an options object with the following properites:\n\n* `useOrigin`: (`Boolean`) Set to true if you are running the server locally.\n Used primarily for development and testing.\n* `hostname`: (`String`) Hostname of the server.\n* `path`: (`String`) Path that will be appended to the hostname.\n* `port`: (`Number`) Port where the server will be run.\n\n\n## Available Methods\n\n\n### ProjectManager\n\n* `getProjectByName`\n* `checkPermissionForUser`\n* `checkPermissionForProject`\n\n### ProjectStructureManager\n\n* `getFile`\n* `updateFile`\n* `removePath`\n* `createFile`\n* `moveItem`\n* `copyItem`\n* `makeDirectory`\n\n## Development\n\n\n```bash\n$ git clone https://github.com/codio/node-codio.git\n$ cd node-codio\n$ npm install\n```\n\nStart developing, tests can be run via `grunt test` and `grunt watch`\nruns unit tests on save. Before commiting any changes make sure to run the\ndefault `grunt` task to execute jshint and all unit tests.\n\n\n\n[codio/server]: https://github.com/codio/server\n\n',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved homepage: 'https://github.com/codio/node-codio',
1138 silly resolved _id: '[email protected]',
1138 silly resolved dist: { shasum: '8f962373a982079164eb394588f216e0e207d054' },
1138 silly resolved _resolved: 'git+ssh://git@codio-node_deploy_key:codio/node-codio#b26ffbb9211ee576556903fcc23f8db2339392cf',
1138 silly resolved _from: 'node-codio@git+ssh://git@codio-node_deploy_key:codio/node-codio' },
1138 silly resolved { name: 'livedb',
1138 silly resolved version: '0.2.8',
1138 silly resolved description: 'Realtime database wrapper',
1138 silly resolved main: 'lib/index.js',
1138 silly resolved dependencies:
1138 silly resolved { redis: '~0.8',
1138 silly resolved ottypes: '~1',
1138 silly resolved 'deep-is': '~0.1',
1138 silly resolved arraydiff: '~0.1',
1138 silly resolved hiredis: '~0.1',
1138 silly resolved 'statsd-client': '*' },
1138 silly resolved optionalDependencies: { hiredis: '~0.1', 'statsd-client': '*' },
1138 silly resolved devDependencies: { mocha: '~1', sinon: '~1', 'coffee-script': '*' },
1138 silly resolved scripts: { test: 'mocha' },
1138 silly resolved repository: { type: 'git', url: 'git://github.com/share/livedb.git' },
1138 silly resolved author: { name: 'Joseph Gentle', email: '[email protected]' },
1138 silly resolved license: 'MIT',
1138 silly resolved gitHead: 'a95ee727e5cb43a40476f58554774b776fb08f68',
1138 silly resolved readme: '# LIVE DB!\n\nThis is a database wrapper which exposes the API that realtime databases should\nhave.\n\nYou can submit operations (edit documents) and subscribe to documents.\nSubscribing gives you a stream of all operations applied to the given\ndocument. You can also make queries, which give you a feed of changes in the\nresult set while the query is open.\n\nCurrently this is very new and only used by ShareJS. To use it, you need a\nsnapshot database wrapper. The obvious choice is mongodb. A database wrapper\nfor mongo is available in\n[share/livedb-mongo](https://github.com/share/livedb-mongo).\n\n\n## Data Model\n\nIn LiveDB\'s view of the world, every document has 3 properties:\n\n- **version**: an incrementing number starting at 0\n- **type**: an OT type. OT types are defined in\n[share/ottypes](https://github.com/share/ottypes). Types are referenced using\ntheir URIs (even though those URIs don\'t actually mean anything). Documents\nwhich don\'t exist implicitly have a type of `null`.\n- **data**: The actual data that the document contains. This must be pure\nacyclic JSON. Its also type-specific. (JSON type uses raw JSON, text documents\nuse a string, etc).\n\nLiveDB implicitly has a record for every document you can access. New documents\nhave version 0, a null type and no data. To use a document, you must first\nsubmit a *create operation*, which will set the document\'s type and give it\ninitial data. Then you can submit editing operations on the document (using\nOT). Finally you can delete the document with a delete operation. By\ndefault, livedb stores all operations forever - nothing is truly deleted.\n\n\n## Using Livedb\n\nLivedb requires a backend database to store snapshots & operations. You can put snapshots & operations in different places if you want, though its easier to put all data in the same place.\n\nThe backend database(s) needs to implement a [simple API which has documentation and a sample implementation here](https://github.com/share/livedb/blob/master/lib/memory.js). Currently the only database binding is [livedb-mongo](https://github.com/share/livedb-mongo).\n\nA livedb client is created using either an options object or a database backend. If you specify a database backend, its used as both oplog and snapshot.\n\n```javascript\ndb = require(\'livedb-mongo\')(\'localhost:27017/test?auto_reconnect\', {safe:true});\nlivedb = require(\'livedb\').client(db);\n```\n\nOr using an options object:\n\n```\ndb = require(\'livedb-mongo\')(\'localhost:27017/test?auto_reconnect\', {safe:true});\nlivedb = require(\'livedb\').client({db:db});\n```\n\nYou can use a different database for both snapshots and operations:\n\n```\nsnapshotdb = require(\'livedb-mongo\')(\'localhost:27017/test?auto_reconnect\', {safe:true});\noplog = {writeOp:..., getVersion:..., getOps:...};\nlivedb = require(\'livedb\').client({snapshotDb:snapshotdb, oplog:oplog});\n```\n\n\n`client({db:db});` is a shorthand for `client({snapshotDb:db, oplog:db})`.\n\nThe options object can also be passed:\n\n- **redis:** *redis client*. This can be specified if there is any further\n configuration of redis that you want to perform. The obvious examples of\n this are when redis is running on a remote machine, redis requires\n authentication or you want to use something other than redis db 0.\n- **redisObserver:** *redis client*. Livedb actually needs 2 redis connections,\n because redis doesn\'t let you use a connection with pubsub subscriptions\n to edit data. Livedb will automatically try to clone the first connection\n to make the observer connection, but we can\'t copy some options. if you\n want to do anything thats particularly fancy, you should make 2 redis\n instances and provide livedb with both of them. Note that because redis\n pubsub messages aren\'t constrained to the selected database, the\n redisObserver doesn\'t need to select the db you have your data in.\n- **extraDbs:** *{name:query db}* This is used to register extra database backends which will be\n notified whenever operations are submitted. They can also be used in\n queries.\n\n\n### Creating documents\n\nTo create a document, you first need to submit a create operation to the\ndocument to set its type. A document doesn\'t properly exist until it has a type\n--- it certainly can\'t store any data.\n\nA create operation looks like this: `{create:{type:TYPE, [data:INITIAL DATA]}, [v:VERSION]}`. The type should be something accessible in the map returned by require(\'ottypes\'), for example `json0` or `http://sharejs.org/types/textv1`. Specifying initial data is optional. If provided, it is passed to the type\'s `create()` method. This does what you expect - for JSON documents, pass your initial object here. For text documents, pass a string containing the document\'s contents. As with all operations, the version is optional. You probably don\'t want to specify the version for a create message.\n\nFor example:\n\n```javascript\nlivedb.submit(\'users\', \'fred\', {create:{type:\'json0\', data:[1,2,3]}}, function(err, version, transformedByOps, snapshot) {\n // I made a document, ma!\n});\n```\n\nSince documents implicitly exist with no type at version 0, usually the create message will increment the version from 0 to 1. Not all documents you want to delete have a version of 0 - if a document is deleted, it will retain its version.\n\n### Deleting documents\n\nDeleting documents is similar to creating them. A deleted document has no type and no data, but will retain its version (actually, the delete operation will bump the document\'s version). A delete operation looks like this: `{del:true, [v:VERSION]}`.\n\n```javascript\nlivedb.submit(\'users\', \'fred\', {del:true}, function(err) {\n //goneskies! Kapow!\n});\n```\n\n### Editing documents\n\nYou edit a document by submitting an operation. Operations are OT type-specific JSON blobs. Refer to the documentation on the particular OT type for details. For example, text documents are documented [here](https://github.com/share/ottypes/blob/master/lib/text.js#L10-L16). If we had a text document stored in LiveDB and wanted to edit it, it might look like this:\n\n```javascript\nlivedb.submit(\'love letters\', \'dear fred\', {op:[6, "You never return my calls!"], v:1002}, function(err) {\n // ...\n});\n```\n\nYou should always specify the version when submitting operations. If you don\'t, operations will do funny things in the face of concurrency.\n\n\n',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved bugs: { url: 'https://github.com/share/livedb/issues' },
1138 silly resolved homepage: 'https://github.com/share/livedb',
1138 silly resolved _id: '[email protected]',
1138 silly resolved dist: { shasum: '553a2a8119081f185aa4d6c943462610d13deb2a' },
1138 silly resolved _resolved: 'git://github.com/Dignifiedquire/livedb#f5646f505131fc398df8098fafac6af2c9aab8a6',
1138 silly resolved _from: 'livedb@git://github.com/Dignifiedquire/livedb#old_snapshot' },
1138 silly resolved { name: 'share',
1138 silly resolved version: '0.7.0-alpha9',
1138 silly resolved description: 'A database for concurrent document editing',
1138 silly resolved keywords:
1138 silly resolved [ 'operational transformation',
1138 silly resolved 'ot',
1138 silly resolved 'concurrent',
1138 silly resolved 'collaborative',
1138 silly resolved 'database',
1138 silly resolved 'server' ],
1138 silly resolved homepage: 'https://github.com/josephg/sharejs',
1138 silly resolved author: { name: 'Joseph Gentle', email: '[email protected]' },
1138 silly resolved dependencies:
1138 silly resolved { livedb: '>=0.2.3',
1138 silly resolved ottypes: '~1',
1138 silly resolved semver: '~2',
1138 silly resolved express: '~3',
1138 silly resolved hat: '*',
1138 silly resolved async: '~0.2' },
1138 silly resolved devDependencies:
1138 silly resolved { 'coffee-script': '~1.6.3',
1138 silly resolved connect: '~2',
1138 silly resolved coffeeify: '*',
1138 silly resolved browserify: '~2.35.1',
1138 silly resolved optimist: '>= 0.2.4',
1138 silly resolved browserchannel: '*',
1138 silly resolved mocha: '~1.13.0',
1138 silly resolved chai: '*',
1138 silly resolved sinon: '1.7.1',
1138 silly resolved redis: '~0.8.6',
1138 silly resolved 'uglify-js': '~2',
1138 silly resolved karma: '~0.10.2',
1138 silly resolved 'karma-chrome-launcher': '~0.1.0',
1138 silly resolved 'karma-firefox-launcher': '~0.1.0',
1138 silly resolved 'karma-coffee-preprocessor': '~0.1.0',
1138 silly resolved 'karma-browserify': '0.0.5',
1138 silly resolved 'karma-mocha': '~0.1.0',
1138 silly resolved 'transport-adapters': 'git://github.com/Dignifiedquire/transport-adapters' },
1138 silly resolved engine: 'node >= 0.10',
1138 silly resolved main: 'lib/index.js',
1138 silly resolved bin: { sharejs: 'bin/sharejs' },
1138 silly resolved scripts: { build: 'make', prepublish: 'make webclient' },
1138 silly resolved licenses: [ [Object] ],
1138 silly resolved repository: { type: 'git', url: 'http://github.com/josephg/sharejs.git' },
1138 silly resolved readme: 'ShareJS\n=======\n\n---\n\n# You are looking at the 0.7 alpha branch of ShareJS.\n\n> *Welcome.* So you know, this code might spontaniously catch fire. Both the\n> API and the code are unstable and **will to change and crash on you**. Test\n> coverage has dropped from 90% in ShareJS 0.6 to around 30% and documentation\n> of the new APIs is almost nonexistant.\n> \n> The documentation below is also full of lies. If you want to play with the\n> new version of ShareJS anyway, look at the examples in prototype/.\n> \n> I understand that if you\'re using racer & derby, you will use this code\n> anyway despite my warnings. **YOU WILL RUN INTO BUGS.**\n\n---\n\n\nThis is a little server (& client library) to allow concurrent editing of any kind of content. The server runs on NodeJS and the client works in NodeJS or a web browser.\n\nShareJS currently supports operational transform on plain-text and arbitrary JSON data.\n\n**Immerse yourself in [API Documentation](https://github.com/josephg/ShareJS/wiki).**\n\n**Visit [Google groups](https://groups.google.com/forum/?fromgroups#!forum/sharejs) for discussions and announcements**\n\n**Check out the [live interactive demos](http://sharejs.org/).**\n\n> Note: CI sometimes breaks for random reasons even though the tests work locally. Don\'t stress!\n[![Build Status](https://secure.travis-ci.org/share/ShareJS.png)](http://travis-ci.org/share/ShareJS)\n\n\nBrowser support\n---------------\n\nShareJS **should** work with all of them ![logos of all of all the browsers](http://twitter.github.com/bootstrap/assets/img/browsers.png)\n\nThat said, I only test regularly with FF, Safari and Chrome, and occasionally with IE8+. **File bug reports if you have issues**\n\n\nInstalling and running\n----------------------\n\n # npm install share\n\nRun the examples with:\n\n # sharejs-exampleserver\n\nIf you want redis support, you\'ll need to install redis:\n\n # brew install redis\n # npm install -g redis\n\n### From source\n\nInstall redis (optional)\n \n* Mac:\n\n # brew install redis\n\n* Linux:\n \n # sudo apt-get install redis\n\nThen:\n\n # git clone git://github.com/josephg/ShareJS.git\n # cd ShareJS\n # npm install redis # If you want redis support\n # npm link\n\nRun the tests:\n\n # cake test\n\nBuild the coffeescript into .js:\n\n # cake build\n # cake webclient\n\nRun the example server:\n\n # bin/exampleserver\n\nRunning a server\n----------------\n\nThere are two ways to run a sharejs server:\n\n1. Embedded in a node.js server app:\n\n ```javascript\n var connect = require(\'connect\'),\n sharejs = require(\'share\').server;\n\n var server = connect(\n connect.logger(),\n connect.static(__dirname + \'/my_html_files\')\n );\n\n var options = {db: {type: \'none\'}}; // See docs for options. {type: \'redis\'} to enable persistance.\n\n // Attach the sharejs REST and Socket.io interfaces to the server\n sharejs.attach(server, options);\n\n server.listen(8000);\n console.log(\'Server running at http://127.0.0.1:8000/\');\n ```\n The above script will start up a ShareJS server on port 8000 which hosts static content from the `my_html_files` directory. See [bin/exampleserver](https://github.com/josephg/ShareJS/blob/master/bin/exampleserver) for a more complex configuration example.\n\n > See the [Connect](http://senchalabs.github.com/connect/) or [Express](http://expressjs.com/) documentation for more complex routing.\n\n2. From the command line:\n\n # sharejs\n Configuration is pulled from a configuration file that can\'t be easily edited at the moment. For now, I recommend method #1 above.\n\n3. If you are just mucking around, run:\n\n # sharejs-exampleserver\n \n This will run a simple server on port 8000, and host all the example code there. Run it and check out http://localhost:8000/ . The example server stores everything in ram, so don\'t get too attached to your data.\n\n > If you\'re running sharejs from source, you can launch the example server by running `bin/exampleserver`.\n\n\nPutting Share.js on your website\n--------------------------------\n\nIf you want to get a simple editor working in your webpage with sharejs, here\'s what you need to do:\n\nFirst, get an ace editor on your page:\n\n```html\n<div id="editor"></div>\n```\n\nYour web app will need access to the following JS files:\n\n- Ace (http://ace.ajax.org/)\n- Browserchannel\n- ShareJS client and ace bindings.\n\nAdd these script tags:\n\n```html\n<script src="http://ajaxorg.github.com/ace/build/src/ace.js"></script>\n<script src="/channel/bcsocket.js"></script>\n<script src="/share/share.js"></script>\n<script src="/share/ace.js"></script>\n```\n\nAnd add this code:\n\n```html\n<script>\n var editor = ace.edit("editor");\n\n sharejs.open(\'hello\', \'text\', function(error, doc) {\n doc.attach_ace(editor);\n });\n</script>\n```\n\n> **NOTE:** If you\'re using the current version in npm (0.4) or earler, the argument order is the other way around (`function(doc, error)`).\n\nThats about it :)\n\nThe easiest way to get your code running is to check sharejs out from source and put your html and css files in the `examples/` directory. Run `bin/exampleserver` to launch the demo server and browse to http://localhost:8000/your-app.html .\n\nSee the [wiki](https://github.com/josephg/ShareJS/wiki) for documentation.\n\nIts also possible to use sharejs without ace. See the textarea example for details.\n\nWriting a client using node.js\n------------------------------\n\nThe client API is the same whether you\'re using the web or nodejs.\n\nHere\'s an example application which opens a document and inserts some text in it. Every time an op is applied to the document, it\'ll print out the document\'s version.\n\nRun this from a couple terminal windows when sharejs is running to see it go.\n\n```javascript\nvar client = require(\'share\').client;\n\n// Open the \'hello\' document, which should have type \'text\':\nclient.open(\'hello\', \'text\', \'http://localhost:8000/sjs\', function(error, doc) {\n // Insert some text at the start of the document (position 0):\n doc.insert("Hi there!\\n", 0);\n\n // Get the contents of the document for some reason:\n console.log(doc.snapshot);\n\n doc.on(\'change\', function(op) {\n console.log(\'Version: \' + doc.version);\n });\n\n // Close the doc if you want your node app to exit cleanly\n // doc.close();\n});\n```\n\n> **NOTE:** If you\'re using the current version in npm (0.4) or earler, the argument order is the other way around (`function(doc, error)`).\n\nSee [`the wiki`](https://github.com/josephg/ShareJS/wiki) for API documentation, and `examples/node*` for some more example apps.\n\n\n',
1138 silly resolved readmeFilename: 'README.md',
1138 silly resolved bugs: { url: 'https://github.com/josephg/sharejs/issues' },
1138 silly resolved _id: '[email protected]',
1138 silly resolved dist: { shasum: '11e25b7f75a091f6c7e36d92392ef3f7ab689742' },
1138 silly resolved _from: '/Users/josephg/src/ShareJS2/',
1138 silly resolved _resolved: 'git://github.com/codio/ShareJS#0f1ef2a85f75b8344d15c458ccedc9be4a1d7cbe' } ]
1139 info install [email protected] into /var/www/sharejs/releases/20131218171509
1140 info install [email protected] into /var/www/sharejs/releases/20131218171509
1141 info install [email protected] into /var/www/sharejs/releases/20131218171509
1142 info install [email protected] into /var/www/sharejs/releases/20131218171509
1143 info install [email protected] into /var/www/sharejs/releases/20131218171509
1144 info install [email protected] into /var/www/sharejs/releases/20131218171509
1145 info install [email protected] into /var/www/sharejs/releases/20131218171509
1146 info install [email protected] into /var/www/sharejs/releases/20131218171509
1147 info install [email protected] into /var/www/sharejs/releases/20131218171509
1148 info install [email protected] into /var/www/sharejs/releases/20131218171509
1149 info install [email protected] into /var/www/sharejs/releases/20131218171509
1150 info install [email protected] into /var/www/sharejs/releases/20131218171509
1151 info install [email protected] into /var/www/sharejs/releases/20131218171509
1152 info install [email protected] into /var/www/sharejs/releases/20131218171509
1153 info install [email protected] into /var/www/sharejs/releases/20131218171509
1154 info install [email protected] into /var/www/sharejs/releases/20131218171509
1155 info install [email protected] into /var/www/sharejs/releases/20131218171509
1156 info install [email protected] into /var/www/sharejs/releases/20131218171509
1157 info install [email protected] into /var/www/sharejs/releases/20131218171509
1158 info install [email protected] into /var/www/sharejs/releases/20131218171509
1159 info install [email protected] into /var/www/sharejs/releases/20131218171509
1160 info installOne [email protected]
1161 info installOne [email protected]
1162 info installOne [email protected]
1163 info installOne [email protected]
1164 info installOne [email protected]
1165 info installOne [email protected]
1166 info installOne [email protected]
1167 info installOne [email protected]
1168 info installOne [email protected]
1169 info installOne [email protected]
1170 info installOne [email protected]
1171 info installOne [email protected]
1172 info installOne [email protected]
1173 info installOne [email protected]
1174 info installOne [email protected]
1175 info installOne [email protected]
1176 info installOne [email protected]
1177 info installOne [email protected]
1178 info installOne [email protected]
1179 info installOne [email protected]
1180 info installOne [email protected]
1181 info /var/www/sharejs/releases/20131218171509/node_modules/nodetime unbuild
1182 info /var/www/sharejs/releases/20131218171509/node_modules/querystring unbuild
1183 info /var/www/sharejs/releases/20131218171509/node_modules/lodash unbuild
1184 info /var/www/sharejs/releases/20131218171509/node_modules/amqp unbuild
1185 info /var/www/sharejs/releases/20131218171509/node_modules/log4js unbuild
1186 info /var/www/sharejs/releases/20131218171509/node_modules/newrelic unbuild
1187 info /var/www/sharejs/releases/20131218171509/node_modules/commander unbuild
1188 info /var/www/sharejs/releases/20131218171509/node_modules/redis unbuild
1189 info /var/www/sharejs/releases/20131218171509/node_modules/sockjs unbuild
1190 info /var/www/sharejs/releases/20131218171509/node_modules/livedb-mongo unbuild
1191 info /var/www/sharejs/releases/20131218171509/node_modules/rbytes unbuild
1192 info /var/www/sharejs/releases/20131218171509/node_modules/express unbuild
1193 info /var/www/sharejs/releases/20131218171509/node_modules/isbinaryfile unbuild
1194 info /var/www/sharejs/releases/20131218171509/node_modules/ottypes unbuild
1195 info /var/www/sharejs/releases/20131218171509/node_modules/async unbuild
1196 info /var/www/sharejs/releases/20131218171509/node_modules/thalassa unbuild
1197 info /var/www/sharejs/releases/20131218171509/node_modules/connect unbuild
1198 info /var/www/sharejs/releases/20131218171509/node_modules/transport-adapters unbuild
1199 info /var/www/sharejs/releases/20131218171509/node_modules/node-codio unbuild
1200 info /var/www/sharejs/releases/20131218171509/node_modules/livedb unbuild
1201 info /var/www/sharejs/releases/20131218171509/node_modules/share unbuild
1202 verbose tar unpack /home/sharejs/.npm/nodetime/0.8.13/package.tgz
1203 silly lockFile 9e0f00d6-1218171509-node-modules-nodetime tar:///var/www/sharejs/releases/20131218171509/node_modules/nodetime
1204 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/nodetime /home/sharejs/.npm/9e0f00d6-1218171509-node-modules-nodetime.lock
1205 silly lockFile 9793a7ca--npm-nodetime-0-8-13-package-tgz tar:///home/sharejs/.npm/nodetime/0.8.13/package.tgz
1206 verbose lock tar:///home/sharejs/.npm/nodetime/0.8.13/package.tgz /home/sharejs/.npm/9793a7ca--npm-nodetime-0-8-13-package-tgz.lock
1207 verbose tar unpack /home/sharejs/.npm/querystring/0.2.0/package.tgz
1208 silly lockFile e3b54737-8171509-node-modules-querystring tar:///var/www/sharejs/releases/20131218171509/node_modules/querystring
1209 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/querystring /home/sharejs/.npm/e3b54737-8171509-node-modules-querystring.lock
1210 silly lockFile 26742a22-pm-querystring-0-2-0-package-tgz tar:///home/sharejs/.npm/querystring/0.2.0/package.tgz
1211 verbose lock tar:///home/sharejs/.npm/querystring/0.2.0/package.tgz /home/sharejs/.npm/26742a22-pm-querystring-0-2-0-package-tgz.lock
1212 verbose tar unpack /home/sharejs/.npm/lodash/2.2.1/package.tgz
1213 silly lockFile a022935f-131218171509-node-modules-lodash tar:///var/www/sharejs/releases/20131218171509/node_modules/lodash
1214 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/lodash /home/sharejs/.npm/a022935f-131218171509-node-modules-lodash.lock
1215 silly lockFile 9884c028-ejs-npm-lodash-2-2-1-package-tgz tar:///home/sharejs/.npm/lodash/2.2.1/package.tgz
1216 verbose lock tar:///home/sharejs/.npm/lodash/2.2.1/package.tgz /home/sharejs/.npm/9884c028-ejs-npm-lodash-2-2-1-package-tgz.lock
1217 verbose tar unpack /home/sharejs/.npm/amqp/0.1.8/package.tgz
1218 silly lockFile 0bd45494-20131218171509-node-modules-amqp tar:///var/www/sharejs/releases/20131218171509/node_modules/amqp
1219 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/amqp /home/sharejs/.npm/0bd45494-20131218171509-node-modules-amqp.lock
1220 silly lockFile 1144a0cb-arejs-npm-amqp-0-1-8-package-tgz tar:///home/sharejs/.npm/amqp/0.1.8/package.tgz
1221 verbose lock tar:///home/sharejs/.npm/amqp/0.1.8/package.tgz /home/sharejs/.npm/1144a0cb-arejs-npm-amqp-0-1-8-package-tgz.lock
1222 verbose tar unpack /home/sharejs/.npm/log4js/0.6.9/package.tgz
1223 silly lockFile b447c176-131218171509-node-modules-log4js tar:///var/www/sharejs/releases/20131218171509/node_modules/log4js
1224 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/log4js /home/sharejs/.npm/b447c176-131218171509-node-modules-log4js.lock
1225 silly lockFile 0566e3b7-ejs-npm-log4js-0-6-9-package-tgz tar:///home/sharejs/.npm/log4js/0.6.9/package.tgz
1226 verbose lock tar:///home/sharejs/.npm/log4js/0.6.9/package.tgz /home/sharejs/.npm/0566e3b7-ejs-npm-log4js-0-6-9-package-tgz.lock
1227 verbose tar unpack /home/sharejs/.npm/newrelic/1.0.1/package.tgz
1228 silly lockFile 49d6b696-1218171509-node-modules-newrelic tar:///var/www/sharejs/releases/20131218171509/node_modules/newrelic
1229 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/newrelic /home/sharejs/.npm/49d6b696-1218171509-node-modules-newrelic.lock
1230 silly lockFile 63623aee-s-npm-newrelic-1-0-1-package-tgz tar:///home/sharejs/.npm/newrelic/1.0.1/package.tgz
1231 verbose lock tar:///home/sharejs/.npm/newrelic/1.0.1/package.tgz /home/sharejs/.npm/63623aee-s-npm-newrelic-1-0-1-package-tgz.lock
1232 verbose tar unpack /home/sharejs/.npm/commander/2.0.0/package.tgz
1233 silly lockFile 5a1a2acb-218171509-node-modules-commander tar:///var/www/sharejs/releases/20131218171509/node_modules/commander
1234 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/commander /home/sharejs/.npm/5a1a2acb-218171509-node-modules-commander.lock
1235 silly lockFile 4c38a4c2--npm-commander-2-0-0-package-tgz tar:///home/sharejs/.npm/commander/2.0.0/package.tgz
1236 verbose lock tar:///home/sharejs/.npm/commander/2.0.0/package.tgz /home/sharejs/.npm/4c38a4c2--npm-commander-2-0-0-package-tgz.lock
1237 verbose tar unpack /home/sharejs/.npm/redis/0.9.2/package.tgz
1238 silly lockFile 8ac8f6c0-0131218171509-node-modules-redis tar:///var/www/sharejs/releases/20131218171509/node_modules/redis
1239 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/redis /home/sharejs/.npm/8ac8f6c0-0131218171509-node-modules-redis.lock
1240 silly lockFile 68eb87eb-rejs-npm-redis-0-9-2-package-tgz tar:///home/sharejs/.npm/redis/0.9.2/package.tgz
1241 verbose lock tar:///home/sharejs/.npm/redis/0.9.2/package.tgz /home/sharejs/.npm/68eb87eb-rejs-npm-redis-0-9-2-package-tgz.lock
1242 verbose tar unpack /home/sharejs/.npm/sockjs/0.3.8/package.tgz
1243 silly lockFile 2bd7d3df-131218171509-node-modules-sockjs tar:///var/www/sharejs/releases/20131218171509/node_modules/sockjs
1244 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/sockjs /home/sharejs/.npm/2bd7d3df-131218171509-node-modules-sockjs.lock
1245 silly lockFile f519dab6-ejs-npm-sockjs-0-3-8-package-tgz tar:///home/sharejs/.npm/sockjs/0.3.8/package.tgz
1246 verbose lock tar:///home/sharejs/.npm/sockjs/0.3.8/package.tgz /home/sharejs/.npm/f519dab6-ejs-npm-sockjs-0-3-8-package-tgz.lock
1247 verbose tar unpack /home/sharejs/.npm/livedb-mongo/0.2.6/package.tgz
1248 silly lockFile 2b6b1f44-171509-node-modules-livedb-mongo tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb-mongo
1249 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb-mongo /home/sharejs/.npm/2b6b1f44-171509-node-modules-livedb-mongo.lock
1250 silly lockFile 7df814c7-m-livedb-mongo-0-2-6-package-tgz tar:///home/sharejs/.npm/livedb-mongo/0.2.6/package.tgz
1251 verbose lock tar:///home/sharejs/.npm/livedb-mongo/0.2.6/package.tgz /home/sharejs/.npm/7df814c7-m-livedb-mongo-0-2-6-package-tgz.lock
1252 verbose tar unpack /home/sharejs/.npm/rbytes/1.0.0/package.tgz
1253 silly lockFile 6fcd1c5f-131218171509-node-modules-rbytes tar:///var/www/sharejs/releases/20131218171509/node_modules/rbytes
1254 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/rbytes /home/sharejs/.npm/6fcd1c5f-131218171509-node-modules-rbytes.lock
1255 silly lockFile fb1b67cd-ejs-npm-rbytes-1-0-0-package-tgz tar:///home/sharejs/.npm/rbytes/1.0.0/package.tgz
1256 verbose lock tar:///home/sharejs/.npm/rbytes/1.0.0/package.tgz /home/sharejs/.npm/fb1b67cd-ejs-npm-rbytes-1-0-0-package-tgz.lock
1257 verbose tar unpack /home/sharejs/.npm/express/3.4.7/package.tgz
1258 silly lockFile 8a0a5668-31218171509-node-modules-express tar:///var/www/sharejs/releases/20131218171509/node_modules/express
1259 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/express /home/sharejs/.npm/8a0a5668-31218171509-node-modules-express.lock
1260 silly lockFile e7c85768-js-npm-express-3-4-7-package-tgz tar:///home/sharejs/.npm/express/3.4.7/package.tgz
1261 verbose lock tar:///home/sharejs/.npm/express/3.4.7/package.tgz /home/sharejs/.npm/e7c85768-js-npm-express-3-4-7-package-tgz.lock
1262 verbose tar unpack /home/sharejs/.npm/isbinaryfile/0.1.9/package.tgz
1263 silly lockFile e6cd8cd4-171509-node-modules-isbinaryfile tar:///var/www/sharejs/releases/20131218171509/node_modules/isbinaryfile
1264 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/isbinaryfile /home/sharejs/.npm/e6cd8cd4-171509-node-modules-isbinaryfile.lock
1265 silly lockFile 8cc6a743-m-isbinaryfile-0-1-9-package-tgz tar:///home/sharejs/.npm/isbinaryfile/0.1.9/package.tgz
1266 verbose lock tar:///home/sharejs/.npm/isbinaryfile/0.1.9/package.tgz /home/sharejs/.npm/8cc6a743-m-isbinaryfile-0-1-9-package-tgz.lock
1267 verbose tar unpack /home/sharejs/.npm/ottypes/1.0.1/package.tgz
1268 silly lockFile 1bb4845a-31218171509-node-modules-ottypes tar:///var/www/sharejs/releases/20131218171509/node_modules/ottypes
1269 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/ottypes /home/sharejs/.npm/1bb4845a-31218171509-node-modules-ottypes.lock
1270 silly lockFile 86ee5b89-js-npm-ottypes-1-0-1-package-tgz tar:///home/sharejs/.npm/ottypes/1.0.1/package.tgz
1271 verbose lock tar:///home/sharejs/.npm/ottypes/1.0.1/package.tgz /home/sharejs/.npm/86ee5b89-js-npm-ottypes-1-0-1-package-tgz.lock
1272 verbose tar unpack /home/sharejs/.npm/async/0.2.9/package.tgz
1273 silly lockFile 6d008e53-0131218171509-node-modules-async tar:///var/www/sharejs/releases/20131218171509/node_modules/async
1274 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/async /home/sharejs/.npm/6d008e53-0131218171509-node-modules-async.lock
1275 silly lockFile 149b4f9e-rejs-npm-async-0-2-9-package-tgz tar:///home/sharejs/.npm/async/0.2.9/package.tgz
1276 verbose lock tar:///home/sharejs/.npm/async/0.2.9/package.tgz /home/sharejs/.npm/149b4f9e-rejs-npm-async-0-2-9-package-tgz.lock
1277 verbose tar unpack /home/sharejs/.npm/thalassa/0.3.2/package.tgz
1278 silly lockFile c823e106-1218171509-node-modules-thalassa tar:///var/www/sharejs/releases/20131218171509/node_modules/thalassa
1279 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/thalassa /home/sharejs/.npm/c823e106-1218171509-node-modules-thalassa.lock
1280 silly lockFile d2000167-s-npm-thalassa-0-3-2-package-tgz tar:///home/sharejs/.npm/thalassa/0.3.2/package.tgz
1281 verbose lock tar:///home/sharejs/.npm/thalassa/0.3.2/package.tgz /home/sharejs/.npm/d2000167-s-npm-thalassa-0-3-2-package-tgz.lock
1282 verbose tar unpack /home/sharejs/.npm/connect/2.7.11/package.tgz
1283 silly lockFile a9a0092d-31218171509-node-modules-connect tar:///var/www/sharejs/releases/20131218171509/node_modules/connect
1284 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/connect /home/sharejs/.npm/a9a0092d-31218171509-node-modules-connect.lock
1285 silly lockFile 710de9f4-s-npm-connect-2-7-11-package-tgz tar:///home/sharejs/.npm/connect/2.7.11/package.tgz
1286 verbose lock tar:///home/sharejs/.npm/connect/2.7.11/package.tgz /home/sharejs/.npm/710de9f4-s-npm-connect-2-7-11-package-tgz.lock
1287 verbose tar unpack /home/sharejs/.npm/transport-adapters/0.1.0/package.tgz
1288 silly lockFile 12ffcc9e--node-modules-transport-adapters tar:///var/www/sharejs/releases/20131218171509/node_modules/transport-adapters
1289 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/transport-adapters /home/sharejs/.npm/12ffcc9e--node-modules-transport-adapters.lock
1290 silly lockFile 60fc8962-sport-adapters-0-1-0-package-tgz tar:///home/sharejs/.npm/transport-adapters/0.1.0/package.tgz
1291 verbose lock tar:///home/sharejs/.npm/transport-adapters/0.1.0/package.tgz /home/sharejs/.npm/60fc8962-sport-adapters-0-1-0-package-tgz.lock
1292 verbose tar unpack /home/sharejs/.npm/node-codio/0.0.1/package.tgz
1293 silly lockFile db13ce97-18171509-node-modules-node-codio tar:///var/www/sharejs/releases/20131218171509/node_modules/node-codio
1294 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/node-codio /home/sharejs/.npm/db13ce97-18171509-node-modules-node-codio.lock
1295 silly lockFile 99388702-npm-node-codio-0-0-1-package-tgz tar:///home/sharejs/.npm/node-codio/0.0.1/package.tgz
1296 verbose lock tar:///home/sharejs/.npm/node-codio/0.0.1/package.tgz /home/sharejs/.npm/99388702-npm-node-codio-0-0-1-package-tgz.lock
1297 verbose tar unpack /home/sharejs/.npm/livedb/0.2.8/package.tgz
1298 silly lockFile 0abfbc83-131218171509-node-modules-livedb tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb
1299 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb /home/sharejs/.npm/0abfbc83-131218171509-node-modules-livedb.lock
1300 silly lockFile 4d9255f1-ejs-npm-livedb-0-2-8-package-tgz tar:///home/sharejs/.npm/livedb/0.2.8/package.tgz
1301 verbose lock tar:///home/sharejs/.npm/livedb/0.2.8/package.tgz /home/sharejs/.npm/4d9255f1-ejs-npm-livedb-0-2-8-package-tgz.lock
1302 verbose tar unpack /home/sharejs/.npm/share/0.7.0-alpha9/package.tgz
1303 silly lockFile 9d56dffd-0131218171509-node-modules-share tar:///var/www/sharejs/releases/20131218171509/node_modules/share
1304 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/share /home/sharejs/.npm/9d56dffd-0131218171509-node-modules-share.lock
1305 silly lockFile a733730d-m-share-0-7-0-alpha9-package-tgz tar:///home/sharejs/.npm/share/0.7.0-alpha9/package.tgz
1306 verbose lock tar:///home/sharejs/.npm/share/0.7.0-alpha9/package.tgz /home/sharejs/.npm/a733730d-m-share-0-7-0-alpha9-package-tgz.lock
1307 silly gunzTarPerm modes [ '755', '644' ]
1308 silly gunzTarPerm modes [ '755', '644' ]
1309 silly gunzTarPerm modes [ '755', '644' ]
1310 silly gunzTarPerm modes [ '755', '644' ]
1311 silly gunzTarPerm modes [ '755', '644' ]
1312 silly gunzTarPerm modes [ '755', '644' ]
1313 silly gunzTarPerm modes [ '755', '644' ]
1314 silly gunzTarPerm modes [ '755', '644' ]
1315 silly gunzTarPerm modes [ '755', '644' ]
1316 silly gunzTarPerm modes [ '755', '644' ]
1317 silly gunzTarPerm modes [ '755', '644' ]
1318 silly gunzTarPerm modes [ '755', '644' ]
1319 silly gunzTarPerm modes [ '755', '644' ]
1320 silly gunzTarPerm modes [ '755', '644' ]
1321 silly gunzTarPerm modes [ '755', '644' ]
1322 silly gunzTarPerm modes [ '755', '644' ]
1323 silly gunzTarPerm modes [ '755', '644' ]
1324 silly gunzTarPerm modes [ '755', '644' ]
1325 silly gunzTarPerm modes [ '755', '644' ]
1326 silly gunzTarPerm modes [ '755', '644' ]
1327 silly gunzTarPerm modes [ '755', '644' ]
1328 silly gunzTarPerm extractEntry package.json
1329 silly gunzTarPerm extractEntry package.json
1330 silly gunzTarPerm extractEntry package.json
1331 silly gunzTarPerm extractEntry package.json
1332 silly gunzTarPerm extractEntry package.json
1333 silly gunzTarPerm extractEntry package.json
1334 silly gunzTarPerm extractEntry package.json
1335 silly gunzTarPerm extractEntry package.json
1336 silly gunzTarPerm extractEntry package.json
1337 silly gunzTarPerm extractEntry package.json
1338 silly gunzTarPerm extractEntry package.json
1339 silly gunzTarPerm extractEntry package.json
1340 silly gunzTarPerm extractEntry package.json
1341 silly gunzTarPerm extractEntry package.json
1342 silly gunzTarPerm extractEntry package.json
1343 silly gunzTarPerm extractEntry package.json
1344 silly gunzTarPerm extractEntry package.json
1345 silly gunzTarPerm extractEntry package.json
1346 silly gunzTarPerm extractEntry package.json
1347 silly gunzTarPerm extractEntry package.json
1348 silly gunzTarPerm extractEntry package.json
1349 silly gunzTarPerm extractEntry .npmignore
1350 silly gunzTarPerm extractEntry README.md
1351 silly gunzTarPerm extractEntry decode.js
1352 silly gunzTarPerm extractEntry encode.js
1353 silly gunzTarPerm extractEntry README.md
1354 silly gunzTarPerm extractEntry lodash.js
1355 silly gunzTarPerm extractEntry .npmignore
1356 silly gunzTarPerm extractEntry README.md
1357 silly gunzTarPerm extractEntry .npmignore
1358 silly gunzTarPerm extractEntry README.md
1359 silly gunzTarPerm extractEntry .npmignore
1360 silly gunzTarPerm extractEntry README.md
1361 silly gunzTarPerm extractEntry index.js
1362 silly gunzTarPerm extractEntry History.md
1363 silly gunzTarPerm extractEntry Readme.md
1364 silly gunzTarPerm extractEntry .npmignore
1365 silly gunzTarPerm extractEntry README.md
1366 silly gunzTarPerm extractEntry .npmignore
1367 silly gunzTarPerm extractEntry README.md
1368 silly gunzTarPerm extractEntry .npmignore
1369 silly gunzTarPerm extractEntry README.md
1370 silly gunzTarPerm extractEntry .npmignore
1371 silly gunzTarPerm extractEntry README.md
1372 silly gunzTarPerm extractEntry .npmignore
1373 silly gunzTarPerm extractEntry LICENSE
1374 silly gunzTarPerm extractEntry .npmignore
1375 silly gunzTarPerm extractEntry README.md
1376 silly gunzTarPerm extractEntry .npmignore
1377 silly gunzTarPerm extractEntry README.md
1378 silly gunzTarPerm extractEntry README.md
1379 silly gunzTarPerm extractEntry LICENSE
1380 silly gunzTarPerm extractEntry component.json
1381 silly gunzTarPerm extractEntry lib/async.js
1382 silly gunzTarPerm extractEntry .npmignore
1383 silly gunzTarPerm extractEntry README.md
1384 silly gunzTarPerm extractEntry .npmignore
1385 silly gunzTarPerm extractEntry LICENSE
1386 silly gunzTarPerm extractEntry .npmignore
1387 silly gunzTarPerm extractEntry README.md
1388 silly gunzTarPerm extractEntry .npmignore
1389 silly gunzTarPerm extractEntry README.md
1390 silly gunzTarPerm extractEntry .npmignore
1391 silly gunzTarPerm extractEntry README.md
1392 silly gunzTarPerm extractEntry .npmignore
1393 silly gunzTarPerm extractEntry README.md
1394 silly gunzTarPerm extractEntry test-unref.js
1395 silly gunzTarPerm extractEntry LICENSE
1396 silly gunzTarPerm extractEntry index.js
1397 silly gunzTarPerm extractEntry LICENSE
1398 silly gunzTarPerm extractEntry index.js
1399 silly gunzTarPerm extractEntry lib/connect-logger.js
1400 silly gunzTarPerm extractEntry lib/date_format.js
1401 silly gunzTarPerm extractEntry index.js
1402 silly gunzTarPerm extractEntry mongo.js
1403 silly gunzTarPerm extractEntry .travis.yml
1404 silly gunzTarPerm extractEntry test.coffee
1405 silly gunzTarPerm extractEntry index.js
1406 silly gunzTarPerm extractEntry tests/test.js
1407 silly gunzTarPerm extractEntry after.js
1408 silly gunzTarPerm extractEntry before.js
1409 silly gunzTarPerm extractEntry index.js
1410 silly gunzTarPerm extractEntry test.js
1411 silly gunzTarPerm extractEntry index.js
1412 silly gunzTarPerm extractEntry .travis.yml
1413 silly gunzTarPerm extractEntry index.js
1414 silly gunzTarPerm extractEntry .jshintrc
1415 silly gunzTarPerm extractEntry LICENSE
1416 silly gunzTarPerm extractEntry .travis.yml
1417 silly gunzTarPerm extractEntry index.js
1418 silly gunzTarPerm extractEntry Readme.md
1419 silly gunzTarPerm extractEntry amqp.js
1420 silly gunzTarPerm extractEntry index.js
1421 silly gunzTarPerm extractEntry .travis.yml
1422 silly gunzTarPerm extractEntry LICENSE
1423 silly gunzTarPerm extractEntry index.js
1424 silly gunzTarPerm extractEntry LICENSE.txt
1425 silly gunzTarPerm extractEntry LICENSE
1426 silly gunzTarPerm extractEntry diff_multi_bench_output.js
1427 silly gunzTarPerm extractEntry multi_bench.js
1428 silly gunzTarPerm extractEntry test.js
1429 silly gunzTarPerm extractEntry Makefile
1430 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.14/nodetime_native.node
1431 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.10.0/nodetime_native.node
1432 silly gunzTarPerm extractEntry lib/debug.js
1433 silly gunzTarPerm extractEntry COPYING
1434 silly gunzTarPerm extractEntry Changelog
1435 silly gunzTarPerm extractEntry tests/fixtures/01_grep
1436 silly gunzTarPerm extractEntry tests/fixtures/02_perl_script
1437 silly gunzTarPerm extractEntry tests/fixtures/03_Руководство_по_эксплуатации.rst
1438 silly gunzTarPerm extractEntry tests/fixtures/04_HelloWorld.pdf
1439 silly gunzTarPerm extractEntry tests/fixtures/05_null_file.gif
1440 silly gunzTarPerm extractEntry tests/fixtures/06_trunks.gif
1441 silly gunzTarPerm extractEntry webclient/json0.js
1442 silly gunzTarPerm extractEntry webclient/json0.uncompressed.js
1443 silly gunzTarPerm extractEntry webclient/text-tp2.js
1444 silly gunzTarPerm extractEntry webclient/text.js
1445 silly gunzTarPerm extractEntry webclient/text0.js
1446 silly gunzTarPerm extractEntry webclient/text0.uncompressed.js
1447 silly gunzTarPerm extractEntry .travis.yml
1448 silly gunzTarPerm extractEntry Makefile
1449 silly gunzTarPerm extractEntry randomizer/README.md
1450 silly gunzTarPerm extractEntry randomizer/mersenne.js
1451 silly gunzTarPerm extractEntry randomizer/index.coffee
1452 silly gunzTarPerm extractEntry randomizer/jabberwocky.txt
1453 silly gunzTarPerm extractEntry randomizer/json0.coffee
1454 silly gunzTarPerm extractEntry randomizer/randomizer.coffee
1455 silly gunzTarPerm extractEntry randomizer/text-tp2.coffee
1456 silly gunzTarPerm extractEntry randomizer/text.coffee
1457 silly gunzTarPerm extractEntry randomizer/text0.coffee
1458 silly gunzTarPerm extractEntry src/json3.coffee
1459 silly gunzTarPerm extractEntry test/count.coffee
1460 silly gunzTarPerm extractEntry test/json0.coffee
1461 silly gunzTarPerm extractEntry test/mocha.opts
1462 silly gunzTarPerm extractEntry test/text-tp2.coffee
1463 silly gunzTarPerm extractEntry test/text-transform-tests.json
1464 silly gunzTarPerm extractEntry test/text.coffee
1465 silly gunzTarPerm extractEntry test/text0.coffee
1466 silly gunzTarPerm extractEntry test-json3.coffee
1467 silly gunzTarPerm extractEntry lib/helpers.js
1468 silly gunzTarPerm extractEntry lib/index.js
1469 silly gunzTarPerm extractEntry lib/json0.js
1470 silly gunzTarPerm extractEntry lib/simple.js
1471 silly gunzTarPerm extractEntry lib/text-tp2.js
1472 silly gunzTarPerm extractEntry lib/text.js
1473 silly gunzTarPerm extractEntry lib/text0.js
1474 silly gunzTarPerm extractEntry .travis.yml
1475 silly gunzTarPerm extractEntry Readme.md
1476 silly gunzTarPerm extractEntry examples/browserchannel/share-textarea.js
1477 silly gunzTarPerm extractEntry examples/browserchannel/index.html
1478 silly gunzTarPerm extractEntry gruntfile.coffee
1479 silly gunzTarPerm extractEntry lib/project-manager.js
1480 silly gunzTarPerm extractEntry example-backend.coffee
1481 silly gunzTarPerm extractEntry lib/index.js
1482 silly gunzTarPerm extractEntry jspack.js
1483 silly gunzTarPerm extractEntry Makefile
1484 silly gunzTarPerm extractEntry History.md
1485 silly gunzTarPerm extractEntry Makefile
1486 silly gunzTarPerm extractEntry Readme.md
1487 silly gunzTarPerm extractEntry bin/express
1488 silly gunzTarPerm extractEntry lib/application.js
1489 silly gunzTarPerm extractEntry lib/express.js
1490 silly gunzTarPerm extractEntry lib/middleware.js
1491 silly gunzTarPerm extractEntry lib/request.js
1492 silly gunzTarPerm extractEntry lib/response.js
1493 silly gunzTarPerm extractEntry lib/utils.js
1494 silly gunzTarPerm extractEntry lib/view.js
1495 silly gunzTarPerm extractEntry lib/router/index.js
1496 silly gunzTarPerm extractEntry lib/router/route.js
1497 silly gunzTarPerm extractEntry examples/simple.js
1498 silly gunzTarPerm extractEntry .jshintrc
1499 silly gunzTarPerm extractEntry api.js
1500 silly gunzTarPerm extractEntry index.js
1501 silly gunzTarPerm extractEntry License.md
1502 silly gunzTarPerm extractEntry .Readme.md.un~
1503 silly gunzTarPerm extractEntry LICENSE
1504 silly gunzTarPerm extractEntry binding.gyp
1505 silly gunzTarPerm extractEntry src/binding.cc
1506 silly gunzTarPerm extractEntry examples/browserchannel/server.coffee
1507 silly gunzTarPerm extractEntry examples/sockjs/package.json
1508 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.10.10/nodetime_native.node
1509 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.10.2/nodetime_native.node
1510 silly gunzTarPerm extractEntry lib/cache.js
1511 silly gunzTarPerm extractEntry lib/connect.js
1512 silly gunzTarPerm extractEntry lib/project-structure-manager.js
1513 silly gunzTarPerm extractEntry lib/request.js
1514 silly gunzTarPerm extractEntry test/index.spec.js
1515 silly gunzTarPerm extractEntry test/mocha-globals.js
1516 silly gunzTarPerm extractEntry test/project-manager.spec.js
1517 silly gunzTarPerm extractEntry test/project-structure-manager.spec.js
1518 silly gunzTarPerm extractEntry test/request.spec.js
1519 silly gunzTarPerm extractEntry test/browser/connection.coffee
1520 silly gunzTarPerm extractEntry test/browser/doc.coffee
1521 silly gunzTarPerm extractEntry .History.md.un~
1522 silly gunzTarPerm extractEntry lib/layouts.js
1523 silly gunzTarPerm extractEntry lib/levels.js
1524 silly gunzTarPerm extractEntry examples/sockjs/index.js
1525 silly gunzTarPerm extractEntry dist/lodash.compat.js
1526 silly gunzTarPerm extractEntry dist/lodash.compat.min.js
1527 silly gunzTarPerm extractEntry lib/index.js
1528 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.10.3/nodetime_native.node
1529 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.10.4/nodetime_native.node
1530 silly gunzTarPerm extractEntry lib/memory.js
1531 silly gunzTarPerm extractEntry .package.json.un~
1532 silly gunzTarPerm extractEntry .travis.yml
1533 silly gunzTarPerm extractEntry examples/sockjs/server.js
1534 silly gunzTarPerm extractEntry examples/sockjs/share-textarea.js
1535 silly gunzTarPerm extractEntry .travis.yml
1536 silly gunzTarPerm extractEntry lib/defaultLogger.js
1537 silly gunzTarPerm extractEntry lib/patch.js
1538 silly gunzTarPerm extractEntry lib/proto.js
1539 silly gunzTarPerm extractEntry lib/ot.js
1540 silly gunzTarPerm extractEntry lib/ratelimit.js
1541 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.10.5/nodetime_native.node
1542 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.10.6/nodetime_native.node
1543 silly gunzTarPerm extractEntry History.md
1544 silly gunzTarPerm extractEntry test/common-index.js
1545 silly gunzTarPerm extractEntry lib/utils.js
1546 silly gunzTarPerm extractEntry lib/middleware/basicAuth.js
1547 silly gunzTarPerm extractEntry test/browser/queries.coffee
1548 silly gunzTarPerm extractEntry test/browser/subscribed.coffee
1549 silly gunzTarPerm extractEntry lib/log4js.js
1550 silly gunzTarPerm extractEntry lib/logger.js
1551 silly gunzTarPerm extractEntry lib/scripts/bulkGetOpsSince.lua
1552 silly gunzTarPerm extractEntry lib/scripts/getOps.lua
1553 silly gunzTarPerm extractEntry LICENSE-MIT-SockJS
1554 silly gunzTarPerm extractEntry Makefile
1555 silly gunzTarPerm extractEntry test/index.js
1556 silly gunzTarPerm extractEntry test/tap-index.js
1557 silly gunzTarPerm extractEntry lib/scripts/setExpire.lua
1558 silly gunzTarPerm extractEntry lib/scripts/submit.lua
1559 silly gunzTarPerm extractEntry .jshintrc
1560 silly gunzTarPerm extractEntry amqp-0-9-1-rabbit.xml
1561 silly gunzTarPerm extractEntry test/helpers/mersenne.js
1562 silly gunzTarPerm extractEntry test/helpers/ot_number.js
1563 silly gunzTarPerm extractEntry lib/appenders/categoryFilter.js
1564 silly gunzTarPerm extractEntry lib/appenders/clustered.js
1565 silly gunzTarPerm extractEntry examples/echo/package.json
1566 silly gunzTarPerm extractEntry examples/echo/README.md
1567 silly gunzTarPerm extractEntry newrelic.js
1568 silly gunzTarPerm extractEntry stub_api.js
1569 silly gunzTarPerm extractEntry examples/sockjs/index.html
1570 silly gunzTarPerm extractEntry lib/browserchannel.js
1571 silly gunzTarPerm extractEntry lib/middleware/errorHandler.js
1572 silly gunzTarPerm extractEntry lib/middleware/favicon.js
1573 silly gunzTarPerm extractEntry amqp-0-9-1.xml
1574 silly gunzTarPerm extractEntry .travis.yml
1575 silly gunzTarPerm extractEntry lib/appenders/console.js
1576 silly gunzTarPerm extractEntry lib/appenders/dateFile.js
1577 silly gunzTarPerm extractEntry examples/echo/server.js
1578 silly gunzTarPerm extractEntry examples/echo/index.html
1579 silly gunzTarPerm extractEntry test/.index.js.un~
1580 silly gunzTarPerm extractEntry lib/client/Client.js
1581 silly gunzTarPerm extractEntry lib/server/RedisData.js
1582 silly gunzTarPerm extractEntry lib/index.js
1583 silly gunzTarPerm extractEntry lib/sockjs.js
1584 silly gunzTarPerm extractEntry bin/tracetractor
1585 silly gunzTarPerm extractEntry .jshintrc
1586 silly gunzTarPerm extractEntry test/helpers/fixtures.coffee
1587 silly gunzTarPerm extractEntry test/helpers/index.coffee
1588 silly gunzTarPerm extractEntry index.js
1589 silly gunzTarPerm extractEntry test.js
1590 silly gunzTarPerm extractEntry lib/middleware/json.js
1591 silly gunzTarPerm extractEntry lib/middleware/limit.js
1592 silly gunzTarPerm extractEntry lib/server/Server.js
1593 silly gunzTarPerm extractEntry lib/server/httpApi.js
1594 silly gunzTarPerm extractEntry test/browserchannel.coffee
1595 silly gunzTarPerm extractEntry test/sockjs.coffee
1596 silly lockFile 2b6b1f44-171509-node-modules-livedb-mongo tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb-mongo
1597 silly lockFile 2b6b1f44-171509-node-modules-livedb-mongo tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb-mongo
1598 silly lockFile 7df814c7-m-livedb-mongo-0-2-6-package-tgz tar:///home/sharejs/.npm/livedb-mongo/0.2.6/package.tgz
1599 silly lockFile 7df814c7-m-livedb-mongo-0-2-6-package-tgz tar:///home/sharejs/.npm/livedb-mongo/0.2.6/package.tgz
1600 silly gunzTarPerm extractEntry generate_commands.js
1601 silly gunzTarPerm extractEntry lib/commands.js
1602 info preinstall [email protected]
1603 silly gunzTarPerm extractEntry examples/express/package.json
1604 silly gunzTarPerm extractEntry examples/express/server.js
1605 silly gunzTarPerm extractEntry lib/middleware/directory.js
1606 silly gunzTarPerm extractEntry lib/middleware/methodOverride.js
1607 silly gunzTarPerm extractEntry test/helpers/phantom.coffee
1608 silly gunzTarPerm extractEntry test/helpers/randomizer.coffee
1609 verbose readDependencies using package.json deps
1610 silly lockFile 5a1a2acb-218171509-node-modules-commander tar:///var/www/sharejs/releases/20131218171509/node_modules/commander
1611 silly lockFile 5a1a2acb-218171509-node-modules-commander tar:///var/www/sharejs/releases/20131218171509/node_modules/commander
1612 verbose readDependencies using package.json deps
1613 silly lockFile 6fcd1c5f-131218171509-node-modules-rbytes tar:///var/www/sharejs/releases/20131218171509/node_modules/rbytes
1614 silly lockFile 6fcd1c5f-131218171509-node-modules-rbytes tar:///var/www/sharejs/releases/20131218171509/node_modules/rbytes
1615 silly lockFile 4c38a4c2--npm-commander-2-0-0-package-tgz tar:///home/sharejs/.npm/commander/2.0.0/package.tgz
1616 silly lockFile 4c38a4c2--npm-commander-2-0-0-package-tgz tar:///home/sharejs/.npm/commander/2.0.0/package.tgz
1617 silly lockFile fb1b67cd-ejs-npm-rbytes-1-0-0-package-tgz tar:///home/sharejs/.npm/rbytes/1.0.0/package.tgz
1618 silly lockFile fb1b67cd-ejs-npm-rbytes-1-0-0-package-tgz tar:///home/sharejs/.npm/rbytes/1.0.0/package.tgz
1619 verbose cache add [ 'mongoskin@~0.5', null ]
1620 verbose cache add name=undefined spec="mongoskin@~0.5" args=["mongoskin@~0.5",null]
1621 verbose parsed url { protocol: null,
1621 verbose parsed url slashes: null,
1621 verbose parsed url auth: null,
1621 verbose parsed url host: null,
1621 verbose parsed url port: null,
1621 verbose parsed url hostname: null,
1621 verbose parsed url hash: null,
1621 verbose parsed url search: null,
1621 verbose parsed url query: null,
1621 verbose parsed url pathname: 'mongoskin@~0.5',
1621 verbose parsed url path: 'mongoskin@~0.5',
1621 verbose parsed url href: 'mongoskin@~0.5' }
1622 verbose cache add name="mongoskin" spec="~0.5" args=["mongoskin","~0.5"]
1623 verbose parsed url { protocol: null,
1623 verbose parsed url slashes: null,
1623 verbose parsed url auth: null,
1623 verbose parsed url host: null,
1623 verbose parsed url port: null,
1623 verbose parsed url hostname: null,
1623 verbose parsed url hash: null,
1623 verbose parsed url search: null,
1623 verbose parsed url query: null,
1623 verbose parsed url pathname: '~0.5',
1623 verbose parsed url path: '~0.5',
1623 verbose parsed url href: '~0.5' }
1624 verbose addNamed [ 'mongoskin', '~0.5' ]
1625 verbose addNamed [ null, '>=0.5.0-0 <0.6.0-0' ]
1626 silly lockFile 34af0aad-mongoskin-0-5 mongoskin@~0.5
1627 verbose lock mongoskin@~0.5 /home/sharejs/.npm/34af0aad-mongoskin-0-5.lock
1628 silly gunzTarPerm extractEntry bin/client.js
1629 silly gunzTarPerm extractEntry bin/server.js
1630 silly addNameRange { name: 'mongoskin',
1630 silly addNameRange range: '>=0.5.0-0 <0.6.0-0',
1630 silly addNameRange hasData: false }
1631 silly gunzTarPerm extractEntry lib/appenders/file.js
1632 silly gunzTarPerm extractEntry lib/appenders/gelf.js
1633 silly gunzTarPerm extractEntry examples/.npmignore
1634 silly gunzTarPerm extractEntry examples/express/random-delays/express_random_delays.js
1635 info preinstall [email protected]
1636 info preinstall [email protected]
1637 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.10.7/nodetime_native.node
1638 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.10.8/nodetime_native.node
1639 silly gunzTarPerm extractEntry History.md
1640 silly gunzTarPerm extractEntry lib/amqp-definitions-0-9-1.js
1641 verbose readDependencies using package.json deps
1642 silly gunzTarPerm extractEntry lib/queue.js
1643 silly gunzTarPerm extractEntry lib/to_array.js
1644 silly gunzTarPerm extractEntry examples/express/index.html
1645 silly gunzTarPerm extractEntry examples/express-3.x/package.json
1646 verbose readDependencies using package.json deps
1647 verbose url raw mongoskin
1648 verbose url resolving [ 'https://registry.npmjs.org/', './mongoskin' ]
1649 verbose url resolved https://registry.npmjs.org/mongoskin
1650 info trying registry request attempt 1 at 17:18:16
1651 verbose etag "52WA4VFVWQXIKCBD73JXRYD5C"
1652 http GET https://registry.npmjs.org/mongoskin
1653 verbose readDependencies using package.json deps
1654 silly resolved []
1655 verbose about to build /var/www/sharejs/releases/20131218171509/node_modules/commander
1656 info build /var/www/sharejs/releases/20131218171509/node_modules/commander
1657 verbose linkStuff [ false,
1657 verbose linkStuff false,
1657 verbose linkStuff false,
1657 verbose linkStuff '/var/www/sharejs/releases/20131218171509/node_modules' ]
1658 info linkStuff [email protected]
1659 verbose linkBins [email protected]
1660 verbose linkMans [email protected]
1661 verbose rebuildBundles [email protected]
1662 verbose readDependencies using package.json deps
1663 silly resolved []
1664 verbose about to build /var/www/sharejs/releases/20131218171509/node_modules/rbytes
1665 info build /var/www/sharejs/releases/20131218171509/node_modules/rbytes
1666 verbose linkStuff [ false,
1666 verbose linkStuff false,
1666 verbose linkStuff false,
1666 verbose linkStuff '/var/www/sharejs/releases/20131218171509/node_modules' ]
1667 info linkStuff [email protected]
1668 verbose linkBins [email protected]
1669 verbose linkMans [email protected]
1670 verbose rebuildBundles [email protected]
1671 info install [email protected]
1672 info install [email protected]
1673 silly gunzTarPerm extractEntry test/test.data.js
1674 silly gunzTarPerm extractEntry test/test.js
1675 silly gunzTarPerm extractEntry lib/middleware/multipart.js
1676 silly gunzTarPerm extractEntry lib/middleware/query.js
1677 verbose unsafe-perm in lifecycle true
1678 silly gunzTarPerm extractEntry test/helpers/server.coffee
1679 silly gunzTarPerm extractEntry test/helpers/socket.coffee
1680 info postinstall [email protected]
1681 silly gunzTarPerm extractEntry lib/appenders/hookio.js
1682 silly gunzTarPerm extractEntry lib/appenders/logLevelFilter.js
1683 silly gunzTarPerm extractEntry lib/connection.js
1684 silly gunzTarPerm extractEntry lib/constants.js
1685 silly gunzTarPerm extractEntry examples/express/random-delays/express_random_delays.jmx
1686 silly gunzTarPerm extractEntry examples/express/sequelize/package.json
1687 silly gunzTarPerm extractEntry thalassa-deps-licenses.txt
1688 silly gunzTarPerm extractEntry examples/express-3.x/server.js
1689 silly gunzTarPerm extractEntry examples/express-3.x/index.html
1690 silly gunzTarPerm extractEntry lib/middleware/responseTime.js
1691 silly gunzTarPerm extractEntry lib/middleware/urlencoded.js
1692 silly gunzTarPerm extractEntry test/helpers/webclient.coffee
1693 silly gunzTarPerm extractEntry test/server/query.coffee
1694 silly gunzTarPerm extractEntry lib/debug.js
1695 silly gunzTarPerm extractEntry lib/definitions.js
1696 silly gunzTarPerm extractEntry examples/express/sequelize/.npmignore
1697 silly gunzTarPerm extractEntry examples/express/sequelize/express_sequelize.js
1698 silly gunzTarPerm extractEntry examples/haproxy.cfg
1699 silly gunzTarPerm extractEntry examples/multiplex/package.json
1700 silly gunzTarPerm extractEntry examples/express/sequelize/architecture/sequelize-bootstrapped.js
1701 silly gunzTarPerm extractEntry examples/express/sequelize/architecture/sequelize-dal/package.json
1702 silly gunzTarPerm extractEntry lib/util.js
1703 silly gunzTarPerm extractEntry lib/parser/hiredis.js
1704 silly gunzTarPerm extractEntry examples/multiplex/README.md
1705 silly gunzTarPerm extractEntry examples/multiplex/server.js
1706 silly gunzTarPerm extractEntry lib/appenders/multiprocess.js
1707 silly gunzTarPerm extractEntry lib/appenders/smtp.js
1708 silly gunzTarPerm extractEntry lib/middleware/csrf.js
1709 silly gunzTarPerm extractEntry lib/middleware/session.js
1710 silly gunzTarPerm extractEntry examples/multiplex/index.html
1711 silly gunzTarPerm extractEntry examples/test_server/package.json
1712 silly gunzTarPerm extractEntry examples/express/sequelize/architecture/sequelize-dal/index.js
1713 silly gunzTarPerm extractEntry examples/http/cluster/http_with_cluster.js
1714 silly gunzTarPerm extractEntry lib/log4js.json
1715 silly gunzTarPerm extractEntry lib/streams/BaseRollingFileStream.js
1716 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.10.9/nodetime_native.node
1717 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.0/nodetime_native.node
1718 silly gunzTarPerm extractEntry test/server/connection.coffee
1719 silly gunzTarPerm extractEntry test/server/integration.coffee
1720 silly gunzTarPerm extractEntry examples/http/minimal/http_minimal.js
1721 silly gunzTarPerm extractEntry examples/http/random-delays/http_random_delays.js
1722 silly gunzTarPerm extractEntry examples/test_server/README.md
1723 silly gunzTarPerm extractEntry examples/test_server/config.js
1724 silly gunzTarPerm extractEntry lib/streams/DateRollingFileStream.js
1725 silly gunzTarPerm extractEntry lib/streams/RollingFileStream.js
1726 silly gunzTarPerm extractEntry lib/middleware/cookieSession.js
1727 silly gunzTarPerm extractEntry lib/middleware/static.js
1728 silly gunzTarPerm extractEntry test/server/json-api.coffee
1729 silly gunzTarPerm extractEntry test/server/microevent.coffee
1730 silly gunzTarPerm extractEntry examples/http/simple/http_simple.js
1731 silly gunzTarPerm extractEntry examples/restify/elasticsearch/package.json
1732 silly gunzTarPerm extractEntry examples/test_server/server.js
1733 silly gunzTarPerm extractEntry examples/test_server/sockjs_app.js
1734 silly gunzTarPerm extractEntry test/server/middleware.coffee
1735 silly gunzTarPerm extractEntry test/server/doc.coffee
1736 http 304 https://registry.npmjs.org/mongoskin
1737 silly registry.get cb [ 304,
1737 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
1737 silly registry.get etag: '"52WA4VFVWQXIKCBD73JXRYD5C"',
1737 silly registry.get date: 'Wed, 18 Dec 2013 17:18:17 GMT',
1737 silly registry.get 'content-length': '0' } ]
1738 verbose etag mongoskin from cache
1739 silly lockFile db13ce97-18171509-node-modules-node-codio tar:///var/www/sharejs/releases/20131218171509/node_modules/node-codio
1740 silly lockFile db13ce97-18171509-node-modules-node-codio tar:///var/www/sharejs/releases/20131218171509/node_modules/node-codio
1741 silly gunzTarPerm extractEntry test/memory.coffee
1742 silly gunzTarPerm extractEntry test/mocha.opts
1743 silly gunzTarPerm extractEntry lib/streams/index.js
1744 silly gunzTarPerm extractEntry .travis.yml
1745 silly gunzTarPerm extractEntry lib/chunking-test.js
1746 silly gunzTarPerm extractEntry lib/sockjs.js
1747 silly gunzTarPerm extractEntry lib/middleware/cookieParser.js
1748 silly gunzTarPerm extractEntry lib/middleware/staticCache.js
1749 silly lockFile 99388702-npm-node-codio-0-0-1-package-tgz tar:///home/sharejs/.npm/node-codio/0.0.1/package.tgz
1750 silly lockFile 99388702-npm-node-codio-0-0-1-package-tgz tar:///home/sharejs/.npm/node-codio/0.0.1/package.tgz
1751 silly gunzTarPerm extractEntry examples/restify/elasticsearch/server.js
1752 silly gunzTarPerm extractEntry examples/restify/mongoose/.npmignore
1753 info preinstall [email protected]
1754 silly addNameRange number 2 { name: 'mongoskin', range: '>=0.5.0-0 <0.6.0-0', hasData: true }
1755 silly addNameRange versions [ 'mongoskin',
1755 silly addNameRange [ '0.1.0',
1755 silly addNameRange '0.1.1',
1755 silly addNameRange '0.1.2',
1755 silly addNameRange '0.1.3',
1755 silly addNameRange '0.2.0',
1755 silly addNameRange '0.2.1',
1755 silly addNameRange '0.2.2',
1755 silly addNameRange '0.2.3',
1755 silly addNameRange '0.3.0',
1755 silly addNameRange '0.3.3',
1755 silly addNameRange '0.3.4',
1755 silly addNameRange '0.3.5',
1755 silly addNameRange '0.3.6',
1755 silly addNameRange '0.3.7',
1755 silly addNameRange '0.4.0',
1755 silly addNameRange '0.4.1',
1755 silly addNameRange '0.4.2',
1755 silly addNameRange '0.4.3',
1755 silly addNameRange '0.4.4',
1755 silly addNameRange '0.5.0',
1755 silly addNameRange '0.6.0',
1755 silly addNameRange '0.6.1' ] ]
1756 verbose addNamed [ 'mongoskin', '0.5.0' ]
1757 verbose addNamed [ '0.5.0', '0.5.0' ]
1758 silly lockFile 7f00e4ca-mongoskin-0-5-0 [email protected]
1759 verbose lock [email protected] /home/sharejs/.npm/7f00e4ca-mongoskin-0-5-0.lock
1760 silly gunzTarPerm extractEntry test/server/rest.coffee
1761 silly gunzTarPerm extractEntry test/server/session.coffee
1762 verbose readDependencies using package.json deps
1763 silly gunzTarPerm extractEntry .jshintrc
1764 silly gunzTarPerm extractEntry examples/example-connect-logger.js
1765 verbose readDependencies using package.json deps
1766 verbose cache add [ 'lodash@~2.4.0', null ]
1767 verbose cache add name=undefined spec="lodash@~2.4.0" args=["lodash@~2.4.0",null]
1768 verbose parsed url { protocol: null,
1768 verbose parsed url slashes: null,
1768 verbose parsed url auth: null,
1768 verbose parsed url host: null,
1768 verbose parsed url port: null,
1768 verbose parsed url hostname: null,
1768 verbose parsed url hash: null,
1768 verbose parsed url search: null,
1768 verbose parsed url query: null,
1768 verbose parsed url pathname: 'lodash@~2.4.0',
1768 verbose parsed url path: 'lodash@~2.4.0',
1768 verbose parsed url href: 'lodash@~2.4.0' }
1769 verbose cache add name="lodash" spec="~2.4.0" args=["lodash","~2.4.0"]
1770 verbose parsed url { protocol: null,
1770 verbose parsed url slashes: null,
1770 verbose parsed url auth: null,
1770 verbose parsed url host: null,
1770 verbose parsed url port: null,
1770 verbose parsed url hostname: null,
1770 verbose parsed url hash: null,
1770 verbose parsed url search: null,
1770 verbose parsed url query: null,
1770 verbose parsed url pathname: '~2.4.0',
1770 verbose parsed url path: '~2.4.0',
1770 verbose parsed url href: '~2.4.0' }
1771 verbose addNamed [ 'lodash', '~2.4.0' ]
1772 verbose addNamed [ null, '>=2.4.0-0 <2.5.0-0' ]
1773 silly lockFile d594f717-lodash-2-4-0 lodash@~2.4.0
1774 verbose lock lodash@~2.4.0 /home/sharejs/.npm/d594f717-lodash-2-4-0.lock
1775 silly gunzTarPerm extractEntry lib/trans-eventsource.js
1776 silly gunzTarPerm extractEntry lib/trans-htmlfile.js
1777 silly addNameRange { name: 'lodash', range: '>=2.4.0-0 <2.5.0-0', hasData: false }
1778 silly gunzTarPerm extractEntry lib/middleware/compress.js
1779 silly gunzTarPerm extractEntry lib/middleware/timeout.js
1780 silly gunzTarPerm extractEntry test/server/testhelpers.coffee
1781 silly gunzTarPerm extractEntry test/server/text-api.coffee
1782 verbose url raw lodash
1783 verbose url resolving [ 'https://registry.npmjs.org/', './lodash' ]
1784 verbose url resolved https://registry.npmjs.org/lodash
1785 info trying registry request attempt 1 at 17:18:17
1786 verbose etag "93VVQDOQAAMK99ABRCM1ZYFHK"
1787 http GET https://registry.npmjs.org/lodash
1788 silly lockFile e3b54737-8171509-node-modules-querystring tar:///var/www/sharejs/releases/20131218171509/node_modules/querystring
1789 silly lockFile e3b54737-8171509-node-modules-querystring tar:///var/www/sharejs/releases/20131218171509/node_modules/querystring
1790 silly lockFile 26742a22-pm-querystring-0-2-0-package-tgz tar:///home/sharejs/.npm/querystring/0.2.0/package.tgz
1791 silly lockFile 26742a22-pm-querystring-0-2-0-package-tgz tar:///home/sharejs/.npm/querystring/0.2.0/package.tgz
1792 silly gunzTarPerm extractEntry examples/example-socket.js
1793 silly gunzTarPerm extractEntry examples/example.js
1794 silly lockFile 7f00e4ca-mongoskin-0-5-0 [email protected]
1795 silly lockFile 7f00e4ca-mongoskin-0-5-0 [email protected]
1796 silly gunzTarPerm extractEntry examples/restify/mongoose/restify_mongoose.js
1797 silly gunzTarPerm extractEntry examples/restify/mongoose/architecture/mongoose-bootstrapped.js
1798 silly lockFile 34af0aad-mongoskin-0-5 mongoskin@~0.5
1799 silly lockFile 34af0aad-mongoskin-0-5 mongoskin@~0.5
1800 silly gunzTarPerm extractEntry lib/iframe.js
1801 silly gunzTarPerm extractEntry lib/trans-websocket.js
1802 silly resolved [ { name: 'mongoskin',
1802 silly resolved description: 'The future layer above node-mongodb-native',
1802 silly resolved version: '0.5.0',
1802 silly resolved author: { name: 'Gui Lin', email: '[email protected]' },
1802 silly resolved homepage: 'https://github.com/kissjs/node-mongoskin',
1802 silly resolved repository:
1802 silly resolved { type: 'git',
1802 silly resolved url: 'git://github.com/guileen/node-mongoskin.git' },
1802 silly resolved bugs: { url: 'https://github.com/kissjs/node-mongoskin/issues' },
1802 silly resolved main: './index.js',
1802 silly resolved keywords: [ 'mongodb', 'database', 'nosql' ],
1802 silly resolved engines: { node: '>= 0.4.0' },
1802 silly resolved dependencies: { mongodb: '1.2.x' },
1802 silly resolved devDependencies: { mocha: '*', jscover: '*', should: '*' },
1802 silly resolved scripts: { test: 'make test' },
1802 silly resolved directories: { example: './examples', lib: './lib/mongoskin' },
1802 silly resolved license: 'MIT',
1802 silly resolved contributors:
1802 silly resolved [ [Object],
1802 silly resolved [Object],
1802 silly resolved [Object],
1802 silly resolved [Object],
1802 silly resolved [Object],
1802 silly resolved [Object],
1802 silly resolved [Object],
1802 silly resolved [Object],
1802 silly resolved [Object],
1802 silly resolved [Object],
1802 silly resolved [Object],
1802 silly resolved [Object] ],
1802 silly resolved readme: '# mongoskin [![Build Status](https://secure.travis-ci.org/kissjs/node-mongoskin.png)](http://travis-ci.org/kissjs/node-mongoskin)\n\n![logo](https://raw.github.com/kissjs/node-mongoskin/master/logo.png)\n\nThis project is a wrapper of [node-mongodb-native](https://github.com/mongodb/node-mongodb-native).\nThe api is same to node-mongodb-native, please see the [document](http://mongodb.github.com/node-mongodb-native/) first.\n\n## Test\n\n* test results: [test_results.md](https://github.com/kissjs/node-mongoskin/blob/master/test_results.md)\n* jscoverage: [**89%**](http://fengmk2.github.com/coverage/mongoskin.html)\n\n## Test pass [mongodb] versions\n\n* <del>>= 0.9.8 < 1.0.0</del>: mongodb have bug, it will throw a `TypeError: object is not a function` \n when connection open error.\n* <del>1.0.x</del>\n* <del>1.1.x</del>\n* 1.2.x\n\n```bash\n$ make test\n```\n\n<a name=\'index\'>\n\n# Mongoskin document\n\n* [Nodejs mongodb drivers comparation](#comparation)\n* [Install](#install)\n* [Quick Start](#quickstart)\n * [Connect easier](#quickstart-1)\n * [Server options and BSON options](#quickstart-2)\n * [Similar API with node-mongodb-native](#quickstart-3)\n * [Cursor easier](#quickstart-4)\n * [MVC helper](#quickstart-5)\n* [Documentation](#documentation)\n * [Module](#module)\n * [SkinServer](#skinserver)\n * [SkinDb](#skindb)\n * [SkinCollection](#skincollection)\n * [Additional methods](#additional-collection-op)\n * [Collection operation](#inherit-collection-op)\n * [Indexes](#inherit-indexes)\n * [Querying](#inherit-query)\n * [Aggregation](#inherit-aggregation)\n * [Inserting](#inherit-inserting)\n * [Updating](#inherit-updating)\n * [Removing](#inherit-removing)\n * [SkinCursor](#skincursor)\n\n<a name=\'comparation\'>\n\nNodejs Mongodb Driver Comparison\n========\n\nnode-mongodb-native\n--------\n\nOne of the most powerful Mongo drivers is node-mongodb-native. Most other drivers build\non top of it, including mongoskin. Unfortunately, it has an awkward interface with too many \ncallbacks. Also, mongoskin needs a way to hold a Collection instance as an MVC model.\n \nSee [mongodb-native](https://github.com/christkv/node-mongodb-native/tree/master/docs)\n\nmongoose\n--------\n\nMongoose provides an ORM way to hold Collection instance as Model,\n you should define schema first. But why mongodb need schema?\n Some guys like me, want to write code from application layer but not database layer,\n and we can use any fields without define it before.\n\n Mongoose provide a DAL that you can do validation, and write your middlewares.\n But some guys like me would like to validate manually, I think it is the tao of mongodb.\n\n If you don\'t thinks so, [Mongoose-ORM](https://github.com/LearnBoost/mongoose) is probably your choice.\n\nmongoskin\n--------\n\nMongoskin is an easy to use driver of mongodb for nodejs,\n it is similar with mongo shell, powerful like node-mongodb-native,\n and support additional javascript method binding, which make it can act as a Model(in document way).\n\nIt will provide full features of [node-mongodb-native](https://github.com/christkv/node-mongodb-native),\n and make it [future](http://en.wikipedia.org/wiki/Future_%28programming%29).\n\nIf you need validation, you can use [node-iform](https://github.com/guileen/node-iform).\n\n[Back to index](#index)\n\n<a name=\'install\'></a>\n\nInstall\n========\n\n```bash\n$ npm install mongoskin\n```\n\n[Back to index](#index)\n\n\n<a name=\'quickstart\'></a>\n\nQuick Start\n========\n\n **Is mongoskin synchronized?**\n\nNope! It is asynchronized, it use the [future pattern](http://en.wikipedia.org/wiki/Future_%28programming%29).\n**Mongoskin** is the future layer above [node-mongodb-native](https://github.com/christkv/node-mongodb-native)\n\n<a name=\'quickstart-1\'></a>\n\nConnect easier\n--------\nYou can connect to mongodb easier now.\n\n```js\nvar mongo = require(\'mongoskin\');\nmongo.db(\'localhost:27017/testdb\').collection(\'blog\').find().toArray(function (err, items) {\n console.dir(items);\n})\n```\n\n<a name=\'quickstart-2\'></a>\n\nServer options and BSON options\n--------\nYou can also set `auto_reconnect` options querystring.\nAnd native_parser options will automatically set if native_parser is available.\n\n```js\nvar mongo = require(\'mongoskin\');\nvar db = mongo.db(\'localhost:27017/test?auto_reconnect\');\n```\n\n<a name=\'quickstart-3\'></a>\n\nSimilar API with node-mongodb-native\n--------\nYou can do everything that node-mongodb-native can do.\n\n```js\ndb.createCollection(...);\ndb.collection(\'user\').ensureIndex([[\'username\', 1]], true, function (err, replies) {});\ndb.collection(\'posts\').hint = \'slug\';\ndb.collection(\'posts\').findOne({slug: \'whats-up\'}, function (err, post) {\n // do something\n});\n```\n\n<a name=\'quickstart-4\'></a>\n\nCursor easier\n--------\n\n```js\ndb.collection(\'posts\').find().toArray(function (err, posts) {\n // do something\n});\n```\n\n<a name=\'quickstart-5\'></a>\n\nMVC helper\n--------\n\nYou can bind **additional methods** for collection.\nIt is very useful if you want to use MVC patterns with nodejs and mongodb.\nYou can also invoke collection by properties after bind,\nit could simplfy your `require`.\n\nTo keep your code in line with DRY principles, it\'s possible to create your own\ndata layer by for example, setting up your own validators and/or default values\ninside the MVC methods as shown below in the config example\n\n```js\ndb.bind(\'posts\', {\n findTop10 : function (fn) {\n this.find({}, {limit:10, sort:[[\'views\', -1]]}).toArray(fn);\n },\n removeTagWith : function (tag, fn) {\n this.remove({tags:tag},fn);\n }\n } \n});\n\ndb.bind(\'settings\', {\n\n getAll: function(user, fn) {\n \n \tthis.find({user: user}).toArray(function(err, settings) {\n \t\n \t // We want to set a default currency from within our app instead of storing it\n \t // for every user\n \t settings.currency = (typeof settings.currency !== "undefined") ? settings.currency : \'USD\';\n \t\t\n \t fn(err, settings);\n \t\n \t});\n }\n});\n\n \ndb.bind(\'comments\');\n\ndb.collection(\'posts\').removeTagWith(\'delete\', function (err, replies) {\n //do something\n});\n\ndb.posts.findTop10(function (err, topPosts) {\n //do something\n});\n\ndb.comments.find().toArray(function (err, comments) {\n //do something\n});\n```\n\n[Back to index](#index)\n\n\n<a name=\'documentation\'>\n\nDocumentation\n========\n\nfor more information, see the source.\n\n[Back to index](#index)\n\n\n<a name=\'module\'>\n\nModule\n--------\n\n### MongoSkin Url format\n\n```\n[*://][username:password@]host[:port][/database][?auto_reconnect[=true|false]]`\n```\n\ne.g.\n\n```\nlocalhost/blog\nmongo://admin:[email protected]:27017/blog?auto_reconnect\n127.0.0.1?auto_reconnect=false\n```\n\n### db(serverURL[s], dbOptions, replicasetOptions)\n\nGet or create instance of [SkinDb](#skindb).\n\n```js\nvar db = mongoskin.db(\'localhost:27017/testdb?auto_reconnect=true&poolSize=5\');\n```\n\nfor ReplSet server\n\n```js\nvar db = mongoskin.db([\n \'192.168.0.1:27017/?auto_reconnect=true\',\n \'192.168.0.2:27017/?auto_reconnect=true\',\n \'192.168.0.3:27017/?auto_reconnect=true\'\n], {\n database: \'testdb\',\n safe: true\n}, {\n connectArbiter: false,\n socketOptions: {\n timeout: 2000\n }\n});\n```\n\n### router(select)\n\nselect is `function(collectionName)` returns a database instance, means router collectionName to that database.\n\n```js\nvar db = mongo.router(function (coll_name) {\n switch(coll_name) {\n case \'user\':\n case \'message\':\n return mongo.db(\'192.168.1.3/auth_db\');\n default:\n return mongo.db(\'192.168.1.2/app_db\');\n }\n});\ndb.bind(\'user\', require(\'./shared-user-methods\'));\nvar users = db.user; //auth_db.user\nvar messages = db.collection(\'message\'); // auth_db.message\nvar products = db.collection(\'product\'); //app_db.product\n```\n\n### classes extends frome node-mongodb-native\n\n* BSONPure\n* BSONNative\n* BinaryParser\n* Binary\n* Code\n* DBRef\n* Double\n* MaxKey\n* MinKey\n* ObjectID\n* Symbol\n* Timestamp\n* Long\n* BaseCommand\n* DbCommand\n* DeleteCommand\n* GetMoreCommand\n* InsertCommand\n* KillCursorCommand\n* QueryCommand\n* UpdateCommand\n* MongoReply\n* Admin\n* Collection\n* Connection\n* Server\n* ReplSetServers\n* Cursor\n* Db\n* connect\n* Grid\n* Chunk\n* GridStore\n* native\n* pure\n\n\n[Back to index](#index)\n\n<a name=\'skinserver\'>\n\nSkinServer\n--------\n\n### SkinServer(server)\n\nConstruct SkinServer from native Server instance.\n\n### db(dbname, username=null, password=null)\n\nConstruct [SkinDb](#skindb) from SkinServer.\n\n[Back to index](#index)\n\n<a name=\'skindb\'>\n\nSkinDb\n--------\n\n### SkinDb(db, username=null, password=null)\n\nConstruct SkinDb.\n\n### open(callback)\n\nConnect to database, retrieval native\n[Db](https://github.com/christkv/node-mongodb-native/blob/master/lib/mongodb/db.js#L17)\ninstance, callback is function(err, db).\n\n### collection(collectionName)\n\nRetrieval [SkinCollection](#skincollection) instance of specified collection name.\n\n<a name=\'skindb-bind\'>\n\n### bind(collectionName)\n\n### bind(collectionName, SkinCollection)\n\n### bind(collectionName, extendObject1, extendObject2 ...)\n\nBind [SkinCollection](#skincollection) to db properties as a shortcut to db.collection(name).\nYou can also bind additional methods to the SkinCollection, it is useful when\nyou want to reuse a complex operation. This will also affect\ndb.collection(name) method.\n\ne.g.\n\n```js\ndb.bind(\'book\', {\n firstBook: function (fn) {\n this.findOne(fn);\n }\n});\ndb.book.firstBook(function (err, book) {});\n```\n\n### all the methods from Db.prototype\n\nSee [Db](https://github.com/christkv/node-mongodb-native/blob/master/lib/mongodb/db.js#L17) of node-mongodb-native for more information.\n\n[Back to index](#index)\n\n<a name=\'skincollection\'>\n\nSkinCollection\n--------\n\nSee [Collection](https://github.com/christkv/node-mongodb-native/blob/master/lib/mongodb/collection.js#L45) of node-mongodb-native for more information.\n\n<a name=\'additional-collection-op\'>\n### open(callback)\n\nRetrieval native\n[Collection](https://github.com/christkv/node-mongodb-native/blob/master/lib/mongodb/collection.js#L45)\ninstance, callback is function(err, collection).\n\n### id(hex)\n\nEquivalent to\n\n```js\ndb.bson_serializer.ObjectID.createFromHexString(hex);\n```\n\nSee [ObjectID.createFromHexString](https://github.com/christkv/node-mongodb-native/blob/master/lib/mongodb/bson/bson.js#L548)\n\n\n<a name=\'inherit-collection-op\'>\n\n### Collection operation\n\n```js\ncheckCollectionName(collectionName)\noptions(callback)\nrename(collectionName, callback)\ndrop(callback)\n```\n\n<a name=\'inherit-indexes\'>\n\n### Indexes\n\n```js\ncreateIndex(fieldOrSpec, unique, callback)\nensureIndex(fieldOrSpec, unique, callback)\nindexInformation(callback)\ndropIndex(indexName, callback)\ndropIndexes(callback)\n```\n \nSee [mongodb-native indexes](https://github.com/christkv/node-mongodb-native/blob/master/docs/indexes.md)\n\n<a name=\'inherit-query\'>\n\n### Queries\n\nSee [mongodb-native queries](https://github.com/christkv/node-mongodb-native/blob/master/docs/queries.md)\n\n#### findItems(..., callback)\n\nEquivalent to\n\n```js\ncollection.find(..., function (err, cursor) {\n cursor.toArray(callback);\n});\n```\n\nSee [Collection.find](https://github.com/christkv/node-mongodb-native/blob/master/lib/mongodb/collection.js#L348)\n\n#### findEach(..., callback)\n\nEquivalent to\n\n```js\ncollection.find(..., function (err, cursor) {\n cursor.each(callback);\n});\n```\n\nSee [Collection.find](https://github.com/christkv/node-mongodb-native/blob/master/lib/mongodb/collection.js#L348)\n\n#### findById(id, ..., callback)\n\nEquivalent to\n\n```js\ncollection.findOne({_id, ObjectID.createFromHexString(id)}, ..., callback);\n```\n\nSee [Collection.findOne](https://github.com/christkv/node-mongodb-native/blob/master/lib/mongodb/collection.js#L417)\n\n#### find(...)\n\nIf the last parameter is function, it is equivalent to native\n[Collection.find](https://github.com/christkv/node-mongodb-native/blob/master/lib/mongodb/collection.js#L348)\nmethod, else it will return a future [SkinCursor](#skincursor).\n\ne.g.\n\n```js\n// callback\ndb.book.find({}, function (err, cursor) {/* do something */});\n// future SkinCursor\ndb.book.find().toArray(function (err, books) {/* do something */});\n```\n\n#### normalizeHintField(hint)\n\n#### find\n\n```js\n/**\n * Various argument possibilities\n * 1 callback\n * 2 selector, callback,\n * 2 callback, options // really?!\n * 3 selector, fields, callback\n * 3 selector, options, callback\n * 4,selector, fields, options, callback\n * 5 selector, fields, skip, limit, callback\n * 6 selector, fields, skip, limit, timeout, callback\n *\n * Available options:\n * limit, sort, fields, skip, hint, explain, snapshot, timeout, tailable, batchSize\n */\n```\n\n#### findAndModify(query, sort, update, options, callback) \n\n```js\n/**\n Fetch and update a collection\n query: a filter for the query\n sort: if multiple docs match, choose the first one in the specified sort order as the object to manipulate\n update: an object describing the modifications to the documents selected by the query\n options:\n remove: set to a true to remove the object before returning\n new: set to true if you want to return the modified object rather than the original. Ignored for remove.\n upsert: true/false (perform upsert operation)\n**/\n```\n\n#### findOne(queryObject, options, callback)\n\n<a name=\'inherit-aggregation\'>\n\n### Aggregation\n\n#### mapReduce(map, reduce, options, callback)\n\ne.g.\n\n```js\nvar map = function () {\n emit(test(this.timestamp.getYear()), 1);\n}\n\nvar reduce = function (k, v){\n count = 0;\n for (i = 0; i < v.length; i++) {\n count += v[i];\n }\n return count;\n}\nvar options = {scope: {test: new client.bson_serializer.Code(t.toString())}};\ncollection.mapReduce(map, reduce, options, function (err, collection) {\n collection.find(function (err, cursor) {\n cursor.toArray(function (err, results) {\n test.equal(2, results[0].value)\n finished_test({test_map_reduce_functions_scope:\'ok\'}); \n })\n})\n```\n\n#### group(keys, condition, initial, reduce, command, callback)\n\ne.g. \n\n```js\ncollection.group([], {}, {"count":0}, "function (obj, prev) { prev.count++; }", true, function(err, results) {});\n```\n\n#### count(query, callback)\n#### distinct(key, query, callback)\n\n<a name=\'inherit-inserting\'>\n\n### Inserting\n\n#### insert(docs, options, callback)\n\n<a name=\'inherit-updating\'>\n\n### Updating\n\n#### save(doc, options, callback)\n\n```js\n/**\n Update a single document in this collection.\n spec - a associcated array containing the fields that need to be present in\n the document for the update to succeed\n\n document - an associated array with the fields to be updated or in the case of\n a upsert operation the fields to be inserted.\n\n Options:\n upsert - true/false (perform upsert operation)\n multi - true/false (update all documents matching spec)\n strict - true/false (perform check if the operation failed, required extra call to db)\n Deprecated Options:\n safe - true/false (perform check if the operation failed, required extra call to db)\n**/\n```\n\n#### update(spec, document, options, callback)\n\n#### updateById(_id, ..., callback)\n\nEquivalent to\n\n```js\ncollection.update({_id, ObjectID.createFromHexString(id)}, ..., callback);\n```\n\nSee [Collection.update](https://github.com/christkv/node-mongodb-native/blob/master/docs/insert.md)\n\n<a name=\'inherit-removing\'>\n\n### Removing\n\n#### remove(selector, options, callback)\n\n#### removeById(_id, options, callback)\n\n[Back to index](#index)\n\n<a name=\'skincursor\'>\n\nSkinCursor\n---------\n\nSee [Cursor](https://github.com/christkv/node-mongodb-native/blob/master/lib/mongodb/cursor.js#L1)\nof node-mongodb-native for more information.\n\nAll these methods will return the SkinCursor itself.\n\n```js\nsort(keyOrList, [direction], [callback])\nlimit(limit, [callback])\nskip(skip, [callback])\nbatchSize(skip, [callback])\n\ntoArray(callback)\neach(callback)\ncount(callback)\nnextObject(callback)\ngetMore(callback)\nexplain(callback)\n```\n\n[Back to index](#index)\n\n## How to validate input?\n\nI wrote a middleware to validate post data, [node-iform](https://github.com/guileen/node-iform) \nbase on [node-validator](https://github.com/chriso/node-validator)\n\n## Authors\n\nBelow is the output from `git-summary`.\n\n```\n project: node-mongoskin\n commits: 112\n active : 54 days\n files : 39\n authors: \n 49 Lin Gui 43.8%\n 34 guilin 桂林 30.4%\n 9 fengmk2 8.0%\n 5 guilin 4.5%\n 2 François de Metz 1.8%\n 2 Paul Gebheim 1.8%\n 2 Gui Lin 1.8%\n 1 humanchimp 0.9%\n 1 Aneil Mallavarapu 0.9%\n 1 wmertens 0.9%\n 1 Harvey McQueen 0.9%\n 1 Joe Faber 0.9%\n 1 Matt Perpick 0.9%\n 1 Quang Van 0.9%\n 1 Rakshit Menpara 0.9%\n 1 Wout Mertens 0.9%\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 - 2012 kissjs.org\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',
1802 silly resolved readmeFilename: 'Readme.md',
1802 silly resolved _id: '[email protected]',
1802 silly resolved _from: 'mongoskin@~0.5' } ]
1803 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/livedb-mongo
1804 info installOne [email protected]
1805 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.1/nodetime_native.node
1806 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.10/nodetime_native.node
1807 silly lockFile 6d008e53-0131218171509-node-modules-async tar:///var/www/sharejs/releases/20131218171509/node_modules/async
1808 silly lockFile 6d008e53-0131218171509-node-modules-async tar:///var/www/sharejs/releases/20131218171509/node_modules/async
1809 silly gunzTarPerm extractEntry test/oplog.coffee
1810 silly gunzTarPerm extractEntry test/ot.coffee
1811 info /var/www/sharejs/releases/20131218171509/node_modules/livedb-mongo/node_modules/mongoskin unbuild
1812 info preinstall [email protected]
1813 silly lockFile 149b4f9e-rejs-npm-async-0-2-9-package-tgz tar:///home/sharejs/.npm/async/0.2.9/package.tgz
1814 silly lockFile 149b4f9e-rejs-npm-async-0-2-9-package-tgz tar:///home/sharejs/.npm/async/0.2.9/package.tgz
1815 silly gunzTarPerm extractEntry lib/middleware/bodyParser.js
1816 silly gunzTarPerm extractEntry lib/middleware/vhost.js
1817 verbose tar unpack /home/sharejs/.npm/mongoskin/0.5.0/package.tgz
1818 silly lockFile 0a6ceec4-edb-mongo-node-modules-mongoskin tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb-mongo/node_modules/mongoskin
1819 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb-mongo/node_modules/mongoskin /home/sharejs/.npm/0a6ceec4-edb-mongo-node-modules-mongoskin.lock
1820 silly lockFile 29102b3d--npm-mongoskin-0-5-0-package-tgz tar:///home/sharejs/.npm/mongoskin/0.5.0/package.tgz
1821 verbose lock tar:///home/sharejs/.npm/mongoskin/0.5.0/package.tgz /home/sharejs/.npm/29102b3d--npm-mongoskin-0-5-0-package-tgz.lock
1822 verbose readDependencies using package.json deps
1823 verbose readDependencies using package.json deps
1824 silly resolved []
1825 verbose about to build /var/www/sharejs/releases/20131218171509/node_modules/querystring
1826 info build /var/www/sharejs/releases/20131218171509/node_modules/querystring
1827 verbose linkStuff [ false,
1827 verbose linkStuff false,
1827 verbose linkStuff false,
1827 verbose linkStuff '/var/www/sharejs/releases/20131218171509/node_modules' ]
1828 info linkStuff [email protected]
1829 verbose linkBins [email protected]
1830 verbose linkMans [email protected]
1831 verbose rebuildBundles [email protected]
1832 info preinstall [email protected]
1833 info install [email protected]
1834 silly lockFile 12ffcc9e--node-modules-transport-adapters tar:///var/www/sharejs/releases/20131218171509/node_modules/transport-adapters
1835 silly lockFile 12ffcc9e--node-modules-transport-adapters tar:///var/www/sharejs/releases/20131218171509/node_modules/transport-adapters
1836 silly gunzTarPerm modes [ '755', '644' ]
1837 silly lockFile 60fc8962-sport-adapters-0-1-0-package-tgz tar:///home/sharejs/.npm/transport-adapters/0.1.0/package.tgz
1838 silly lockFile 60fc8962-sport-adapters-0-1-0-package-tgz tar:///home/sharejs/.npm/transport-adapters/0.1.0/package.tgz
1839 info postinstall [email protected]
1840 silly gunzTarPerm extractEntry lib/trans-xhr.js
1841 silly gunzTarPerm extractEntry lib/transport.js
1842 verbose readDependencies using package.json deps
1843 silly gunzTarPerm extractEntry examples/fromreadme.js
1844 silly gunzTarPerm extractEntry examples/log-rolling.js
1845 silly gunzTarPerm extractEntry examples/restify/mongoose/architecture/mongoose-dal/package.json
1846 silly gunzTarPerm extractEntry examples/restify/mongoose/architecture/mongoose-dal/index.js
1847 verbose readDependencies using package.json deps
1848 silly resolved []
1849 verbose about to build /var/www/sharejs/releases/20131218171509/node_modules/async
1850 info build /var/www/sharejs/releases/20131218171509/node_modules/async
1851 verbose linkStuff [ false,
1851 verbose linkStuff false,
1851 verbose linkStuff false,
1851 verbose linkStuff '/var/www/sharejs/releases/20131218171509/node_modules' ]
1852 info linkStuff [email protected]
1853 verbose linkBins [email protected]
1854 verbose linkMans [email protected]
1855 verbose rebuildBundles [email protected]
1856 info install [email protected]
1857 info preinstall [email protected]
1858 silly gunzTarPerm extractEntry test/server/useragent.coffee
1859 silly gunzTarPerm extractEntry test/server/version.coffee
1860 silly gunzTarPerm extractEntry package.json
1861 info postinstall [email protected]
1862 silly gunzTarPerm extractEntry lib/middleware/logger.js
1863 silly gunzTarPerm extractEntry lib/middleware/session/cookie.js
1864 verbose readDependencies using package.json deps
1865 verbose readDependencies using package.json deps
1866 silly resolved []
1867 verbose about to build /var/www/sharejs/releases/20131218171509/node_modules/transport-adapters
1868 info build /var/www/sharejs/releases/20131218171509/node_modules/transport-adapters
1869 verbose linkStuff [ false,
1869 verbose linkStuff false,
1869 verbose linkStuff false,
1869 verbose linkStuff '/var/www/sharejs/releases/20131218171509/node_modules' ]
1870 info linkStuff [email protected]
1871 verbose linkBins [email protected]
1872 verbose linkMans [email protected]
1873 verbose rebuildBundles [email protected]
1874 silly gunzTarPerm extractEntry .npmignore
1875 silly gunzTarPerm extractEntry LICENSE
1876 info install [email protected]
1877 silly gunzTarPerm extractEntry Makefile
1878 silly gunzTarPerm extractEntry lib/agent.js
1879 info postinstall [email protected]
1880 silly gunzTarPerm extractEntry lib/utils.js
1881 silly gunzTarPerm extractEntry lib/webjs.js
1882 silly gunzTarPerm extractEntry test/snapshotdb.coffee
1883 silly gunzTarPerm extractEntry test/test.coffee
1884 silly gunzTarPerm extractEntry bin/options.js
1885 silly gunzTarPerm extractEntry bin/setup_amazon
1886 silly gunzTarPerm extractEntry lib/middleware/session/memory.js
1887 silly gunzTarPerm extractEntry lib/middleware/session/session.js
1888 silly gunzTarPerm extractEntry index.js
1889 silly gunzTarPerm extractEntry History.md
1890 silly gunzTarPerm extractEntry examples/memory-test.js
1891 silly gunzTarPerm extractEntry examples/patternLayout-tokens.js
1892 silly gunzTarPerm extractEntry lib/dominion.js
1893 silly gunzTarPerm extractEntry lib/environment.js
1894 silly gunzTarPerm extractEntry lib/parser/javascript.js
1895 silly gunzTarPerm extractEntry examples/auth.js
1896 silly gunzTarPerm extractEntry lib/trans-jsonp.js
1897 silly gunzTarPerm extractEntry bin/setup_couch
1898 silly gunzTarPerm extractEntry bin/setup_mysql
1899 silly gunzTarPerm extractEntry .jshintrc
1900 silly gunzTarPerm extractEntry Makefile
1901 silly gunzTarPerm extractEntry examples/smtp-appender.js
1902 silly gunzTarPerm extractEntry .bob.json
1903 silly gunzTarPerm extractEntry bin/setup_pg
1904 silly gunzTarPerm extractEntry bin/sharejs
1905 silly gunzTarPerm extractEntry lib/error.js
1906 silly gunzTarPerm extractEntry lib/config.js
1907 silly gunzTarPerm extractEntry lib/middleware/session/store.js
1908 silly gunzTarPerm extractEntry lib/public/directory.html
1909 silly gunzTarPerm extractEntry .travis.yml
1910 silly gunzTarPerm extractEntry examples/admin.js
1911 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.11/nodetime_native.node
1912 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.12/nodetime_native.node
1913 silly gunzTarPerm extractEntry .bob/report/lint.out
1914 silly gunzTarPerm extractEntry test/categoryFilter-test.js
1915 silly gunzTarPerm extractEntry bin/sourceserver
1916 silly gunzTarPerm extractEntry .travis.yml
1917 silly gunzTarPerm extractEntry lib/metrics.js
1918 silly gunzTarPerm extractEntry lib/sampler.js
1919 silly gunzTarPerm extractEntry examples/close.js
1920 silly gunzTarPerm extractEntry examples/config.js
1921 silly gunzTarPerm extractEntry lib/public/error.html
1922 silly gunzTarPerm extractEntry lib/public/favicon.ico
1923 http 304 https://registry.npmjs.org/lodash
1924 silly registry.get cb [ 304,
1924 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
1924 silly registry.get etag: '"93VVQDOQAAMK99ABRCM1ZYFHK"',
1924 silly registry.get date: 'Wed, 18 Dec 2013 17:18:17 GMT',
1924 silly registry.get 'content-length': '0' } ]
1925 verbose etag lodash from cache
1926 silly gunzTarPerm extractEntry lib/shimmer.js
1927 silly gunzTarPerm extractEntry lib/stats.js
1928 silly lockFile e6cd8cd4-171509-node-modules-isbinaryfile tar:///var/www/sharejs/releases/20131218171509/node_modules/isbinaryfile
1929 silly lockFile e6cd8cd4-171509-node-modules-isbinaryfile tar:///var/www/sharejs/releases/20131218171509/node_modules/isbinaryfile
1930 silly lockFile 8cc6a743-m-isbinaryfile-0-1-9-package-tgz tar:///home/sharejs/.npm/isbinaryfile/0.1.9/package.tgz
1931 silly lockFile 8cc6a743-m-isbinaryfile-0-1-9-package-tgz tar:///home/sharejs/.npm/isbinaryfile/0.1.9/package.tgz
1932 silly gunzTarPerm extractEntry lib/index.js
1933 silly gunzTarPerm extractEntry lib/client/connection.js
1934 silly gunzTarPerm extractEntry examples/generateId.js
1935 silly gunzTarPerm extractEntry test/debug-test.js
1936 silly gunzTarPerm extractEntry test/fileAppender-test.js
1937 silly gunzTarPerm extractEntry examples/gridfs.js
1938 info preinstall [email protected]
1939 silly addNameRange number 2 { name: 'lodash', range: '>=2.4.0-0 <2.5.0-0', hasData: true }
1940 silly addNameRange versions [ 'lodash',
1940 silly addNameRange [ '0.1.0',
1940 silly addNameRange '0.2.0',
1940 silly addNameRange '0.2.1',
1940 silly addNameRange '0.2.2',
1940 silly addNameRange '0.3.0',
1940 silly addNameRange '0.3.1',
1940 silly addNameRange '0.3.2',
1940 silly addNameRange '0.4.0',
1940 silly addNameRange '0.4.1',
1940 silly addNameRange '0.4.2',
1940 silly addNameRange '0.5.0-rc.1',
1940 silly addNameRange '0.5.0',
1940 silly addNameRange '0.5.1',
1940 silly addNameRange '0.5.2',
1940 silly addNameRange '0.6.0',
1940 silly addNameRange '0.6.1',
1940 silly addNameRange '0.7.0',
1940 silly addNameRange '0.8.0',
1940 silly addNameRange '0.8.1',
1940 silly addNameRange '0.8.2',
1940 silly addNameRange '0.9.0',
1940 silly addNameRange '0.9.1',
1940 silly addNameRange '0.9.2',
1940 silly addNameRange '0.10.0',
1940 silly addNameRange '1.0.0-rc.1',
1940 silly addNameRange '1.0.0-rc.2',
1940 silly addNameRange '1.0.0-rc.3',
1940 silly addNameRange '1.0.0',
1940 silly addNameRange '1.0.1',
1940 silly addNameRange '1.1.0',
1940 silly addNameRange '1.1.1',
1940 silly addNameRange '1.2.0',
1940 silly addNameRange '1.2.1',
1940 silly addNameRange '1.3.0',
1940 silly addNameRange '1.3.1',
1940 silly addNameRange '2.0.0',
1940 silly addNameRange '2.1.0',
1940 silly addNameRange '2.2.0',
1940 silly addNameRange '2.2.1',
1940 silly addNameRange '2.3.0',
1940 silly addNameRange '2.4.0',
1940 silly addNameRange '2.4.1' ] ]
1941 verbose addNamed [ 'lodash', '2.4.1' ]
1942 verbose addNamed [ '2.4.1', '2.4.1' ]
1943 silly lockFile 8502be2a-lodash-2-4-1 [email protected]
1944 verbose lock [email protected] /home/sharejs/.npm/8502be2a-lodash-2-4-1.lock
1945 silly gunzTarPerm extractEntry lib/public/icons/page_white_edit.png
1946 silly gunzTarPerm extractEntry lib/public/icons/page.png
1947 verbose readDependencies using package.json deps
1948 verbose readDependencies using package.json deps
1949 silly resolved []
1950 verbose about to build /var/www/sharejs/releases/20131218171509/node_modules/isbinaryfile
1951 info build /var/www/sharejs/releases/20131218171509/node_modules/isbinaryfile
1952 verbose linkStuff [ false,
1952 verbose linkStuff false,
1952 verbose linkStuff false,
1952 verbose linkStuff '/var/www/sharejs/releases/20131218171509/node_modules' ]
1953 info linkStuff [email protected]
1954 verbose linkBins [email protected]
1955 verbose linkMans [email protected]
1956 verbose rebuildBundles [email protected]
1957 info install [email protected]
1958 silly gunzTarPerm extractEntry lib/timer.js
1959 silly gunzTarPerm extractEntry lib/config.default.js
1960 info postinstall [email protected]
1961 silly gunzTarPerm extractEntry examples/insert.js
1962 silly gunzTarPerm extractEntry examples/replSetBenchmark.js
1963 silly gunzTarPerm extractEntry test/gelfAppender-test.js
1964 silly gunzTarPerm extractEntry test/date_format-test.js
1965 silly gunzTarPerm extractEntry lib/public/icons/page_attach.png
1966 silly gunzTarPerm extractEntry lib/public/icons/page_code.png
1967 silly lockFile 8502be2a-lodash-2-4-1 [email protected]
1968 silly lockFile 8502be2a-lodash-2-4-1 [email protected]
1969 silly lockFile d594f717-lodash-2-4-0 lodash@~2.4.0
1970 silly lockFile d594f717-lodash-2-4-0 lodash@~2.4.0
1971 silly resolved [ { name: 'lodash',
1971 silly resolved version: '2.4.1',
1971 silly resolved description: 'A utility library delivering consistency, customization, performance, & extras.',
1971 silly resolved homepage: 'http://lodash.com/',
1971 silly resolved license: 'MIT',
1971 silly resolved main: 'dist/lodash.js',
1971 silly resolved keywords:
1971 silly resolved [ 'amd',
1971 silly resolved 'browser',
1971 silly resolved 'client',
1971 silly resolved 'customize',
1971 silly resolved 'functional',
1971 silly resolved 'server',
1971 silly resolved 'util' ],
1971 silly resolved author:
1971 silly resolved { name: 'John-David Dalton',
1971 silly resolved email: '[email protected]',
1971 silly resolved url: 'http://allyoucanleet.com/' },
1971 silly resolved contributors: [ [Object], [Object], [Object], [Object] ],
1971 silly resolved bugs: { url: 'https://github.com/lodash/lodash/issues' },
1971 silly resolved repository: { type: 'git', url: 'https://github.com/lodash/lodash.git' },
1971 silly resolved engines: [ 'node', 'rhino' ],
1971 silly resolved files:
1971 silly resolved [ 'LICENSE.txt',
1971 silly resolved 'lodash.js',
1971 silly resolved 'dist/lodash.js',
1971 silly resolved 'dist/lodash.min.js',
1971 silly resolved 'dist/lodash.compat.js',
1971 silly resolved 'dist/lodash.compat.min.js',
1971 silly resolved 'dist/lodash.underscore.js',
1971 silly resolved 'dist/lodash.underscore.min.js' ],
1971 silly resolved jam: { main: 'dist/lodash.compat.js', include: [Object] },
1971 silly resolved volo: { type: 'directory', ignore: [Object] },
1971 silly resolved readme: '# Lo-Dash v2.4.1\nA utility library delivering consistency, [customization](http://lodash.com/custom-builds), [performance](http://lodash.com/benchmarks), & [extras](http://lodash.com/#features).\n\n## Download\n\nCheck out our [wiki]([https://github.com/lodash/lodash/wiki/build-differences]) for details over the differences between builds.\n\n* Modern builds perfect for newer browsers/environments:<br>\n[Development](https://raw.github.com/lodash/lodash/2.4.1/dist/lodash.js) &\n[Production](https://raw.github.com/lodash/lodash/2.4.1/dist/lodash.min.js)\n\n* Compatibility builds for older environment support too:<br>\n[Development](https://raw.github.com/lodash/lodash/2.4.1/dist/lodash.compat.js) &\n[Production](https://raw.github.com/lodash/lodash/2.4.1/dist/lodash.compat.min.js)\n\n* Underscore builds to use as a drop-in replacement:<br>\n[Development](https://raw.github.com/lodash/lodash/2.4.1/dist/lodash.underscore.js) &\n[Production](https://raw.github.com/lodash/lodash/2.4.1/dist/lodash.underscore.min.js)\n\nCDN copies are available on [cdnjs](http://cdnjs.com/libraries/lodash.js/) & [jsDelivr](http://www.jsdelivr.com/#!lodash). For smaller file sizes, create [custom builds](http://lodash.com/custom-builds) with only the features needed.\n\nLove modules? We’ve got you covered with [lodash-amd](https://npmjs.org/package/lodash-amd), [lodash-es6](https://github.com/lodash/lodash-es6), [lodash-node](https://npmjs.org/package/lodash-node), & [npm packages](https://npmjs.org/browse/keyword/lodash-modularized) per method.\n\n## Dive in\n\nThere’s plenty of **[documentation](http://lodash.com/docs)**, [unit tests](http://lodash.com/tests), & [benchmarks](http://lodash.com/benchmarks).<br>\nCheck out <a href="http://devdocs.io/lodash/">DevDocs</a> as a fast, organized, & searchable interface for our documentation.\n\nThe full changelog for this release is available on our [wiki](https://github.com/lodash/lodash/wiki/Changelog).<br>\nA list of upcoming features is available on our [roadmap](https://github.com/lodash/lodash/wiki/Roadmap).\n\n## Features *not* in Underscore\n\n * AMD loader support ([curl](https://github.com/cujojs/curl), [dojo](http://dojotoolkit.org/), [requirejs](http://requirejs.org/), etc.)\n * [_(…)](http://lodash.com/docs#_) supports intuitive chaining\n * [_.at](http://lodash.com/docs#at) for cherry-picking collection values\n * [_.bindKey](http://lodash.com/docs#bindKey) for binding [*“lazy”*](http://michaux.ca/articles/lazy-function-definition-pattern) defined methods\n * [_.clone](http://lodash.com/docs#clone) supports shallow cloning of `Date` & `RegExp` objects\n * [_.cloneDeep](http://lodash.com/docs#cloneDeep) for deep cloning arrays & objects\n * [_.constant](http://lodash.com/docs#constant) & [_.property](http://lodash.com/docs#property) function generators for composing functions\n * [_.contains](http://lodash.com/docs#contains) accepts a `fromIndex`\n * [_.create](http://lodash.com/docs#create) for easier object inheritance\n * [_.createCallback](http://lodash.com/docs#createCallback) for extending callbacks in methods & mixins\n * [_.curry](http://lodash.com/docs#curry) for creating [curried](http://hughfdjackson.com/javascript/2013/07/06/why-curry-helps/) functions\n * [_.debounce](http://lodash.com/docs#debounce) & [_.throttle](http://lodash.com/docs#throttle) accept additional `options` for more control\n * [_.findIndex](http://lodash.com/docs#findIndex) & [_.findKey](http://lodash.com/docs#findKey) for finding indexes & keys\n * [_.forEach](http://lodash.com/docs#forEach) is chainable & supports exiting early\n * [_.forIn](http://lodash.com/docs#forIn) for iterating own & inherited properties\n * [_.forOwn](http://lodash.com/docs#forOwn) for iterating own properties\n * [_.isPlainObject](http://lodash.com/docs#isPlainObject) for checking if values are created by `Object`\n * [_.mapValues](http://lodash.com/docs#mapValues) for [mapping](http://lodash.com/docs#map) values to an object\n * [_.memoize](http://lodash.com/docs#memoize) exposes the `cache` of memoized functions\n * [_.merge](http://lodash.com/docs#merge) for a deep [_.extend](http://lodash.com/docs#extend)\n * [_.noop](http://lodash.com/docs#noop) for function placeholders\n * [_.now](http://lodash.com/docs#now) as a cross-browser `Date.now` alternative\n * [_.parseInt](http://lodash.com/docs#parseInt) for consistent behavior\n * [_.pull](http://lodash.com/docs#pull) & [_.remove](http://lodash.com/docs#remove) for mutating arrays\n * [_.random](http://lodash.com/docs#random) supports returning floating-point numbers\n * [_.runInContext](http://lodash.com/docs#runInContext) for easier mocking\n * [_.sortBy](http://lodash.com/docs#sortBy) supports sorting by multiple properties\n * [_.support](http://lodash.com/docs#support) for flagging environment features\n * [_.template](http://lodash.com/docs#template) supports [*“imports”*](http://lodash.com/docs#templateSettings_imports) options & [ES6 template delimiters](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-literals-string-literals)\n * [_.transform](http://lodash.com/docs#transform) as a powerful alternative to [_.reduce](http://lodash.com/docs#reduce) for transforming objects\n * [_.where](http://lodash.com/docs#where) supports deep object comparisons\n * [_.xor](http://lodash.com/docs#xor) as a companion to [_.difference](http://lodash.com/docs#difference), [_.intersection](http://lodash.com/docs#intersection), & [_.union](http://lodash.com/docs#union)\n * [_.zip](http://lodash.com/docs#zip) is capable of unzipping values\n * [_.omit](http://lodash.com/docs#omit), [_.pick](http://lodash.com/docs#pick), &\n [more](http://lodash.com/docs "_.assign, _.clone, _.cloneDeep, _.first, _.initial, _.isEqual, _.last, _.merge, _.rest") accept callbacks\n * [_.contains](http://lodash.com/docs#contains), [_.toArray](http://lodash.com/docs#toArray), &\n [more](http://lodash.com/docs "_.at, _.countBy, _.every, _.filter, _.find, _.forEach, _.forEachRight, _.groupBy, _.invoke, _.map, _.max, _.min, _.pluck, _.reduce, _.reduceRight, _.reject, _.shuffle, _.size, _.some, _.sortBy, _.where") accept strings\n * [_.filter](http://lodash.com/docs#filter), [_.map](http://lodash.com/docs#map), &\n [more](http://lodash.com/docs "_.countBy, _.every, _.find, _.findKey, _.findLast, _.findLastIndex, _.findLastKey, _.first, _.groupBy, _.initial, _.last, _.max, _.min, _.reject, _.rest, _.some, _.sortBy, _.sortedIndex, _.uniq") support *“_.pluck”* & *“_.where”* shorthands\n * [_.findLast](http://lodash.com/docs#findLast), [_.findLastIndex](http://lodash.com/docs#findLastIndex), &\n [more](http://lodash.com/docs "_.findLastKey, _.forEachRight, _.forInRight, _.forOwnRight, _.partialRight") right-associative methods\n\n## Resources\n\n * Podcasts\n - [JavaScript Jabber](http://javascriptjabber.com/079-jsj-lo-dash-with-john-david-dalton/)\n\n * Posts\n - [Say “Hello” to Lo-Dash](http://kitcambridge.be/blog/say-hello-to-lo-dash/)\n - [Custom builds in Lo-Dash 2.0](http://kitcambridge.be/blog/custom-builds-in-lo-dash-2-dot-0/)\n\n * Videos\n - [Introduction](https://vimeo.com/44154599)\n - [Origins](https://vimeo.com/44154600)\n - [Optimizations & builds](https://vimeo.com/44154601)\n - [Native method use](https://vimeo.com/48576012)\n - [Testing](https://vimeo.com/45865290)\n - [CascadiaJS ’12](http://www.youtube.com/watch?v=dpPy4f_SeEk)\n\n A list of other community created podcasts, posts, & videos is available on our [wiki](https://github.com/lodash/lodash/wiki/Resources).\n\n## Support\n\nTested in Chrome 5~31, Firefox 2~25, IE 6-11, Opera 9.25~17, Safari 3-7, Node.js 0.6.21~0.10.22, Narwhal 0.3.2, PhantomJS 1.9.2, RingoJS 0.9, & Rhino 1.7RC5.<br>\nAutomated browser test results [are available](https://saucelabs.com/u/lodash) as well as [Travis CI](https://travis-ci.org/) builds for [lodash](https://travis-ci.org/lodash/lodash/), [lodash-cli](https://travis-ci.org/lodash/lodash-cli/), [lodash-amd](https://travis-ci.org/lodash/lodash-amd/), [lodash-node](https://travis-ci.org/lodash/lodash-node/), & [grunt-lodash](https://travis-ci.org/lodash/grunt-lodash).\n\nSpecial thanks to [Sauce Labs](https://saucelabs.com/) for providing automated browser testing.<br>\n[![Sauce Labs](http://lodash.com/_img/sauce.png)](https://saucelabs.com/ "Sauce Labs: Selenium Testing & More")\n\n## Installation & usage\n\nIn browsers:\n\n```html\n<script src="lodash.js"></script>\n```\n\nUsing [`npm`](http://npmjs.org/):\n\n```bash\nnpm i --save lodash\n\n{sudo} npm i -g lodash\nnpm ln lodash\n```\n\nIn [Node.js](http://nodejs.org/) & [Ringo](http://ringojs.org/):\n\n```js\nvar _ = require(\'lodash\');\n// or as Underscore\nvar _ = require(\'lodash/dist/lodash.underscore\');\n```\n\n**Notes:**\n * Don’t assign values to [special variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` when in the REPL\n * If Lo-Dash is installed globally, run [`npm ln lodash`](http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/) in your project’s root directory *before* requiring it\n\nIn [Rhino](http://www.mozilla.org/rhino/):\n\n```js\nload(\'lodash.js\');\n```\n\nIn an AMD loader:\n\n```js\nrequire({\n \'packages\': [\n { \'name\': \'lodash\', \'location\': \'path/to/lodash\', \'main\': \'lodash\' }\n ]\n},\n[\'lodash\'], function(_) {\n console.log(_.VERSION);\n});\n```\n\n## Author\n\n| [![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton "Follow @jdalton on Twitter") |\n|---|\n| [John-David Dalton](http://allyoucanleet.com/) |\n\n## Contributors\n\n| [![twitter/blainebublitz](http://gravatar.com/avatar/ac1c67fd906c9fecd823ce302283b4c1?s=70)](https://twitter.com/blainebublitz "Follow @BlaineBublitz on Twitter") | [![twitter/kitcambridge](http://gravatar.com/avatar/6662a1d02f351b5ef2f8b4d815804661?s=70)](https://twitter.com/kitcambridge "Follow @kitcambridge on Twitter") | [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") |\n|---|---|---|\n| [Blaine Bublitz](http://www.iceddev.com/) | [Kit Cambridge](http://kitcambridge.be/) | [Mathias Bynens](http://mathiasbynens.be/) |\n\n[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/lodash/lodash/trend.png)](https://bitdeli.com/free "Bitdeli Badge")\n',
1971 silly resolved readmeFilename: 'README.md',
1971 silly resolved _id: '[email protected]',
1971 silly resolved _from: 'lodash@~2.4.0' } ]
1972 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/node-codio
1973 info installOne [email protected]
1974 silly gunzTarPerm extractEntry lib/transaction.js
1975 silly gunzTarPerm extractEntry lib/logger.js
1976 info /var/www/sharejs/releases/20131218171509/node_modules/node-codio/node_modules/lodash unbuild
1977 silly gunzTarPerm extractEntry examples/replset.js
1978 silly gunzTarPerm extractEntry examples/update.js
1979 silly gunzTarPerm extractEntry test/hookioAppender-test.js
1980 silly gunzTarPerm extractEntry test/layouts-test.js
1981 verbose tar unpack /home/sharejs/.npm/lodash/2.4.1/package.tgz
1982 silly lockFile 8aca0c3a-s-node-codio-node-modules-lodash tar:///var/www/sharejs/releases/20131218171509/node_modules/node-codio/node_modules/lodash
1983 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/node-codio/node_modules/lodash /home/sharejs/.npm/8aca0c3a-s-node-codio-node-modules-lodash.lock
1984 silly lockFile 5f510b88-ejs-npm-lodash-2-4-1-package-tgz tar:///home/sharejs/.npm/lodash/2.4.1/package.tgz
1985 verbose lock tar:///home/sharejs/.npm/lodash/2.4.1/package.tgz /home/sharejs/.npm/5f510b88-ejs-npm-lodash-2-4-1-package-tgz.lock
1986 silly gunzTarPerm extractEntry lib/public/icons/page_copy.png
1987 silly gunzTarPerm extractEntry lib/public/icons/page_delete.png
1988 silly gunzTarPerm modes [ '755', '644' ]
1989 silly gunzTarPerm extractEntry AUTHORS
1990 silly gunzTarPerm extractEntry integration/integration_tests.js
1991 silly gunzTarPerm extractEntry lib/db/parse-sql.js
1992 silly gunzTarPerm extractEntry lib/db/parsed-statement.js
1993 silly gunzTarPerm extractEntry lib/client/doc.js
1994 silly gunzTarPerm extractEntry lib/client/index.js
1995 silly gunzTarPerm extractEntry package.json
1996 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.13/nodetime_native.node
1997 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.10.1/nodetime_native.node
1998 silly gunzTarPerm extractEntry lib/public/icons/page_edit.png
1999 silly gunzTarPerm extractEntry lib/public/icons/page_error.png
2000 silly gunzTarPerm extractEntry README.md
2001 silly gunzTarPerm extractEntry lodash.js
2002 silly gunzTarPerm extractEntry test/clusteredAppender-test.js
2003 silly gunzTarPerm extractEntry test/log-abspath-test.js
2004 silly gunzTarPerm extractEntry integration/longlive.js
2005 silly gunzTarPerm extractEntry lib/mongoskin/admin.js
2006 silly gunzTarPerm extractEntry lib/db/statement-matcher.js
2007 silly gunzTarPerm extractEntry lib/stats/apdex.js
2008 silly gunzTarPerm extractEntry lib/public/icons/page_excel.png
2009 silly gunzTarPerm extractEntry lib/public/icons/page_find.png
2010 silly gunzTarPerm extractEntry lib/mongoskin/collection.js
2011 silly gunzTarPerm extractEntry lib/mongoskin/constant.js
2012 silly gunzTarPerm extractEntry LICENSE.txt
2013 silly gunzTarPerm extractEntry test/setLevel-asymmetry-test.js
2014 silly gunzTarPerm extractEntry test/dateFileAppender-test.js
2015 silly gunzTarPerm extractEntry lib/collector/connection.js
2016 silly gunzTarPerm extractEntry lib/collector/data-sender.js
2017 silly gunzTarPerm extractEntry lib/mongoskin/cursor.js
2018 silly gunzTarPerm extractEntry lib/mongoskin/db.js
2019 silly gunzTarPerm extractEntry lib/client/microevent.js
2020 silly gunzTarPerm extractEntry lib/client/query.js
2021 silly gunzTarPerm extractEntry lib/util/codec.js
2022 silly gunzTarPerm extractEntry lib/util/deep-equal.js
2023 silly gunzTarPerm extractEntry test/logLevelFilter-test.js
2024 silly gunzTarPerm extractEntry test/smtpAppender-test.js
2025 silly gunzTarPerm extractEntry lib/mongoskin/gridfs.js
2026 silly gunzTarPerm extractEntry lib/mongoskin/index.js
2027 silly gunzTarPerm extractEntry lib/client/textarea.js
2028 silly gunzTarPerm extractEntry lib/server/index.js
2029 silly gunzTarPerm extractEntry test/logger-test.js
2030 silly gunzTarPerm extractEntry test/consoleAppender-test.js
2031 silly gunzTarPerm extractEntry lib/util/stream-sink.js
2032 silly gunzTarPerm extractEntry lib/util/sum-children.js
2033 silly gunzTarPerm extractEntry lib/mongoskin/router.js
2034 silly gunzTarPerm extractEntry lib/mongoskin/server.js
2035 silly gunzTarPerm extractEntry lib/public/icons/page_gear.png
2036 silly gunzTarPerm extractEntry lib/public/icons/page_go.png
2037 silly gunzTarPerm extractEntry dist/lodash.compat.js
2038 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.15/nodetime_native.node
2039 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.16/nodetime_native.node
2040 silly gunzTarPerm extractEntry test/logging-test.js
2041 silly gunzTarPerm extractEntry test/connect-logger-test.js
2042 silly gunzTarPerm extractEntry lib/mongoskin/utils.js
2043 silly gunzTarPerm extractEntry logo.png
2044 silly gunzTarPerm extractEntry lib/server/rest.js
2045 silly gunzTarPerm extractEntry lib/server/session.js
2046 silly gunzTarPerm extractEntry lib/util/urltils.js
2047 silly gunzTarPerm extractEntry lib/transaction/trace.js
2048 silly gunzTarPerm extractEntry test/multiprocess-test.js
2049 silly gunzTarPerm extractEntry test/configureNoLevels-test.js
2050 silly gunzTarPerm extractEntry dist/lodash.compat.min.js
2051 silly gunzTarPerm extractEntry lib/public/icons/page_green.png
2052 silly gunzTarPerm extractEntry lib/public/icons/page_key.png
2053 silly gunzTarPerm extractEntry Readme.md
2054 silly gunzTarPerm extractEntry lib/transaction/tracer.js
2055 silly gunzTarPerm extractEntry lib/transaction/trace/aggregator.js
2056 silly gunzTarPerm extractEntry test/nolog-test.js
2057 silly gunzTarPerm extractEntry test/configuration-test.js
2058 silly gunzTarPerm extractEntry lib/public/icons/page_lightning.png
2059 silly gunzTarPerm extractEntry lib/public/icons/page_link.png
2060 silly gunzTarPerm extractEntry lib/transaction/trace/segment.js
2061 silly gunzTarPerm extractEntry lib/transaction/trace/sql.js
2062 silly gunzTarPerm extractEntry lib/server/useragent.js
2063 silly gunzTarPerm extractEntry lib/types/README.md
2064 silly gunzTarPerm extractEntry test/reloadConfiguration-test.js
2065 silly gunzTarPerm extractEntry test/global-log-level-test.js
2066 silly gunzTarPerm extractEntry lib/public/icons/page_paintbrush.png
2067 silly gunzTarPerm extractEntry lib/public/icons/page_paste.png
2068 silly gunzTarPerm extractEntry lib/transaction/tracer/debug.js
2069 silly gunzTarPerm extractEntry lib/transaction/tracer/state.js
2070 silly gunzTarPerm extractEntry test/levels-test.js
2071 silly gunzTarPerm extractEntry test/log4js.json
2072 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.17/nodetime_native.node
2073 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.18/nodetime_native.node
2074 silly gunzTarPerm extractEntry lib/transaction/tracer/instrumentation/outbound.js
2075 silly gunzTarPerm extractEntry lib/instrumentation/connect.js
2076 silly gunzTarPerm extractEntry examples/mget.js
2077 silly gunzTarPerm extractEntry examples/monitor.js
2078 silly gunzTarPerm extractEntry test/date-file-test
2079 silly gunzTarPerm extractEntry test/streams/BaseRollingFileStream-test.js
2080 silly gunzTarPerm extractEntry lib/public/icons/page_red.png
2081 silly gunzTarPerm extractEntry lib/public/icons/page_refresh.png
2082 silly gunzTarPerm extractEntry examples/multi.js
2083 silly gunzTarPerm extractEntry examples/file.js
2084 silly lockFile 8a0a5668-31218171509-node-modules-express tar:///var/www/sharejs/releases/20131218171509/node_modules/express
2085 silly lockFile 8a0a5668-31218171509-node-modules-express tar:///var/www/sharejs/releases/20131218171509/node_modules/express
2086 silly gunzTarPerm extractEntry test/streams/rollingFileStream-test.js
2087 silly gunzTarPerm extractEntry test/streams/DateRollingFileStream-test.js
2088 silly lockFile e7c85768-js-npm-express-3-4-7-package-tgz tar:///home/sharejs/.npm/express/3.4.7/package.tgz
2089 silly lockFile e7c85768-js-npm-express-3-4-7-package-tgz tar:///home/sharejs/.npm/express/3.4.7/package.tgz
2090 silly gunzTarPerm extractEntry lib/types/index.js
2091 silly gunzTarPerm extractEntry lib/types/json-api.js
2092 info preinstall [email protected]
2093 verbose readDependencies using package.json deps
2094 silly gunzTarPerm extractEntry lib/public/icons/page_save.png
2095 silly gunzTarPerm extractEntry lib/public/icons/page_white.png
2096 verbose readDependencies using package.json deps
2097 silly gunzTarPerm extractEntry test/streams/test-rolling-file-stream
2098 silly gunzTarPerm extractEntry test/streams/test-rolling-file-stream-write-less
2099 silly gunzTarPerm extractEntry lib/channel.js
2100 silly gunzTarPerm extractEntry lib/message.js
2101 verbose cache add [ '[email protected]', null ]
2102 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
2103 verbose parsed url { protocol: null,
2103 verbose parsed url slashes: null,
2103 verbose parsed url auth: null,
2103 verbose parsed url host: null,
2103 verbose parsed url port: null,
2103 verbose parsed url hostname: null,
2103 verbose parsed url hash: null,
2103 verbose parsed url search: null,
2103 verbose parsed url query: null,
2103 verbose parsed url pathname: '[email protected]',
2103 verbose parsed url path: '[email protected]',
2103 verbose parsed url href: '[email protected]' }
2104 verbose cache add name="fresh" spec="0.2.0" args=["fresh","0.2.0"]
2105 verbose parsed url { protocol: null,
2105 verbose parsed url slashes: null,
2105 verbose parsed url auth: null,
2105 verbose parsed url host: null,
2105 verbose parsed url port: null,
2105 verbose parsed url hostname: null,
2105 verbose parsed url hash: null,
2105 verbose parsed url search: null,
2105 verbose parsed url query: null,
2105 verbose parsed url pathname: '0.2.0',
2105 verbose parsed url path: '0.2.0',
2105 verbose parsed url href: '0.2.0' }
2106 verbose addNamed [ 'fresh', '0.2.0' ]
2107 verbose addNamed [ '0.2.0', '0.2.0' ]
2108 silly lockFile 1a4cf0d3-fresh-0-2-0 [email protected]
2109 verbose lock [email protected] /home/sharejs/.npm/1a4cf0d3-fresh-0-2-0.lock
2110 verbose cache add [ '[email protected]', null ]
2111 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
2112 verbose parsed url { protocol: null,
2112 verbose parsed url slashes: null,
2112 verbose parsed url auth: null,
2112 verbose parsed url host: null,
2112 verbose parsed url port: null,
2112 verbose parsed url hostname: null,
2112 verbose parsed url hash: null,
2112 verbose parsed url search: null,
2112 verbose parsed url query: null,
2112 verbose parsed url pathname: '[email protected]',
2112 verbose parsed url path: '[email protected]',
2112 verbose parsed url href: '[email protected]' }
2113 verbose cache add name="buffer-crc32" spec="0.2.1" args=["buffer-crc32","0.2.1"]
2114 verbose parsed url { protocol: null,
2114 verbose parsed url slashes: null,
2114 verbose parsed url auth: null,
2114 verbose parsed url host: null,
2114 verbose parsed url port: null,
2114 verbose parsed url hostname: null,
2114 verbose parsed url hash: null,
2114 verbose parsed url search: null,
2114 verbose parsed url query: null,
2114 verbose parsed url pathname: '0.2.1',
2114 verbose parsed url path: '0.2.1',
2114 verbose parsed url href: '0.2.1' }
2115 verbose addNamed [ 'buffer-crc32', '0.2.1' ]
2116 verbose addNamed [ '0.2.1', '0.2.1' ]
2117 silly lockFile 057d0d26-buffer-crc32-0-2-1 [email protected]
2118 verbose lock [email protected] /home/sharejs/.npm/057d0d26-buffer-crc32-0-2-1.lock
2119 verbose cache add [ '[email protected]', null ]
2120 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
2121 verbose parsed url { protocol: null,
2121 verbose parsed url slashes: null,
2121 verbose parsed url auth: null,
2121 verbose parsed url host: null,
2121 verbose parsed url port: null,
2121 verbose parsed url hostname: null,
2121 verbose parsed url hash: null,
2121 verbose parsed url search: null,
2121 verbose parsed url query: null,
2121 verbose parsed url pathname: '[email protected]',
2121 verbose parsed url path: '[email protected]',
2121 verbose parsed url href: '[email protected]' }
2122 verbose cache add name="methods" spec="0.1.0" args=["methods","0.1.0"]
2123 verbose parsed url { protocol: null,
2123 verbose parsed url slashes: null,
2123 verbose parsed url auth: null,
2123 verbose parsed url host: null,
2123 verbose parsed url port: null,
2123 verbose parsed url hostname: null,
2123 verbose parsed url hash: null,
2123 verbose parsed url search: null,
2123 verbose parsed url query: null,
2123 verbose parsed url pathname: '0.1.0',
2123 verbose parsed url path: '0.1.0',
2123 verbose parsed url href: '0.1.0' }
2124 verbose addNamed [ 'methods', '0.1.0' ]
2125 verbose addNamed [ '0.1.0', '0.1.0' ]
2126 silly lockFile 81f018b6-methods-0-1-0 [email protected]
2127 verbose lock [email protected] /home/sharejs/.npm/81f018b6-methods-0-1-0.lock
2128 verbose cache add [ '[email protected]', null ]
2129 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
2130 verbose parsed url { protocol: null,
2130 verbose parsed url slashes: null,
2130 verbose parsed url auth: null,
2130 verbose parsed url host: null,
2130 verbose parsed url port: null,
2130 verbose parsed url hostname: null,
2130 verbose parsed url hash: null,
2130 verbose parsed url search: null,
2130 verbose parsed url query: null,
2130 verbose parsed url pathname: '[email protected]',
2130 verbose parsed url path: '[email protected]',
2130 verbose parsed url href: '[email protected]' }
2131 verbose cache add name="send" spec="0.1.4" args=["send","0.1.4"]
2132 verbose parsed url { protocol: null,
2132 verbose parsed url slashes: null,
2132 verbose parsed url auth: null,
2132 verbose parsed url host: null,
2132 verbose parsed url port: null,
2132 verbose parsed url hostname: null,
2132 verbose parsed url hash: null,
2132 verbose parsed url search: null,
2132 verbose parsed url query: null,
2132 verbose parsed url pathname: '0.1.4',
2132 verbose parsed url path: '0.1.4',
2132 verbose parsed url href: '0.1.4' }
2133 verbose addNamed [ 'send', '0.1.4' ]
2134 verbose addNamed [ '0.1.4', '0.1.4' ]
2135 silly lockFile 555fd08a-send-0-1-4 [email protected]
2136 verbose lock [email protected] /home/sharejs/.npm/555fd08a-send-0-1-4.lock
2137 verbose cache add [ '[email protected]', null ]
2138 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
2139 verbose parsed url { protocol: null,
2139 verbose parsed url slashes: null,
2139 verbose parsed url auth: null,
2139 verbose parsed url host: null,
2139 verbose parsed url port: null,
2139 verbose parsed url hostname: null,
2139 verbose parsed url hash: null,
2139 verbose parsed url search: null,
2139 verbose parsed url query: null,
2139 verbose parsed url pathname: '[email protected]',
2139 verbose parsed url path: '[email protected]',
2139 verbose parsed url href: '[email protected]' }
2140 verbose cache add name="cookie-signature" spec="1.0.1" args=["cookie-signature","1.0.1"]
2141 verbose parsed url { protocol: null,
2141 verbose parsed url slashes: null,
2141 verbose parsed url auth: null,
2141 verbose parsed url host: null,
2141 verbose parsed url port: null,
2141 verbose parsed url hostname: null,
2141 verbose parsed url hash: null,
2141 verbose parsed url search: null,
2141 verbose parsed url query: null,
2141 verbose parsed url pathname: '1.0.1',
2141 verbose parsed url path: '1.0.1',
2141 verbose parsed url href: '1.0.1' }
2142 verbose addNamed [ 'cookie-signature', '1.0.1' ]
2143 verbose addNamed [ '1.0.1', '1.0.1' ]
2144 silly lockFile d4a1eba1-cookie-signature-1-0-1 [email protected]
2145 verbose lock [email protected] /home/sharejs/.npm/d4a1eba1-cookie-signature-1-0-1.lock
2146 verbose cache add [ '[email protected]', null ]
2147 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
2148 verbose parsed url { protocol: null,
2148 verbose parsed url slashes: null,
2148 verbose parsed url auth: null,
2148 verbose parsed url host: null,
2148 verbose parsed url port: null,
2148 verbose parsed url hostname: null,
2148 verbose parsed url hash: null,
2148 verbose parsed url search: null,
2148 verbose parsed url query: null,
2148 verbose parsed url pathname: '[email protected]',
2148 verbose parsed url path: '[email protected]',
2148 verbose parsed url href: '[email protected]' }
2149 verbose cache add name="merge-descriptors" spec="0.0.1" args=["merge-descriptors","0.0.1"]
2150 verbose parsed url { protocol: null,
2150 verbose parsed url slashes: null,
2150 verbose parsed url auth: null,
2150 verbose parsed url host: null,
2150 verbose parsed url port: null,
2150 verbose parsed url hostname: null,
2150 verbose parsed url hash: null,
2150 verbose parsed url search: null,
2150 verbose parsed url query: null,
2150 verbose parsed url pathname: '0.0.1',
2150 verbose parsed url path: '0.0.1',
2150 verbose parsed url href: '0.0.1' }
2151 verbose addNamed [ 'merge-descriptors', '0.0.1' ]
2152 verbose addNamed [ '0.0.1', '0.0.1' ]
2153 silly lockFile 5220b296-merge-descriptors-0-0-1 [email protected]
2154 verbose lock [email protected] /home/sharejs/.npm/5220b296-merge-descriptors-0-0-1.lock
2155 verbose cache add [ 'debug@>= 0.7.3 < 1', null ]
2156 verbose cache add name=undefined spec="debug@>= 0.7.3 < 1" args=["debug@>= 0.7.3 < 1",null]
2157 verbose parsed url { protocol: null,
2157 verbose parsed url slashes: null,
2157 verbose parsed url auth: null,
2157 verbose parsed url host: null,
2157 verbose parsed url port: null,
2157 verbose parsed url hostname: null,
2157 verbose parsed url hash: null,
2157 verbose parsed url search: null,
2157 verbose parsed url query: null,
2157 verbose parsed url pathname: 'debug@%3E=%200.7.3%20%3C%201',
2157 verbose parsed url path: 'debug@%3E=%200.7.3%20%3C%201',
2157 verbose parsed url href: 'debug@%3E=%200.7.3%20%3C%201' }
2158 verbose cache add name="debug" spec=">= 0.7.3 < 1" args=["debug",">= 0.7.3 < 1"]
2159 verbose parsed url { protocol: null,
2159 verbose parsed url slashes: null,
2159 verbose parsed url auth: null,
2159 verbose parsed url host: null,
2159 verbose parsed url port: null,
2159 verbose parsed url hostname: null,
2159 verbose parsed url hash: null,
2159 verbose parsed url search: null,
2159 verbose parsed url query: null,
2159 verbose parsed url pathname: '%3E=%200.7.3%20%3C%201',
2159 verbose parsed url path: '%3E=%200.7.3%20%3C%201',
2159 verbose parsed url href: '%3E=%200.7.3%20%3C%201' }
2160 verbose addNamed [ 'debug', '>= 0.7.3 < 1' ]
2161 verbose addNamed [ null, '>=0.7.3 <1.0.0-0' ]
2162 silly lockFile a781479f-debug-0-7-3-1 debug@>= 0.7.3 < 1
2163 verbose lock debug@>= 0.7.3 < 1 /home/sharejs/.npm/a781479f-debug-0-7-3-1.lock
2164 verbose cache add [ '[email protected]', null ]
2165 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
2166 verbose parsed url { protocol: null,
2166 verbose parsed url slashes: null,
2166 verbose parsed url auth: null,
2166 verbose parsed url host: null,
2166 verbose parsed url port: null,
2166 verbose parsed url hostname: null,
2166 verbose parsed url hash: null,
2166 verbose parsed url search: null,
2166 verbose parsed url query: null,
2166 verbose parsed url pathname: '[email protected]',
2166 verbose parsed url path: '[email protected]',
2166 verbose parsed url href: '[email protected]' }
2167 verbose cache add name="connect" spec="2.12.0" args=["connect","2.12.0"]
2168 verbose parsed url { protocol: null,
2168 verbose parsed url slashes: null,
2168 verbose parsed url auth: null,
2168 verbose parsed url host: null,
2168 verbose parsed url port: null,
2168 verbose parsed url hostname: null,
2168 verbose parsed url hash: null,
2168 verbose parsed url search: null,
2168 verbose parsed url query: null,
2168 verbose parsed url pathname: '2.12.0',
2168 verbose parsed url path: '2.12.0',
2168 verbose parsed url href: '2.12.0' }
2169 verbose addNamed [ 'connect', '2.12.0' ]
2170 verbose addNamed [ '2.12.0', '2.12.0' ]
2171 silly lockFile a4bed1c7-connect-2-12-0 [email protected]
2172 verbose lock [email protected] /home/sharejs/.npm/a4bed1c7-connect-2-12-0.lock
2173 verbose cache add [ '[email protected]', null ]
2174 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
2175 verbose parsed url { protocol: null,
2175 verbose parsed url slashes: null,
2175 verbose parsed url auth: null,
2175 verbose parsed url host: null,
2175 verbose parsed url port: null,
2175 verbose parsed url hostname: null,
2175 verbose parsed url hash: null,
2175 verbose parsed url search: null,
2175 verbose parsed url query: null,
2175 verbose parsed url pathname: '[email protected]',
2175 verbose parsed url path: '[email protected]',
2175 verbose parsed url href: '[email protected]' }
2176 verbose cache add name="commander" spec="1.3.2" args=["commander","1.3.2"]
2177 verbose parsed url { protocol: null,
2177 verbose parsed url slashes: null,
2177 verbose parsed url auth: null,
2177 verbose parsed url host: null,
2177 verbose parsed url port: null,
2177 verbose parsed url hostname: null,
2177 verbose parsed url hash: null,
2177 verbose parsed url search: null,
2177 verbose parsed url query: null,
2177 verbose parsed url pathname: '1.3.2',
2177 verbose parsed url path: '1.3.2',
2177 verbose parsed url href: '1.3.2' }
2178 verbose addNamed [ 'commander', '1.3.2' ]
2179 verbose addNamed [ '1.3.2', '1.3.2' ]
2180 silly lockFile 2016e061-commander-1-3-2 [email protected]
2181 verbose lock [email protected] /home/sharejs/.npm/2016e061-commander-1-3-2.lock
2182 verbose cache add [ '[email protected]', null ]
2183 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
2184 verbose parsed url { protocol: null,
2184 verbose parsed url slashes: null,
2184 verbose parsed url auth: null,
2184 verbose parsed url host: null,
2184 verbose parsed url port: null,
2184 verbose parsed url hostname: null,
2184 verbose parsed url hash: null,
2184 verbose parsed url search: null,
2184 verbose parsed url query: null,
2184 verbose parsed url pathname: '[email protected]',
2184 verbose parsed url path: '[email protected]',
2184 verbose parsed url href: '[email protected]' }
2185 verbose cache add name="range-parser" spec="0.0.4" args=["range-parser","0.0.4"]
2186 verbose parsed url { protocol: null,
2186 verbose parsed url slashes: null,
2186 verbose parsed url auth: null,
2186 verbose parsed url host: null,
2186 verbose parsed url port: null,
2186 verbose parsed url hostname: null,
2186 verbose parsed url hash: null,
2186 verbose parsed url search: null,
2186 verbose parsed url query: null,
2186 verbose parsed url pathname: '0.0.4',
2186 verbose parsed url path: '0.0.4',
2186 verbose parsed url href: '0.0.4' }
2187 verbose addNamed [ 'range-parser', '0.0.4' ]
2188 verbose addNamed [ '0.0.4', '0.0.4' ]
2189 silly lockFile 0760c556-range-parser-0-0-4 [email protected]
2190 verbose lock [email protected] /home/sharejs/.npm/0760c556-range-parser-0-0-4.lock
2191 verbose cache add [ '[email protected]', null ]
2192 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
2193 verbose parsed url { protocol: null,
2193 verbose parsed url slashes: null,
2193 verbose parsed url auth: null,
2193 verbose parsed url host: null,
2193 verbose parsed url port: null,
2193 verbose parsed url hostname: null,
2193 verbose parsed url hash: null,
2193 verbose parsed url search: null,
2193 verbose parsed url query: null,
2193 verbose parsed url pathname: '[email protected]',
2193 verbose parsed url path: '[email protected]',
2193 verbose parsed url href: '[email protected]' }
2194 verbose cache add name="mkdirp" spec="0.3.5" args=["mkdirp","0.3.5"]
2195 verbose parsed url { protocol: null,
2195 verbose parsed url slashes: null,
2195 verbose parsed url auth: null,
2195 verbose parsed url host: null,
2195 verbose parsed url port: null,
2195 verbose parsed url hostname: null,
2195 verbose parsed url hash: null,
2195 verbose parsed url search: null,
2195 verbose parsed url query: null,
2195 verbose parsed url pathname: '0.3.5',
2195 verbose parsed url path: '0.3.5',
2195 verbose parsed url href: '0.3.5' }
2196 verbose addNamed [ 'mkdirp', '0.3.5' ]
2197 verbose addNamed [ '0.3.5', '0.3.5' ]
2198 silly lockFile 67d2df2a-mkdirp-0-3-5 [email protected]
2199 verbose lock [email protected] /home/sharejs/.npm/67d2df2a-mkdirp-0-3-5.lock
2200 verbose cache add [ '[email protected]', null ]
2201 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
2202 verbose parsed url { protocol: null,
2202 verbose parsed url slashes: null,
2202 verbose parsed url auth: null,
2202 verbose parsed url host: null,
2202 verbose parsed url port: null,
2202 verbose parsed url hostname: null,
2202 verbose parsed url hash: null,
2202 verbose parsed url search: null,
2202 verbose parsed url query: null,
2202 verbose parsed url pathname: '[email protected]',
2202 verbose parsed url path: '[email protected]',
2202 verbose parsed url href: '[email protected]' }
2203 verbose cache add name="cookie" spec="0.1.0" args=["cookie","0.1.0"]
2204 verbose parsed url { protocol: null,
2204 verbose parsed url slashes: null,
2204 verbose parsed url auth: null,
2204 verbose parsed url host: null,
2204 verbose parsed url port: null,
2204 verbose parsed url hostname: null,
2204 verbose parsed url hash: null,
2204 verbose parsed url search: null,
2204 verbose parsed url query: null,
2204 verbose parsed url pathname: '0.1.0',
2204 verbose parsed url path: '0.1.0',
2204 verbose parsed url href: '0.1.0' }
2205 verbose addNamed [ 'cookie', '0.1.0' ]
2206 verbose addNamed [ '0.1.0', '0.1.0' ]
2207 silly lockFile b55e145e-cookie-0-1-0 [email protected]
2208 verbose lock [email protected] /home/sharejs/.npm/b55e145e-cookie-0-1-0.lock
2209 silly addNameRange { name: 'debug', range: '>=0.7.3 <1.0.0-0', hasData: false }
2210 silly gunzTarPerm extractEntry examples/psubscribe.js
2211 silly gunzTarPerm extractEntry examples/pub_sub.js
2212 silly gunzTarPerm extractEntry lib/types/text-api.js
2213 silly gunzTarPerm extractEntry test/streams/test-rolling-file-stream-write-more
2214 silly gunzTarPerm extractEntry test/streams/test-rolling-stream-with-existing-files.20
2215 verbose url raw fresh/0.2.0
2216 verbose url resolving [ 'https://registry.npmjs.org/', './fresh/0.2.0' ]
2217 verbose url resolved https://registry.npmjs.org/fresh/0.2.0
2218 info trying registry request attempt 1 at 17:18:18
2219 verbose etag "4TFE69K5UDEX6FM1AXEX2MSAU"
2220 http GET https://registry.npmjs.org/fresh/0.2.0
2221 verbose url raw buffer-crc32/0.2.1
2222 verbose url resolving [ 'https://registry.npmjs.org/', './buffer-crc32/0.2.1' ]
2223 verbose url resolved https://registry.npmjs.org/buffer-crc32/0.2.1
2224 info trying registry request attempt 1 at 17:18:18
2225 verbose etag "BMB32A2O3E2SU2ZWZ9OYSDLO3"
2226 http GET https://registry.npmjs.org/buffer-crc32/0.2.1
2227 verbose url raw methods/0.1.0
2228 verbose url resolving [ 'https://registry.npmjs.org/', './methods/0.1.0' ]
2229 verbose url resolved https://registry.npmjs.org/methods/0.1.0
2230 info trying registry request attempt 1 at 17:18:18
2231 verbose etag "9X2ZTRO6TVHF2NVWVRUVW04PH"
2232 http GET https://registry.npmjs.org/methods/0.1.0
2233 verbose url raw send/0.1.4
2234 verbose url resolving [ 'https://registry.npmjs.org/', './send/0.1.4' ]
2235 verbose url resolved https://registry.npmjs.org/send/0.1.4
2236 info trying registry request attempt 1 at 17:18:18
2237 verbose etag "9C3B2FC8QK9V9PPYBFUXTMM5L"
2238 http GET https://registry.npmjs.org/send/0.1.4
2239 verbose url raw cookie-signature/1.0.1
2240 verbose url resolving [ 'https://registry.npmjs.org/', './cookie-signature/1.0.1' ]
2241 verbose url resolved https://registry.npmjs.org/cookie-signature/1.0.1
2242 info trying registry request attempt 1 at 17:18:18
2243 verbose etag "8IHLLMYRE7UPMEPRLI60US1KF"
2244 http GET https://registry.npmjs.org/cookie-signature/1.0.1
2245 verbose url raw merge-descriptors/0.0.1
2246 verbose url resolving [ 'https://registry.npmjs.org/', './merge-descriptors/0.0.1' ]
2247 verbose url resolved https://registry.npmjs.org/merge-descriptors/0.0.1
2248 info trying registry request attempt 1 at 17:18:18
2249 verbose etag "E8KT0FKLLAWTGQPRHFF3OXU73"
2250 http GET https://registry.npmjs.org/merge-descriptors/0.0.1
2251 verbose url raw debug
2252 verbose url resolving [ 'https://registry.npmjs.org/', './debug' ]
2253 verbose url resolved https://registry.npmjs.org/debug
2254 info trying registry request attempt 1 at 17:18:18
2255 verbose etag "92FUIHM53XU9EYF7GLDLJG0QH"
2256 http GET https://registry.npmjs.org/debug
2257 silly gunzTarPerm extractEntry lib/public/icons/page_white_acrobat.png
2258 silly gunzTarPerm extractEntry lib/public/icons/page_white_actionscript.png
2259 verbose url raw connect/2.12.0
2260 verbose url resolving [ 'https://registry.npmjs.org/', './connect/2.12.0' ]
2261 verbose url resolved https://registry.npmjs.org/connect/2.12.0
2262 info trying registry request attempt 1 at 17:18:18
2263 verbose etag "1KOME83NOH3JLW3LY0ADM3QLT"
2264 http GET https://registry.npmjs.org/connect/2.12.0
2265 verbose url raw commander/1.3.2
2266 verbose url resolving [ 'https://registry.npmjs.org/', './commander/1.3.2' ]
2267 verbose url resolved https://registry.npmjs.org/commander/1.3.2
2268 info trying registry request attempt 1 at 17:18:18
2269 verbose etag "6TUSC25XULV630WAWJ5MJN2W4"
2270 http GET https://registry.npmjs.org/commander/1.3.2
2271 verbose url raw range-parser/0.0.4
2272 verbose url resolving [ 'https://registry.npmjs.org/', './range-parser/0.0.4' ]
2273 verbose url resolved https://registry.npmjs.org/range-parser/0.0.4
2274 info trying registry request attempt 1 at 17:18:18
2275 verbose etag "C458U3YBTKU9KWUZ18WVCF6A5"
2276 http GET https://registry.npmjs.org/range-parser/0.0.4
2277 verbose url raw mkdirp/0.3.5
2278 verbose url resolving [ 'https://registry.npmjs.org/', './mkdirp/0.3.5' ]
2279 verbose url resolved https://registry.npmjs.org/mkdirp/0.3.5
2280 info trying registry request attempt 1 at 17:18:18
2281 verbose etag "J3FKNBLWW0BK8VOC9OPNSTLB"
2282 http GET https://registry.npmjs.org/mkdirp/0.3.5
2283 verbose url raw cookie/0.1.0
2284 verbose url resolving [ 'https://registry.npmjs.org/', './cookie/0.1.0' ]
2285 verbose url resolved https://registry.npmjs.org/cookie/0.1.0
2286 info trying registry request attempt 1 at 17:18:18
2287 verbose etag "7H64BQPNUS8EAN144H1WU0XIL"
2288 http GET https://registry.npmjs.org/cookie/0.1.0
2289 silly lockFile 0abfbc83-131218171509-node-modules-livedb tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb
2290 silly lockFile 0abfbc83-131218171509-node-modules-livedb tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb
2291 silly lockFile 4d9255f1-ejs-npm-livedb-0-2-8-package-tgz tar:///home/sharejs/.npm/livedb/0.2.8/package.tgz
2292 silly lockFile 4d9255f1-ejs-npm-livedb-0-2-8-package-tgz tar:///home/sharejs/.npm/livedb/0.2.8/package.tgz
2293 silly gunzTarPerm extractEntry lib/types/text-tp2-api.js
2294 silly gunzTarPerm extractEntry metadata.md
2295 silly gunzTarPerm extractEntry examples/simple.js
2296 silly gunzTarPerm extractEntry examples/sort.js
2297 silly gunzTarPerm extractEntry test/streams/test-rolling-stream-with-existing-files
2298 silly gunzTarPerm extractEntry test/streams/test-rolling-stream-with-existing-files.0
2299 info preinstall [email protected]
2300 silly gunzTarPerm extractEntry lib/public/icons/page_white_add.png
2301 silly gunzTarPerm extractEntry lib/public/icons/page_white_c.png
2302 verbose readDependencies using package.json deps
2303 silly gunzTarPerm extractEntry lib/instrumentation/express.js
2304 silly gunzTarPerm extractEntry lib/instrumentation/generic-pool.js
2305 verbose readDependencies using package.json deps
2306 silly gunzTarPerm extractEntry examples/subqueries.js
2307 silly gunzTarPerm extractEntry examples/extend.js
2308 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.19/nodetime_native.node
2309 verbose cache add [ 'statsd-client@*', null ]
2310 verbose cache add name=undefined spec="statsd-client@*" args=["statsd-client@*",null]
2311 verbose parsed url { protocol: null,
2311 verbose parsed url slashes: null,
2311 verbose parsed url auth: null,
2311 verbose parsed url host: null,
2311 verbose parsed url port: null,
2311 verbose parsed url hostname: null,
2311 verbose parsed url hash: null,
2311 verbose parsed url search: null,
2311 verbose parsed url query: null,
2311 verbose parsed url pathname: 'statsd-client@*',
2311 verbose parsed url path: 'statsd-client@*',
2311 verbose parsed url href: 'statsd-client@*' }
2312 verbose cache add name="statsd-client" spec="*" args=["statsd-client","*"]
2313 verbose parsed url { protocol: null,
2313 verbose parsed url slashes: null,
2313 verbose parsed url auth: null,
2313 verbose parsed url host: null,
2313 verbose parsed url port: null,
2313 verbose parsed url hostname: null,
2313 verbose parsed url hash: null,
2313 verbose parsed url search: null,
2313 verbose parsed url query: null,
2313 verbose parsed url pathname: '*',
2313 verbose parsed url path: '*',
2313 verbose parsed url href: '*' }
2314 verbose addNamed [ 'statsd-client', '*' ]
2315 verbose addNamed [ null, '*' ]
2316 silly lockFile 06036119-statsd-client statsd-client@*
2317 verbose lock statsd-client@* /home/sharejs/.npm/06036119-statsd-client.lock
2318 verbose cache add [ 'hiredis@~0.1', null ]
2319 verbose cache add name=undefined spec="hiredis@~0.1" args=["hiredis@~0.1",null]
2320 verbose parsed url { protocol: null,
2320 verbose parsed url slashes: null,
2320 verbose parsed url auth: null,
2320 verbose parsed url host: null,
2320 verbose parsed url port: null,
2320 verbose parsed url hostname: null,
2320 verbose parsed url hash: null,
2320 verbose parsed url search: null,
2320 verbose parsed url query: null,
2320 verbose parsed url pathname: 'hiredis@~0.1',
2320 verbose parsed url path: 'hiredis@~0.1',
2320 verbose parsed url href: 'hiredis@~0.1' }
2321 verbose cache add name="hiredis" spec="~0.1" args=["hiredis","~0.1"]
2322 verbose parsed url { protocol: null,
2322 verbose parsed url slashes: null,
2322 verbose parsed url auth: null,
2322 verbose parsed url host: null,
2322 verbose parsed url port: null,
2322 verbose parsed url hostname: null,
2322 verbose parsed url hash: null,
2322 verbose parsed url search: null,
2322 verbose parsed url query: null,
2322 verbose parsed url pathname: '~0.1',
2322 verbose parsed url path: '~0.1',
2322 verbose parsed url href: '~0.1' }
2323 verbose addNamed [ 'hiredis', '~0.1' ]
2324 verbose addNamed [ null, '>=0.1.0-0 <0.2.0-0' ]
2325 silly lockFile 9b272b60-hiredis-0-1 hiredis@~0.1
2326 verbose lock hiredis@~0.1 /home/sharejs/.npm/9b272b60-hiredis-0-1.lock
2327 verbose cache add [ 'redis@~0.8', null ]
2328 verbose cache add name=undefined spec="redis@~0.8" args=["redis@~0.8",null]
2329 verbose parsed url { protocol: null,
2329 verbose parsed url slashes: null,
2329 verbose parsed url auth: null,
2329 verbose parsed url host: null,
2329 verbose parsed url port: null,
2329 verbose parsed url hostname: null,
2329 verbose parsed url hash: null,
2329 verbose parsed url search: null,
2329 verbose parsed url query: null,
2329 verbose parsed url pathname: 'redis@~0.8',
2329 verbose parsed url path: 'redis@~0.8',
2329 verbose parsed url href: 'redis@~0.8' }
2330 verbose cache add name="redis" spec="~0.8" args=["redis","~0.8"]
2331 verbose parsed url { protocol: null,
2331 verbose parsed url slashes: null,
2331 verbose parsed url auth: null,
2331 verbose parsed url host: null,
2331 verbose parsed url port: null,
2331 verbose parsed url hostname: null,
2331 verbose parsed url hash: null,
2331 verbose parsed url search: null,
2331 verbose parsed url query: null,
2331 verbose parsed url pathname: '~0.8',
2331 verbose parsed url path: '~0.8',
2331 verbose parsed url href: '~0.8' }
2332 verbose addNamed [ 'redis', '~0.8' ]
2333 verbose addNamed [ null, '>=0.8.0-0 <0.9.0-0' ]
2334 silly lockFile f9efe19a-redis-0-8 redis@~0.8
2335 verbose lock redis@~0.8 /home/sharejs/.npm/f9efe19a-redis-0-8.lock
2336 verbose cache add [ 'deep-is@~0.1', null ]
2337 verbose cache add name=undefined spec="deep-is@~0.1" args=["deep-is@~0.1",null]
2338 verbose parsed url { protocol: null,
2338 verbose parsed url slashes: null,
2338 verbose parsed url auth: null,
2338 verbose parsed url host: null,
2338 verbose parsed url port: null,
2338 verbose parsed url hostname: null,
2338 verbose parsed url hash: null,
2338 verbose parsed url search: null,
2338 verbose parsed url query: null,
2338 verbose parsed url pathname: 'deep-is@~0.1',
2338 verbose parsed url path: 'deep-is@~0.1',
2338 verbose parsed url href: 'deep-is@~0.1' }
2339 verbose cache add name="deep-is" spec="~0.1" args=["deep-is","~0.1"]
2340 verbose parsed url { protocol: null,
2340 verbose parsed url slashes: null,
2340 verbose parsed url auth: null,
2340 verbose parsed url host: null,
2340 verbose parsed url port: null,
2340 verbose parsed url hostname: null,
2340 verbose parsed url hash: null,
2340 verbose parsed url search: null,
2340 verbose parsed url query: null,
2340 verbose parsed url pathname: '~0.1',
2340 verbose parsed url path: '~0.1',
2340 verbose parsed url href: '~0.1' }
2341 verbose addNamed [ 'deep-is', '~0.1' ]
2342 verbose addNamed [ null, '>=0.1.0-0 <0.2.0-0' ]
2343 silly lockFile ab2c1840-deep-is-0-1 deep-is@~0.1
2344 verbose lock deep-is@~0.1 /home/sharejs/.npm/ab2c1840-deep-is-0-1.lock
2345 verbose cache add [ 'arraydiff@~0.1', null ]
2346 verbose cache add name=undefined spec="arraydiff@~0.1" args=["arraydiff@~0.1",null]
2347 verbose parsed url { protocol: null,
2347 verbose parsed url slashes: null,
2347 verbose parsed url auth: null,
2347 verbose parsed url host: null,
2347 verbose parsed url port: null,
2347 verbose parsed url hostname: null,
2347 verbose parsed url hash: null,
2347 verbose parsed url search: null,
2347 verbose parsed url query: null,
2347 verbose parsed url pathname: 'arraydiff@~0.1',
2347 verbose parsed url path: 'arraydiff@~0.1',
2347 verbose parsed url href: 'arraydiff@~0.1' }
2348 verbose cache add name="arraydiff" spec="~0.1" args=["arraydiff","~0.1"]
2349 verbose parsed url { protocol: null,
2349 verbose parsed url slashes: null,
2349 verbose parsed url auth: null,
2349 verbose parsed url host: null,
2349 verbose parsed url port: null,
2349 verbose parsed url hostname: null,
2349 verbose parsed url hash: null,
2349 verbose parsed url search: null,
2349 verbose parsed url query: null,
2349 verbose parsed url pathname: '~0.1',
2349 verbose parsed url path: '~0.1',
2349 verbose parsed url href: '~0.1' }
2350 verbose addNamed [ 'arraydiff', '~0.1' ]
2351 verbose addNamed [ null, '>=0.1.0-0 <0.2.0-0' ]
2352 silly lockFile 90eb1812-arraydiff-0-1 arraydiff@~0.1
2353 verbose lock arraydiff@~0.1 /home/sharejs/.npm/90eb1812-arraydiff-0-1.lock
2354 silly addNameRange { name: 'statsd-client', range: '*', hasData: false }
2355 silly addNameRange { name: 'hiredis', range: '>=0.1.0-0 <0.2.0-0', hasData: false }
2356 silly gunzTarPerm extractEntry test/streams/test-rolling-stream-with-existing-files.1
2357 silly gunzTarPerm extractEntry test/streams/test-rolling-stream-with-existing-files.11
2358 silly addNameRange { name: 'redis', range: '>=0.8.0-0 <0.9.0-0', hasData: false }
2359 silly addNameRange { name: 'deep-is', range: '>=0.1.0-0 <0.2.0-0', hasData: false }
2360 silly addNameRange { name: 'arraydiff',
2360 silly addNameRange range: '>=0.1.0-0 <0.2.0-0',
2360 silly addNameRange hasData: false }
2361 silly gunzTarPerm extractEntry Makefile
2362 silly gunzTarPerm extractEntry prototype/package.json
2363 silly gunzTarPerm extractEntry lib/public/icons/page_white_camera.png
2364 silly gunzTarPerm extractEntry lib/public/icons/page_white_cd.png
2365 silly gunzTarPerm extractEntry examples/subquery.js
2366 silly gunzTarPerm extractEntry examples/eval.js
2367 verbose url raw statsd-client
2368 verbose url resolving [ 'https://registry.npmjs.org/', './statsd-client' ]
2369 verbose url resolved https://registry.npmjs.org/statsd-client
2370 info trying registry request attempt 1 at 17:18:18
2371 verbose etag "2R7RMKNS9HC37J3A7CMFY5JB6"
2372 http GET https://registry.npmjs.org/statsd-client
2373 verbose url raw hiredis
2374 verbose url resolving [ 'https://registry.npmjs.org/', './hiredis' ]
2375 verbose url resolved https://registry.npmjs.org/hiredis
2376 info trying registry request attempt 1 at 17:18:18
2377 verbose etag "1SHDJWT6E7MWMZY7UDNUX97F4"
2378 http GET https://registry.npmjs.org/hiredis
2379 verbose url raw redis
2380 verbose url resolving [ 'https://registry.npmjs.org/', './redis' ]
2381 verbose url resolved https://registry.npmjs.org/redis
2382 info trying registry request attempt 1 at 17:18:18
2383 verbose etag "E2PPTGX1WHN38SJOPTB8K7PZ1"
2384 http GET https://registry.npmjs.org/redis
2385 verbose url raw deep-is
2386 verbose url resolving [ 'https://registry.npmjs.org/', './deep-is' ]
2387 verbose url resolved https://registry.npmjs.org/deep-is
2388 info trying registry request attempt 1 at 17:18:18
2389 verbose etag "8IJ4B93KIEKW5P3QNZ7V6QZDV"
2390 http GET https://registry.npmjs.org/deep-is
2391 verbose url raw arraydiff
2392 verbose url resolving [ 'https://registry.npmjs.org/', './arraydiff' ]
2393 verbose url resolved https://registry.npmjs.org/arraydiff
2394 info trying registry request attempt 1 at 17:18:18
2395 verbose etag "ALUHF5RIMNJ0MB4R5PPGCJO3D"
2396 http GET https://registry.npmjs.org/arraydiff
2397 silly gunzTarPerm extractEntry lib/instrumentation/memcached.js
2398 silly gunzTarPerm extractEntry lib/instrumentation/mongodb.js
2399 silly gunzTarPerm extractEntry test/streams/test-rolling-stream-with-existing-files.2
2400 silly gunzTarPerm extractEntry test/streams/test-rolling-file-stream-write-more.1
2401 silly gunzTarPerm extractEntry examples/unix_socket.js
2402 silly gunzTarPerm extractEntry examples/backpressure_drain.js
2403 silly gunzTarPerm extractEntry lib/public/icons/page_white_code.png
2404 silly gunzTarPerm extractEntry lib/public/icons/page_white_code_red.png
2405 silly gunzTarPerm extractEntry prototype/server.js
2406 silly gunzTarPerm extractEntry prototype/clock.coffee
2407 silly gunzTarPerm extractEntry test/with-categoryFilter.json
2408 silly gunzTarPerm extractEntry test/with-dateFile.json
2409 silly gunzTarPerm extractEntry lib/instrumentation/mysql.js
2410 silly gunzTarPerm extractEntry lib/instrumentation/redis.js
2411 silly gunzTarPerm extractEntry prototype/public/jsoneditor-min.js
2412 silly gunzTarPerm extractEntry prototype/public/create.html
2413 silly gunzTarPerm extractEntry examples/web_server.js
2414 silly gunzTarPerm extractEntry examples/multi2.js
2415 silly gunzTarPerm extractEntry lib/public/icons/page_white_coldfusion.png
2416 silly gunzTarPerm extractEntry lib/public/icons/page_white_compressed.png
2417 silly gunzTarPerm extractEntry test/with-log-rolling.json
2418 silly gunzTarPerm extractEntry test/with-logLevelFilter.json
2419 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.2/nodetime_native.node
2420 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.20/nodetime_native.node
2421 silly gunzTarPerm extractEntry changelog.md
2422 silly gunzTarPerm extractEntry benches/buffer_bench.js
2423 silly gunzTarPerm extractEntry lib/public/icons/page_white_copy.png
2424 silly gunzTarPerm extractEntry lib/public/icons/page_white_cplusplus.png
2425 silly gunzTarPerm extractEntry prototype/public/img/jsoneditor-icons.png
2426 silly gunzTarPerm extractEntry prototype/public/index.html
2427 http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
2428 silly registry.get cb [ 304,
2428 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
2428 silly registry.get etag: '"BMB32A2O3E2SU2ZWZ9OYSDLO3"',
2428 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2428 silly registry.get 'content-length': '0' } ]
2429 verbose etag buffer-crc32/0.2.1 from cache
2430 silly gunzTarPerm extractEntry lib/instrumentation/restify.js
2431 silly gunzTarPerm extractEntry lib/instrumentation/core/fs.js
2432 http 304 https://registry.npmjs.org/fresh/0.2.0
2433 silly registry.get cb [ 304,
2433 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
2433 silly registry.get etag: '"4TFE69K5UDEX6FM1AXEX2MSAU"',
2433 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2433 silly registry.get 'content-length': '0' } ]
2434 verbose etag fresh/0.2.0 from cache
2435 silly gunzTarPerm extractEntry benches/hiredis_parser.js
2436 silly gunzTarPerm extractEntry benches/re_sub_test.js
2437 http 304 https://registry.npmjs.org/methods/0.1.0
2438 silly registry.get cb [ 304,
2438 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
2438 silly registry.get etag: '"9X2ZTRO6TVHF2NVWVRUVW04PH"',
2438 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2438 silly registry.get 'content-length': '0' } ]
2439 verbose etag methods/0.1.0 from cache
2440 http 304 https://registry.npmjs.org/cookie-signature/1.0.1
2441 silly registry.get cb [ 304,
2441 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
2441 silly registry.get etag: '"8IHLLMYRE7UPMEPRLI60US1KF"',
2441 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2441 silly registry.get 'content-length': '0' } ]
2442 verbose etag cookie-signature/1.0.1 from cache
2443 silly gunzTarPerm extractEntry prototype/public/json.html
2444 silly gunzTarPerm extractEntry prototype/public/json_list.html
2445 silly gunzTarPerm extractEntry lib/public/icons/page_white_csharp.png
2446 silly gunzTarPerm extractEntry lib/public/icons/page_white_cup.png
2447 silly gunzTarPerm extractEntry benches/reconnect_test.js
2448 silly gunzTarPerm extractEntry benches/sub_quit_test.js
2449 http 304 https://registry.npmjs.org/send/0.1.4
2450 silly registry.get cb [ 304,
2450 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
2450 silly registry.get etag: '"9C3B2FC8QK9V9PPYBFUXTMM5L"',
2450 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2450 silly registry.get 'content-length': '0' } ]
2451 verbose etag send/0.1.4 from cache
2452 http 304 https://registry.npmjs.org/debug
2453 silly registry.get cb [ 304,
2453 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
2453 silly registry.get etag: '"92FUIHM53XU9EYF7GLDLJG0QH"',
2453 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2453 silly registry.get 'content-length': '0' } ]
2454 verbose etag debug from cache
2455 http 304 https://registry.npmjs.org/merge-descriptors/0.0.1
2456 silly registry.get cb [ 304,
2456 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
2456 silly registry.get etag: '"E8KT0FKLLAWTGQPRHFF3OXU73"',
2456 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2456 silly registry.get 'content-length': '0' } ]
2457 verbose etag merge-descriptors/0.0.1 from cache
2458 silly gunzTarPerm extractEntry test0
2459 silly gunzTarPerm extractEntry test1
2460 http 304 https://registry.npmjs.org/connect/2.12.0
2461 silly registry.get cb [ 304,
2461 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
2461 silly registry.get etag: '"1KOME83NOH3JLW3LY0ADM3QLT"',
2461 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2461 silly registry.get 'content-length': '0' } ]
2462 verbose etag connect/2.12.0 from cache
2463 silly gunzTarPerm extractEntry prototype/public/jsoneditor-min.css
2464 silly gunzTarPerm extractEntry prototype/public/list.html
2465 silly lockFile 057d0d26-buffer-crc32-0-2-1 [email protected]
2466 silly lockFile 057d0d26-buffer-crc32-0-2-1 [email protected]
2467 silly lockFile 1a4cf0d3-fresh-0-2-0 [email protected]
2468 silly lockFile 1a4cf0d3-fresh-0-2-0 [email protected]
2469 http 304 https://registry.npmjs.org/commander/1.3.2
2470 silly registry.get cb [ 304,
2470 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
2470 silly registry.get etag: '"6TUSC25XULV630WAWJ5MJN2W4"',
2470 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2470 silly registry.get 'content-length': '0' } ]
2471 verbose etag commander/1.3.2 from cache
2472 silly addNameRange number 2 { name: 'debug', range: '>=0.7.3 <1.0.0-0', hasData: true }
2473 silly addNameRange versions [ 'debug',
2473 silly addNameRange [ '0.0.1',
2473 silly addNameRange '0.1.0',
2473 silly addNameRange '0.2.0',
2473 silly addNameRange '0.3.0',
2473 silly addNameRange '0.4.0',
2473 silly addNameRange '0.4.1',
2473 silly addNameRange '0.5.0',
2473 silly addNameRange '0.6.0',
2473 silly addNameRange '0.7.0',
2473 silly addNameRange '0.7.1',
2473 silly addNameRange '0.7.2',
2473 silly addNameRange '0.7.3',
2473 silly addNameRange '0.7.4' ] ]
2474 verbose addNamed [ 'debug', '0.7.4' ]
2475 verbose addNamed [ '0.7.4', '0.7.4' ]
2476 silly lockFile 16160008-debug-0-7-4 [email protected]
2477 verbose lock [email protected] /home/sharejs/.npm/16160008-debug-0-7-4.lock
2478 silly gunzTarPerm extractEntry lib/public/icons/page_white_database.png
2479 silly gunzTarPerm extractEntry lib/public/icons/page_white_delete.png
2480 http 304 https://registry.npmjs.org/range-parser/0.0.4
2481 silly registry.get cb [ 304,
2481 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
2481 silly registry.get etag: '"C458U3YBTKU9KWUZ18WVCF6A5"',
2481 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2481 silly registry.get 'content-length': '0' } ]
2482 verbose etag range-parser/0.0.4 from cache
2483 http 304 https://registry.npmjs.org/mkdirp/0.3.5
2484 silly registry.get cb [ 304,
2484 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
2484 silly registry.get etag: '"J3FKNBLWW0BK8VOC9OPNSTLB"',
2484 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2484 silly registry.get 'content-length': '0' } ]
2485 verbose etag mkdirp/0.3.5 from cache
2486 silly gunzTarPerm extractEntry benches/stress/codec.js
2487 silly gunzTarPerm extractEntry benches/stress/pubsub/pub.js
2488 http 304 https://registry.npmjs.org/cookie/0.1.0
2489 silly registry.get cb [ 304,
2489 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
2489 silly registry.get etag: '"7H64BQPNUS8EAN144H1WU0XIL"',
2489 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2489 silly registry.get 'content-length': '0' } ]
2490 verbose etag cookie/0.1.0 from cache
2491 silly lockFile 81f018b6-methods-0-1-0 [email protected]
2492 silly lockFile 81f018b6-methods-0-1-0 [email protected]
2493 http 304 https://registry.npmjs.org/statsd-client
2494 silly registry.get cb [ 304,
2494 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
2494 silly registry.get etag: '"2R7RMKNS9HC37J3A7CMFY5JB6"',
2494 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2494 silly registry.get 'content-length': '0' } ]
2495 verbose etag statsd-client from cache
2496 silly gunzTarPerm extractEntry dist/lodash.js
2497 silly gunzTarPerm extractEntry dist/lodash.min.js
2498 silly gunzTarPerm extractEntry dist/lodash.underscore.js
2499 silly gunzTarPerm extractEntry dist/lodash.underscore.min.js
2500 silly lockFile d4a1eba1-cookie-signature-1-0-1 [email protected]
2501 silly lockFile d4a1eba1-cookie-signature-1-0-1 [email protected]
2502 http 304 https://registry.npmjs.org/hiredis
2503 silly registry.get cb [ 304,
2503 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
2503 silly registry.get etag: '"1SHDJWT6E7MWMZY7UDNUX97F4"',
2503 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2503 silly registry.get 'content-length': '0' } ]
2504 verbose etag hiredis from cache
2505 silly gunzTarPerm extractEntry prototype/public/multi.html
2506 silly gunzTarPerm extractEntry scripts/apply.csv
2507 http 304 https://registry.npmjs.org/deep-is
2508 silly registry.get cb [ 304,
2508 silly registry.get { server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
2508 silly registry.get etag: '"8IJ4B93KIEKW5P3QNZ7V6QZDV"',
2508 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2508 silly registry.get 'content-length': '0' } ]
2509 verbose etag deep-is from cache
2510 http 304 https://registry.npmjs.org/redis
2511 silly registry.get cb [ 304,
2511 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
2511 silly registry.get etag: '"E2PPTGX1WHN38SJOPTB8K7PZ1"',
2511 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2511 silly registry.get 'content-length': '0' } ]
2512 verbose etag redis from cache
2513 http 304 https://registry.npmjs.org/arraydiff
2514 silly registry.get cb [ 304,
2514 silly registry.get { server: 'CouchDB/1.3.1 (Erlang OTP/R15B03)',
2514 silly registry.get etag: '"ALUHF5RIMNJ0MB4R5PPGCJO3D"',
2514 silly registry.get date: 'Wed, 18 Dec 2013 17:18:18 GMT',
2514 silly registry.get 'content-length': '0' } ]
2515 verbose etag arraydiff from cache
2516 silly lockFile 555fd08a-send-0-1-4 [email protected]
2517 silly lockFile 555fd08a-send-0-1-4 [email protected]
2518 silly addNameRange number 2 { name: 'statsd-client', range: '*', hasData: true }
2519 silly addNameRange versions [ 'statsd-client',
2519 silly addNameRange [ '0.0.0',
2519 silly addNameRange '0.0.1',
2519 silly addNameRange '0.0.2',
2519 silly addNameRange '0.0.3',
2519 silly addNameRange '0.0.4',
2519 silly addNameRange '0.0.5',
2519 silly addNameRange '0.0.6',
2519 silly addNameRange '0.0.7',
2519 silly addNameRange '0.0.8',
2519 silly addNameRange '0.0.9',
2519 silly addNameRange '0.0.10',
2519 silly addNameRange '0.0.11',
2519 silly addNameRange '0.0.12',
2519 silly addNameRange '0.0.13',
2519 silly addNameRange '0.0.14',
2519 silly addNameRange '0.0.15' ] ]
2520 verbose addNamed [ 'statsd-client', '0.0.15' ]
2521 verbose addNamed [ '0.0.15', '0.0.15' ]
2522 silly lockFile 133c5903-statsd-client-0-0-15 [email protected]
2523 verbose lock [email protected] /home/sharejs/.npm/133c5903-statsd-client-0-0-15.lock
2524 silly lockFile 5220b296-merge-descriptors-0-0-1 [email protected]
2525 silly lockFile 5220b296-merge-descriptors-0-0-1 [email protected]
2526 silly lockFile 2bd7d3df-131218171509-node-modules-sockjs tar:///var/www/sharejs/releases/20131218171509/node_modules/sockjs
2527 silly lockFile 2bd7d3df-131218171509-node-modules-sockjs tar:///var/www/sharejs/releases/20131218171509/node_modules/sockjs
2528 silly gunzTarPerm extractEntry benches/stress/pubsub/server.js
2529 silly gunzTarPerm extractEntry benches/stress/pubsub/run
2530 silly addNameRange number 2 { name: 'hiredis', range: '>=0.1.0-0 <0.2.0-0', hasData: true }
2531 silly addNameRange versions [ 'hiredis',
2531 silly addNameRange [ '0.1.0',
2531 silly addNameRange '0.1.1',
2531 silly addNameRange '0.1.2',
2531 silly addNameRange '0.1.3',
2531 silly addNameRange '0.1.4',
2531 silly addNameRange '0.1.5',
2531 silly addNameRange '0.1.6',
2531 silly addNameRange '0.1.8',
2531 silly addNameRange '0.1.9',
2531 silly addNameRange '0.1.10',
2531 silly addNameRange '0.1.12',
2531 silly addNameRange '0.1.13',
2531 silly addNameRange '0.1.14',
2531 silly addNameRange '0.1.15',
2531 silly addNameRange '0.1.16' ] ]
2532 verbose addNamed [ 'hiredis', '0.1.16' ]
2533 verbose addNamed [ '0.1.16', '0.1.16' ]
2534 silly lockFile beed5615-hiredis-0-1-16 [email protected]
2535 verbose lock [email protected] /home/sharejs/.npm/beed5615-hiredis-0-1-16.lock
2536 silly lockFile f519dab6-ejs-npm-sockjs-0-3-8-package-tgz tar:///home/sharejs/.npm/sockjs/0.3.8/package.tgz
2537 silly lockFile f519dab6-ejs-npm-sockjs-0-3-8-package-tgz tar:///home/sharejs/.npm/sockjs/0.3.8/package.tgz
2538 silly lockFile 16160008-debug-0-7-4 [email protected]
2539 silly lockFile 16160008-debug-0-7-4 [email protected]
2540 silly gunzTarPerm extractEntry scripts/bench-composable.coffee
2541 silly gunzTarPerm extractEntry scripts/bench.coffee
2542 silly lockFile a781479f-debug-0-7-3-1 debug@>= 0.7.3 < 1
2543 silly lockFile a781479f-debug-0-7-3-1 debug@>= 0.7.3 < 1
2544 silly addNameRange number 2 { name: 'deep-is', range: '>=0.1.0-0 <0.2.0-0', hasData: true }
2545 silly addNameRange versions [ 'deep-is', [ '0.1.0', '0.1.1', '0.1.2' ] ]
2546 verbose addNamed [ 'deep-is', '0.1.2' ]
2547 verbose addNamed [ '0.1.2', '0.1.2' ]
2548 silly lockFile afcebadc-deep-is-0-1-2 [email protected]
2549 verbose lock [email protected] /home/sharejs/.npm/afcebadc-deep-is-0-1-2.lock
2550 silly gunzTarPerm extractEntry lib/public/icons/page_white_dvd.png
2551 silly gunzTarPerm extractEntry lib/public/icons/page_add.png
2552 silly lockFile a4bed1c7-connect-2-12-0 [email protected]
2553 silly lockFile a4bed1c7-connect-2-12-0 [email protected]
2554 silly addNameRange number 2 { name: 'redis', range: '>=0.8.0-0 <0.9.0-0', hasData: true }
2555 silly addNameRange versions [ 'redis',
2555 silly addNameRange [ '0.0.1',
2555 silly addNameRange '0.0.2',
2555 silly addNameRange '0.0.3',
2555 silly addNameRange '0.0.4',
2555 silly addNameRange '0.0.7',
2555 silly addNameRange '0.0.8',
2555 silly addNameRange '0.1.0',
2555 silly addNameRange '0.1.1',
2555 silly addNameRange '0.1.2',
2555 silly addNameRange '0.2.0',
2555 silly addNameRange '0.2.1',
2555 silly addNameRange '0.2.2',
2555 silly addNameRange '0.2.3',
2555 silly addNameRange '0.2.4',
2555 silly addNameRange '0.2.6',
2555 silly addNameRange '0.3.0',
2555 silly addNameRange '0.3.1',
2555 silly addNameRange '0.3.2',
2555 silly addNameRange '0.3.3',
2555 silly addNameRange '0.3.4',
2555 silly addNameRange '0.3.5',
2555 silly addNameRange '0.3.6',
2555 silly addNameRange '0.3.7',
2555 silly addNameRange '0.3.9',
2555 silly addNameRange '0.4.0',
2555 silly addNameRange '0.4.1',
2555 silly addNameRange '0.4.2',
2555 silly addNameRange '0.5.0',
2555 silly addNameRange '0.5.1',
2555 silly addNameRange '0.5.2',
2555 silly addNameRange '0.5.3',
2555 silly addNameRange '0.5.4',
2555 silly addNameRange '0.5.5',
2555 silly addNameRange '0.5.6',
2555 silly addNameRange '0.5.7',
2555 silly addNameRange '0.5.8',
2555 silly addNameRange '0.5.9',
2555 silly addNameRange '0.5.10',
2555 silly addNameRange '0.5.11',
2555 silly addNameRange '0.6.0',
2555 silly addNameRange '0.6.1',
2555 silly addNameRange '0.6.2',
2555 silly addNameRange '0.6.3',
2555 silly addNameRange '0.6.4',
2555 silly addNameRange '0.6.5',
2555 silly addNameRange '0.6.6',
2555 silly addNameRange '0.6.7',
2555 silly addNameRange '0.7.0',
2555 silly addNameRange '0.7.1',
2555 silly addNameRange '0.7.2',
2555 silly addNameRange '0.7.3',
2555 silly addNameRange '0.8.0',
2555 silly addNameRange '0.8.1',
2555 silly addNameRange '0.8.2',
2555 silly addNameRange '0.8.3',
2555 silly addNameRange '0.8.4',
2555 silly addNameRange '0.8.5',
2555 silly addNameRange '0.8.6',
2555 silly addNameRange '0.9.0',
2555 silly addNameRange '0.9.1',
2555 silly addNameRange '0.9.2' ] ]
2556 verbose addNamed [ 'redis', '0.8.6' ]
2557 verbose addNamed [ '0.8.6', '0.8.6' ]
2558 silly lockFile 63d0c94f-redis-0-8-6 [email protected]
2559 verbose lock [email protected] /home/sharejs/.npm/63d0c94f-redis-0-8-6.lock
2560 silly addNameRange number 2 { name: 'arraydiff', range: '>=0.1.0-0 <0.2.0-0', hasData: true }
2561 silly addNameRange versions [ 'arraydiff', [ '0.1.0', '0.1.1' ] ]
2562 verbose addNamed [ 'arraydiff', '0.1.1' ]
2563 verbose addNamed [ '0.1.1', '0.1.1' ]
2564 silly lockFile 1ecf75ce-arraydiff-0-1-1 [email protected]
2565 verbose lock [email protected] /home/sharejs/.npm/1ecf75ce-arraydiff-0-1-1.lock
2566 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.21/nodetime_native.node
2567 silly gunzTarPerm extractEntry compiled/darwin/x64/v0.8.22/nodetime_native.node
2568 silly gunzTarPerm extractEntry test2
2569 silly gunzTarPerm extractEntry test3
2570 info preinstall [email protected]
2571 silly lockFile 2016e061-commander-1-3-2 [email protected]
2572 silly lockFile 2016e061-commander-1-3-2 [email protected]
2573 silly lockFile 0760c556-range-parser-0-0-4 [email protected]
2574 silly lockFile 0760c556-range-parser-0-0-4 [email protected]
2575 silly lockFile 67d2df2a-mkdirp-0-3-5 [email protected]
2576 silly lockFile 67d2df2a-mkdirp-0-3-5 [email protected]
2577 verbose readDependencies using package.json deps
2578 silly lockFile b55e145e-cookie-0-1-0 [email protected]
2579 silly lockFile b55e145e-cookie-0-1-0 [email protected]
2580 verbose readDependencies using package.json deps
2581 silly resolved [ { author:
2581 silly resolved { name: 'Brian J. Brennan',
2581 silly resolved email: '[email protected]',
2581 silly resolved url: 'http://bjb.io' },
2581 silly resolved name: 'buffer-crc32',
2581 silly resolved description: 'A pure javascript CRC32 algorithm that plays nice with binary data',
2581 silly resolved version: '0.2.1',
2581 silly resolved contributors: [ [Object] ],
2581 silly resolved homepage: 'https://github.com/brianloveswords/buffer-crc32',
2581 silly resolved repository:
2581 silly resolved { type: 'git',
2581 silly resolved url: 'git://github.com/brianloveswords/buffer-crc32.git' },
2581 silly resolved main: 'index.js',
2581 silly resolved scripts: { test: './node_modules/.bin/tap tests/*.test.js' },
2581 silly resolved dependencies: {},
2581 silly resolved devDependencies: { tap: '~0.2.5' },
2581 silly resolved optionalDependencies: {},
2581 silly resolved engines: { node: '*' },
2581 silly resolved readme: '# buffer-crc32\n\n[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32)\n\ncrc32 that works with binary data and fancy character sets, outputs\nbuffer, signed or unsigned data and has tests.\n\nDerived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix\n\n# install\n```\nnpm install buffer-crc32\n```\n\n# example\n```js\nvar crc32 = require(\'buffer-crc32\');\n// works with buffers\nvar buf = Buffer([0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00])\ncrc32(buf) // -> <Buffer 94 5a ab 4a>\n\n// has convenience methods for getting signed or unsigned ints\ncrc32.signed(buf) // -> -1805997238\ncrc32.unsigned(buf) // -> 2488970058\n\n// will cast to buffer if given a string, so you can\n// directly use foreign characters safely\ncrc32(\'自動販売機\') // -> <Buffer cb 03 1a c5>\n\n// and works in append mode too\nvar partialCrc = crc32(\'hey\');\nvar partialCrc = crc32(\' \', partialCrc);\nvar partialCrc = crc32(\'sup\', partialCrc);\nvar partialCrc = crc32(\' \', partialCrc);\nvar finalCrc = crc32(\'bros\', partialCrc); // -> <Buffer 47 fa 55 70>\n```\n\n# tests\nThis was tested against the output of zlib\'s crc32 method. You can run\nthe tests with`npm test` (requires tap)\n\n# see also\nhttps://github.com/alexgorbatchev/node-crc, `crc.buffer.crc32` also\nsupports buffer inputs and return unsigned ints (thanks @tjholowaychuk).\n\n# license\nMIT/X11\n',
2581 silly resolved readmeFilename: 'README.md',
2581 silly resolved bugs: { url: 'https://github.com/brianloveswords/buffer-crc32/issues' },
2581 silly resolved _id: '[email protected]',
2581 silly resolved _from: '[email protected]' },
2581 silly resolved { name: 'fresh',
2581 silly resolved author:
2581 silly resolved { name: 'TJ Holowaychuk',
2581 silly resolved email: '[email protected]',
2581 silly resolved url: 'http://tjholowaychuk.com' },
2581 silly resolved description: 'HTTP response freshness testing',
2581 silly resolved version: '0.2.0',
2581 silly resolved main: 'index.js',
2581 silly resolved repository:
2581 silly resolved { type: 'git',
2581 silly resolved url: 'https://github.com/visionmedia/node-fresh.git' },
2581 silly resolved dependencies: {},
2581 silly resolved devDependencies: { mocha: '*', should: '*' },
2581 silly resolved readme: '\n# node-fresh\n\n HTTP response freshness testing\n\n## fresh(req, res)\n\n Check freshness of `req` and `res` headers.\n\n When the cache is "fresh" __true__ is returned,\n otherwise __false__ is returned to indicate that\n the cache is now stale.\n\n## Example:\n\n```js\nvar req = { \'if-none-match\': \'tobi\' };\nvar res = { \'etag\': \'luna\' };\nfresh(req, res);\n// => false\n\nvar req = { \'if-none-match\': \'tobi\' };\nvar res = { \'etag\': \'tobi\' };\nfresh(req, res);\n// => true\n```\n\n## Installation\n\n```\n$ npm install fresh\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk &lt;[email protected]&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.',
2581 silly resolved readmeFilename: 'Readme.md',
2581 silly resolved bugs: { url: 'https://github.com/visionmedia/node-fresh/issues' },
2581 silly resolved homepage: 'https://github.com/visionmedia/node-fresh',
2581 silly resolved _id: '[email protected]',
2581 silly resolved _from: '[email protected]' },
2581 silly resolved { name: 'methods',
2581 silly resolved version: '0.1.0',
2581 silly resolved description: 'HTTP methods that node supports',
2581 silly resolved main: 'index.js',
2581 silly resolved scripts: { test: 'echo "Error: no test specified" && exit 1' },
2581 silly resolved keywords: [ 'http', 'methods' ],
2581 silly resolved author: { name: 'TJ Holowaychuk' },
2581 silly resolved license: 'MIT',
2581 silly resolved repository:
2581 silly resolved { type: 'git',
2581 silly resolved url: 'git://github.com/visionmedia/node-methods.git' },
2581 silly resolved readme: '\n# Methods\n\n HTTP verbs that node core\'s parser supports.\n',
2581 silly resolved readmeFilename: 'Readme.md',
2581 silly resolved bugs: { url: 'https://github.com/visionmedia/node-methods/issues' },
2581 silly resolved homepage: 'https://github.com/visionmedia/node-methods',
2581 silly resolved _id: '[email protected]',
2581 silly resolved _from: '[email protected]' },
2581 silly resolved { name: 'cookie-signature',
2581 silly resolved version: '1.0.1',
2581 silly resolved description: 'Sign and unsign cookies',
2581 silly resolved keywords: [ 'cookie', 'sign', 'unsign' ],
2581 silly resolved author: { name: 'TJ Holowaychuk', email: '[email protected]' },
2581 silly resolved dependencies: {},
2581 silly resolved devDependencies: { mocha: '*', should: '*' },
2581 silly resolved main: 'index',
2581 silly resolved readme: '\n# cookie-signature\n\n Sign and unsign cookies.\n\n## Example\n\n```js\nvar cookie = require(\'cookie-signature\');\n\nvar val = cookie.sign(\'hello\', \'tobiiscool\');\nval.should.equal(\'hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI\');\n\nvar val = cookie.sign(\'hello\', \'tobiiscool\');\ncookie.unsign(val, \'tobiiscool\').should.equal(\'hello\');\ncookie.unsign(val, \'luna\').should.be.false;\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 LearnBoost &lt;[email protected]&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.',
2581 silly resolved readmeFilename: 'Readme.md',
2581 silly resolved _id: '[email protected]',
2581 silly resolved _from: '[email protected]' },
2581 silly resolved { name: 'send',
2581 silly resolved version: '0.1.4',
2581 silly resolved description: 'Better streaming static file server with Range and conditional-GET support',
2581 silly resolved keywords: [ 'static', 'file', 'server' ],
2581 silly resolved author: { name: 'TJ Holowaychuk', email: '[email protected]' },
2581 silly resolved dependencies:
2581 silly resolved { debug: '*',
2581 silly resolved mime: '~1.2.9',
2581 silly resolved fresh: '0.2.0',
2581 silly resolved 'range-parser': '0.0.4' },
2581 silly resolved devDependencies: { mocha: '*', should: '*', supertest: '0.0.1', connect: '2.x' },
2581 silly resolved scripts: { test: 'make test' },
2581 silly resolved repository: { type: 'git', url: 'git://github.com/visionmedia/send.git' },
2581 silly resolved main: 'index',
2581 silly resolved readme: '# send\n\n Send is Connect\'s `static()` extracted for generalized use, a streaming static file\n server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework.\n\n## Installation\n\n $ npm install send\n\n## Examples\n\n Small:\n\n```js\nvar http = require(\'http\');\nvar send = require(\'send\');\n\nvar app = http.createServer(function(req, res){\n send(req, req.url).pipe(res);\n}).listen(3000);\n```\n\n Serving from a root directory with custom error-handling:\n\n```js\nvar http = require(\'http\');\nvar send = require(\'send\');\nvar url = require(\'url\');\n\nvar app = http.createServer(function(req, res){\n // your custom error-handling logic:\n function error(err) {\n res.statusCode = err.status || 500;\n res.end(err.message);\n }\n\n // your custom directory handling logic:\n function redirect() {\n res.statusCode = 301;\n res.setHeader(\'Location\', req.url + \'/\');\n res.end(\'Redirecting to \' + req.url + \'/\');\n }\n\n // transfer arbitrary files from within\n // /www/example.com/public/*\n send(req, url.parse(req.url).pathname)\n .root(\'/www/example.com/public\')\n .on(\'error\', error)\n .on(\'directory\', redirect)\n .pipe(res);\n}).listen(3000);\n```\n\n## API\n\n### Events\n\n - `error` an error occurred `(err)`\n - `directory` a directory was requested\n - `file` a file was requested `(path, stat)`\n - `stream` file streaming has started `(stream)`\n - `end` streaming has completed\n\n### .root(dir)\n\n Serve files relative to `path`. Aliased as `.from(dir)`.\n\n### .index(path)\n\n By default send supports "index.html" files, to disable this\n invoke `.index(false)` or to supply a new index pass a string.\n\n### .maxage(ms)\n\n Provide a max-age in milliseconds for http caching, defaults to 0.\n\n### .hidden(bool)\n\n Enable or disable transfer of hidden files, defaults to false.\n\n## Error-handling\n\n By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc.\n\n## Caching\n\n It does _not_ perform internal caching, you should use a reverse proxy cache such\n as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it\'s small enough that it does not need caching at all ;).\n\n## Debugging\n\n To enable `debug()` instrumentation output export __DEBUG__:\n\n```\n$ DEBUG=send node app\n```\n\n## Running tests\n\n```\n$ npm install\n$ make test\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk &lt;[email protected]&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',
2581 silly resolved readmeFilename: 'Readme.md',
2581 silly resolved bugs: { url: 'https://github.com/visionmedia/send/issues' },
2581 silly resolved homepage: 'https://github.com/visionmedia/send',
2581 silly resolved _id: '[email protected]',
2581 silly resolved _from: '[email protected]' },
2581 silly resolved { name: 'merge-descriptors',
2581 silly resolved description: 'Merge objects using descriptors',
2581 silly resolved version: '0.0.1',
2581 silly resolved author:
2581 silly resolved { name: 'Jonathan Ong',
2581 silly resolved email: '[email protected]',
2581 silly resolved url: 'http://jongleberry.com' },
2581 silly resolved license: 'MIT',
2581 silly resolved repository:
2581 silly resolved { type: 'git',
2581 silly resolved url: 'https://github.com/jonathanong/merge-descriptors.git' },
2581 silly resolved bugs: { url: 'https://github.com/jonathanong/merge-descriptors/issues' },
2581 silly resolved scripts: { test: 'make test;' },
2581 silly resolved readme: '# Merge Descriptors [![Build Status](https://travis-ci.org/jonathanong/merge-descriptors.png)](https://travis-ci.org/jonathanong/merge-descriptors)\n\nMerge objects using descriptors.\n\n```js\nvar thing = {\n get name() {\n return \'jon\'\n }\n}\n\nvar animal = {\n\n}\n\nmerge(animal, thing)\n\nanimal.name === \'jon\'\n```\n\n## API\n\n### merge(destination, source)\n\nOverwrites `destination`\'s descriptors with `source`\'s.\n\n## License\n\nThe MIT License (MIT)\n\nCopyright (c) 2013 Jonathan Ong [email protected]\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the "Software"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies 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 FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.',
2581 silly resolved readmeFilename: 'README.md',
2581 silly resolved homepage: 'https://github.com/jonathanong/merge-descriptors',
2581 silly resolved _id: '[email protected]',
2581 silly resolved _from: '[email protected]' },
2581 silly resolved { name: 'debug',
2581 silly resolved version: '0.7.4',
2581 silly resolved repository: { type: 'git', url: 'git://github.com/visionmedia/debug.git' },
2581 silly resolved description: 'small debugging utility',
2581 silly resolved keywords: [ 'debug', 'log', 'debugger' ],
2581 silly resolved author: { name: 'TJ Holowaychuk', email: '[email protected]' },
2581 silly resolved dependencies: {},
2581 silly resolved devDependencies: { mocha: '*' },
2581 silly resolved main: 'lib/debug.js',
2581 silly resolved browser: './debug.js',
2581 silly resolved engines: { node: '*' },
2581 silly resolved files: [ 'lib/debug.js', 'debug.js', 'index.js' ],
2581 silly resolved component: { scripts: [Object] },
2581 silly resolved readme: '# debug\n\n tiny node.js debugging utility modelled after node core\'s debugging technique.\n\n## Installation\n\n```\n$ npm install debug\n```\n\n## Usage\n\n With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you\'re used to work fine. A unique color is selected per-function for visibility.\n \nExample _app.js_:\n\n```js\nvar debug = require(\'debug\')(\'http\')\n , http = require(\'http\')\n , name = \'My App\';\n\n// fake app\n\ndebug(\'booting %s\', name);\n\nhttp.createServer(function(req, res){\n debug(req.method + \' \' + req.url);\n res.end(\'hello\\n\');\n}).listen(3000, function(){\n debug(\'listening\');\n});\n\n// fake worker of some kind\n\nrequire(\'./worker\');\n```\n\nExample _worker.js_:\n\n```js\nvar debug = require(\'debug\')(\'worker\');\n\nsetInterval(function(){\n debug(\'doing some work\');\n}, 1000);\n```\n\n The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:\n\n ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)\n\n ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)\n\n## Millisecond diff\n\n When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls.\n\n ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)\n\n When stderr is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:\n _(NOTE: Debug now uses stderr instead of stdout, so the correct shell command for this example is actually `DEBUG=* node example/worker 2> out &`)_\n \n ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)\n \n## Conventions\n\n If you\'re using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". \n\n## Wildcards\n\n The "*" character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.\n\n You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=* -connect:*` would include all debuggers except those starting with "connect:".\n\n## Browser support\n\n Debug works in the browser as well, currently persisted by `localStorage`. For example if you have `worker:a` and `worker:b` as shown below, and wish to debug both type `debug.enable(\'worker:*\')` in the console and refresh the page, this will remain until you disable with `debug.disable()`. \n\n```js\na = debug(\'worker:a\');\nb = debug(\'worker:b\');\n\nsetInterval(function(){\n a(\'doing some work\');\n}, 1000);\n\nsetInterval(function(){\n a(\'doing some work\');\n}, 1200);\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk &lt;[email protected]&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',
2581 silly resolved readmeFilename: 'Readme.md',
2581 silly resolved bugs: { url: 'https://github.com/visionmedia/debug/issues' },
2581 silly resolved homepage: 'https://github.com/visionmedia/debug',
2581 silly resolved _id: '[email protected]',
2581 silly resolved _from: 'debug@>= 0.7.3 < 1' },
2581 silly resolved { name: 'connect',
2581 silly resolved version: '2.12.0',
2581 silly resolved description: 'High performance middleware framework',
2581 silly resolved keywords: [ 'framework', 'web', 'middleware', 'connect', 'rack' ],
2581 silly resolved repository: { type: 'git', url: 'git://github.com/senchalabs/connect.git' },
2581 silly resolved author:
2581 silly resolved { name: 'TJ Holowaychuk',
2581 silly resolved email: '[email protected]',
2581 silly resolved url: 'http://tjholowaychuk.com' },
2581 silly resolved dependencies:
2581 silly resolved { batch: '0.5.0',
2581 silly resolved qs: '0.6.6',
2581 silly resolved 'cookie-signature': '1.0.1',
2581 silly resolved 'buffer-crc32': '0.2.1',
2581 silly resolved cookie: '0.1.0',
2581 silly resolved send: '0.1.4',
2581 silly resolved bytes: '0.2.1',
2581 silly resolved fresh: '0.2.0',
2581 silly resolved pause: '0.0.1',
2581 silly resolved uid2: '0.0.3',
2581 silly resolved debug: '>= 0.7.3 < 1',
2581 silly resolved methods: '0.1.0',
2581 silly resolved 'raw-body': '1.1.2',
2581 silly resolved negotiator: '0.3.0',
2581 silly resolved multiparty: '2.2.0' },
2581 silly resolved devDependencies:
2581 silly resolved { should: '>= 2.0.2 < 3',
2581 silly resolved mocha: '>= 1.13.0 < 2',
2581 silly resolved jade: '>= 0.35.0 < 1',
2581 silly resolved dox: '>= 0.4.4 < 1' },
2581 silly resolved licenses: [ [Object] ],
2581 silly resolved main: 'index',
2581 silly resolved engines: { node: '>= 0.8.0' },
2581 silly resolved scripts: { test: 'make' },
2581 silly resolved readme: '# Connect [![build status](https://secure.travis-ci.org/senchalabs/connect.png)](http://travis-ci.org/senchalabs/connect)\n\n Connect is an extensible HTTP server framework for [node](http://nodejs.org), providing high performance "plugins" known as _middleware_.\n\n Connect is bundled with over _20_ commonly used middleware, including\n a logger, session support, cookie parser, and [more](http://senchalabs.github.com/connect). Be sure to view the 2.x [documentation](http://senchalabs.github.com/connect/).\n\n```js\nvar connect = require(\'connect\')\n , http = require(\'http\');\n\nvar app = connect()\n .use(connect.favicon())\n .use(connect.logger(\'dev\'))\n .use(connect.static(\'public\'))\n .use(connect.directory(\'public\'))\n .use(connect.cookieParser())\n .use(connect.session({ secret: \'my secret here\' }))\n .use(function(req, res){\n res.end(\'Hello from Connect!\\n\');\n });\n\nhttp.createServer(app).listen(3000);\n```\n\n## Middleware\n\n - [basicAuth](http://www.senchalabs.org/connect/basicAuth.html)\n - [bodyParser](http://www.senchalabs.org/connect/bodyParser.html)\n - [compress](http://www.senchalabs.org/connect/compress.html)\n - [cookieParser](http://www.senchalabs.org/connect/cookieParser.html)\n - [cookieSession](http://www.senchalabs.org/connect/cookieSession.html)\n - [csrf](http://www.senchalabs.org/connect/csrf.html)\n - [directory](http://www.senchalabs.org/connect/directory.html)\n - [errorHandler](http://www.senchalabs.org/connect/errorHandler.html)\n - [favicon](http://www.senchalabs.org/connect/favicon.html)\n - [json](http://www.senchalabs.org/connect/json.html)\n - [limit](http://www.senchalabs.org/connect/limit.html)\n - [logger](http://www.senchalabs.org/connect/logger.html)\n - [methodOverride](http://www.senchalabs.org/connect/methodOverride.html)\n - [multipart](http://www.senchalabs.org/connect/multipart.html)\n - [urlencoded](http://www.senchalabs.org/connect/urlencoded.html)\n - [query](http://www.senchalabs.org/connect/query.html)\n - [responseTime](http://www.senchalabs.org/connect/responseTime.html)\n - [session](http://www.senchalabs.org/connect/session.html)\n - [static](http://www.senchalabs.org/connect/static.html)\n - [staticCache](http://www.senchalabs.org/connect/staticCache.html)\n - [subdomains](http://www.senchalabs.org/connect/subdomains.html)\n - [vhost](http://www.senchalabs.org/connect/vhost.html)\n\n## Running Tests\n\nfirst:\n\n $ npm install -d\n\nthen:\n\n $ make test\n\n## Contributors\n\n https://github.com/senchalabs/connect/graphs/contributors\n\n## Node Compatibility\n\n Connect `< 1.x` is compatible with node 0.2.x\n\n\n Connect `1.x` is compatible with node 0.4.x\n\n\n Connect `2.x` is compatible with node 0.6.x\n\n\n Connect (_master_) is compatible with node 0.8.x\n\n## CLA\n\n [http://sencha.com/cla](http://sencha.com/cla)\n\n## License\n\nView the [LICENSE](https://github.com/senchalabs/connect/blob/master/LICENSE) file. The [Silk](http://www.famfamfam.com/lab/icons/silk/) icons used by the `directory` middleware created by/copyright of [FAMFAMFAM](http://www.famfamfam.com/).\n',
2581 silly resolved readmeFilename: 'Readme.md',
2581 silly resolved bugs: { url: 'https://github.com/senchalabs/connect/issues' },
2581 silly resolved homepage: 'https://github.com/senchalabs/connect',
2581 silly resolved _id: '[email protected]',
2581 silly resolved _from: '[email protected]' },
2581 silly resolved { name: 'commander',
2581 silly resolved version: '1.3.2',
2581 silly resolved description: 'the complete solution for node.js command-line programs',
2581 silly resolved keywords: [ 'command', 'option', 'parser', 'prompt', 'stdin' ],
2581 silly resolved author: { name: 'TJ Holowaychuk', email: '[email protected]' },
2581 silly resolved repository:
2581 silly resolved { type: 'git',
2581 silly resolved url: 'https://github.com/visionmedia/commander.js.git' },
2581 silly resolved dependencies: { keypress: '0.1.x' },
2581 silly resolved devDependencies: { should: '>= 0.0.1' },
2581 silly resolved scripts: { test: 'make test' },
2581 silly resolved main: 'index',
2581 silly resolved engines: { node: '>= 0.6.x' },
2581 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(\' - pineapple\');\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 pineapple\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```js\nprogram.prompt(\'Email: \', /^.+@.+\\..+$/, function(email){\n console.log(\'email: %j\', email);\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;[email protected]&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',
2581 silly resolved readmeFilename: 'Readme.md',
2581 silly resolved bugs: { url: 'https://github.com/visionmedia/commander.js/issues' },
2581 silly resolved homepage: 'https://github.com/visionmedia/commander.js',
2581 silly resolved _id: '[email protected]',
2581 silly resolved _from: '[email protected]' },
2581 silly resolved { name: 'range-parser',
2581 silly resolved author:
2581 silly resolved { name: 'TJ Holowaychuk',
2581 silly resolved email: '[email protected]',
2581 silly resolved url: 'http://tjholowaychuk.com' },
2581 silly resolved description: 'Range header field string parser',
2581 silly resolved version: '0.0.4',
2581 silly resolved main: 'index.js',
2581 silly resolved dependencies: {},
2581 silly resolved devDependencies: { mocha: '*', should: '*' },
2581 silly resolved readme: '\n# node-range-parser\n\n Range header field parser.\n\n## Example:\n\n```js\nassert(-1 == parse(200, \'bytes=500-20\'));\nassert(-2 == parse(200, \'bytes=malformed\'));\nparse(200, \'bytes=0-499\').should.eql(arr(\'bytes\', [{ start: 0, end: 199 }]));\nparse(1000, \'bytes=0-499\').should.eql(arr(\'bytes\', [{ start: 0, end: 499 }]));\nparse(1000, \'bytes=40-80\').should.eql(arr(\'bytes\', [{ start: 40, end: 80 }]));\nparse(1000, \'bytes=-500\').should.eql(arr(\'bytes\', [{ start: 500, end: 999 }]));\nparse(1000, \'bytes=-400\').should.eql(arr(\'bytes\', [{ start: 600, end: 999 }]));\nparse(1000, \'bytes=500-\').should.eql(arr(\'bytes\', [{ start: 500, end: 999 }]));\nparse(1000, \'bytes=400-\').should.eql(arr(\'bytes\', [{ start: 400, end: 999 }]));\nparse(1000, \'bytes=0-0\').should.eql(arr(\'bytes\', [{ start: 0, end: 0 }]));\nparse(1000, \'bytes=-1\').should.eql(arr(\'bytes\', [{ start: 999, end: 999 }]));\nparse(1000, \'items=0-5\').should.eql(arr(\'items\', [{ start: 0, end: 5 }]));\nparse(1000, \'bytes=40-80,-1\').should.eql(arr(\'bytes\', [{ start: 40, end: 80 }, { start: 999, end: 999 }]));\n```\n\n## Installation\n\n```\n$ npm install range-parser\n```',
2581 silly resolved readmeFilename: 'Readme.md',
2581 silly resolved _id: '[email protected]',
2581 silly resolved _from: '[email protected]' },
2581 silly resolved { name: 'mkdirp',
2581 silly resolved description: 'Recursively mkdir, like `mkdir -p`',
2581 silly resolved version: '0.3.5',
2581 silly resolved author:
2581 silly resolved { name: 'James Halliday',
2581 silly resolved email: '[email protected]',
2581 silly resolved url: 'http://substack.net' },
2581 silly resolved main: './index',
2581 silly resolved keywords: [ 'mkdir', 'directory' ],
2581 silly resolved repository:
2581 silly resolved { type: 'git',
2581 silly resolved url: 'http://github.com/substack/node-mkdirp.git' },
2581 silly resolved scripts: { test: 'tap test/*.js' },
2581 silly resolved devDependencies: { tap: '~0.4.0' },
2581 silly resolved license: 'MIT',
2581 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',
2581 silly resolved readmeFilename: 'readme.markdown',
2581 silly resolved bugs: { url: 'https://github.com/substack/node-mkdirp/issues' },
2581 silly resolved homepage: 'https://github.com/substack/node-mkdirp',
2581 silly resolved _id: '[email protected]',
2581 silly resolved _from: '[email protected]' },
2581 silly resolved { author: { name: 'Roman Shtylman', email: '[email protected]' },
2581 silly resolved name: 'cookie',
2581 silly resolved description: 'cookie parsing and serialization',
2581 silly resolved version: '0.1.0',
2581 silly resolved repository:
2581 silly resolved { type: 'git',
2581 silly resolved url: 'git://github.com/shtylman/node-cookie.git' },
2581 silly resolved keywords: [ 'cookie', 'cookies' ],
2581 silly resolved main: 'index.js',
2581 silly resolved scripts: { test: 'mocha' },
2581 silly resolved dependencies: {},
2581 silly resolved devDependencies: { mocha: '1.x.x' },
2581 silly resolved optionalDependencies: {},
2581 silly resolved engines: { node: '*' },
2581 silly resolved readme: '# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) #\n\ncookie is a basic cookie parser and serializer. It doesn\'t make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers.\n\nSee [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies.\n\n## how?\n\n```\nnpm install cookie\n```\n\n```javascript\nvar cookie = require(\'cookie\');\n\nvar hdr = cookie.serialize(\'foo\', \'bar\');\n// hdr = \'foo=bar\';\n\nvar cookies = cookie.parse(\'foo=bar; cat=meow; dog=ruff\');\n// cookies = { foo: \'bar\', cat: \'meow\', dog: \'ruff\' };\n```\n\n## more\n\nThe serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values.\n\n### path\n> cookie path\n\n### expires\n> absolute expiration date for the cookie (Date object)\n\n### maxAge\n> relative max age of the cookie from when the client receives it (seconds)\n\n### domain\n> domain for the cookie\n\n### secure\n> true or false\n\n### httpOnly\n> true or false\n\n',
2581 silly resolved readmeFilename: 'README.md',
2581 silly resolved bugs: { url: 'https://github.com/shtylman/node-cookie/issues' },
2581 silly resolved homepage: 'https://github.com/shtylman/node-cookie',
2581 silly resolved _id: '[email protected]',
2581 silly resolved _from: '[email protected]' } ]
2582 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/express
2583 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/express
2584 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/express
2585 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/express
2586 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/express
2587 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/express
2588 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/express
2589 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/express
2590 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/express
2591 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/express
2592 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/express
2593 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/express
2594 info installOne [email protected]
2595 info installOne [email protected]
2596 info installOne [email protected]
2597 info installOne [email protected]
2598 info installOne [email protected]
2599 info installOne [email protected]
2600 info installOne [email protected]
2601 info installOne [email protected]
2602 info installOne [email protected]
2603 info installOne [email protected]
2604 info installOne [email protected]
2605 info installOne [email protected]
2606 silly gunzTarPerm extractEntry benches/stress/rpushblpop/pub.js
2607 silly gunzTarPerm extractEntry benches/stress/rpushblpop/server.js
2608 info /var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/buffer-crc32 unbuild
2609 info /var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/fresh unbuild
2610 info /var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/methods unbuild
2611 info /var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/cookie-signature unbuild
2612 info /var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/send unbuild
2613 info /var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/merge-descriptors unbuild
2614 info /var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/debug unbuild
2615 info /var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/connect unbuild
2616 info /var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/commander unbuild
2617 info /var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/range-parser unbuild
2618 info /var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/mkdirp unbuild
2619 info /var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/cookie unbuild
2620 info [email protected] Failed to exec install script
2621 info /var/www/sharejs/releases/20131218171509/node_modules/rbytes unbuild
2622 info preuninstall [email protected]
2623 verbose cache add [ '[email protected]', null ]
2624 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
2625 verbose parsed url { protocol: null,
2625 verbose parsed url slashes: null,
2625 verbose parsed url auth: null,
2625 verbose parsed url host: null,
2625 verbose parsed url port: null,
2625 verbose parsed url hostname: null,
2625 verbose parsed url hash: null,
2625 verbose parsed url search: null,
2625 verbose parsed url query: null,
2625 verbose parsed url pathname: '[email protected]',
2625 verbose parsed url path: '[email protected]',
2625 verbose parsed url href: '[email protected]' }
2626 verbose cache add name="node-uuid" spec="1.3.3" args=["node-uuid","1.3.3"]
2627 verbose parsed url { protocol: null,
2627 verbose parsed url slashes: null,
2627 verbose parsed url auth: null,
2627 verbose parsed url host: null,
2627 verbose parsed url port: null,
2627 verbose parsed url hostname: null,
2627 verbose parsed url hash: null,
2627 verbose parsed url search: null,
2627 verbose parsed url query: null,
2627 verbose parsed url pathname: '1.3.3',
2627 verbose parsed url path: '1.3.3',
2627 verbose parsed url href: '1.3.3' }
2628 verbose addNamed [ 'node-uuid', '1.3.3' ]
2629 verbose addNamed [ '1.3.3', '1.3.3' ]
2630 silly lockFile 90b69d15-node-uuid-1-3-3 [email protected]
2631 verbose lock [email protected] /home/sharejs/.npm/90b69d15-node-uuid-1-3-3.lock
2632 verbose cache add [ '[email protected]', null ]
2633 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
2634 verbose parsed url { protocol: null,
2634 verbose parsed url slashes: null,
2634 verbose parsed url auth: null,
2634 verbose parsed url host: null,
2634 verbose parsed url port: null,
2634 verbose parsed url hostname: null,
2634 verbose parsed url hash: null,
2634 verbose parsed url search: null,
2634 verbose parsed url query: null,
2634 verbose parsed url pathname: '[email protected]',
2634 verbose parsed url path: '[email protected]',
2634 verbose parsed url href: '[email protected]' }
2635 verbose cache add name="faye-websocket" spec="0.7.0" args=["faye-websocket","0.7.0"]
2636 verbose parsed url { protocol: null,
2636 verbose parsed url slashes: null,
2636 verbose parsed url auth: null,
2636 verbose parsed url host: null,
2636 verbose parsed url port: null,
2636 verbose parsed url hostname: null,
2636 verbose parsed url hash: null,
2636 verbose parsed url search: null,
2636 verbose parsed url query: null,
2636 verbose parsed url pathname: '0.7.0',
2636 verbose parsed url path: '0.7.0',
2636 verbose parsed url href: '0.7.0' }
2637 verbose addNamed [ 'faye-websocket', '0.7.0' ]
2638 verbose addNamed [ '0.7.0', '0.7.0' ]
2639 silly lockFile 2458c887-faye-websocket-0-7-0 [email protected]
2640 verbose lock [email protected] /home/sharejs/.npm/2458c887-faye-websocket-0-7-0.lock
2641 silly gunzTarPerm extractEntry lib/public/icons/page_white_error.png
2642 silly gunzTarPerm extractEntry lib/public/icons/page_white_excel.png
2643 silly gunzTarPerm extractEntry scripts/benchmark/benchmark.coffee
2644 silly gunzTarPerm extractEntry scripts/cat.coffee
2645 silly lockFile 133c5903-statsd-client-0-0-15 [email protected]
2646 silly lockFile 133c5903-statsd-client-0-0-15 [email protected]
2647 silly lockFile 06036119-statsd-client statsd-client@*
2648 silly lockFile 06036119-statsd-client statsd-client@*
2649 info uninstall [email protected]
2650 verbose tar unpack /home/sharejs/.npm/buffer-crc32/0.2.1/package.tgz
2651 silly lockFile ef180da7-xpress-node-modules-buffer-crc32 tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/buffer-crc32
2652 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/buffer-crc32 /home/sharejs/.npm/ef180da7-xpress-node-modules-buffer-crc32.lock
2653 silly lockFile 66936f0c-m-buffer-crc32-0-2-1-package-tgz tar:///home/sharejs/.npm/buffer-crc32/0.2.1/package.tgz
2654 verbose lock tar:///home/sharejs/.npm/buffer-crc32/0.2.1/package.tgz /home/sharejs/.npm/66936f0c-m-buffer-crc32-0-2-1-package-tgz.lock
2655 verbose tar unpack /home/sharejs/.npm/fresh/0.2.0/package.tgz
2656 silly lockFile e8702b19-dules-express-node-modules-fresh tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/fresh
2657 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/fresh /home/sharejs/.npm/e8702b19-dules-express-node-modules-fresh.lock
2658 silly lockFile 1051f9be-rejs-npm-fresh-0-2-0-package-tgz tar:///home/sharejs/.npm/fresh/0.2.0/package.tgz
2659 verbose lock tar:///home/sharejs/.npm/fresh/0.2.0/package.tgz /home/sharejs/.npm/1051f9be-rejs-npm-fresh-0-2-0-package-tgz.lock
2660 verbose tar unpack /home/sharejs/.npm/methods/0.1.0/package.tgz
2661 silly lockFile 86088f58-les-express-node-modules-methods tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/methods
2662 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/methods /home/sharejs/.npm/86088f58-les-express-node-modules-methods.lock
2663 silly lockFile 1984cf08-js-npm-methods-0-1-0-package-tgz tar:///home/sharejs/.npm/methods/0.1.0/package.tgz
2664 verbose lock tar:///home/sharejs/.npm/methods/0.1.0/package.tgz /home/sharejs/.npm/1984cf08-js-npm-methods-0-1-0-package-tgz.lock
2665 verbose tar unpack /home/sharejs/.npm/cookie-signature/1.0.1/package.tgz
2666 silly lockFile 094a9244-ss-node-modules-cookie-signature tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/cookie-signature
2667 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/cookie-signature /home/sharejs/.npm/094a9244-ss-node-modules-cookie-signature.lock
2668 silly lockFile 34c6617e-okie-signature-1-0-1-package-tgz tar:///home/sharejs/.npm/cookie-signature/1.0.1/package.tgz
2669 verbose lock tar:///home/sharejs/.npm/cookie-signature/1.0.1/package.tgz /home/sharejs/.npm/34c6617e-okie-signature-1-0-1-package-tgz.lock
2670 verbose tar unpack /home/sharejs/.npm/send/0.1.4/package.tgz
2671 silly lockFile 9823097e-odules-express-node-modules-send tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/send
2672 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/send /home/sharejs/.npm/9823097e-odules-express-node-modules-send.lock
2673 silly lockFile 739cf0ae-arejs-npm-send-0-1-4-package-tgz tar:///home/sharejs/.npm/send/0.1.4/package.tgz
2674 verbose lock tar:///home/sharejs/.npm/send/0.1.4/package.tgz /home/sharejs/.npm/739cf0ae-arejs-npm-send-0-1-4-package-tgz.lock
2675 verbose tar unpack /home/sharejs/.npm/merge-descriptors/0.0.1/package.tgz
2676 silly lockFile fa8d1b6c-s-node-modules-merge-descriptors tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/merge-descriptors
2677 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/merge-descriptors /home/sharejs/.npm/fa8d1b6c-s-node-modules-merge-descriptors.lock
2678 silly lockFile 14be80e8-ge-descriptors-0-0-1-package-tgz tar:///home/sharejs/.npm/merge-descriptors/0.0.1/package.tgz
2679 verbose lock tar:///home/sharejs/.npm/merge-descriptors/0.0.1/package.tgz /home/sharejs/.npm/14be80e8-ge-descriptors-0-0-1-package-tgz.lock
2680 verbose tar unpack /home/sharejs/.npm/debug/0.7.4/package.tgz
2681 silly lockFile c29b257b-dules-express-node-modules-debug tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/debug
2682 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/debug /home/sharejs/.npm/c29b257b-dules-express-node-modules-debug.lock
2683 silly lockFile 0f04e19f-rejs-npm-debug-0-7-4-package-tgz tar:///home/sharejs/.npm/debug/0.7.4/package.tgz
2684 verbose lock tar:///home/sharejs/.npm/debug/0.7.4/package.tgz /home/sharejs/.npm/0f04e19f-rejs-npm-debug-0-7-4-package-tgz.lock
2685 verbose tar unpack /home/sharejs/.npm/connect/2.12.0/package.tgz
2686 silly lockFile 94691e18-les-express-node-modules-connect tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/connect
2687 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/connect /home/sharejs/.npm/94691e18-les-express-node-modules-connect.lock
2688 silly lockFile 11ad5cf7-s-npm-connect-2-12-0-package-tgz tar:///home/sharejs/.npm/connect/2.12.0/package.tgz
2689 verbose lock tar:///home/sharejs/.npm/connect/2.12.0/package.tgz /home/sharejs/.npm/11ad5cf7-s-npm-connect-2-12-0-package-tgz.lock
2690 verbose tar unpack /home/sharejs/.npm/commander/1.3.2/package.tgz
2691 silly lockFile 7403fdca-s-express-node-modules-commander tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/commander
2692 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/commander /home/sharejs/.npm/7403fdca-s-express-node-modules-commander.lock
2693 silly lockFile 134102ec--npm-commander-1-3-2-package-tgz tar:///home/sharejs/.npm/commander/1.3.2/package.tgz
2694 verbose lock tar:///home/sharejs/.npm/commander/1.3.2/package.tgz /home/sharejs/.npm/134102ec--npm-commander-1-3-2-package-tgz.lock
2695 verbose tar unpack /home/sharejs/.npm/range-parser/0.0.4/package.tgz
2696 silly lockFile 70ece0b6-xpress-node-modules-range-parser tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/range-parser
2697 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/range-parser /home/sharejs/.npm/70ece0b6-xpress-node-modules-range-parser.lock
2698 silly lockFile f3590a36-m-range-parser-0-0-4-package-tgz tar:///home/sharejs/.npm/range-parser/0.0.4/package.tgz
2699 verbose lock tar:///home/sharejs/.npm/range-parser/0.0.4/package.tgz /home/sharejs/.npm/f3590a36-m-range-parser-0-0-4-package-tgz.lock
2700 verbose tar unpack /home/sharejs/.npm/mkdirp/0.3.5/package.tgz
2701 silly lockFile 42a9d913-ules-express-node-modules-mkdirp tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/mkdirp
2702 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/mkdirp /home/sharejs/.npm/42a9d913-ules-express-node-modules-mkdirp.lock
2703 silly lockFile 276f5a77-ejs-npm-mkdirp-0-3-5-package-tgz tar:///home/sharejs/.npm/mkdirp/0.3.5/package.tgz
2704 verbose lock tar:///home/sharejs/.npm/mkdirp/0.3.5/package.tgz /home/sharejs/.npm/276f5a77-ejs-npm-mkdirp-0-3-5-package-tgz.lock
2705 verbose tar unpack /home/sharejs/.npm/cookie/0.1.0/package.tgz
2706 silly lockFile 662a96a6-ules-express-node-modules-cookie tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/cookie
2707 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/express/node_modules/cookie /home/sharejs/.npm/662a96a6-ules-express-node-modules-cookie.lock
2708 silly lockFile dabbc90a-ejs-npm-cookie-0-1-0-package-tgz tar:///home/sharejs/.npm/cookie/0.1.0/package.tgz
2709 verbose lock tar:///home/sharejs/.npm/cookie/0.1.0/package.tgz /home/sharejs/.npm/dabbc90a-ejs-npm-cookie-0-1-0-package-tgz.lock
2710 silly lockFile beed5615-hiredis-0-1-16 [email protected]
2711 silly lockFile beed5615-hiredis-0-1-16 [email protected]
2712 silly gunzTarPerm extractEntry lib/instrumentation/core/http.js
2713 silly gunzTarPerm extractEntry lib/metrics/mapper.js
2714 silly lockFile 9b272b60-hiredis-0-1 hiredis@~0.1
2715 silly lockFile 9b272b60-hiredis-0-1 hiredis@~0.1
2716 verbose true,/var/www/sharejs/releases/20131218171509/node_modules,/var/www/sharejs/releases/20131218171509/node_modules unbuild [email protected]
2717 info postuninstall [email protected]
2718 silly gunzTarPerm extractEntry test4
2719 silly lockFile afcebadc-deep-is-0-1-2 [email protected]
2720 silly lockFile afcebadc-deep-is-0-1-2 [email protected]
2721 silly gunzTarPerm modes [ '755', '644' ]
2722 silly gunzTarPerm modes [ '755', '644' ]
2723 silly gunzTarPerm modes [ '755', '644' ]
2724 silly gunzTarPerm modes [ '755', '644' ]
2725 silly gunzTarPerm modes [ '755', '644' ]
2726 silly gunzTarPerm modes [ '755', '644' ]
2727 silly gunzTarPerm modes [ '755', '644' ]
2728 silly gunzTarPerm modes [ '755', '644' ]
2729 silly gunzTarPerm modes [ '755', '644' ]
2730 silly gunzTarPerm modes [ '755', '644' ]
2731 silly gunzTarPerm modes [ '755', '644' ]
2732 silly gunzTarPerm modes [ '755', '644' ]
2733 silly lockFile ab2c1840-deep-is-0-1 deep-is@~0.1
2734 silly lockFile ab2c1840-deep-is-0-1 deep-is@~0.1
2735 silly lockFile 63d0c94f-redis-0-8-6 [email protected]
2736 silly lockFile 63d0c94f-redis-0-8-6 [email protected]
2737 silly lockFile 1ecf75ce-arraydiff-0-1-1 [email protected]
2738 silly lockFile 1ecf75ce-arraydiff-0-1-1 [email protected]
2739 silly lockFile f9efe19a-redis-0-8 redis@~0.8
2740 silly lockFile f9efe19a-redis-0-8 redis@~0.8
2741 silly lockFile 90eb1812-arraydiff-0-1 arraydiff@~0.1
2742 silly lockFile 90eb1812-arraydiff-0-1 arraydiff@~0.1
2743 verbose url raw node-uuid/1.3.3
2744 verbose url resolving [ 'https://registry.npmjs.org/', './node-uuid/1.3.3' ]
2745 verbose url resolved https://registry.npmjs.org/node-uuid/1.3.3
2746 info trying registry request attempt 1 at 17:18:19
2747 verbose etag "6H3X377NGAR8JYSW33DRPD49P"
2748 http GET https://registry.npmjs.org/node-uuid/1.3.3
2749 verbose url raw faye-websocket/0.7.0
2750 verbose url resolving [ 'https://registry.npmjs.org/', './faye-websocket/0.7.0' ]
2751 verbose url resolved https://registry.npmjs.org/faye-websocket/0.7.0
2752 info trying registry request attempt 1 at 17:18:19
2753 verbose etag "99A7OGFCF5E0CD19FNTWGC8U2"
2754 http GET https://registry.npmjs.org/faye-websocket/0.7.0
2755 silly resolved [ { author: { name: 'Morten Siebuhr', email: '[email protected]' },
2755 silly resolved name: 'statsd-client',
2755 silly resolved description: 'Yet another client for Etsy\'s statsd',
2755 silly resolved keywords: [ 'statsd', 'client', 'metrics', 'udp' ],
2755 silly resolved version: '0.0.15',
2755 silly resolved homepage: 'https://github.com/msiebuhr/node-statsd-client',
2755 silly resolved bugs: { url: 'https://github.com/msiebuhr/node-statsd-client/issues' },
2755 silly resolved repository:
2755 silly resolved { type: 'git',
2755 silly resolved url: 'git://github.com/msiebuhr/node-statsd-client.git' },
2755 silly resolved main: 'lib/statsd-client.js',
2755 silly resolved dependencies: {},
2755 silly resolved devDependencies: { chai: '~1.3.0', jshint: '~0.9.1', mocha: '~1.6.0' },
2755 silly resolved scripts:
2755 silly resolved { prepublish: 'mocha; jshint lib/ test/',
2755 silly resolved test: 'mocha -R spec; jshint lib/ test/' },
2755 silly resolved optionalDependencies: {},
2755 silly resolved readme: 'node-statsd-client\n==================\n\nNode.js client for [statsd](https://github.com/etsy/statsd).\n\n[![Build Status](https://secure.travis-ci.org/msiebuhr/node-statsd-client.png?branch=master)](http://travis-ci.org/msiebuhr/node-statsd-client)\n\nQuick tour\n----------\n\n```javascript\nvar sdc = new require(\'statsd-client\')({host: \'statsd.example.com\'});\n\nvar timer = new Date();\nsdc.increment(\'some.counter\'); // Increment by one.\nsdc.gauge(\'some.gauge\', 10); // Set gauge to 10\nsdc.timing(\'some.timer\', timer); // Calculates time diff\n\nsdc.close(); // Optional - stop NOW\n```\n\nAPI\n---\n\n### Initialization\n\n```javascript\nvar SDC = require(\'statsd-client\'),\n\tsdc = new SDC({host: \'statsd.example.com\', port: 8124, debug: true});\n```\n\nAvailable options:\n\n * `host`: Where to send the stats (default `localhost`).\n * `debug`: Print what is being sent to stderr (default `false`).\n * `port`: Port to contact the statsd-daemon on (default `8125`).\n * `prefix`: Prefix all stats with this value (default `""`).\n * `socketTimeout`: Auto-closes the socket after this long without activity\n (default 1000 ms; 0 disables this).\n\n### Counting stuff\n\nCounters are supported, both as raw `.counter(metric, delta)` and with the\nshortcuts `.increment(metric, [delta=1])` and `.decrement(metric, [delta=-1])`:\n\n```javascript\nsdc.increment(\'systemname.subsystem.value\'); // Increment by one\nsdc.decrement(\'systemname.subsystem.value\', -10); // Decrement by 10\nsdc.counter(\'systemname.subsystem.value\', 100); // Indrement by 100\n```\n\n### Gauges\n\nSends an arbitrary number to the back-end:\n\n```javascript\nsdc.gauge(\'what.you.gauge\', 100);\n```\n\n### Sets\n\nSend unique occurences of events between flushes to the back-end:\n\n```javascript\nsdc.set(\'your.set\', 200);\n```\n\n### Delays\n\nKeep track of how fast (or slow) your stuff is:\n\n```javascript\nvar start = new Date();\nsetTimeout(function () {\n\tsdc.timing(\'random.timeout\', start);\n}, 100 * Math.random());\n```\n\nIf it is given a `Date`, it will calculate the difference, and anything else\nwill be passed straight through.\n\nAnd don\'t let the name (or nifty interface) fool you - it can measure any kind\nof number, where you want to see the distribution (content lengths, list items,\nquery sizes, ...)\n\n### Express helper\n\nThere\'s also a helper for measuring stuff in [Express.js](http://expressjs.com)\nvia middleware:\n\n```javascript\nvar app = express();\n\tsdc = new StatsDClient({...});\n\napp.use(sdc.helpers.getExpressMiddleware(\'somePrefix\'));\n// or\napp.get(\'/\',\n\tsdc.helpers.getExpressMiddleware(\'otherPrefix\'),\n\tfunction (req, res, next) { req.pipe(res); });\n\napp.listen(3000);\n```\n\nThis will count responses by status-code (`prefix.<statuscode>`) and the\noverall response-times.\n\nIt can also measure per-URL (e.g. PUT to `/:user/:thing` will become\n`PUT_user_thing` by setting the `timeByUrl: true` in the `options`-object:\n\n```javascript\napp.use(sdc.helpers.getExpressMiddleware(\'prefix\', { timeByUrl: true }));\n```\n\nAs the names can become rather odd in corner-cases (esp. regexes and non-REST\ninterfaces), you can specify another value by setting `res.locals.statsdUrlKey`\nat a later point.\n\n### Stopping gracefully\n\nBy default, the socket is closed if it hasn\'t been used for a second (see\n`socketTimeout` in the init-options), but it can also be force-closed with\n`.close()`:\n\n```javascript\nvar start = new Date();\nsetTimeout(function () {\n\tsdc.timing(\'random.timeout\', start); // 2 - implicitly re-creates socket.\n\tsdc.close(); // 3 - Closes socket after last use.\n}, 100 * Math.random());\nsdc.close(); // 1 - Closes socket early.\n```\n\nThe call is idempotent, so you can call it "just to be sure". And if you submit\nnew metrics later, the socket will automatically be re-created, and a new\ntimeout-timer started.\n\n### Prefix-magic\n\nThe library supports getting "child" clients with extra prefixes, to help with\nmaking sane name-spacing in apps:\n\n```javascript\n// Create generic client\nvar sdc = new StatsDClient({host: \'statsd.example.com\', prefix: \'systemname\');\nsdc.increment(\'foo\'); // Increments \'systemname.foo\'\n... do great stuff ...\n\n// Subsystem A\nvar sdcA = sdc.getChildClient(\'a\');\nsdcA.increment(\'foo\'); // Increments \'systemname.a.foo\'\n\n// Subsystem B\nvar sdcB = sdc.getChildClient(\'b\');\nsdcB.increment(\'foo\'); // Increments \'systemname.b.foo\'\n```\n\nInternally, they all use the same socket, so calling `.close()` on any of them\nwill allow the entire program to stop gracefully.\n\nWhat\'s broken\n-------------\n\nCheck the [GitHub issues](https://github.com/msiebuhr/node-statsd-client/issues).\n\nLICENSE\n-------\n\nISC - see\n[LICENSE](https://github.com/msiebuhr/node-statsd-client/blob/master/LICENSE).\n',
2755 silly resolved readmeFilename: 'README.md',
2755 silly resolved _id: '[email protected]',
2755 silly resolved _from: 'statsd-client@*' },
2755 silly resolved { name: 'hiredis',
2755 silly resolved description: 'Wrapper for reply processing code in hiredis',
2755 silly resolved version: '0.1.16',
2755 silly resolved homepage: 'http://github.com/pietern/hiredis-node',
2755 silly resolved author: { name: 'Pieter Noordhuis', email: '[email protected]' },
2755 silly resolved main: 'hiredis',
2755 silly resolved scripts: { test: 'node test/reader.js', install: 'node-gyp rebuild' },
2755 silly resolved dependencies: { bindings: '*' },
2755 silly resolved engines: { node: '>= 0.6.0' },
2755 silly resolved repository: { type: 'git', url: '[email protected]:pietern/hiredis-node.git' },
2755 silly resolved bugs: { url: 'https://github.com/pietern/hiredis-node/issues' },
2755 silly resolved licenses: [ [Object] ],
2755 silly resolved gypfile: true,
2755 silly resolved readme: '[![Build Status](https://travis-ci.org/pietern/hiredis-node.png?branch=master)](https://travis-ci.org/pietern/hiredis-node)\n\n# hiredis-node\n\nNode extension that wraps [hiredis][hiredis].\nBecause Node is already good at doing I/O, hiredis-node only provides\nbindings to the protocol parser.\nThe hiredis protocol parser is faster than JavaScript protocol parsers,\nbut the speedup only becomes noticable for large replies.\nIf you use Redis for simple SET/GET operations, there won\'t be a big\nbenefit to using hiredis.\nIf you use Redis for big SUNION/SINTER/LRANGE/ZRANGE operations, the\nbenefit to using hiredis-node can be significant.\n\n[hiredis]: http://github.com/redis/hiredis\n\n## Install\n\nInstall with [NPM][npm]:\n\n```\nnpm install hiredis\n```\n\n[npm]: https://npmjs.org/\n\n## Usage\n\nhiredis-node works out of the box with Matt Ranney\'s [node_redis][node_redis].\nThe latter has an optional dependency on hiredis-node, so maybe you\'re\nalready using it without knowing.\n\nAlternatively, you can use it directly:\n\n```javascript\nvar hiredis = require("hiredis"),\n reader = new hiredis.Reader();\n\n// Data comes in\nreader.feed("$5\\r\\nhello\\r\\n");\n\n// Reply comes out\nreader.get() // => "hello"\n```\n\nInstead of returning strings for bulk payloads, it can also return\nbuffers:\n\n```javascript\nvar hiredis = require("hiredis"),\n reader = new hiredis.Reader({ return_buffers: true });\n\n// Data comes in\nreader.feed("$5\\r\\nhello\\r\\n");\n\n// Reply comes out\nreader.get() // => <Buffer 68 65 6c 6c 6f>\n```\n\n[node_redis]: http://github.com/mranney/node_redis\n\n## Windows\n\nDmitry Gorbunov (@fuwaneko) made a [fork of hiredis-node][windows_fork] with Windows support.\n\n[windows_fork]: https://github.com/fuwaneko/hiredis-node\n\n## License\n\nThis code is released under the BSD license, after the license of hiredis.\n',
2755 silly resolved readmeFilename: 'README.md',
2755 silly resolved _id: '[email protected]',
2755 silly resolved _from: 'hiredis@~0.1' },
2755 silly resolved { name: 'deep-is',
2755 silly resolved version: '0.1.2',
2755 silly resolved description: 'node\'s assert.deepEqual algorithm except for NaN being equal to NaN',
2755 silly resolved main: 'index.js',
2755 silly resolved directories: { lib: '.', example: 'example', test: 'test' },
2755 silly resolved scripts: { test: 'tape test/*.js' },
2755 silly resolved devDependencies: { tape: '~1.0.2' },
2755 silly resolved repository: { type: 'git', url: 'http://github.com/thlorenz/deep-is.git' },
2755 silly resolved keywords: [ 'equality', 'equal', 'compare' ],
2755 silly resolved author:
2755 silly resolved { name: 'Thorsten Lorenz',
2755 silly resolved email: '[email protected]',
2755 silly resolved url: 'http://thlorenz.com' },
2755 silly resolved license: 'MIT',
2755 silly resolved testling: { files: 'test/*.js', browsers: [Object] },
2755 silly resolved readme: 'deep-is\n==========\n\nNode\'s `assert.deepEqual() algorithm` as a standalone module. Exactly like\n[deep-equal](https://github.com/substack/node-deep-equal) except for the fact that `deepEqual(NaN, NaN) === true`.\n\nThis module is around [5 times faster](https://gist.github.com/2790507)\nthan wrapping `assert.deepEqual()` in a `try/catch`.\n\n[![browser support](http://ci.testling.com/thlorenz/deep-is.png)](http://ci.testling.com/thlorenz/deep-is)\n\n[![build status](https://secure.travis-ci.org/thlorenz/deep-is.png)](http://travis-ci.org/thlorenz/deep-is)\n\nexample\n=======\n\n``` js\nvar equal = require(\'deep-is\');\nconsole.dir([\n equal(\n { a : [ 2, 3 ], b : [ 4 ] },\n { a : [ 2, 3 ], b : [ 4 ] }\n ),\n equal(\n { x : 5, y : [6] },\n { x : 5, y : 6 }\n )\n]);\n```\n\nmethods\n=======\n\nvar deepIs = require(\'deep-is\')\n\ndeepIs(a, b)\n---------------\n\nCompare objects `a` and `b`, returning whether they are equal according to a\nrecursive equality algorithm.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install deep-is\n```\n\ntest\n====\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm test\n```\n\nlicense\n=======\n\nMIT. Derived largely from node\'s assert module.\n',
2755 silly resolved readmeFilename: 'README.markdown',
2755 silly resolved bugs: { url: 'https://github.com/thlorenz/deep-is/issues' },
2755 silly resolved homepage: 'https://github.com/thlorenz/deep-is',
2755 silly resolved _id: '[email protected]',
2755 silly resolved _from: 'deep-is@~0.1' },
2755 silly resolved { name: 'redis',
2755 silly resolved version: '0.8.6',
2755 silly resolved description: 'Redis client library',
2755 silly resolved keywords: [ 'redis', 'database' ],
2755 silly resolved author: { name: 'Matt Ranney', email: '[email protected]' },
2755 silly resolved main: './index.js',
2755 silly resolved scripts: { test: 'node ./test.js' },
2755 silly resolved devDependencies: { metrics: '>=0.1.5', colors: '~0.6.0-1', underscore: '~1.4.4' },
2755 silly resolved repository: { type: 'git', url: 'git://github.com/mranney/node_redis.git' },
2755 silly resolved readme: 'redis - a node.js redis client\n===========================\n\nThis is a complete Redis client for node.js. It supports all Redis commands, including many recently added commands like EVAL from\nexperimental Redis server branches.\n\n\nInstall with:\n\n npm install redis\n\nPieter Noordhuis has provided a binding to the official `hiredis` C library, which is non-blocking and fast. To use `hiredis`, do:\n\n npm install hiredis redis\n\nIf `hiredis` is installed, `node_redis` will use it by default. Otherwise, a pure JavaScript parser will be used.\n\nIf you use `hiredis`, be sure to rebuild it whenever you upgrade your version of node. There are mysterious failures that can\nhappen between node and native code modules after a node upgrade.\n\n\n## Usage\n\nSimple example, included as `examples/simple.js`:\n\n```js\n var redis = require("redis"),\n client = redis.createClient();\n\n // if you\'d like to select database 3, instead of 0 (default), call\n // client.select(3, function() { /* ... */ });\n\n client.on("error", function (err) {\n console.log("Error " + err);\n });\n\n client.set("string key", "string val", redis.print);\n client.hset("hash key", "hashtest 1", "some value", redis.print);\n client.hset(["hash key", "hashtest 2", "some other value"], redis.print);\n client.hkeys("hash key", function (err, replies) {\n console.log(replies.length + " replies:");\n replies.forEach(function (reply, i) {\n console.log(" " + i + ": " + reply);\n });\n client.quit();\n });\n```\n\nThis will display:\n\n mjr:~/work/node_redis (master)$ node example.js\n Reply: OK\n Reply: 0\n Reply: 0\n 2 replies:\n 0: hashtest 1\n 1: hashtest 2\n mjr:~/work/node_redis (master)$\n\n\n## Performance\n\nHere are typical results of `multi_bench.js` which is similar to `redis-benchmark` from the Redis distribution.\nIt uses 50 concurrent connections with no pipelining.\n\nJavaScript parser:\n\n PING: 20000 ops 42283.30 ops/sec 0/5/1.182\n SET: 20000 ops 32948.93 ops/sec 1/7/1.515\n GET: 20000 ops 28694.40 ops/sec 0/9/1.740\n INCR: 20000 ops 39370.08 ops/sec 0/8/1.269\n LPUSH: 20000 ops 36429.87 ops/sec 0/8/1.370\n LRANGE (10 elements): 20000 ops 9891.20 ops/sec 1/9/5.048\n LRANGE (100 elements): 20000 ops 1384.56 ops/sec 10/91/36.072\n\nhiredis parser:\n\n PING: 20000 ops 46189.38 ops/sec 1/4/1.082\n SET: 20000 ops 41237.11 ops/sec 0/6/1.210\n GET: 20000 ops 39682.54 ops/sec 1/7/1.257\n INCR: 20000 ops 40080.16 ops/sec 0/8/1.242\n LPUSH: 20000 ops 41152.26 ops/sec 0/3/1.212\n LRANGE (10 elements): 20000 ops 36563.07 ops/sec 1/8/1.363\n LRANGE (100 elements): 20000 ops 21834.06 ops/sec 0/9/2.287\n\nThe performance of `node_redis` improves dramatically with pipelining, which happens automatically in most normal programs.\n\n\n### Sending Commands\n\nEach Redis command is exposed as a function on the `client` object.\nAll functions take either an `args` Array plus optional `callback` Function or\na variable number of individual arguments followed by an optional callback.\nHere is an example of passing an array of arguments and a callback:\n\n client.mset(["test keys 1", "test val 1", "test keys 2", "test val 2"], function (err, res) {});\n\nHere is that same call in the second style:\n\n client.mset("test keys 1", "test val 1", "test keys 2", "test val 2", function (err, res) {});\n\nNote that in either form the `callback` is optional:\n\n client.set("some key", "some val");\n client.set(["some other key", "some val"]);\n\nIf the key is missing, reply will be null (probably):\n\n client.get("missingkey", function(err, reply) {\n // reply is null when the key is missing\n console.log(reply);\n });\n\nFor a list of Redis commands, see [Redis Command Reference](http://redis.io/commands)\n\nThe commands can be specified in uppercase or lowercase for convenience. `client.get()` is the same as `client.GET()`.\n\nMinimal parsing is done on the replies. Commands that return a single line reply return JavaScript Strings,\ninteger replies return JavaScript Numbers, "bulk" replies return node Buffers, and "multi bulk" replies return a\nJavaScript Array of node Buffers. `HGETALL` returns an Object with Buffers keyed by the hash keys.\n\n# API\n\n## Connection Events\n\n`client` will emit some events about the state of the connection to the Redis server.\n\n### "ready"\n\n`client` will emit `ready` a connection is established to the Redis server and the server reports\nthat it is ready to receive commands. Commands issued before the `ready` event are queued,\nthen replayed just before this event is emitted.\n\n### "connect"\n\n`client` will emit `connect` at the same time as it emits `ready` unless `client.options.no_ready_check`\nis set. If this options is set, `connect` will be emitted when the stream is connected, and then\nyou are free to try to send commands.\n\n### "error"\n\n`client` will emit `error` when encountering an error connecting to the Redis server.\n\nNote that "error" is a special event type in node. If there are no listeners for an\n"error" event, node will exit. This is usually what you want, but it can lead to some\ncryptic error messages like this:\n\n mjr:~/work/node_redis (master)$ node example.js\n\n node.js:50\n throw e;\n ^\n Error: ECONNREFUSED, Connection refused\n at IOWatcher.callback (net:870:22)\n at node.js:607:9\n\nNot very useful in diagnosing the problem, but if your program isn\'t ready to handle this,\nit is probably the right thing to just exit.\n\n`client` will also emit `error` if an exception is thrown inside of `node_redis` for whatever reason.\nIt would be nice to distinguish these two cases.\n\n### "end"\n\n`client` will emit `end` when an established Redis server connection has closed.\n\n### "drain"\n\n`client` will emit `drain` when the TCP connection to the Redis server has been buffering, but is now\nwritable. This event can be used to stream commands in to Redis and adapt to backpressure. Right now,\nyou need to check `client.command_queue.length` to decide when to reduce your send rate. Then you can\nresume sending when you get `drain`.\n\n### "idle"\n\n`client` will emit `idle` when there are no outstanding commands that are awaiting a response.\n\n## redis.createClient(port, host, options)\n\nCreate a new client connection. `port` defaults to `6379` and `host` defaults\nto `127.0.0.1`. If you have `redis-server` running on the same computer as node, then the defaults for\nport and host are probably fine. `options` in an object with the following possible properties:\n\n* `parser`: which Redis protocol reply parser to use. Defaults to `hiredis` if that module is installed.\nThis may also be set to `javascript`.\n* `return_buffers`: defaults to `false`. If set to `true`, then all replies will be sent to callbacks as node Buffer\nobjects instead of JavaScript Strings.\n* `detect_buffers`: default to `false`. If set to `true`, then replies will be sent to callbacks as node Buffer objects\nif any of the input arguments to the original command were Buffer objects.\nThis option lets you switch between Buffers and Strings on a per-command basis, whereas `return_buffers` applies to\nevery command on a client.\n* `socket_nodelay`: defaults to `true`. Whether to call setNoDelay() on the TCP stream, which disables the\nNagle algorithm on the underlying socket. Setting this option to `false` can result in additional throughput at the\ncost of more latency. Most applications will want this set to `true`.\n* `no_ready_check`: defaults to `false`. When a connection is established to the Redis server, the server might still\nbe loading the database from disk. While loading, the server not respond to any commands. To work around this,\n`node_redis` has a "ready check" which sends the `INFO` command to the server. The response from the `INFO` command\nindicates whether the server is ready for more commands. When ready, `node_redis` emits a `ready` event.\nSetting `no_ready_check` to `true` will inhibit this check.\n* `enable_offline_queue`: defaults to `true`. By default, if there is no active\nconnection to the redis server, commands are added to a queue and are executed\nonce the connection has been established. Setting `enable_offline_queue` to\n`false` will disable this feature and the callback will be execute immediately\nwith an error, or an error will be thrown if no callback is specified.\n* `retry_max_delay`: defaults to `null`. By default every time the client tries to connect and fails time before\nreconnection (delay) almost doubles. This delay normally grows infinitely, but setting `retry_max_delay` limits delay\nto maximum value, provided in milliseconds.\n* `connect_timeout` defaults to `false`. By default client will try reconnecting until connected. Setting `connect_timeout`\nlimits total time for client to reconnect. Value is provided in milliseconds and is counted once the disconnect occured.\n* `max_attempts` defaults to `null`. By default client will try reconnecting until connected. Setting `max_attempts`\nlimits total amount of reconnects.\n* `auth_pass` defaults to `null`. By default client will try connecting without auth. If set, client will run redis auth command on connect.\n\n```js\n var redis = require("redis"),\n client = redis.createClient(null, null, {detect_buffers: true});\n\n client.set("foo_rand000000000000", "OK");\n\n // This will return a JavaScript String\n client.get("foo_rand000000000000", function (err, reply) {\n console.log(reply.toString()); // Will print `OK`\n });\n\n // This will return a Buffer since original key is specified as a Buffer\n client.get(new Buffer("foo_rand000000000000"), function (err, reply) {\n console.log(reply.toString()); // Will print `<Buffer 4f 4b>`\n });\n client.end();\n```\n\n`createClient()` returns a `RedisClient` object that is named `client` in all of the examples here.\n\n## client.auth(password, callback)\n\nWhen connecting to Redis servers that require authentication, the `AUTH` command must be sent as the\nfirst command after connecting. This can be tricky to coordinate with reconnections, the ready check,\netc. To make this easier, `client.auth()` stashes `password` and will send it after each connection,\nincluding reconnections. `callback` is invoked only once, after the response to the very first\n`AUTH` command sent.\nNOTE: Your call to `client.auth()` should not be inside the ready handler. If\nyou are doing this wrong, `client` will emit an error that looks\nsomething like this `Error: Ready check failed: ERR operation not permitted`.\n\n## client.end()\n\nForcibly close the connection to the Redis server. Note that this does not wait until all replies have been parsed.\nIf you want to exit cleanly, call `client.quit()` to send the `QUIT` command after you have handled all replies.\n\nThis example closes the connection to the Redis server before the replies have been read. You probably don\'t\nwant to do this:\n\n```js\n var redis = require("redis"),\n client = redis.createClient();\n\n client.set("foo_rand000000000000", "some fantastic value");\n client.get("foo_rand000000000000", function (err, reply) {\n console.log(reply.toString());\n });\n client.end();\n```\n\n`client.end()` is useful for timeout cases where something is stuck or taking too long and you want\nto start over.\n\n## client.unref()\n\nCall `unref()` on the underlying socket connection to the Redis server, allowing the program to exit once no more commands are pending.\n\nThis is an **experimental** feature, and only supports a subset of the Redis protocol. Any commands where client state is saved on the Redis server, e.g. `*SUBSCRIBE` or the blocking `BL*` commands will *NOT* work with `.unref()`.\n\n```js\nvar redis = require("redis")\nvar client = redis.createClient()\n\n/*\n Calling unref() will allow this program to exit immediately after the get command finishes. Otherwise the client would hang as long as the client-server connection is alive.\n*/\nclient.unref()\nclient.get("foo", function (err, value){\n if (err) throw(err)\n console.log(value)\n})\n```\n\n## Friendlier hash commands\n\nMost Redis commands take a single String or an Array of Strings as arguments, and replies are sent back as a single String or an Array of Strings.\nWhen dealing with hash values, there are a couple of useful exceptions to this.\n\n### client.hgetall(hash)\n\nThe reply from an HGETALL command will be converted into a JavaScript Object by `node_redis`. That way you can interact\nwith the responses using JavaScript syntax.\n\nExample:\n\n client.hmset("hosts", "mjr", "1", "another", "23", "home", "1234");\n client.hgetall("hosts", function (err, obj) {\n console.dir(obj);\n });\n\nOutput:\n\n { mjr: \'1\', another: \'23\', home: \'1234\' }\n\n### client.hmset(hash, obj, [callback])\n\nMultiple values in a hash can be set by supplying an object:\n\n client.HMSET(key2, {\n "0123456789": "abcdefghij", // NOTE: key and value will be coerced to strings\n "some manner of key": "a type of value"\n });\n\nThe properties and values of this Object will be set as keys and values in the Redis hash.\n\n### client.hmset(hash, key1, val1, ... keyn, valn, [callback])\n\nMultiple values may also be set by supplying a list:\n\n client.HMSET(key1, "0123456789", "abcdefghij", "some manner of key", "a type of value");\n\n\n## Publish / Subscribe\n\nHere is a simple example of the API for publish / subscribe. This program opens two\nclient connections, subscribes to a channel on one of them, and publishes to that\nchannel on the other:\n\n```js\n var redis = require("redis"),\n client1 = redis.createClient(), client2 = redis.createClient(),\n msg_count = 0;\n\n client1.on("subscribe", function (channel, count) {\n client2.publish("a nice channel", "I am sending a message.");\n client2.publish("a nice channel", "I am sending a second message.");\n client2.publish("a nice channel", "I am sending my last message.");\n });\n\n client1.on("message", function (channel, message) {\n console.log("client1 channel " + channel + ": " + message);\n msg_count += 1;\n if (msg_count === 3) {\n client1.unsubscribe();\n client1.end();\n client2.end();\n }\n });\n\n client1.incr("did a thing");\n client1.subscribe("a nice channel");\n```\n\nWhen a client issues a `SUBSCRIBE` or `PSUBSCRIBE`, that connection is put into a "subscriber" mode.\nAt that point, only commands that modify the subscription set are valid. When the subscription\nset is empty, the connection is put back into regular mode.\n\nIf you need to send regular commands to Redis while in subscriber mode, just open another connection.\n\n## Subscriber Events\n\nIf a client has subscriptions active, it may emit these events:\n\n### "message" (channel, message)\n\nClient will emit `message` for every message received that matches an active subscription.\nListeners are passed the channel name as `channel` and the message Buffer as `message`.\n\n### "pmessage" (pattern, channel, message)\n\nClient will emit `pmessage` for every message received that matches an active subscription pattern.\nListeners are passed the original pattern used with `PSUBSCRIBE` as `pattern`, the sending channel\nname as `channel`, and the message Buffer as `message`.\n\n### "subscribe" (channel, count)\n\nClient will emit `subscribe` in response to a `SUBSCRIBE` command. Listeners are passed the\nchannel name as `channel` and the new count of subscriptions for this client as `count`.\n\n### "psubscribe" (pattern, count)\n\nClient will emit `psubscribe` in response to a `PSUBSCRIBE` command. Listeners are passed the\noriginal pattern as `pattern`, and the new count of subscriptions for this client as `count`.\n\n### "unsubscribe" (channel, count)\n\nClient will emit `unsubscribe` in response to a `UNSUBSCRIBE` command. Listeners are passed the\nchannel name as `channel` and the new count of subscriptions for this client as `count`. When\n`count` is 0, this client has left subscriber mode and no more subscriber events will be emitted.\n\n### "punsubscribe" (pattern, count)\n\nClient will emit `punsubscribe` in response to a `PUNSUBSCRIBE` command. Listeners are passed the\nchannel name as `channel` and the new count of subscriptions for this client as `count`. When\n`count` is 0, this client has left subscriber mode and no more subscriber events will be emitted.\n\n## client.multi([commands])\n\n`MULTI` commands are queued up until an `EXEC` is issued, and then all commands are run atomically by\nRedis. The interface in `node_redis` is to return an individual `Multi` object by calling `client.multi()`.\n\n```js\n var redis = require("./index"),\n client = redis.createClient(), set_size = 20;\n\n client.sadd("bigset", "a member");\n client.sadd("bigset", "another member");\n\n while (set_size > 0) {\n client.sadd("bigset", "member " + set_size);\n set_size -= 1;\n }\n\n // multi chain with an individual callback\n client.multi()\n .scard("bigset")\n .smembers("bigset")\n .keys("*", function (err, replies) {\n // NOTE: code in this callback is NOT atomic\n // this only happens after the the .exec call finishes.\n client.mget(replies, redis.print);\n })\n .dbsize()\n .exec(function (err, replies) {\n console.log("MULTI got " + replies.length + " replies");\n replies.forEach(function (reply, index) {\n console.log("Reply " + index + ": " + reply.toString());\n });\n });\n```\n\n### Multi.exec( callback )\n\n`client.multi()` is a constructor that returns a `Multi` object. `Multi` objects share all of the\nsame command methods as `client` objects do. Commands are queued up inside the `Multi` object\nuntil `Multi.exec()` is invoked.\n\nThe `callback` of `.exec()` will get invoked with two arguments:\n\n* `err` **type:** `null | Array` err is either null or an array of Error Objects corresponding the the sequence the commands where chained. The last item of the array will always be an `EXECABORT` type of error originating from the `.exec()` itself.\n* `results` **type:** `null | Array` results is an array of responses corresponding the the sequence the commands where chained.\n\nYou can either chain together `MULTI` commands as in the above example, or you can queue individual\ncommands while still sending regular client command as in this example:\n\n```js\n var redis = require("redis"),\n client = redis.createClient(), multi;\n\n // start a separate multi command queue\n multi = client.multi();\n multi.incr("incr thing", redis.print);\n multi.incr("incr other thing", redis.print);\n\n // runs immediately\n client.mset("incr thing", 100, "incr other thing", 1, redis.print);\n\n // drains multi queue and runs atomically\n multi.exec(function (err, replies) {\n console.log(replies); // 101, 2\n });\n\n // you can re-run the same transaction if you like\n multi.exec(function (err, replies) {\n console.log(replies); // 102, 3\n client.quit();\n });\n```\n\nIn addition to adding commands to the `MULTI` queue individually, you can also pass an array\nof commands and arguments to the constructor:\n\n```js\n var redis = require("redis"),\n client = redis.createClient(), multi;\n\n client.multi([\n ["mget", "multifoo", "multibar", redis.print],\n ["incr", "multifoo"],\n ["incr", "multibar"]\n ]).exec(function (err, replies) {\n console.log(replies);\n });\n```\n\n\n## Monitor mode\n\nRedis supports the `MONITOR` command, which lets you see all commands received by the Redis server\nacross all client connections, including from other client libraries and other computers.\n\nAfter you send the `MONITOR` command, no other commands are valid on that connection. `node_redis`\nwill emit a `monitor` event for every new monitor message that comes across. The callback for the\n`monitor` event takes a timestamp from the Redis server and an array of command arguments.\n\nHere is a simple example:\n\n```js\n var client = require("redis").createClient(),\n util = require("util");\n\n client.monitor(function (err, res) {\n console.log("Entering monitoring mode.");\n });\n\n client.on("monitor", function (time, args) {\n console.log(time + ": " + util.inspect(args));\n });\n```\n\n# Extras\n\nSome other things you might like to know about.\n\n## client.server_info\n\nAfter the ready probe completes, the results from the INFO command are saved in the `client.server_info`\nobject.\n\nThe `versions` key contains an array of the elements of the version string for easy comparison.\n\n > client.server_info.redis_version\n \'2.3.0\'\n > client.server_info.versions\n [ 2, 3, 0 ]\n\n## redis.print()\n\nA handy callback function for displaying return values when testing. Example:\n\n```js\n var redis = require("redis"),\n client = redis.createClient();\n\n client.on("connect", function () {\n client.set("foo_rand000000000000", "some fantastic value", redis.print);\n client.get("foo_rand000000000000", redis.print);\n });\n```\n\nThis will print:\n\n Reply: OK\n Reply: some fantastic value\n\nNote that this program will not exit cleanly because the client is still connected.\n\n## redis.debug_mode\n\nBoolean to enable debug mode and protocol tracing.\n\n```js\n var redis = require("redis"),\n client = redis.createClient();\n\n redis.debug_mode = true;\n\n client.on("connect", function () {\n client.set("foo_rand000000000000", "some fantastic value");\n });\n```\n\nThis will display:\n\n mjr:~/work/node_redis (master)$ node ~/example.js\n send command: *3\n $3\n SET\n $20\n foo_rand000000000000\n $20\n some fantastic value\n\n on_data: +OK\n\n`send command` is data sent into Redis and `on_data` is data received from Redis.\n\n## Multi-word commands\n\nTo execute redis multi-word commands like `SCRIPT LOAD` or `CLIENT LIST` pass\nthe second word as first parameter:\n\n client.script(\'load\', \'return 1\');\n client.multi().script(\'load\', \'return 1\').exec(...);\n client.multi([[\'script\', \'load\', \'return 1\']]).exec(...);\n\n## client.send_command(command_name, args, callback)\n\nUsed internally to send commands to Redis. For convenience, nearly all commands that are published on the Redis\nWiki have been added to the `client` object. However, if I missed any, or if new commands are introduced before\nthis library is updated, you can use `send_command()` to send arbitrary commands to Redis.\n\nAll commands are sent as multi-bulk commands. `args` can either be an Array of arguments, or omitted.\n\n## client.connected\n\nBoolean tracking the state of the connection to the Redis server.\n\n## client.command_queue.length\n\nThe number of commands that have been sent to the Redis server but not yet replied to. You can use this to\nenforce some kind of maximum queue depth for commands while connected.\n\nDon\'t mess with `client.command_queue` though unless you really know what you are doing.\n\n## client.offline_queue.length\n\nThe number of commands that have been queued up for a future connection. You can use this to enforce\nsome kind of maximum queue depth for pre-connection commands.\n\n## client.retry_delay\n\nCurrent delay in milliseconds before a connection retry will be attempted. This starts at `250`.\n\n## client.retry_backoff\n\nMultiplier for future retry timeouts. This should be larger than 1 to add more time between retries.\nDefaults to 1.7. The default initial connection retry is 250, so the second retry will be 425, followed by 723.5, etc.\n\n### Commands with Optional and Keyword arguments\n\nThis applies to anything that uses an optional `[WITHSCORES]` or `[LIMIT offset count]` in the [redis.io/commands](http://redis.io/commands) documentation.\n\nExample:\n```js\nvar args = [ \'myzset\', 1, \'one\', 2, \'two\', 3, \'three\', 99, \'ninety-nine\' ];\nclient.zadd(args, function (err, response) {\n if (err) throw err;\n console.log(\'added \'+response+\' items.\');\n\n // -Infinity and +Infinity also work\n var args1 = [ \'myzset\', \'+inf\', \'-inf\' ];\n client.zrevrangebyscore(args1, function (err, response) {\n if (err) throw err;\n console.log(\'example1\', response);\n // write your code here\n });\n\n var max = 3, min = 1, offset = 1, count = 2;\n var args2 = [ \'myzset\', max, min, \'WITHSCORES\', \'LIMIT\', offset, count ];\n client.zrevrangebyscore(args2, function (err, response) {\n if (err) throw err;\n console.log(\'example2\', response);\n // write your code here\n });\n});\n```\n\n## TODO\n\nBetter tests for auth, disconnect/reconnect, and all combinations thereof.\n\nStream large set/get values into and out of Redis. Otherwise the entire value must be in node\'s memory.\n\nPerformance can be better for very large values.\n\nI think there are more performance improvements left in there for smaller values, especially for large lists of small values.\n\n## How to Contribute\n- open a pull request and then wait for feedback (if\n [DTrejo](http://github.com/dtrejo) does not get back to you within 2 days,\n comment again with indignation!)\n\n## Contributors\nSome people have have added features and fixed bugs in `node_redis` other than me.\n\nOrdered by date of first contribution.\n[Auto-generated](http://github.com/dtrejo/node-authors) on Wed Jul 25 2012 19:14:59 GMT-0700 (PDT).\n\n- [Matt Ranney aka `mranney`](https://github.com/mranney)\n- [Tim-Smart aka `tim-smart`](https://github.com/tim-smart)\n- [Tj Holowaychuk aka `visionmedia`](https://github.com/visionmedia)\n- [rick aka `technoweenie`](https://github.com/technoweenie)\n- [Orion Henry aka `orionz`](https://github.com/orionz)\n- [Aivo Paas aka `aivopaas`](https://github.com/aivopaas)\n- [Hank Sims aka `hanksims`](https://github.com/hanksims)\n- [Paul Carey aka `paulcarey`](https://github.com/paulcarey)\n- [Pieter Noordhuis aka `pietern`](https://github.com/pietern)\n- [nithesh aka `nithesh`](https://github.com/nithesh)\n- [Andy Ray aka `andy2ray`](https://github.com/andy2ray)\n- [unknown aka `unknowdna`](https://github.com/unknowdna)\n- [Dave Hoover aka `redsquirrel`](https://github.com/redsquirrel)\n- [Vladimir Dronnikov aka `dvv`](https://github.com/dvv)\n- [Umair Siddique aka `umairsiddique`](https://github.com/umairsiddique)\n- [Louis-Philippe Perron aka `lp`](https://github.com/lp)\n- [Mark Dawson aka `markdaws`](https://github.com/markdaws)\n- [Ian Babrou aka `bobrik`](https://github.com/bobrik)\n- [Felix Geisendörfer aka `felixge`](https://github.com/felixge)\n- [Jean-Hugues Pinson aka `undefined`](https://github.com/undefined)\n- [Maksim Lin aka `maks`](https://github.com/maks)\n- [Owen Smith aka `orls`](https://github.com/orls)\n- [Zachary Scott aka `zzak`](https://github.com/zzak)\n- [TEHEK Firefox aka `TEHEK`](https://github.com/TEHEK)\n- [Isaac Z. Schlueter aka `isaacs`](https://github.com/isaacs)\n- [David Trejo aka `DTrejo`](https://github.com/DTrejo)\n- [Brian Noguchi aka `bnoguchi`](https://github.com/bnoguchi)\n- [Philip Tellis aka `bluesmoon`](https://github.com/bluesmoon)\n- [Marcus Westin aka `marcuswestin2`](https://github.com/marcuswestin2)\n- [Jed Schmidt aka `jed`](https://github.com/jed)\n- [Dave Peticolas aka `jdavisp3`](https://github.com/jdavisp3)\n- [Trae Robrock aka `trobrock`](https://github.com/trobrock)\n- [Shankar Karuppiah aka `shankar0306`](https://github.com/shankar0306)\n- [Ignacio Burgueño aka `ignacio`](https://github.com/ignacio)\n\nThanks.\n\n## LICENSE - "MIT License"\n\nCopyright (c) 2010 Matthew Ranney, http://ranney.com/\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the "Software"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\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\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\n![spacer](http://ranney.com/1px.gif)\n',
2755 silly resolved readmeFilename: 'README.md',
2755 silly resolved bugs: { url: 'https://github.com/mranney/node_redis/issues' },
2755 silly resolved homepage: 'https://github.com/mranney/node_redis',
2755 silly resolved _id: '[email protected]',
2755 silly resolved _from: 'redis@~0.8' },
2755 silly resolved { name: 'arraydiff',
2755 silly resolved description: 'Diff two arrays, finding inserts, removes, and moves',
2755 silly resolved homepage: 'https://github.com/codeparty/arraydiff',
2755 silly resolved repository: { type: 'git', url: 'https://github.com/codeparty/arraydiff' },
2755 silly resolved version: '0.1.1',
2755 silly resolved main: './index.js',
2755 silly resolved scripts: { test: 'grunt test' },
2755 silly resolved dependencies: {},
2755 silly resolved devDependencies:
2755 silly resolved { grunt: '~0.4.1',
2755 silly resolved mocha: '~1.9.0',
2755 silly resolved 'expect.js': '~0.2.0',
2755 silly resolved 'coffee-script': '~1.6.2',
2755 silly resolved 'grunt-simple-mocha': '~0.4.0',
2755 silly resolved 'grunt-contrib-jshint': '~0.4.3' },
2755 silly resolved optionalDependencies: {},
2755 silly resolved readme: '# arraydiff\n\nDiff two arrays, finding inserts, removes, and moves.\n\n[![build status](https://secure.travis-ci.org/codeparty/arraydiff.png)](http://travis-ci.org/codeparty/arraydiff)\n\n## Installation\n\n```\nnpm install arraydiff\n```\n\n## Usage\n\n```\nvar arrayDiff = require(\'arraydiff\');\n\nvar before = [0, 1, 2, 3];\nvar after = [\'1\', \'2\', 4, 5, 0];\n\n// Compares with `===` by default\nvar diff = arrayDiff(before, after);\nconsole.log(\'\\nStandard diff:\');\nfor (var i = 0; i < diff.length; i++) {\n var item = diff[i];\n console.log(item.type, item);\n}\n\n// A custom equality method is optional\nvar diff = arrayDiff(before, after, function(a, b) {\n return a == b;\n});\nconsole.log(\'\\nFuzzy equality diff:\');\nfor (var i = 0; i < diff.length; i++) {\n var item = diff[i];\n console.log(item.type, item);\n}\n```\n\nOutput:\n\n```\nStandard diff:\nremove { index: 1, howMany: 3 }\ninsert { index: 0, values: [ \'1\', \'2\', 4, 5 ] }\n\nFuzzy equality diff:\nremove { index: 3, howMany: 1 }\nmove { from: 1, to: 0, howMany: 2 }\ninsert { index: 2, values: [ 4, 5 ] }\n```\n\n\n## MIT License\nCopyright (c) 2013 by Nate Smith\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the "Software"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies 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 FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.',
2755 silly resolved readmeFilename: 'README.md',
2755 silly resolved bugs: { url: 'https://github.com/codeparty/arraydiff/issues' },
2755 silly resolved _id: '[email protected]',
2755 silly resolved _from: 'arraydiff@~0.1' } ]
2756 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/livedb
2757 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/livedb
2758 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/livedb
2759 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/livedb
2760 info install [email protected] into /var/www/sharejs/releases/20131218171509/node_modules/livedb
2761 info installOne [email protected]
2762 info installOne [email protected]
2763 info installOne [email protected]
2764 info installOne [email protected]
2765 info installOne [email protected]
2766 info /var/www/sharejs/releases/20131218171509/node_modules/livedb/node_modules/statsd-client unbuild
2767 info /var/www/sharejs/releases/20131218171509/node_modules/livedb/node_modules/hiredis unbuild
2768 info /var/www/sharejs/releases/20131218171509/node_modules/livedb/node_modules/deep-is unbuild
2769 info /var/www/sharejs/releases/20131218171509/node_modules/livedb/node_modules/redis unbuild
2770 info /var/www/sharejs/releases/20131218171509/node_modules/livedb/node_modules/arraydiff unbuild
2771 silly gunzTarPerm extractEntry lib/public/icons/page_white_find.png
2772 silly gunzTarPerm extractEntry lib/public/icons/page_white_flash.png
2773 silly gunzTarPerm extractEntry benches/stress/rpushblpop/run
2774 silly gunzTarPerm extractEntry benches/stress/speed/speed.js
2775 silly gunzTarPerm extractEntry package.json
2776 silly gunzTarPerm extractEntry package.json
2777 silly gunzTarPerm extractEntry package.json
2778 silly gunzTarPerm extractEntry package.json
2779 silly gunzTarPerm extractEntry package.json
2780 silly gunzTarPerm extractEntry package.json
2781 silly gunzTarPerm extractEntry package.json
2782 silly gunzTarPerm extractEntry package.json
2783 silly gunzTarPerm extractEntry package.json
2784 silly gunzTarPerm extractEntry package.json
2785 silly gunzTarPerm extractEntry package.json
2786 silly gunzTarPerm extractEntry package.json
2787 verbose tar unpack /home/sharejs/.npm/statsd-client/0.0.15/package.tgz
2788 silly lockFile 1725cf49-ivedb-node-modules-statsd-client tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb/node_modules/statsd-client
2789 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb/node_modules/statsd-client /home/sharejs/.npm/1725cf49-ivedb-node-modules-statsd-client.lock
2790 silly lockFile d2571478-statsd-client-0-0-15-package-tgz tar:///home/sharejs/.npm/statsd-client/0.0.15/package.tgz
2791 verbose lock tar:///home/sharejs/.npm/statsd-client/0.0.15/package.tgz /home/sharejs/.npm/d2571478-statsd-client-0-0-15-package-tgz.lock
2792 verbose tar unpack /home/sharejs/.npm/hiredis/0.1.16/package.tgz
2793 silly lockFile e394be24-ules-livedb-node-modules-hiredis tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb/node_modules/hiredis
2794 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb/node_modules/hiredis /home/sharejs/.npm/e394be24-ules-livedb-node-modules-hiredis.lock
2795 silly lockFile 267e7042-s-npm-hiredis-0-1-16-package-tgz tar:///home/sharejs/.npm/hiredis/0.1.16/package.tgz
2796 verbose lock tar:///home/sharejs/.npm/hiredis/0.1.16/package.tgz /home/sharejs/.npm/267e7042-s-npm-hiredis-0-1-16-package-tgz.lock
2797 verbose tar unpack /home/sharejs/.npm/deep-is/0.1.2/package.tgz
2798 silly lockFile 7f1cc876-ules-livedb-node-modules-deep-is tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb/node_modules/deep-is
2799 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb/node_modules/deep-is /home/sharejs/.npm/7f1cc876-ules-livedb-node-modules-deep-is.lock
2800 silly lockFile 4378f23d-js-npm-deep-is-0-1-2-package-tgz tar:///home/sharejs/.npm/deep-is/0.1.2/package.tgz
2801 verbose lock tar:///home/sharejs/.npm/deep-is/0.1.2/package.tgz /home/sharejs/.npm/4378f23d-js-npm-deep-is-0-1-2-package-tgz.lock
2802 verbose tar unpack /home/sharejs/.npm/redis/0.8.6/package.tgz
2803 silly lockFile 00db6c01-odules-livedb-node-modules-redis tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb/node_modules/redis
2804 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb/node_modules/redis /home/sharejs/.npm/00db6c01-odules-livedb-node-modules-redis.lock
2805 silly lockFile fa5f0937-rejs-npm-redis-0-8-6-package-tgz tar:///home/sharejs/.npm/redis/0.8.6/package.tgz
2806 verbose lock tar:///home/sharejs/.npm/redis/0.8.6/package.tgz /home/sharejs/.npm/fa5f0937-rejs-npm-redis-0-8-6-package-tgz.lock
2807 verbose tar unpack /home/sharejs/.npm/arraydiff/0.1.1/package.tgz
2808 silly lockFile 0d02537e-es-livedb-node-modules-arraydiff tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb/node_modules/arraydiff
2809 verbose lock tar:///var/www/sharejs/releases/20131218171509/node_modules/livedb/node_modules/arraydiff /home/sharejs/.npm/0d02537e-es-livedb-node-modules-arraydiff.lock
2810 silly lockFile 49e94d6e--npm-arraydiff-0-1-1-package-tgz tar:///home/sharejs/.npm/arraydiff/0.1.1/package.tgz
2811 verbose lock tar:///home/sharejs/.npm/arraydiff/0.1.1/package.tgz /home/sharejs/.npm/49e94d6e--npm-arraydiff-0-1-1-package-tgz.lock
2812 silly gunzTarPerm extractEntry scripts/stats.coffee
2813 silly gunzTarPerm extractEntry scripts/talk.coffee
2814 silly gunzTarPerm extractEntry .npmignore
2815 silly gunzTarPerm extractEntry README.md
2816 silly gunzTarPerm modes [ '755', '644' ]
2817 silly gunzTarPerm modes [ '755', '644' ]
2818 silly gunzTarPerm modes [ '755', '644' ]
2819 silly gunzTarPerm modes [ '755', '644' ]
2820 silly gunzTarPerm modes [ '755', '644' ]
2821 silly gunzTarPerm extractEntry .npmignore
2822 silly gunzTarPerm extractEntry index.js
2823 silly gunzTarPerm extractEntry index.js
2824 silly gunzTarPerm extractEntry History.md
2825 silly gunzTarPerm extractEntry .npmignore
2826 silly gunzTarPerm extractEntry index.js
2827 silly gunzTarPerm extractEntry .npmignore
2828 silly gunzTarPerm extractEntry index.js
2829 silly gunzTarPerm extractEntry .npmignore
2830 silly gunzTarPerm extractEntry README.md
2831 silly gunzTarPerm extractEntry debug.js
2832 silly gunzTarPerm extractEntry index.js
2833 silly gunzTarPerm extractEntry .npmignore
2834 silly gunzTarPerm extractEntry LICENSE
2835 silly gunzTarPerm extractEntry index.js
2836 silly gunzTarPerm extractEntry History.md
2837 silly gunzTarPerm extractEntry Readme.md
2838 silly gunzTarPerm extractEntry .npmignore
2839 silly gunzTarPerm extractEntry index.js
2840 silly gunzTarPerm extractEntry .npmignore
2841 silly gunzTarPerm extractEntry LICENSE
2842 silly gunzTarPerm extractEntry .npmignore
2843 silly gunzTarPerm extractEntry README.md
2844 silly gunzTarPerm extractEntry benches/stress/speed/00
2845 silly gunzTarPerm extractEntry benches/stress/speed/plot
2846 silly gunzTarPerm extractEntry karma.conf.coffee
2847 silly gunzTarPerm extractEntry package.json
2848 silly gunzTarPerm extractEntry lib/public/icons/page_white_freehand.png
2849 silly gunzTarPerm extractEntry lib/public/icons/page_white_gear.png
2850 silly gunzTarPerm extractEntry package.json
2851 silly gunzTarPerm extractEntry package.json
2852 silly gunzTarPerm extractEntry package.json
2853 silly gunzTarPerm extractEntry package.json
2854 silly gunzTarPerm extractEntry index.js
2855 silly gunzTarPerm extractEntry .travis.yml
2856 silly gunzTarPerm extractEntry History.md
2857 silly gunzTarPerm extractEntry Makefile
2858 silly gunzTarPerm extractEntry Readme.md
2859 silly gunzTarPerm extractEntry History.md
2860 silly gunzTarPerm extractEntry Makefile
2861 silly gunzTarPerm extractEntry History.md
2862 silly gunzTarPerm extractEntry Makefile
2863 silly gunzTarPerm extractEntry LICENSE
2864 silly gunzTarPerm extractEntry index.js
2865 silly gunzTarPerm extractEntry .npmignore
2866 silly gunzTarPerm extractEntry README.md
2867 silly gunzTarPerm extractEntry History.md
2868 silly gunzTarPerm extractEntry Makefile
2869 silly gunzTarPerm extractEntry index.js
2870 silly gunzTarPerm extractEntry component.json
2871 silly gunzTarPerm extractEntry Readme.md
2872 silly gunzTarPerm extractEntry lib/debug.js
2873 silly gunzTarPerm extractEntry index.js
2874 silly gunzTarPerm extractEntry .travis.yml
2875 silly gunzTarPerm extractEntry README.md
2876 silly gunzTarPerm extractEntry bench.js
2877 silly gunzTarPerm extractEntry .npmignore
2878 silly gunzTarPerm extractEntry index.js
2879 silly gunzTarPerm extractEntry .npmignore
2880 silly gunzTarPerm extractEntry README.md
2881 silly gunzTarPerm extractEntry .npmignore
2882 silly gunzTarPerm extractEntry README.md
2883 silly gunzTarPerm extractEntry index.js
2884 silly gunzTarPerm extractEntry .travis.yml
2885 silly gunzTarPerm extractEntry benches/stress/speed/size-rate.png
2886 silly gunzTarPerm extractEntry lib/public/icons/page_white_get.png
2887 silly gunzTarPerm extractEntry lib/public/icons/page_white_go.png
2888 silly gunzTarPerm extractEntry lib/metrics/names.js
2889 silly gunzTarPerm extractEntry lib/metrics/normalizer.js
2890 silly gunzTarPerm extractEntry tests/crc.test.js
2891 silly gunzTarPerm extractEntry Readme.md
2892 silly gunzTarPerm extractEntry Readme.md
2893 silly gunzTarPerm extractEntry Readme.md
2894 silly gunzTarPerm extractEntry .travis.yml
2895 silly gunzTarPerm extractEntry test/parse.js
2896 silly gunzTarPerm extractEntry Readme.md
2897 silly gunzTarPerm extractEntry lib/send.js
2898 silly gunzTarPerm extractEntry examples/pow.js
2899 silly gunzTarPerm extractEntry readme.markdown
2900 silly gunzTarPerm extractEntry LICENSE
2901 silly gunzTarPerm extractEntry .travis.yml
2902 silly gunzTarPerm extractEntry test-unref.js
2903 silly gunzTarPerm extractEntry Readme.md
2904 silly gunzTarPerm extractEntry lib/cache.js
2905 silly gunzTarPerm extractEntry hiredis.js
2906 silly gunzTarPerm extractEntry COPYING
2907 silly gunzTarPerm extractEntry .travis.yml
2908 silly gunzTarPerm extractEntry README.markdown
2909 silly gunzTarPerm extractEntry Gruntfile.js
2910 silly gunzTarPerm extractEntry index.js
2911 error [email protected] install: `node-gyp configure build`
2911 error Exit status 1
2912 error Failed at the [email protected] install script.
2912 error This is most likely a problem with the rbytes package,
2912 error not with npm itself.
2912 error Tell the author that this fails on your system:
2912 error node-gyp configure build
2912 error You can get their info via:
2912 error npm owner ls rbytes
2912 error There is likely additional logging output above.
2913 error System Linux 3.2.0-54-virtual
2914 error command "/usr/bin/node" "/usr/bin/npm" "install" "--production"
2915 error cwd /var/www/sharejs/releases/20131218171509
2916 error node -v v0.10.23
2917 error npm -v 1.3.17
2918 error code ELIFECYCLE
2919 verbose exit [ 1, true ]
sharejs@sharejsX:~$
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment