-
Notifications
You must be signed in to change notification settings - Fork 0
/
npm-debug.log
5924 lines (5924 loc) · 573 KB
/
npm-debug.log
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files (x86)\\nodejs\\\\node.exe',
1 verbose cli 'C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli 'install',
1 verbose cli '-g',
1 verbose cli 'meteorite' ]
2 info using [email protected]
3 info using [email protected]
4 verbose node symlink C:\Program Files (x86)\nodejs\\node.exe
5 verbose cache add [ 'meteorite', null ]
6 verbose cache add name=undefined spec="meteorite" args=["meteorite",null]
7 verbose parsed url { protocol: null,
7 verbose parsed url slashes: null,
7 verbose parsed url auth: null,
7 verbose parsed url host: null,
7 verbose parsed url port: null,
7 verbose parsed url hostname: null,
7 verbose parsed url hash: null,
7 verbose parsed url search: null,
7 verbose parsed url query: null,
7 verbose parsed url pathname: 'meteorite',
7 verbose parsed url path: 'meteorite',
7 verbose parsed url href: 'meteorite' }
8 silly lockFile 8f2f99a9-meteorite meteorite
9 verbose lock meteorite C:\Users\Freer\AppData\Roaming\npm-cache\8f2f99a9-meteorite.lock
10 silly lockFile 8f2f99a9-meteorite meteorite
11 silly lockFile 8f2f99a9-meteorite meteorite
12 verbose addNamed [ 'meteorite', '' ]
13 verbose addNamed [ null, '*' ]
14 silly lockFile bf6d5fee-meteorite meteorite@
15 verbose lock meteorite@ C:\Users\Freer\AppData\Roaming\npm-cache\bf6d5fee-meteorite.lock
16 silly addNameRange { name: 'meteorite', range: '*', hasData: false }
17 verbose url raw meteorite
18 verbose url resolving [ 'https://registry.npmjs.org/', './meteorite' ]
19 verbose url resolved https://registry.npmjs.org/meteorite
20 info trying registry request attempt 1 at 01:17:56
21 verbose etag "5CBL6OVRWKRCJNLV1X7BJ7CUK"
22 http GET https://registry.npmjs.org/meteorite
23 http 304 https://registry.npmjs.org/meteorite
24 silly registry.get cb [ 304,
24 silly registry.get { date: 'Sun, 05 Oct 2014 05:17:52 GMT',
24 silly registry.get server: 'Apache',
24 silly registry.get via: '1.1 varnish',
24 silly registry.get 'last-modified': 'Sun, 05 Oct 2014 05:17:53 GMT',
24 silly registry.get 'cache-control': 'max-age=60',
24 silly registry.get etag: '"5CBL6OVRWKRCJNLV1X7BJ7CUK"',
24 silly registry.get 'x-served-by': 'cache-ord1733-ORD',
24 silly registry.get 'x-cache': 'MISS',
24 silly registry.get 'x-cache-hits': '0',
24 silly registry.get 'x-timer': 'S1412486272.695961,VS0,VE454',
24 silly registry.get vary: 'Accept',
24 silly registry.get 'content-length': '0',
24 silly registry.get 'keep-alive': 'timeout=10, max=50',
24 silly registry.get connection: 'Keep-Alive' } ]
25 verbose etag meteorite from cache
26 silly addNameRange number 2 { name: 'meteorite', range: '*', hasData: true }
27 silly addNameRange versions [ 'meteorite',
27 silly addNameRange [ '0.0.1',
27 silly addNameRange '0.0.2',
27 silly addNameRange '0.0.3',
27 silly addNameRange '0.0.4',
27 silly addNameRange '0.0.5',
27 silly addNameRange '0.0.6',
27 silly addNameRange '0.0.7',
27 silly addNameRange '0.0.8',
27 silly addNameRange '0.0.9',
27 silly addNameRange '0.0.10',
27 silly addNameRange '0.0.11',
27 silly addNameRange '0.0.12',
27 silly addNameRange '0.0.13',
27 silly addNameRange '0.0.14',
27 silly addNameRange '0.0.15',
27 silly addNameRange '0.0.16',
27 silly addNameRange '0.0.17',
27 silly addNameRange '0.0.18',
27 silly addNameRange '0.0.19',
27 silly addNameRange '0.1.0',
27 silly addNameRange '0.1.1',
27 silly addNameRange '0.2.0',
27 silly addNameRange '0.2.1',
27 silly addNameRange '0.2.2',
27 silly addNameRange '0.3.0',
27 silly addNameRange '0.3.1',
27 silly addNameRange '0.3.3',
27 silly addNameRange '0.4.0',
27 silly addNameRange '0.4.1',
27 silly addNameRange '0.4.2',
27 silly addNameRange '0.4.3',
27 silly addNameRange '0.4.4',
27 silly addNameRange '0.4.5',
27 silly addNameRange '0.4.6',
27 silly addNameRange '0.4.7',
27 silly addNameRange '0.4.8',
27 silly addNameRange '0.4.9',
27 silly addNameRange '0.5.0',
27 silly addNameRange '0.5.1',
27 silly addNameRange '0.6.0',
27 silly addNameRange '0.6.1',
27 silly addNameRange '0.6.2',
27 silly addNameRange '0.6.3',
27 silly addNameRange '0.6.4',
27 silly addNameRange '0.6.5',
27 silly addNameRange '0.6.6',
27 silly addNameRange '0.6.7',
27 silly addNameRange '0.6.8',
27 silly addNameRange '0.6.9',
27 silly addNameRange '0.6.10',
27 silly addNameRange '0.6.11',
27 silly addNameRange '0.6.12',
27 silly addNameRange '0.6.13',
27 silly addNameRange '0.6.14',
27 silly addNameRange '0.6.15',
27 silly addNameRange '0.6.16',
27 silly addNameRange '0.7.0',
27 silly addNameRange '0.7.1',
27 silly addNameRange '0.7.2',
27 silly addNameRange '0.7.3',
27 silly addNameRange '0.7.4',
27 silly addNameRange '0.7.5',
27 silly addNameRange '0.7.6',
27 silly addNameRange '0.7.7',
27 silly addNameRange '0.7.8',
27 silly addNameRange '0.9.0',
27 silly addNameRange '0.9.1',
27 silly addNameRange '0.9.2' ] ]
28 verbose addNamed [ 'meteorite', '0.9.2' ]
29 verbose addNamed [ '0.9.2', '0.9.2' ]
30 silly lockFile 718a0fc1-meteorite-0-9-2 [email protected]
31 verbose lock [email protected] C:\Users\Freer\AppData\Roaming\npm-cache\718a0fc1-meteorite-0-9-2.lock
32 silly lockFile 718a0fc1-meteorite-0-9-2 [email protected]
33 silly lockFile 718a0fc1-meteorite-0-9-2 [email protected]
34 silly lockFile bf6d5fee-meteorite meteorite@
35 silly lockFile bf6d5fee-meteorite meteorite@
36 silly resolved [ { name: 'meteorite',
36 silly resolved version: '0.9.2',
36 silly resolved homepage: 'http://oortcloud.github.com/meteorite',
36 silly resolved engines: [ 'node >=0.8.0' ],
36 silly resolved description: 'Installer & smart package manager for Meteor',
36 silly resolved author:
36 silly resolved { name: 'Tom Coleman',
36 silly resolved email: '[email protected]',
36 silly resolved url: 'http://percolatestudio.com' },
36 silly resolved dependencies:
36 silly resolved { ddp: '>=0.3.1 <0.5.0',
36 silly resolved underscore: '1.3.3',
36 silly resolved wrench: '1.3.9',
36 silly resolved fstream: '>=0.1.18',
36 silly resolved optimist: '>=0.3.4',
36 silly resolved prompt: '0.2.11',
36 silly resolved colors: '0.6.0-1',
36 silly resolved async: '0.2.9',
36 silly resolved rolling_timeout_exec: '>=0.0.1' },
36 silly resolved devDependencies: { mocha: '>=1.2.2', connect: '>=2.3.6', which: '>=1.0.5' },
36 silly resolved scripts:
36 silly resolved { test: 'mocha spec/unit spec/acceptance -t 240000 -R spec',
36 silly resolved flushcache: 'rm -rf spec/support/cache',
36 silly resolved postinstall: 'sh ./completions/postinstall.sh' },
36 silly resolved repository:
36 silly resolved { type: 'git',
36 silly resolved url: 'https://github.com/oortcloud/meteorite.git' },
36 silly resolved bin: { mrt: './bin/mrt.js' },
36 silly resolved readme: '# Meteorite\n\nMeteorite is a Meteor version manager and package manager. It provides an easy way to run different versions of meteor, use non-core packages, and to install packages from the [Atmosphere package repository](https://atmosphere.meteor.com/). \n\nMeteorite provides the command `mrt`, which can be used to add and install smart packages from atmosphere.\n\n``` sh\n$ mrt create my-app\n$ cd my-app\n# Install an Atmosphere package, recursively fetching dependencies.\n$ mrt add router\n# Check for and install any updates, and run the app.\n$ mrt\n```\n\n## Installing Meteorite\n\nMeteorite can be installed via [npm](https://npmjs.org/).\n\n``` sh\n$ npm install -g meteorite\n```\n\n### NOTE:\nIf your system requires root access to install global npm packages, make sure you use the `-H` flag:\n\n``` sh\n$ sudo -H npm install -g meteorite\n```\n\n## Updating from pre-0.6.0 Meteorite\n\nMeteorite now symlinks packages into the `packages/` directory of your app, so it\'s no longer necessary to run `mrt` when you want to start a server. Just make sure you `mrt install` in your app, and delete the `"meteor"` section from your `smart.json`. \n\nSubsequently, you can simply use `meteor` to run your development server, and just `mrt install` to ensure all packages are installed from atmosphere.\n\n### NOTES\n\n- Meteor is not officially supported on windows; you can run it thanks to [Tom Wijman\'s excellent work](http://win.meteor.com). However, meteorite\'s git based approach runs counter to the MSI installation that\'s required to get it working. So meteorite *does not* work under windows right now. Pull Requests which change this would be gladly accepted! Also, see [this blog post](http://www.discovermeteor.com/2013/03/20/using-meteor-and-atmopshere-on-windows/) for some information about how to use it.\n\n- You\'ll also need to ensure you have [git](http://git-scm.com) installed and available in your path. Also, you\'ll need to make sure that `mrt`\'s install location (usually `/usr/local/bin/`) is on your path.\n\n\n## Usage\n\n### `mrt add <package>`\n\nWorks like `meteor add`, but if the package isn\'t one of Meteor\'s included packages, it installs it from [Atmosphere](https://atmosphere.meteor.com).\n\nUnlike `meteor add`, only one package can be added at a time with `mrt add`.\n\n``` sh\n# Add the latest version of the moment package on Atmosphere.\n$ mrt add moment\n# Add a specific version of a package.\n$ mrt add router --pkg-version 0.3.4\n# Meteorite will install page.js too, because router depends on it.\n```\n\n### `mrt remove <package>`\n\nSimilarly, removes a package from `smart.json`, and unlinks it from your project (as well as telling Meteor not to use it).\n\n### `mrt install`\n\nInstall all packages listed in `smart.json` that aren\'t already installed on your machine. Use this command if you are working collaboratively and your colleagues install new packages.\n\n### `mrt update`\n\nInstalls any available updates to the app\'s desired Meteor version and packages.\n\n### `mrt create <name>`\n\nWorks like `meteor create`, but you can specify the desired branch, tag or reference of [Meteor\'s git repository](https://github.com/meteor/meteor) that the app should be based on.\n\n``` sh\n# By default, apps are based on Meteor\'s master branch.\n$ mrt create cool-app\n# You can create apps based on a branch of Meteor\'s repo.\n$ mrt create risky-app --branch devel\n# Or, on a tag (such as version numbers).\n$ mrt create safe-app --tag v0.5.4\n# Or, or on a commit.\n$ mrt create choosy-app --ref a9a717\n```\n\n### `mrt create-package [path/to/]foo`\n\nPuts the basic building blocks down for creating a package named `foo`, (potentially in a sub directory, usually `packages/`).\n\n### `mrt link-package path/to/foo`\n\nLinks `packages/foo` to `path/to/foo` so that you can use a local version without changing `smart.json`. Useful for quick changes to a package you maintain when developing an application. \n\nNote that `mrt install` or `mrt` will _overwrite_ this link if you also have `foo` in your `smart.json` (which you probably will). This may change in the future.\n\n## Options\n\nOptions can be passed at the very end of the command.\n\n### `--verbose`\n\nLog debug information to the console.\n\nExample: `mrt add crypto-sha1 --verbose`\n\n## Deprecated commands\n\nAs Meteorite now installs packages into the `packages/` directory, you can simply run `meteor` to start your app. You may need to run `mrt install` first.\nYou can run any meteor executable you like (e.g. from a checkout somewhere on your machine). \n\n### `mrt`\n\nWorks like `meteor`, but checks and installs the app\'s desired Meteor version and package dependencies before running the app. You may still want to use this, but it\'s no longer the official way to use Meteorite.\n\nIf however you want to use a forked version of Meteor in your project, you can still list it in your `smart.json`, and Meteorite will run it via `mrt`. (Of course you could just run it directly from a checkout too, which may be simpler).\n\n### Other commands\n\nWhen Meteorite is executed for an app, it checks or installs the app\'s desired Meteor version, packages and dependencies, then does the required book-keeping (described below), and finally passes the command onto `meteor`.\n\n## Permission woes?\n\nIt is *not* required that you run `sudo mrt`. If you do so, your home directory will pick up some root-owned files and you\'ll struggle to run `mrt` without `sudo` from then on. This isn\'t good.\n\nTo fix the problem, try cleaning up potentially "sudo-ed" files:\n\n```bash\nsudo mrt uninstall\nsudo mrt uninstall --system\nsudo chown -R `whoami` ~/.npm\n```\n\nIf possible, try not to install Meteorite as root either. If you have permissions problems, make sure you install with `sudo -H npm install -g meteorite`. If you\'ve installed without `-H`, your `~/.npm` directory will be owned by root and you should run the `chown` command above to fix it.\n\n\n\n## How Meteorite works\n\nApps tell Meteorite the Meteor version and packages they want with a file called `smart.json` in their root directory. Meteorite will install those dependencies the next time it is executed within that app.\n\nMeteorite writes to a `smart.lock` file in the app\'s root directory to track the exact versions of its dependencies, even when it\'s set up in a fresh environment. You should check the `smart.lock` file into your app\'s version control, to ensure that other developers are running the same versions of the dependencies. Any changes in `smart.json` take precendency over `smart.lock`. The `smart.lock` file is reset with the `mrt update` command.\n\n### Example `smart.json`\n\nThe `meteor` property is not required: apps will depend on Meteor\'s master branch by default. You can specify `meteor.branch`, `meteor.tag` or `meteor.git` to use alternate branches, tags and forks respectively. Note that `meteor.git` expects an actual URL, use `ssh://[email protected]/meteor/meteor.git` instead of `[email protected]:meteor/meteor.git`.\n\n``` json\n{\n "packages": {\n "moment": {},\n "router": "0.3.4",\n "roles": {\n "version": "1.0.1"\n },\n "accounts-persona": {\n "git": "https://github.com/vladikoff/meteor-accounts-persona"\n },\n "normalize.css": {\n "git": "https://github.com/rithis/meteor-normalize.css",\n "tag": "v2.0.1"\n },\n "branch-of-package": {\n "git": "https://github.com/EventedMind/iron-router.git",\n "branch": "dev"\n },\n "my-experiment": {\n "path": "/path/to/local/package"\n }\n }\n}\n```\n\n## Writing Meteorite packages\n\nMeteorite packages include a `smart.json` file in their root directory to provide information about the package, and to list their dependencies. For an example, see [Meteor Router\'s `smart.json`](https://github.com/tmeasday/meteor-router/blob/master/smart.json).\n\nMeteorite packages also include a `package.js` file in their root directory to tell Meteorite how it should be installed. For an example, see [Meteor Roles\' `package.js`](https://github.com/alanning/meteor-roles/blob/master/roles/package.js).\n\nSee [Atmosphere\'s documentation on writing packages](https://atmosphere.meteor.com/wtf/package) for more information.\n\n## Bash Completion\n\nUse Meteorite\'s bash completion by sourcing it in your .bashrc or .bash_profile.\n\nDepending on where you installed Meteorite:\n\n```bash\nif [ -f /path/to/meteorite/completions/mrt.bash ]; then\n . /path/to/meteorite/completions/mrt.bash\nfi\n```\n\nAlternatively, you can create a symbolic link under bash_completion.d:\n\n```bash\nln -s /path/to/meteorite/completions/mrt.bash /path/to/bash_completion.d/mrt\n```\n\n## Running Meteorite In a Git Hook Script\n\nIf you encounter checkout errors while running `mrt install` or `mrt update` within a Git hook script, it is because `GIT_DIR` is set to an unexpected value when running within a hook. The solution is to temporarily unset it just before running the `mrt` command.\n\n```bash\n(unset GIT_DIR; mrt update)\n```\n\n## Contributing\n\nContributions to meteorite are very welcome! Please see the [Contribution Guide](https://github.com/oortcloud/meteorite/blob/master/CONTRIBUTING.md) for details.\n',
36 silly resolved readmeFilename: 'README.md',
36 silly resolved bugs: { url: 'https://github.com/oortcloud/meteorite/issues' },
36 silly resolved _id: '[email protected]',
36 silly resolved _shasum: '93e74f9459f61d22899259dc31756da9a67d1e07',
36 silly resolved _from: 'meteorite@',
36 silly resolved _resolved: 'https://registry.npmjs.org/meteorite/-/meteorite-0.9.2.tgz' } ]
37 info install [email protected] into C:\Users\Freer\AppData\Roaming\npm
38 info installOne [email protected]
39 info C:\Users\Freer\AppData\Roaming\npm\node_modules\meteorite unbuild
40 verbose tar unpack C:\Users\Freer\AppData\Roaming\npm-cache\meteorite\0.9.2\package.tgz
41 silly lockFile 48d45211-aming-npm-node-modules-meteorite tar://C:\Users\Freer\AppData\Roaming\npm\node_modules\meteorite
42 verbose lock tar://C:\Users\Freer\AppData\Roaming\npm\node_modules\meteorite C:\Users\Freer\AppData\Roaming\npm-cache\48d45211-aming-npm-node-modules-meteorite.lock
43 silly lockFile c30c2643-ache-meteorite-0-9-2-package-tgz tar://C:\Users\Freer\AppData\Roaming\npm-cache\meteorite\0.9.2\package.tgz
44 verbose lock tar://C:\Users\Freer\AppData\Roaming\npm-cache\meteorite\0.9.2\package.tgz C:\Users\Freer\AppData\Roaming\npm-cache\c30c2643-ache-meteorite-0-9-2-package-tgz.lock
45 silly gunzTarPerm modes [ '755', '644' ]
46 silly gunzTarPerm extractEntry package.json
47 silly gunzTarPerm extractEntry README.md
48 silly gunzTarPerm extractEntry CHANGELOG.md
49 silly gunzTarPerm extractEntry CONTRIBUTING.md
50 silly gunzTarPerm extractEntry LICENSE.txt
51 silly gunzTarPerm extractEntry bin/mrt.js
52 silly gunzTarPerm extractEntry completions/mrt.bash
53 silly gunzTarPerm extractEntry completions/postinstall.sh
54 silly gunzTarPerm extractEntry lib/atmosphere.js
55 silly gunzTarPerm extractEntry lib/config.js
56 silly gunzTarPerm extractEntry lib/console.js
57 silly gunzTarPerm extractEntry lib/debug.js
58 silly gunzTarPerm extractEntry lib/command.js
59 silly gunzTarPerm extractEntry lib/meteor.js
60 silly gunzTarPerm extractEntry lib/meteorite.js
61 silly gunzTarPerm extractEntry lib/project.js
62 silly gunzTarPerm extractEntry lib/utils/fs.js
63 silly gunzTarPerm extractEntry lib/utils/git.js
64 silly gunzTarPerm extractEntry lib/sources/git.js
65 silly gunzTarPerm extractEntry lib/sources/local.js
66 silly gunzTarPerm extractEntry lib/sources/source.js
67 silly gunzTarPerm extractEntry lib/dependencies/dependencies.js
68 silly gunzTarPerm extractEntry lib/dependencies/package.js
69 silly gunzTarPerm extractEntry lib/dependencies/resolver.js
70 silly gunzTarPerm extractEntry scripts/add-git-urls.rb
71 silly gunzTarPerm extractEntry scripts/claim-mrt-packages.rb
72 silly gunzTarPerm extractEntry scripts/config.rb
73 silly gunzTarPerm extractEntry scripts/fetch-metadata.rb
74 silly gunzTarPerm extractEntry scripts/migrate-all.rb
75 silly gunzTarPerm extractEntry scripts/migrate-dummies.rb
76 silly gunzTarPerm extractEntry scripts/migrate-dummy.rb
77 silly gunzTarPerm extractEntry scripts/migrate-package.rb
78 silly lockFile 48d45211-aming-npm-node-modules-meteorite tar://C:\Users\Freer\AppData\Roaming\npm\node_modules\meteorite
79 silly lockFile 48d45211-aming-npm-node-modules-meteorite tar://C:\Users\Freer\AppData\Roaming\npm\node_modules\meteorite
80 silly lockFile c30c2643-ache-meteorite-0-9-2-package-tgz tar://C:\Users\Freer\AppData\Roaming\npm-cache\meteorite\0.9.2\package.tgz
81 silly lockFile c30c2643-ache-meteorite-0-9-2-package-tgz tar://C:\Users\Freer\AppData\Roaming\npm-cache\meteorite\0.9.2\package.tgz
82 info preinstall [email protected]
83 verbose readDependencies using package.json deps
84 verbose readDependencies using package.json deps
85 verbose cache add [ 'ddp@>=0.3.1 <0.5.0', null ]
86 verbose cache add name=undefined spec="ddp@>=0.3.1 <0.5.0" args=["ddp@>=0.3.1 <0.5.0",null]
87 verbose parsed url { protocol: null,
87 verbose parsed url slashes: null,
87 verbose parsed url auth: null,
87 verbose parsed url host: null,
87 verbose parsed url port: null,
87 verbose parsed url hostname: null,
87 verbose parsed url hash: null,
87 verbose parsed url search: null,
87 verbose parsed url query: null,
87 verbose parsed url pathname: 'ddp@%3E=0.3.1%20%3C0.5.0',
87 verbose parsed url path: 'ddp@%3E=0.3.1%20%3C0.5.0',
87 verbose parsed url href: 'ddp@%3E=0.3.1%20%3C0.5.0' }
88 verbose cache add name="ddp" spec=">=0.3.1 <0.5.0" args=["ddp",">=0.3.1 <0.5.0"]
89 verbose parsed url { protocol: null,
89 verbose parsed url slashes: null,
89 verbose parsed url auth: null,
89 verbose parsed url host: null,
89 verbose parsed url port: null,
89 verbose parsed url hostname: null,
89 verbose parsed url hash: null,
89 verbose parsed url search: null,
89 verbose parsed url query: null,
89 verbose parsed url pathname: '%3E=0.3.1%20%3C0.5.0',
89 verbose parsed url path: '%3E=0.3.1%20%3C0.5.0',
89 verbose parsed url href: '%3E=0.3.1%20%3C0.5.0' }
90 verbose addNamed [ 'ddp', '>=0.3.1 <0.5.0' ]
91 verbose addNamed [ null, '>=0.3.1 <0.5.0-0' ]
92 silly lockFile 232233a1-ddp-0-3-1-0-5-0 ddp@>=0.3.1 <0.5.0
93 verbose lock ddp@>=0.3.1 <0.5.0 C:\Users\Freer\AppData\Roaming\npm-cache\232233a1-ddp-0-3-1-0-5-0.lock
94 verbose cache add [ '[email protected]', null ]
95 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
96 verbose parsed url { protocol: null,
96 verbose parsed url slashes: null,
96 verbose parsed url auth: null,
96 verbose parsed url host: null,
96 verbose parsed url port: null,
96 verbose parsed url hostname: null,
96 verbose parsed url hash: null,
96 verbose parsed url search: null,
96 verbose parsed url query: null,
96 verbose parsed url pathname: '[email protected]',
96 verbose parsed url path: '[email protected]',
96 verbose parsed url href: '[email protected]' }
97 verbose cache add name="underscore" spec="1.3.3" args=["underscore","1.3.3"]
98 verbose parsed url { protocol: null,
98 verbose parsed url slashes: null,
98 verbose parsed url auth: null,
98 verbose parsed url host: null,
98 verbose parsed url port: null,
98 verbose parsed url hostname: null,
98 verbose parsed url hash: null,
98 verbose parsed url search: null,
98 verbose parsed url query: null,
98 verbose parsed url pathname: '1.3.3',
98 verbose parsed url path: '1.3.3',
98 verbose parsed url href: '1.3.3' }
99 verbose addNamed [ 'underscore', '1.3.3' ]
100 verbose addNamed [ '1.3.3', '1.3.3' ]
101 silly lockFile 99e765c4-underscore-1-3-3 [email protected]
102 verbose lock [email protected] C:\Users\Freer\AppData\Roaming\npm-cache\99e765c4-underscore-1-3-3.lock
103 verbose cache add [ '[email protected]', null ]
104 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
105 verbose parsed url { protocol: null,
105 verbose parsed url slashes: null,
105 verbose parsed url auth: null,
105 verbose parsed url host: null,
105 verbose parsed url port: null,
105 verbose parsed url hostname: null,
105 verbose parsed url hash: null,
105 verbose parsed url search: null,
105 verbose parsed url query: null,
105 verbose parsed url pathname: '[email protected]',
105 verbose parsed url path: '[email protected]',
105 verbose parsed url href: '[email protected]' }
106 verbose cache add name="wrench" spec="1.3.9" args=["wrench","1.3.9"]
107 verbose parsed url { protocol: null,
107 verbose parsed url slashes: null,
107 verbose parsed url auth: null,
107 verbose parsed url host: null,
107 verbose parsed url port: null,
107 verbose parsed url hostname: null,
107 verbose parsed url hash: null,
107 verbose parsed url search: null,
107 verbose parsed url query: null,
107 verbose parsed url pathname: '1.3.9',
107 verbose parsed url path: '1.3.9',
107 verbose parsed url href: '1.3.9' }
108 verbose addNamed [ 'wrench', '1.3.9' ]
109 verbose addNamed [ '1.3.9', '1.3.9' ]
110 silly lockFile de31968e-wrench-1-3-9 [email protected]
111 verbose lock [email protected] C:\Users\Freer\AppData\Roaming\npm-cache\de31968e-wrench-1-3-9.lock
112 verbose cache add [ 'fstream@>=0.1.18', null ]
113 verbose cache add name=undefined spec="fstream@>=0.1.18" args=["fstream@>=0.1.18",null]
114 verbose parsed url { protocol: null,
114 verbose parsed url slashes: null,
114 verbose parsed url auth: null,
114 verbose parsed url host: null,
114 verbose parsed url port: null,
114 verbose parsed url hostname: null,
114 verbose parsed url hash: null,
114 verbose parsed url search: null,
114 verbose parsed url query: null,
114 verbose parsed url pathname: 'fstream@%3E=0.1.18',
114 verbose parsed url path: 'fstream@%3E=0.1.18',
114 verbose parsed url href: 'fstream@%3E=0.1.18' }
115 verbose cache add name="fstream" spec=">=0.1.18" args=["fstream",">=0.1.18"]
116 verbose parsed url { protocol: null,
116 verbose parsed url slashes: null,
116 verbose parsed url auth: null,
116 verbose parsed url host: null,
116 verbose parsed url port: null,
116 verbose parsed url hostname: null,
116 verbose parsed url hash: null,
116 verbose parsed url search: null,
116 verbose parsed url query: null,
116 verbose parsed url pathname: '%3E=0.1.18',
116 verbose parsed url path: '%3E=0.1.18',
116 verbose parsed url href: '%3E=0.1.18' }
117 verbose addNamed [ 'fstream', '>=0.1.18' ]
118 verbose addNamed [ null, '>=0.1.18' ]
119 silly lockFile 5141b154-fstream-0-1-18 fstream@>=0.1.18
120 verbose lock fstream@>=0.1.18 C:\Users\Freer\AppData\Roaming\npm-cache\5141b154-fstream-0-1-18.lock
121 verbose cache add [ 'optimist@>=0.3.4', null ]
122 verbose cache add name=undefined spec="optimist@>=0.3.4" args=["optimist@>=0.3.4",null]
123 verbose parsed url { protocol: null,
123 verbose parsed url slashes: null,
123 verbose parsed url auth: null,
123 verbose parsed url host: null,
123 verbose parsed url port: null,
123 verbose parsed url hostname: null,
123 verbose parsed url hash: null,
123 verbose parsed url search: null,
123 verbose parsed url query: null,
123 verbose parsed url pathname: 'optimist@%3E=0.3.4',
123 verbose parsed url path: 'optimist@%3E=0.3.4',
123 verbose parsed url href: 'optimist@%3E=0.3.4' }
124 verbose cache add name="optimist" spec=">=0.3.4" args=["optimist",">=0.3.4"]
125 verbose parsed url { protocol: null,
125 verbose parsed url slashes: null,
125 verbose parsed url auth: null,
125 verbose parsed url host: null,
125 verbose parsed url port: null,
125 verbose parsed url hostname: null,
125 verbose parsed url hash: null,
125 verbose parsed url search: null,
125 verbose parsed url query: null,
125 verbose parsed url pathname: '%3E=0.3.4',
125 verbose parsed url path: '%3E=0.3.4',
125 verbose parsed url href: '%3E=0.3.4' }
126 verbose addNamed [ 'optimist', '>=0.3.4' ]
127 verbose addNamed [ null, '>=0.3.4' ]
128 silly lockFile 748708ed-optimist-0-3-4 optimist@>=0.3.4
129 verbose lock optimist@>=0.3.4 C:\Users\Freer\AppData\Roaming\npm-cache\748708ed-optimist-0-3-4.lock
130 verbose cache add [ '[email protected]', null ]
131 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
132 verbose parsed url { protocol: null,
132 verbose parsed url slashes: null,
132 verbose parsed url auth: null,
132 verbose parsed url host: null,
132 verbose parsed url port: null,
132 verbose parsed url hostname: null,
132 verbose parsed url hash: null,
132 verbose parsed url search: null,
132 verbose parsed url query: null,
132 verbose parsed url pathname: '[email protected]',
132 verbose parsed url path: '[email protected]',
132 verbose parsed url href: '[email protected]' }
133 verbose cache add name="prompt" spec="0.2.11" args=["prompt","0.2.11"]
134 verbose parsed url { protocol: null,
134 verbose parsed url slashes: null,
134 verbose parsed url auth: null,
134 verbose parsed url host: null,
134 verbose parsed url port: null,
134 verbose parsed url hostname: null,
134 verbose parsed url hash: null,
134 verbose parsed url search: null,
134 verbose parsed url query: null,
134 verbose parsed url pathname: '0.2.11',
134 verbose parsed url path: '0.2.11',
134 verbose parsed url href: '0.2.11' }
135 verbose addNamed [ 'prompt', '0.2.11' ]
136 verbose addNamed [ '0.2.11', '0.2.11' ]
137 silly lockFile 61856ab9-prompt-0-2-11 [email protected]
138 verbose lock [email protected] C:\Users\Freer\AppData\Roaming\npm-cache\61856ab9-prompt-0-2-11.lock
139 silly addNameRange { name: 'ddp', range: '>=0.3.1 <0.5.0-0', hasData: false }
140 silly addNameRange { name: 'optimist', range: '>=0.3.4', hasData: false }
141 silly addNameRange { name: 'fstream', range: '>=0.1.18', hasData: false }
142 verbose url raw ddp
143 verbose url resolving [ 'https://registry.npmjs.org/', './ddp' ]
144 verbose url resolved https://registry.npmjs.org/ddp
145 info trying registry request attempt 1 at 01:17:57
146 verbose etag "E2BB0UFA4XEXVGLS94PDZHGBN"
147 http GET https://registry.npmjs.org/ddp
148 verbose url raw optimist
149 verbose url resolving [ 'https://registry.npmjs.org/', './optimist' ]
150 verbose url resolved https://registry.npmjs.org/optimist
151 info trying registry request attempt 1 at 01:17:57
152 verbose etag "C95FUOG6062DPYG0N3TU8F94I"
153 http GET https://registry.npmjs.org/optimist
154 verbose url raw fstream
155 verbose url resolving [ 'https://registry.npmjs.org/', './fstream' ]
156 verbose url resolved https://registry.npmjs.org/fstream
157 info trying registry request attempt 1 at 01:17:57
158 verbose etag "CZ6YU1YHV2GUHAL87JPCFH8JN"
159 http GET https://registry.npmjs.org/fstream
160 verbose cache add [ '[email protected]', null ]
161 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",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: '[email protected]',
162 verbose parsed url path: '[email protected]',
162 verbose parsed url href: '[email protected]' }
163 verbose cache add name="colors" spec="0.6.0-1" args=["colors","0.6.0-1"]
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.6.0-1',
164 verbose parsed url path: '0.6.0-1',
164 verbose parsed url href: '0.6.0-1' }
165 verbose addNamed [ 'colors', '0.6.0-1' ]
166 verbose addNamed [ '0.6.0-1', '0.6.0-1' ]
167 silly lockFile 02eba27f-colors-0-6-0-1 [email protected]
168 verbose lock [email protected] C:\Users\Freer\AppData\Roaming\npm-cache\02eba27f-colors-0-6-0-1.lock
169 verbose cache add [ '[email protected]', null ]
170 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",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: '[email protected]',
171 verbose parsed url path: '[email protected]',
171 verbose parsed url href: '[email protected]' }
172 verbose cache add name="async" spec="0.2.9" args=["async","0.2.9"]
173 verbose parsed url { protocol: null,
173 verbose parsed url slashes: null,
173 verbose parsed url auth: null,
173 verbose parsed url host: null,
173 verbose parsed url port: null,
173 verbose parsed url hostname: null,
173 verbose parsed url hash: null,
173 verbose parsed url search: null,
173 verbose parsed url query: null,
173 verbose parsed url pathname: '0.2.9',
173 verbose parsed url path: '0.2.9',
173 verbose parsed url href: '0.2.9' }
174 verbose addNamed [ 'async', '0.2.9' ]
175 verbose addNamed [ '0.2.9', '0.2.9' ]
176 silly lockFile be62480b-async-0-2-9 [email protected]
177 verbose lock [email protected] C:\Users\Freer\AppData\Roaming\npm-cache\be62480b-async-0-2-9.lock
178 verbose cache add [ 'rolling_timeout_exec@>=0.0.1', null ]
179 verbose cache add name=undefined spec="rolling_timeout_exec@>=0.0.1" args=["rolling_timeout_exec@>=0.0.1",null]
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: 'rolling_timeout_exec@%3E=0.0.1',
180 verbose parsed url path: 'rolling_timeout_exec@%3E=0.0.1',
180 verbose parsed url href: 'rolling_timeout_exec@%3E=0.0.1' }
181 verbose cache add name="rolling_timeout_exec" spec=">=0.0.1" args=["rolling_timeout_exec",">=0.0.1"]
182 verbose parsed url { protocol: null,
182 verbose parsed url slashes: null,
182 verbose parsed url auth: null,
182 verbose parsed url host: null,
182 verbose parsed url port: null,
182 verbose parsed url hostname: null,
182 verbose parsed url hash: null,
182 verbose parsed url search: null,
182 verbose parsed url query: null,
182 verbose parsed url pathname: '%3E=0.0.1',
182 verbose parsed url path: '%3E=0.0.1',
182 verbose parsed url href: '%3E=0.0.1' }
183 verbose addNamed [ 'rolling_timeout_exec', '>=0.0.1' ]
184 verbose addNamed [ null, '>=0.0.1' ]
185 silly lockFile dd046e26-rolling-timeout-exec-0-0-1 rolling_timeout_exec@>=0.0.1
186 verbose lock rolling_timeout_exec@>=0.0.1 C:\Users\Freer\AppData\Roaming\npm-cache\dd046e26-rolling-timeout-exec-0-0-1.lock
187 verbose url raw wrench
188 verbose url resolving [ 'https://registry.npmjs.org/', './wrench' ]
189 verbose url resolved https://registry.npmjs.org/wrench
190 info trying registry request attempt 1 at 01:17:57
191 verbose etag "39INY97SQTB3N52QGQABLH5K9"
192 http GET https://registry.npmjs.org/wrench
193 verbose url raw underscore
194 verbose url resolving [ 'https://registry.npmjs.org/', './underscore' ]
195 verbose url resolved https://registry.npmjs.org/underscore
196 info trying registry request attempt 1 at 01:17:57
197 verbose etag "10CE221QV8ZQ7WEIE7RTGTE5V"
198 http GET https://registry.npmjs.org/underscore
199 verbose url raw prompt
200 verbose url resolving [ 'https://registry.npmjs.org/', './prompt' ]
201 verbose url resolved https://registry.npmjs.org/prompt
202 info trying registry request attempt 1 at 01:17:57
203 verbose etag "1S02KX3WWJPQW4DHA8NTMML8V"
204 http GET https://registry.npmjs.org/prompt
205 silly addNameRange { name: 'rolling_timeout_exec',
205 silly addNameRange range: '>=0.0.1',
205 silly addNameRange hasData: false }
206 verbose url raw colors
207 verbose url resolving [ 'https://registry.npmjs.org/', './colors' ]
208 verbose url resolved https://registry.npmjs.org/colors
209 info trying registry request attempt 1 at 01:17:57
210 verbose etag "4DYWKVKOJWEJW0RBR0XEC4AXQ"
211 http GET https://registry.npmjs.org/colors
212 verbose url raw async
213 verbose url resolving [ 'https://registry.npmjs.org/', './async' ]
214 verbose url resolved https://registry.npmjs.org/async
215 info trying registry request attempt 1 at 01:17:57
216 verbose etag "A1R4UYERSGS4RIQ5KFARDOKY8"
217 http GET https://registry.npmjs.org/async
218 verbose url raw rolling_timeout_exec
219 verbose url resolving [ 'https://registry.npmjs.org/', './rolling_timeout_exec' ]
220 verbose url resolved https://registry.npmjs.org/rolling_timeout_exec
221 info trying registry request attempt 1 at 01:17:57
222 verbose etag "60KQFX773C6KWIQVVJCU7GUD3"
223 http GET https://registry.npmjs.org/rolling_timeout_exec
224 http 304 https://registry.npmjs.org/optimist
225 silly registry.get cb [ 304,
225 silly registry.get { date: 'Sun, 05 Oct 2014 05:17:53 GMT',
225 silly registry.get server: 'Apache',
225 silly registry.get via: '1.1 varnish',
225 silly registry.get 'last-modified': 'Sun, 05 Oct 2014 05:17:53 GMT',
225 silly registry.get 'cache-control': 'max-age=60',
225 silly registry.get etag: '"C95FUOG6062DPYG0N3TU8F94I"',
225 silly registry.get 'x-served-by': 'cache-ord1729-ORD',
225 silly registry.get 'x-cache': 'HIT',
225 silly registry.get 'x-cache-hits': '1',
225 silly registry.get 'x-timer': 'S1412486273.575287,VS0,VE0',
225 silly registry.get vary: 'Accept',
225 silly registry.get 'content-length': '0',
225 silly registry.get 'keep-alive': 'timeout=10, max=50',
225 silly registry.get connection: 'Keep-Alive' } ]
226 verbose etag optimist from cache
227 http 304 https://registry.npmjs.org/fstream
228 silly registry.get cb [ 304,
228 silly registry.get { date: 'Sun, 05 Oct 2014 05:17:53 GMT',
228 silly registry.get server: 'Apache',
228 silly registry.get via: '1.1 varnish',
228 silly registry.get 'last-modified': 'Sun, 05 Oct 2014 05:17:53 GMT',
228 silly registry.get 'cache-control': 'max-age=60',
228 silly registry.get etag: '"CZ6YU1YHV2GUHAL87JPCFH8JN"',
228 silly registry.get 'x-served-by': 'cache-ord1726-ORD',
228 silly registry.get 'x-cache': 'HIT',
228 silly registry.get 'x-cache-hits': '1',
228 silly registry.get 'x-timer': 'S1412486273.587774,VS0,VE0',
228 silly registry.get vary: 'Accept',
228 silly registry.get 'content-length': '0',
228 silly registry.get 'keep-alive': 'timeout=10, max=50',
228 silly registry.get connection: 'Keep-Alive' } ]
229 verbose etag fstream from cache
230 silly addNameRange number 2 { name: 'optimist', range: '>=0.3.4', hasData: true }
231 silly addNameRange versions [ 'optimist',
231 silly addNameRange [ '0.0.1',
231 silly addNameRange '0.0.2',
231 silly addNameRange '0.0.4',
231 silly addNameRange '0.0.5',
231 silly addNameRange '0.0.6',
231 silly addNameRange '0.0.7',
231 silly addNameRange '0.1.0',
231 silly addNameRange '0.1.1',
231 silly addNameRange '0.1.2',
231 silly addNameRange '0.1.3',
231 silly addNameRange '0.1.4',
231 silly addNameRange '0.1.5',
231 silly addNameRange '0.1.6',
231 silly addNameRange '0.1.7',
231 silly addNameRange '0.1.8',
231 silly addNameRange '0.1.9',
231 silly addNameRange '0.0.3',
231 silly addNameRange '0.2.0',
231 silly addNameRange '0.2.1',
231 silly addNameRange '0.2.2',
231 silly addNameRange '0.2.3',
231 silly addNameRange '0.2.4',
231 silly addNameRange '0.2.5',
231 silly addNameRange '0.2.6',
231 silly addNameRange '0.2.7',
231 silly addNameRange '0.2.8',
231 silly addNameRange '0.3.0',
231 silly addNameRange '0.3.1',
231 silly addNameRange '0.3.3',
231 silly addNameRange '0.3.4',
231 silly addNameRange '0.3.5',
231 silly addNameRange '0.3.6',
231 silly addNameRange '0.3.7',
231 silly addNameRange '0.4.0',
231 silly addNameRange '0.5.0',
231 silly addNameRange '0.5.1',
231 silly addNameRange '0.5.2',
231 silly addNameRange '0.6.0',
231 silly addNameRange '0.6.1' ] ]
232 verbose addNamed [ 'optimist', '0.6.1' ]
233 verbose addNamed [ '0.6.1', '0.6.1' ]
234 silly lockFile 0fc74eb8-optimist-0-6-1 [email protected]
235 verbose lock [email protected] C:\Users\Freer\AppData\Roaming\npm-cache\0fc74eb8-optimist-0-6-1.lock
236 silly addNameRange number 2 { name: 'fstream', range: '>=0.1.18', hasData: true }
237 silly addNameRange versions [ 'fstream',
237 silly addNameRange [ '0.0.0',
237 silly addNameRange '0.0.1',
237 silly addNameRange '0.1.0',
237 silly addNameRange '0.1.1',
237 silly addNameRange '0.1.2',
237 silly addNameRange '0.1.3',
237 silly addNameRange '0.1.5',
237 silly addNameRange '0.1.6',
237 silly addNameRange '0.1.7',
237 silly addNameRange '0.1.8',
237 silly addNameRange '0.1.9',
237 silly addNameRange '0.1.10',
237 silly addNameRange '0.1.11',
237 silly addNameRange '0.1.12',
237 silly addNameRange '0.1.13',
237 silly addNameRange '0.1.14',
237 silly addNameRange '0.1.15',
237 silly addNameRange '0.1.16',
237 silly addNameRange '0.1.17',
237 silly addNameRange '0.1.18',
237 silly addNameRange '0.1.19',
237 silly addNameRange '0.1.20',
237 silly addNameRange '0.1.21',
237 silly addNameRange '0.1.22',
237 silly addNameRange '0.1.23',
237 silly addNameRange '0.1.24',
237 silly addNameRange '0.1.25',
237 silly addNameRange '0.1.26',
237 silly addNameRange '0.1.27',
237 silly addNameRange '0.1.28',
237 silly addNameRange '0.1.29',
237 silly addNameRange '0.1.30',
237 silly addNameRange '1.0.0',
237 silly addNameRange '1.0.1',
237 silly addNameRange '0.1.31',
237 silly addNameRange '1.0.2' ] ]
238 verbose addNamed [ 'fstream', '1.0.2' ]
239 verbose addNamed [ '1.0.2', '1.0.2' ]
240 silly lockFile 03ab8b3d-fstream-1-0-2 [email protected]
241 verbose lock [email protected] C:\Users\Freer\AppData\Roaming\npm-cache\03ab8b3d-fstream-1-0-2.lock
242 silly lockFile 0fc74eb8-optimist-0-6-1 [email protected]
243 silly lockFile 0fc74eb8-optimist-0-6-1 [email protected]
244 silly lockFile 748708ed-optimist-0-3-4 optimist@>=0.3.4
245 silly lockFile 748708ed-optimist-0-3-4 optimist@>=0.3.4
246 silly lockFile 03ab8b3d-fstream-1-0-2 [email protected]
247 silly lockFile 03ab8b3d-fstream-1-0-2 [email protected]
248 silly lockFile 5141b154-fstream-0-1-18 fstream@>=0.1.18
249 silly lockFile 5141b154-fstream-0-1-18 fstream@>=0.1.18
250 http 304 https://registry.npmjs.org/colors
251 silly registry.get cb [ 304,
251 silly registry.get { date: 'Sun, 05 Oct 2014 05:17:53 GMT',
251 silly registry.get server: 'Apache',
251 silly registry.get via: '1.1 varnish',
251 silly registry.get 'last-modified': 'Sun, 05 Oct 2014 05:17:53 GMT',
251 silly registry.get 'cache-control': 'max-age=60',
251 silly registry.get etag: '"4DYWKVKOJWEJW0RBR0XEC4AXQ"',
251 silly registry.get 'x-served-by': 'cache-ord1726-ORD',
251 silly registry.get 'x-cache': 'HIT',
251 silly registry.get 'x-cache-hits': '1',
251 silly registry.get 'x-timer': 'S1412486273.633164,VS0,VE0',
251 silly registry.get vary: 'Accept',
251 silly registry.get 'content-length': '0',
251 silly registry.get 'keep-alive': 'timeout=10, max=49',
251 silly registry.get connection: 'Keep-Alive' } ]
252 verbose etag colors from cache
253 silly lockFile 02eba27f-colors-0-6-0-1 [email protected]
254 silly lockFile 02eba27f-colors-0-6-0-1 [email protected]
255 http 304 https://registry.npmjs.org/async
256 silly registry.get cb [ 304,
256 silly registry.get { date: 'Sun, 05 Oct 2014 05:17:53 GMT',
256 silly registry.get server: 'Apache',
256 silly registry.get via: '1.1 varnish',
256 silly registry.get 'last-modified': 'Sun, 05 Oct 2014 05:17:53 GMT',
256 silly registry.get 'cache-control': 'max-age=60',
256 silly registry.get etag: '"A1R4UYERSGS4RIQ5KFARDOKY8"',
256 silly registry.get 'x-served-by': 'cache-ord1726-ORD',
256 silly registry.get 'x-cache': 'HIT',
256 silly registry.get 'x-cache-hits': '1',
256 silly registry.get 'x-timer': 'S1412486273.669791,VS0,VE0',
256 silly registry.get vary: 'Accept',
256 silly registry.get 'content-length': '0',
256 silly registry.get 'keep-alive': 'timeout=10, max=48',
256 silly registry.get connection: 'Keep-Alive' } ]
257 verbose etag async from cache
258 silly lockFile be62480b-async-0-2-9 [email protected]
259 silly lockFile be62480b-async-0-2-9 [email protected]
260 http 304 https://registry.npmjs.org/prompt
261 silly registry.get cb [ 304,
261 silly registry.get { date: 'Sun, 05 Oct 2014 05:17:53 GMT',
261 silly registry.get server: 'Apache',
261 silly registry.get via: '1.1 varnish',
261 silly registry.get 'last-modified': 'Sun, 05 Oct 2014 05:17:53 GMT',
261 silly registry.get 'cache-control': 'max-age=60',
261 silly registry.get etag: '"1S02KX3WWJPQW4DHA8NTMML8V"',
261 silly registry.get 'x-served-by': 'cache-ord1729-ORD',
261 silly registry.get 'x-cache': 'HIT',
261 silly registry.get 'x-cache-hits': '1',
261 silly registry.get 'x-timer': 'S1412486273.613294,VS0,VE98',
261 silly registry.get vary: 'Accept',
261 silly registry.get 'content-length': '0',
261 silly registry.get 'keep-alive': 'timeout=10, max=49',
261 silly registry.get connection: 'Keep-Alive' } ]
262 verbose etag prompt from cache
263 silly lockFile 61856ab9-prompt-0-2-11 [email protected]
264 silly lockFile 61856ab9-prompt-0-2-11 [email protected]
265 http 304 https://registry.npmjs.org/underscore
266 silly registry.get cb [ 304,
266 silly registry.get { date: 'Sun, 05 Oct 2014 05:17:53 GMT',
266 silly registry.get server: 'Apache',
266 silly registry.get via: '1.1 varnish',
266 silly registry.get 'last-modified': 'Sun, 05 Oct 2014 05:17:53 GMT',
266 silly registry.get 'cache-control': 'max-age=60',
266 silly registry.get etag: '"10CE221QV8ZQ7WEIE7RTGTE5V"',
266 silly registry.get 'x-served-by': 'cache-ord1727-ORD',
266 silly registry.get 'x-cache': 'HIT',
266 silly registry.get 'x-cache-hits': '1',
266 silly registry.get 'x-timer': 'S1412486273.592899,VS0,VE133',
266 silly registry.get vary: 'Accept',
266 silly registry.get 'content-length': '0',
266 silly registry.get 'keep-alive': 'timeout=10, max=50',
266 silly registry.get connection: 'Keep-Alive' } ]
267 verbose etag underscore from cache
268 http 304 https://registry.npmjs.org/wrench
269 silly registry.get cb [ 304,
269 silly registry.get { date: 'Sun, 05 Oct 2014 05:17:53 GMT',
269 silly registry.get server: 'Apache',
269 silly registry.get via: '1.1 varnish',
269 silly registry.get 'last-modified': 'Sun, 05 Oct 2014 05:17:53 GMT',
269 silly registry.get 'cache-control': 'max-age=60',
269 silly registry.get etag: '"39INY97SQTB3N52QGQABLH5K9"',
269 silly registry.get 'x-served-by': 'cache-ord1726-ORD',
269 silly registry.get 'x-cache': 'HIT',
269 silly registry.get 'x-cache-hits': '1',
269 silly registry.get 'x-timer': 'S1412486273.583796,VS0,VE151',
269 silly registry.get vary: 'Accept',
269 silly registry.get 'content-length': '0',
269 silly registry.get 'keep-alive': 'timeout=10, max=50',
269 silly registry.get connection: 'Keep-Alive' } ]
270 verbose etag wrench from cache
271 silly lockFile 99e765c4-underscore-1-3-3 [email protected]
272 silly lockFile 99e765c4-underscore-1-3-3 [email protected]
273 silly lockFile de31968e-wrench-1-3-9 [email protected]
274 silly lockFile de31968e-wrench-1-3-9 [email protected]
275 http 304 https://registry.npmjs.org/rolling_timeout_exec
276 silly registry.get cb [ 304,
276 silly registry.get { date: 'Sun, 05 Oct 2014 05:17:53 GMT',
276 silly registry.get server: 'Apache',
276 silly registry.get via: '1.1 varnish',
276 silly registry.get 'last-modified': 'Sun, 05 Oct 2014 05:17:53 GMT',
276 silly registry.get 'cache-control': 'max-age=60',
276 silly registry.get etag: '"60KQFX773C6KWIQVVJCU7GUD3"',
276 silly registry.get 'x-served-by': 'cache-ord1726-ORD',
276 silly registry.get 'x-cache': 'MISS',
276 silly registry.get 'x-cache-hits': '0',
276 silly registry.get 'x-timer': 'S1412486273.705325,VS0,VE134',
276 silly registry.get vary: 'Accept',
276 silly registry.get 'content-length': '0',
276 silly registry.get 'keep-alive': 'timeout=10, max=47',
276 silly registry.get connection: 'Keep-Alive' } ]
277 verbose etag rolling_timeout_exec from cache
278 silly addNameRange number 2 { name: 'rolling_timeout_exec', range: '>=0.0.1', hasData: true }
279 silly addNameRange versions [ 'rolling_timeout_exec', [ '0.0.1' ] ]
280 verbose addNamed [ 'rolling_timeout_exec', '0.0.1' ]
281 verbose addNamed [ '0.0.1', '0.0.1' ]
282 silly lockFile 82ac81f5-rolling-timeout-exec-0-0-1 [email protected]
283 verbose lock [email protected] C:\Users\Freer\AppData\Roaming\npm-cache\82ac81f5-rolling-timeout-exec-0-0-1.lock
284 silly lockFile 82ac81f5-rolling-timeout-exec-0-0-1 [email protected]
285 silly lockFile 82ac81f5-rolling-timeout-exec-0-0-1 [email protected]
286 silly lockFile dd046e26-rolling-timeout-exec-0-0-1 rolling_timeout_exec@>=0.0.1
287 silly lockFile dd046e26-rolling-timeout-exec-0-0-1 rolling_timeout_exec@>=0.0.1
288 http 304 https://registry.npmjs.org/ddp
289 silly registry.get cb [ 304,
289 silly registry.get { date: 'Sun, 05 Oct 2014 05:17:53 GMT',
289 silly registry.get server: 'Apache',
289 silly registry.get via: '1.1 varnish',
289 silly registry.get 'last-modified': 'Sun, 05 Oct 2014 05:17:53 GMT',
289 silly registry.get 'cache-control': 'max-age=60',
289 silly registry.get etag: '"E2BB0UFA4XEXVGLS94PDZHGBN"',
289 silly registry.get 'x-served-by': 'cache-ord1728-ORD',
289 silly registry.get 'x-cache': 'MISS',
289 silly registry.get 'x-cache-hits': '0',
289 silly registry.get 'x-timer': 'S1412486273.565548,VS0,VE389',
289 silly registry.get vary: 'Accept',
289 silly registry.get 'content-length': '0',
289 silly registry.get 'keep-alive': 'timeout=10, max=50',
289 silly registry.get connection: 'Keep-Alive' } ]
290 verbose etag ddp from cache
291 silly addNameRange number 2 { name: 'ddp', range: '>=0.3.1 <0.5.0-0', hasData: true }
292 silly addNameRange versions [ 'ddp',
292 silly addNameRange [ '0.1.0',
292 silly addNameRange '0.1.1',
292 silly addNameRange '0.2.0',
292 silly addNameRange '0.2.1',
292 silly addNameRange '0.2.2',
292 silly addNameRange '0.2.3',
292 silly addNameRange '0.3.0',
292 silly addNameRange '0.3.1',
292 silly addNameRange '0.3.2',
292 silly addNameRange '0.3.3',
292 silly addNameRange '0.3.4',
292 silly addNameRange '0.3.5',
292 silly addNameRange '0.3.6',
292 silly addNameRange '0.3.7',
292 silly addNameRange '0.4.0',
292 silly addNameRange '0.4.1',
292 silly addNameRange '0.4.2',
292 silly addNameRange '0.4.3',
292 silly addNameRange '0.4.4',
292 silly addNameRange '0.4.5',
292 silly addNameRange '0.4.6',
292 silly addNameRange '0.5.0',
292 silly addNameRange '0.5.1',
292 silly addNameRange '0.5.2',
292 silly addNameRange '0.6.0',
292 silly addNameRange '0.7.0',
292 silly addNameRange '0.8.0',
292 silly addNameRange '0.8.1' ] ]
293 verbose addNamed [ 'ddp', '0.4.6' ]
294 verbose addNamed [ '0.4.6', '0.4.6' ]
295 silly lockFile f6af903c-ddp-0-4-6 [email protected]
296 verbose lock [email protected] C:\Users\Freer\AppData\Roaming\npm-cache\f6af903c-ddp-0-4-6.lock
297 silly lockFile f6af903c-ddp-0-4-6 [email protected]
298 silly lockFile f6af903c-ddp-0-4-6 [email protected]
299 silly lockFile 232233a1-ddp-0-3-1-0-5-0 ddp@>=0.3.1 <0.5.0
300 silly lockFile 232233a1-ddp-0-3-1-0-5-0 ddp@>=0.3.1 <0.5.0
301 silly resolved [ { name: 'optimist',
301 silly resolved version: '0.6.1',
301 silly resolved description: 'Light-weight option parsing with an argv hash. No optstrings attached.',
301 silly resolved main: './index.js',
301 silly resolved dependencies: { wordwrap: '~0.0.2', minimist: '~0.0.1' },
301 silly resolved devDependencies: { hashish: '~0.0.4', tap: '~0.4.0' },
301 silly resolved scripts: { test: 'tap ./test/*.js' },
301 silly resolved repository:
301 silly resolved { type: 'git',
301 silly resolved url: 'http://github.com/substack/node-optimist.git' },
301 silly resolved keywords:
301 silly resolved [ 'argument',
301 silly resolved 'args',
301 silly resolved 'option',
301 silly resolved 'parser',
301 silly resolved 'parsing',
301 silly resolved 'cli',
301 silly resolved 'command' ],
301 silly resolved author:
301 silly resolved { name: 'James Halliday',
301 silly resolved email: '[email protected]',
301 silly resolved url: 'http://substack.net' },
301 silly resolved license: 'MIT/X11',
301 silly resolved engine: { node: '>=0.4' },
301 silly resolved readme: '# DEPRECATION NOTICE\n\nI don\'t want to maintain this module anymore since I just use\n[minimist](https://npmjs.org/package/minimist), the argument parsing engine,\ndirectly instead nowadays.\n\nSee [yargs](https://github.com/chevex/yargs) for the modern, pirate-themed\nsuccessor to optimist.\n\n[![yarrrrrrrgs!](http://i.imgur.com/4WFGVJ9.png)](https://github.com/chevex/yargs)\n\nYou should also consider [nomnom](https://github.com/harthur/nomnom).\n\noptimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn\'t have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log(\'Buy more riffiwobbles\');\n}\nelse {\n console.log(\'Sell the xupptumblers\');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one\'s optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There\'s more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\').argv;\nconsole.log(\'(%d,%d)\', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require(\'util\');\nvar argv = require(\'optimist\').argv;\n\nif (argv.s) {\n util.print(argv.fr ? \'Le chat dit: \' : \'The cat says: \');\n}\nconsole.log(\n (argv.fr ? \'miaou\' : \'meow\') + (argv.p ? \'.\' : \'\')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\').argv;\nconsole.log(\'(%d,%d)\', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ \'moo\' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ \'foo\', \'bar\', \'baz\' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\')\n .usage(\'Usage: $0 -x [num] -y [num]\')\n .demand([\'x\',\'y\'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\')\n .default(\'x\', 10)\n .default(\'y\', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\')\n .boolean(\'v\')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ \'bar\', \'baz\', \'foo\' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\')\n .boolean([\'x\',\'y\',\'z\'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ \'one\', \'two\', \'three\' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require(\'optimist\')\n .usage(\'Count the lines in a file.\\nUsage: $0\')\n .demand(\'f\')\n .alias(\'f\', \'file\')\n .describe(\'f\', \'Load a file\')\n .argv\n;\n\nvar fs = require(\'fs\');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on(\'data\', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on(\'end\', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire(\'optimist\').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire(\'optimist\')([ \'-x\', \'1\', \'-y\', \'2\' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire(\'optimist\').parse([ \'-x\', \'1\', \'-y\', \'2\' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn\'t\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require(\'optimist\')\n .options(\'f\', {\n alias : \'file\',\n default : \'/etc/passwd\',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require(\'optimist\')\n .alias(\'f\', \'file\')\n .default(\'f\', \'/etc/passwd\')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won\'t get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ \'-c\', \'3\', \'-d\', \'4\' ],\n \'$0\': \'node ./examples/reflect.js\',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n \'$0\': \'node ./examples/reflect.js\',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n \'$0\': \'node ./examples/reflect.js\',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n \'$0\': \'node ./examples/reflect.js\',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n $ node reflect.js -n123 -m456\n { \'3\': true,\n \'6\': true,\n _: [],\n \'$0\': \'node ./reflect.js\',\n n: 123,\n m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl\'s\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n',
301 silly resolved readmeFilename: 'readme.markdown',
301 silly resolved bugs: { url: 'https://github.com/substack/node-optimist/issues' },
301 silly resolved homepage: 'https://github.com/substack/node-optimist',
301 silly resolved _id: '[email protected]',
301 silly resolved _shasum: 'da3ea74686fa21a19a111c326e90eb15a0196686',
301 silly resolved _from: 'optimist@>=0.3.4',
301 silly resolved _resolved: 'https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz' },
301 silly resolved { author:
301 silly resolved { name: 'Isaac Z. Schlueter',
301 silly resolved email: '[email protected]',
301 silly resolved url: 'http://blog.izs.me/' },
301 silly resolved name: 'fstream',
301 silly resolved description: 'Advanced file system stream things',
301 silly resolved version: '1.0.2',
301 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/fstream.git' },
301 silly resolved main: 'fstream.js',
301 silly resolved engines: { node: '>=0.6' },
301 silly resolved dependencies:
301 silly resolved { 'graceful-fs': '3',
301 silly resolved inherits: '~2.0.0',
301 silly resolved mkdirp: '>=0.5 0',
301 silly resolved rimraf: '2' },
301 silly resolved devDependencies: { tap: '' },
301 silly resolved scripts: { test: 'tap examples/*.js' },
301 silly resolved license: 'BSD',
301 silly resolved readme: 'Like FS streams, but with stat on them, and supporting directories and\nsymbolic links, as well as normal files. Also, you can use this to set\nthe stats on a file, even if you don\'t change its contents, or to create\na symlink, etc.\n\nSo, for example, you can "write" a directory, and it\'ll call `mkdir`. You\ncan specify a uid and gid, and it\'ll call `chown`. You can specify a\n`mtime` and `atime`, and it\'ll call `utimes`. You can call it a symlink\nand provide a `linkpath` and it\'ll call `symlink`.\n\nNote that it won\'t automatically resolve symbolic links. So, if you\ncall `fstream.Reader(\'/some/symlink\')` then you\'ll get an object\nthat stats and then ends immediately (since it has no data). To follow\nsymbolic links, do this: `fstream.Reader({path:\'/some/symlink\', follow:\ntrue })`.\n\nThere are various checks to make sure that the bytes emitted are the\nsame as the intended size, if the size is set.\n\n## Examples\n\n```javascript\nfstream\n .Writer({ path: "path/to/file"\n , mode: 0755\n , size: 6\n })\n .write("hello\\n")\n .end()\n```\n\nThis will create the directories if they\'re missing, and then write\n`hello\\n` into the file, chmod it to 0755, and assert that 6 bytes have\nbeen written when it\'s done.\n\n```javascript\nfstream\n .Writer({ path: "path/to/file"\n , mode: 0755\n , size: 6\n , flags: "a"\n })\n .write("hello\\n")\n .end()\n```\n\nYou can pass flags in, if you want to append to a file.\n\n```javascript\nfstream\n .Writer({ path: "path/to/symlink"\n , linkpath: "./file"\n , SymbolicLink: true\n , mode: "0755" // octal strings supported\n })\n .end()\n```\n\nIf isSymbolicLink is a function, it\'ll be called, and if it returns\ntrue, then it\'ll treat it as a symlink. If it\'s not a function, then\nany truish value will make a symlink, or you can set `type:\n\'SymbolicLink\'`, which does the same thing.\n\nNote that the linkpath is relative to the symbolic link location, not\nthe parent dir or cwd.\n\n```javascript\nfstream\n .Reader("path/to/dir")\n .pipe(fstream.Writer("path/to/other/dir"))\n```\n\nThis will do like `cp -Rp path/to/dir path/to/other/dir`. If the other\ndir exists and isn\'t a directory, then it\'ll emit an error. It\'ll also\nset the uid, gid, mode, etc. to be identical. In this way, it\'s more\nlike `rsync -a` than simply a copy.\n',
301 silly resolved readmeFilename: 'README.md',
301 silly resolved bugs: { url: 'https://github.com/isaacs/fstream/issues' },
301 silly resolved homepage: 'https://github.com/isaacs/fstream',
301 silly resolved _id: '[email protected]',
301 silly resolved _shasum: '56930ff1b4d4d7b1a689c8656b3a11e744ab92c6',
301 silly resolved _from: 'fstream@>=0.1.18',
301 silly resolved _resolved: 'https://registry.npmjs.org/fstream/-/fstream-1.0.2.tgz' },
301 silly resolved { name: 'colors',
301 silly resolved description: 'get colors in your node.js console like what',
301 silly resolved version: '0.6.0-1',
301 silly resolved author: { name: 'Marak Squires' },
301 silly resolved repository: { type: 'git', url: 'http://github.com/Marak/colors.js.git' },
301 silly resolved engines: { node: '>=0.1.90' },
301 silly resolved main: 'colors',
301 silly resolved readme: '# colors.js - get color and style in your node.js console ( and browser ) like what\n\n<img src="http://i.imgur.com/goJdO.png" border = "0"/>\n\n\n## Installation\n\n npm install colors\n\n## colors and styles!\n\n- bold\n- italic\n- underline\n- inverse\n- yellow\n- cyan\n- white\n- magenta\n- green\n- red\n- grey\n- blue\n- rainbow\n- zebra\n- random\n\n## Usage\n\n``` js\nvar colors = require(\'./colors\');\n\nconsole.log(\'hello\'.green); // outputs green text\nconsole.log(\'i like cake and pies\'.underline.red) // outputs red underlined text\nconsole.log(\'inverse the color\'.inverse); // inverses the color\nconsole.log(\'OMG Rainbows!\'.rainbow); // rainbow (ignores spaces)\n```\n\n# Creating Custom themes\n\n```js\n\nvar require(\'colors\');\n\ncolors.setTheme({\n silly: \'rainbow\',\n input: \'grey\',\n verbose: \'cyan\',\n prompt: \'grey\',\n info: \'green\',\n data: \'grey\',\n help: \'cyan\',\n warn: \'yellow\',\n debug: \'blue\',\n error: \'red\'\n});\n\n// outputs red text\nconsole.log("this is an error".error);\n\n// outputs yellow text\nconsole.log("this is a warning".warn);\n```\n\n\n### Contributors \n\nMarak (Marak Squires)\nAlexis Sellier (cloudhead)\nmmalecki (Maciej Małecki)\nnicoreed (Nico Reed)\nmorganrallen (Morgan Allen)\nJustinCampbell (Justin Campbell)\nded (Dustin Diaz)\n\n\n#### , Marak Squires , Justin Campbell, Dustin Diaz (@ded)\n',
301 silly resolved readmeFilename: 'ReadMe.md',
301 silly resolved bugs: { url: 'https://github.com/Marak/colors.js/issues' },
301 silly resolved homepage: 'https://github.com/Marak/colors.js',
301 silly resolved _id: '[email protected]',
301 silly resolved _shasum: '6dbb68ceb8bc60f2b313dcc5ce1599f06d19e67a',
301 silly resolved _from: '[email protected]',
301 silly resolved _resolved: 'https://registry.npmjs.org/colors/-/colors-0.6.0-1.tgz' },
301 silly resolved { name: 'async',
301 silly resolved description: 'Higher-order functions and common patterns for asynchronous code',
301 silly resolved main: './lib/async',
301 silly resolved author: { name: 'Caolan McMahon' },
301 silly resolved version: '0.2.9',
301 silly resolved repository: { type: 'git', url: 'https://github.com/caolan/async.git' },
301 silly resolved bugs: { url: 'https://github.com/caolan/async/issues' },
301 silly resolved licenses: [ [Object] ],
301 silly resolved devDependencies: { nodeunit: '>0.0.0', 'uglify-js': '1.2.x', nodelint: '>0.0.0' },
301 silly resolved jam: { main: 'lib/async.js', include: [Object] },
301 silly resolved scripts: { test: 'nodeunit test/test-async.js' },
301 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',
301 silly resolved readmeFilename: 'README.md',
301 silly resolved homepage: 'https://github.com/caolan/async',
301 silly resolved _id: '[email protected]',
301 silly resolved _shasum: 'df63060fbf3d33286a76aaf6d55a2986d9ff8619',
301 silly resolved _from: '[email protected]',
301 silly resolved _resolved: 'https://registry.npmjs.org/async/-/async-0.2.9.tgz' },
301 silly resolved { name: 'prompt',
301 silly resolved description: 'A beautiful command-line prompt for node.js',
301 silly resolved version: '0.2.11',
301 silly resolved author: { name: 'Nodejitsu Inc.', email: '[email protected]' },
301 silly resolved maintainers: [ [Object], [Object] ],
301 silly resolved repository: { type: 'git', url: 'http://github.com/flatiron/prompt.git' },
301 silly resolved dependencies:
301 silly resolved { pkginfo: '0.x.x',
301 silly resolved read: '1.0.x',
301 silly resolved revalidator: '0.1.x',
301 silly resolved utile: '0.2.x',
301 silly resolved winston: '0.6.x' },
301 silly resolved devDependencies: { vows: '0.7.0' },
301 silly resolved main: './lib/prompt',
301 silly resolved scripts:
301 silly resolved { test: 'vows test/prompt-test.js --spec',
301 silly resolved 'test-all': 'vows --spec' },
301 silly resolved engines: { node: '>= 0.6.6' },
301 silly resolved readme: '# prompt [![Build Status](https://secure.travis-ci.org/flatiron/prompt.png)](http://travis-ci.org/flatiron/prompt)\n\nA beautiful command-line prompt for node.js\n\n## Features\n\n* prompts the user for input\n* supports validation and defaults\n* hides passwords\n\n## Usage\nUsing prompt is relatively straight forward. There are two core methods you should be aware of: `prompt.get()` and `prompt.addProperties()`. There methods take strings representing property names in addition to objects for complex property validation (and more). There are a number of [examples][0] that you should examine for detailed usage.\n\n### Getting Basic Prompt Information\nGetting started with `prompt` is easy. Lets take a look at `examples/simple-prompt.js`:\n\n``` js\n var prompt = require(\'prompt\');\n\n //\n // Start the prompt\n //\n prompt.start();\n\n //\n // Get two properties from the user: username and email\n //\n prompt.get([\'username\', \'email\'], function (err, result) {\n //\n // Log the results.\n //\n console.log(\'Command-line input received:\');\n console.log(\' username: \' + result.username);\n console.log(\' email: \' + result.email);\n });\n```\n\nThis will result in the following command-line output:\n\n```\n $ node examples/simple-prompt.js \n prompt: username: some-user\n prompt: email: [email protected]\n Command-line input received:\n username: some-user\n email: [email protected]\n```\n\n### Prompting with Validation, Default Values, and More (Complex Properties)\nIn addition to prompting the user with simple string prompts, there is a robust API for getting and validating complex information from a command-line prompt. Here\'s a quick sample:\n\n``` js\n var schema = {\n properties: {\n name: {\n pattern: /^[a-zA-Z\\s\\-]+$/,\n message: \'Name must be only letters, spaces, or dashes\',\n required: true\n },\n password: {\n hidden: true\n }\n }\n };\n\n //\n // Start the prompt\n //\n prompt.start();\n\n //\n // Get two properties from the user: email, password\n //\n prompt.get(schema, function (err, result) {\n //\n // Log the results.\n //\n console.log(\'Command-line input received:\');\n console.log(\' name: \' + result.name);\n console.log(\' password: \' + result.password);\n });\n```\n\nPretty easy right? The output from the above script is: \n\n```\n $ node examples/property-prompt.js\n prompt: name: nodejitsu000\n error: Invalid input for name\n error: Name must be only letters, spaces, or dashes\n prompt: name: Nodejitsu Inc\n prompt: password: \n Command-line input received:\n name: Nodejitsu Inc\n password: some-password \n```\n\n## Valid Property Settings\n`prompt` understands JSON-schema with a few extra parameters and uses [revalidator](https://github.com/flatiron/revalidator) for validation.\n\nHere\'s an overview of the properties that may be used for validation and prompting controls:\n\n``` js\n {\n description: \'Enter your password\', // Prompt displayed to the user. If not supplied name will be used.\n type: \'string\', // Specify the type of input to expect.\n pattern: /^\\w+$/, // Regular expression that input must be valid against.\n message: \'Password must be letters\', // Warning message to display if validation fails.\n hidden: true, // If true, characters entered will not be output to console.\n default: \'lamepassword\', // Default value to use if no value is entered.\n required: true // If true, value entered must be non-empty.\n before: function(value) { return \'v\' + value; } // Runs before node-prompt callbacks. It modifies user\'s input\n }\n```\n\nAlternatives to `pattern` include `format` and `conform`, as documented in [revalidator](https://github.com/flatiron/revalidator).\n\nUsing `type: \'array\'` has some special cases.\n\n- `description` will not work in the schema if `type: \'array\'` is defined.\n- `maxItems` takes precedence over `minItems`.\n- Arrays that do not have `maxItems` defined will require users to `SIGINT` (`^C`) before the array is ended.\n- If `SIGINT` (`^C`) is triggered before `minItems` is met, a validation error will appear. This will require users to `SIGEOF` (`^D`) to end the input.\n\nFor more information on things such as `maxItems` and `minItems`, refer to the [revalidator](https://github.com/flatiron/revalidator) repository.\n\n### Alternate Validation API:\n\nPrompt, in addition to iterating over JSON-Schema properties, will also happily iterate over an array of validation objects given an extra \'name\' property:\n\n```js\n var prompt = require(\'../lib/prompt\');\n\n //\n // Start the prompt\n //\n prompt.start();\n\n //\n // Get two properties from the user: username and password\n //\n prompt.get([{\n name: \'username\',\n required: true\n }, {\n name: \'password\',\n hidden: true,\n conform: function (value) {\n return true;\n }\n }], function (err, result) {\n //\n // Log the results.\n //\n console.log(\'Command-line input received:\');\n console.log(\' username: \' + result.username);\n console.log(\' password: \' + result.password);\n });\n```\n\n### Backward Compatibility\n\nNote that, while this structure is similar to that used by prompt 0.1.x, that the object properties use the same names as in JSON-Schema. prompt 0.2.x is backward compatible with prompt 0.1.x except for asynchronous validation.\n\n### Skipping Prompts\n\nSometimes power users may wish to skip promts and specify all data as command line options. \nif a value is set as a property of `prompt.override` prompt will use that instead of \nprompting the user.\n\n``` js\n //prompt-override.js\n\n var prompt = require(\'prompt\'),\n optimist = require(\'optimist\')\n\n //\n // set the overrides\n //\n prompt.override = optimist.argv\n\n //\n // Start the prompt\n //\n prompt.start();\n\n //\n // Get two properties from the user: username and email\n //\n prompt.get([\'username\', \'email\'], function (err, result) {\n //\n // Log the results.\n //\n console.log(\'Command-line input received:\');\n console.log(\' username: \' + result.username);\n console.log(\' email: \' + result.email);\n })\n\n //: node prompt-override.js --username USER --email EMAIL\n```\n\n\n### Adding Properties to an Object \nA common use-case for prompting users for data from the command-line is to extend or create a configuration object that is passed onto the entry-point method for your CLI tool. `prompt` exposes a convenience method for doing just this: \n\n``` js\n var obj = {\n password: \'lamepassword\',\n mindset: \'NY\'\n }\n\n //\n // Log the initial object.\n //\n console.log(\'Initial object to be extended:\');\n console.dir(obj);\n\n //\n // Add two properties to the empty object: username and email\n //\n prompt.addProperties(obj, [\'username\', \'email\'], function (err) {\n //\n // Log the results.\n //\n console.log(\'Updated object received:\');\n console.dir(obj);\n });\n```\n\n## Customizing your prompt\nAside from changing `property.message`, you can also change `prompt.message`\nand `prompt.delimiter` to change the appearance of your prompt.\n\nThe basic structure of a prompt is this:\n\n``` js\nprompt.message + prompt.delimiter + property.message + prompt.delimiter;\n```\n\nThe default `prompt.message` is "prompt," the default `prompt.delimiter` is\n": ", and the default `property.message` is `property.name`.\nChanging these allows you to customize the appearance of your prompts! In\naddition, prompt supports ANSI color codes via the\n[colors module](https://github.com/Marak/colors.js) for custom colors. For a\nvery colorful example:\n\n``` js\n var prompt = require("prompt");\n\n //\n // Setting these properties customizes the prompt.\n //\n prompt.message = "Question!".rainbow;\n prompt.delimiter = "><".green;\n\n prompt.start();\n\n prompt.get({\n properties: {\n name: {\n description: "What is your name?".magenta\n }\n }\n }, function (err, result) {\n console.log("You said your name is: ".cyan + result.name.cyan);\n });\n```\n\nIf you don\'t want colors, you can set\n\n```js\nvar prompt = require(\'prompt\');\n\nprompt.colors = false;\n```\n\n## Installation\n\n``` bash\n $ [sudo] npm install prompt\n```\n\n## Running tests\n\n``` bash \n $ npm test\n```\n\n#### License: MIT\n#### Author: [Charlie Robbins](http://github.com/indexzero)\n#### Contributors: [Josh Holbrook](http://github.com/jesusabdullah), [Pavan Kumar Sunkara](http://github.com/pksunkara)\n\n[0]: https://github.com/flatiron/prompt/tree/master/examples\n',
301 silly resolved readmeFilename: 'README.md',
301 silly resolved bugs: { url: 'https://github.com/flatiron/prompt/issues' },
301 silly resolved homepage: 'https://github.com/flatiron/prompt',
301 silly resolved _id: '[email protected]',
301 silly resolved _shasum: '26d455af4b7fac15291dfcdddf2400328c1fa446',
301 silly resolved _from: '[email protected]',
301 silly resolved _resolved: 'https://registry.npmjs.org/prompt/-/prompt-0.2.11.tgz' },
301 silly resolved { name: 'underscore',
301 silly resolved description: 'JavaScript\'s functional programming helper library.',
301 silly resolved homepage: 'http://documentcloud.github.com/underscore/',
301 silly resolved keywords: [ 'util', 'functional', 'server', 'client', 'browser' ],
301 silly resolved author: { name: 'Jeremy Ashkenas', email: '[email protected]' },
301 silly resolved repository:
301 silly resolved { type: 'git',
301 silly resolved url: 'git://github.com/documentcloud/underscore.git' },
301 silly resolved main: 'underscore.js',
301 silly resolved version: '1.3.3',
301 silly resolved readme: ' __ \n /\\ \\ __ \n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____ \n /\\ \\/\\ \\ /\' _ `\\ /\'_ \\ /\'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/\'__`\\ \\/\\ \\ /\',__\\ \n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/ \n \\ \\____/ \n \\/___/\n \nUnderscore.js is a utility-belt library for JavaScript that provides \nsupport for the usual functional suspects (each, map, reduce, filter...) \nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://documentcloud.github.com/underscore/\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n',
301 silly resolved readmeFilename: 'README.md',
301 silly resolved bugs: { url: 'https://github.com/documentcloud/underscore/issues' },
301 silly resolved _id: '[email protected]',
301 silly resolved _shasum: '47ac53683daf832bfa952e1774417da47817ae42',
301 silly resolved _from: '[email protected]',
301 silly resolved _resolved: 'https://registry.npmjs.org/underscore/-/underscore-1.3.3.tgz' },
301 silly resolved { name: 'wrench',
301 silly resolved description: 'Recursive filesystem (and other) operations that Node *should* have.',
301 silly resolved version: '1.3.9',
301 silly resolved author: { name: 'Ryan McGrath', email: '[email protected]' },
301 silly resolved repository: