Skip to content

Instantly share code, notes, and snippets.

@ebhoren
Created March 13, 2014 15:40
Show Gist options
  • Save ebhoren/9530819 to your computer and use it in GitHub Desktop.
Save ebhoren/9530819 to your computer and use it in GitHub Desktop.
node-spritesheet installation error
0 info it worked if it ends with ok
1 verbose cli [ 'node',
1 verbose cli '/usr/local/bin/npm',
1 verbose cli 'install',
1 verbose cli 'node-spritesheet',
1 verbose cli '--save-dev' ]
2 info using npm@1.4.3
3 info using node@v0.10.26
4 verbose readDependencies using package.json deps
5 verbose cache add [ 'node-spritesheet', null ]
6 verbose cache add name=undefined spec="node-spritesheet" args=["node-spritesheet",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: 'node-spritesheet',
7 verbose parsed url path: 'node-spritesheet',
7 verbose parsed url href: 'node-spritesheet' }
8 silly lockFile 89fa09ab-node-spritesheet node-spritesheet
9 verbose lock node-spritesheet /Users/dominicmercier/.npm/89fa09ab-node-spritesheet.lock
10 silly lockFile 89fa09ab-node-spritesheet node-spritesheet
11 silly lockFile 89fa09ab-node-spritesheet node-spritesheet
12 verbose addNamed [ 'node-spritesheet', '' ]
13 verbose addNamed [ null, '*' ]
14 silly lockFile 66007b3b-node-spritesheet node-spritesheet@
15 verbose lock node-spritesheet@ /Users/dominicmercier/.npm/66007b3b-node-spritesheet.lock
16 silly addNameRange { name: 'node-spritesheet', range: '*', hasData: false }
17 verbose url raw node-spritesheet
18 verbose url resolving [ 'https://registry.npmjs.org/', './node-spritesheet' ]
19 verbose url resolved https://registry.npmjs.org/node-spritesheet
20 info trying registry request attempt 1 at 11:35:55
21 verbose etag "AQV5XFSJ9N4Y9I4W7RO2WCTCU"
22 http GET https://registry.npmjs.org/node-spritesheet
23 http 304 https://registry.npmjs.org/node-spritesheet
24 silly registry.get cb [ 304,
24 silly registry.get { date: 'Thu, 13 Mar 2014 15:35:55 GMT',
24 silly registry.get server: 'Apache',
24 silly registry.get via: '1.1 varnish',
24 silly registry.get 'last-modified': 'Thu, 13 Mar 2014 15:35:55 GMT',
24 silly registry.get 'cache-control': 'max-age=1',
24 silly registry.get etag: '"AQV5XFSJ9N4Y9I4W7RO2WCTCU"',
24 silly registry.get 'x-served-by': 'cache-jfk1029-JFK',
24 silly registry.get 'x-cache': 'MISS',
24 silly registry.get 'x-cache-hits': '0',
24 silly registry.get 'x-timer': 'S1394724955.573742867,VS0,VE313',
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 node-spritesheet from cache
26 silly addNameRange number 2 { name: 'node-spritesheet', range: '*', hasData: true }
27 silly addNameRange versions [ 'node-spritesheet',
27 silly addNameRange [ '0.1.0',
27 silly addNameRange '0.2.0',
27 silly addNameRange '0.2.1',
27 silly addNameRange '0.2.2',
27 silly addNameRange '0.2.3',
27 silly addNameRange '0.2.4',
27 silly addNameRange '0.3.0',
27 silly addNameRange '0.4.0',
27 silly addNameRange '0.4.1',
27 silly addNameRange '0.4.2' ] ]
28 verbose addNamed [ 'node-spritesheet', '0.4.2' ]
29 verbose addNamed [ '0.4.2', '0.4.2' ]
30 silly lockFile 5f14a595-node-spritesheet-0-4-2 node-spritesheet@0.4.2
31 verbose lock node-spritesheet@0.4.2 /Users/dominicmercier/.npm/5f14a595-node-spritesheet-0-4-2.lock
32 silly lockFile 5f14a595-node-spritesheet-0-4-2 node-spritesheet@0.4.2
33 silly lockFile 5f14a595-node-spritesheet-0-4-2 node-spritesheet@0.4.2
34 silly lockFile 66007b3b-node-spritesheet node-spritesheet@
35 silly lockFile 66007b3b-node-spritesheet node-spritesheet@
36 silly resolved [ { name: 'node-spritesheet',
36 silly resolved description: 'Sprite sheet generator for node.js',
36 silly resolved version: '0.4.2',
36 silly resolved author: { name: 'Richard Butler', email: 'rich@aspectvision.com' },
36 silly resolved repository:
36 silly resolved { type: 'git',
36 silly resolved url: 'http://github.com/richardbutler/node-spritesheet.git' },
36 silly resolved main: './index',
36 silly resolved scripts: { install: 'grunt' },
36 silly resolved dependencies:
36 silly resolved { async: '~0.1.22',
36 silly resolved 'q-fs': '~0.1.32',
36 silly resolved underscore: '~1.4.2',
36 silly resolved grunt: '~0.4.1',
36 silly resolved 'grunt-contrib-coffee': '~0.7.0',
36 silly resolved 'grunt-contrib-clean': '~0.5.0' },
36 silly resolved readme: '# node-spritesheet\n\nNode-spritesheet is a utility to create sprite sheets in node.js. Its original\nintention was to be used as a [Grunt](https://github.com/cowboy/grunt) task,\nbut I decided it was worth abstracting further.\n\nIn the most part, it is an indirect port of\n[Jake Gordon](https://github.com/jakesgordon)\'s much more mature\n[Sprite Factory for Ruby](https://github.com/jakesgordon/sprite-factory).\n\n## Pixel ratios (retina displays, etc)\n\nIt will also handle auto-resizing of images for specified pixel\ndensities. No more fart-arsing about for retina displays, just supply the\nlargest (highest-density) image. By default, this uses ImageMagick\'s version of\nthe Lanczos and Mitchell algorithms, depending on the most appropriate, but you\ncan specify any of the 20-odd [available](http://www.imagemagick.org/script/command-line-options.php#filter).\n\nYou\'re not locked in to auto-resampling though, you can supply multiple density\nversions of the same image, if you prefer.\n\nAdditionally, it will add the relevant cross-browser media queries to the CSS.\n\n## Requirements\n\nRequires [ImageMagick](http://www.imagemagick.org), available via HomeBrew (`$ sudo brew install ImageMagick`) or MacPorts: (`$ sudo port install ImageMagick`).\n\n## Installation\n\n\tnpm install node-spritesheet\n\n## Usage\n\n\tvar Builder = require( \'node-spritesheet\' ).Builder;\n\tvar b = new Builder( options );\n\tb.build( callback );\n\n### Simple example\n\nTakes in a series of images a generates a spritesheet.\n\n var Builder = require( \'node-spritesheet\' ).Builder;\n \n var builder = new Builder({\n outputDirectory: \'/path/to/directory\',\n outputImage: \'sprite.png\',\n outputCss: \'sprite.css\',\n selector: \'.sprite\',\n images: [ \'image1.png\', \'image2.png\', \'image3.png\' ]\n });\n \n builder.build( function() {\n console.log( "Built from " + builder.files.length + " images" );\n });\n\n### More complex example\n\nAdd configurations to the builder to output multiple spritesheets based on\ndifferent pixel densities, using media queries.\n\n var Builder = require( \'node-spritesheet\' ).Builder;\n \n var builder = new Builder({\n outputDirectory: \'/path/to/directory\',\n outputCss: \'sprite.css\',\n selector: \'.sprite\',\n images: [ \'image1.png\', \'image2.png\', image3.png\' ]\n });\n \n builder.addConfiguration( "legacy", {\n pixelRatio: 1,\n outputImage: \'sprite.png\'\n });\n \n builder.addConfiguration( "retina", {\n pixelRatio: 2,\n outputImage: \'sprite@2x.png\'\n });\n \n builder.build( function() {\n console.log( "Built from " + builder.files.length + " images" );\n });\n\n### Another complex example\n\nEven though ImageMagick uses some pretty decent algorithms for resampling images,\nyou may not want node-spritesheet to automatically resize your retina versions\nfor you, you may want to instead keep two copies of each image.\n\n var Builder = require( \'node-spritesheet\' ).Builder;\n \n var builder = new Builder({\n outputDirectory: \'/path/to/directory\',\n outputCss: \'sprite.css\',\n selector: \'.sprite\'\n });\n \n builder.addConfiguration( "legacy", {\n pixelRatio: 1,\n outputImage: \'sprite.png\',\n images: [ \'image1.png\', \'image2.png\', image3.png\' ]\n });\n \n builder.addConfiguration( "retina", {\n pixelRatio: 2,\n outputImage: \'sprite@2x.png\',\n images: [ \'image1@2x.png\', \'image2@2x.png\', image3@2x.png\' ]\n });\n \n builder.build( function() {\n console.log( "Built from " + builder.files.length + " images" );\n });\n\n## Grunt task\n\nThis is a multi-task, supporting multiple spritesheets in one gruntfile.\n\nThe following grunt.js structure takes all images in src/icons and creates\na spritesheet at bin/assets/sprite.png, with an accompanying stylesheet at\nbin/assets/sprite.css.\n\n### Simple example\n\n // Add to your grunt config.\n\tspritesheet: {\n\t\tcompile: {\n\t\t\toptions: {\n\t\t\t\t// Compiles to bin/assets/images/spritesheets/flags.png\n\t\t\t\toutputImage: \'images/spritesheets/flags.png\',\n\t\t\t\t// Compiles to bin/assets/stylesheets/flags.css\n\t\t\t\toutputCss: \'stylesheets/flags.css\',\n\t\t\t\t// Uses this compound selector in the css, e.g. \'.flag.my-image {}\'\n\t\t\t\tselector: \'.flag\'\n\t\t\t},\n\t\t\tfiles: {\n\t\t\t\t\'bin/assets\': \'src/icons/flags/*\'\n\t\t\t}\n\t\t}\n\t}\n\t\n\t// Add to your imports.\n\tloadNpmTasks( \'node-spritesheet\' );\n\n### Complex example\n\nThis adds retina/legacy support, and resamples the images (assuming the\nhighest density has been supplied).\n\n // Add to your grunt config.\n spritesheet: {\n compile: {\n options: {\n outputCss: \'sprite.css\',\n selector: \'.sprite\',\n \n // Optional ImageMagick sampling filter.\n downsampling: "LanczosSharp",\n \n // Optional absolute path to output image.\n httpImagePath: "http://static.mysite.com/images/sprite.png",\n \n // Output configurations: in this instance to output two sprite sheets,\n // one for "legacy" (i.e. 72dpi, pixel ratio 1), and "retina" (x2).\n // These keys (legacy, retina) are completely arbitrary.\n output: {\n legacy: {\n pixelRatio: 1,\n outputImage: \'sprite.png\'\n },\n // As the retina scheme has the highest pixel ratio, it will be\n // assumed that all images passed to the builder are for \'retina\',\n // and will be downscaled for \'legacy\'.\n retina: {\n pixelRatio: 2,\n outputImage: \'sprite@2x.png\'\n }\n },\n \n // Allows you to augment your selector names for each image, based on\n // the bare image "name", or the full image path.\n resolveImageSelector: function( name, fullpath ) {\n // For example, your files may well already be named with @2x, but\n // you won\'t want that included in your CSS selectors.\n return name.split( "@2x" ).join( "" );\n }\n },\n files: {\n \'bin/assets\': \'src/icons/flags/*\'\n }\n }\n }\n \n // Add to your imports.\n loadNpmTasks( \'node-spritesheet\' );\n\n### Second complex example\n\nAgain, this adds retina/legacy support, but uses a filter function to ascertain\nwhich images are retina and which aren\'t, meaning you don\'t have to rely on the\nresampling option, if you want finer control.\n\n // Add to your grunt config.\n spritesheet: {\n compile: {\n options: {\n outputCss: \'sprite.css\',\n selector: \'.sprite\',\n output: {\n legacy: {\n pixelRatio: 1,\n outputImage: \'sprite.png\',\n // Just process the non-retina files\n filter: function( fullpath ) {\n return fullpath.indexOf( "@2x" ) === -1;\n }\n },\n retina: {\n pixelRatio: 2,\n outputImage: \'sprite@2x.png\',\n // Just process the retina files\n filter: function( fullpath ) {\n return fullpath.indexOf( "@2x" ) >= 0;\n }\n }\n }\n },\n files: {\n \'bin/assets\': \'src/icons/flags/*\'\n }\n }\n }\n \n // Add to your imports.\n loadNpmTasks( \'node-spritesheet\' );\n',
36 silly resolved readmeFilename: 'README.md',
36 silly resolved bugs: { url: 'https://github.com/richardbutler/node-spritesheet/issues' },
36 silly resolved homepage: 'https://github.com/richardbutler/node-spritesheet',
36 silly resolved _id: 'node-spritesheet@0.4.2',
36 silly resolved _from: 'node-spritesheet@' } ]
37 info install node-spritesheet@0.4.2 into /Volumes/Crosby/commedesbetes
38 info installOne node-spritesheet@0.4.2
39 info /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet unbuild
40 verbose tar unpack /Users/dominicmercier/.npm/node-spritesheet/0.4.2/package.tgz
41 silly lockFile bbae7da7-es-node-modules-node-spritesheet tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet
42 verbose lock tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet /Users/dominicmercier/.npm/bbae7da7-es-node-modules-node-spritesheet.lock
43 silly lockFile d41405e4-de-spritesheet-0-4-2-package-tgz tar:///Users/dominicmercier/.npm/node-spritesheet/0.4.2/package.tgz
44 verbose lock tar:///Users/dominicmercier/.npm/node-spritesheet/0.4.2/package.tgz /Users/dominicmercier/.npm/d41405e4-de-spritesheet-0-4-2-package-tgz.lock
45 silly gunzTarPerm modes [ '755', '644' ]
46 silly gunzTarPerm extractEntry package.json
47 silly gunzTarPerm extractEntry .npmignore
48 silly gunzTarPerm extractEntry README.md
49 silly gunzTarPerm extractEntry gruntfile.js
50 silly gunzTarPerm extractEntry index.js
51 silly gunzTarPerm extractEntry LICENSE.md
52 silly gunzTarPerm extractEntry example/gruntfile.js
53 silly gunzTarPerm extractEntry example/src/img/flags/gb.png
54 silly gunzTarPerm extractEntry example/src/img/flags/gd.png
55 silly gunzTarPerm extractEntry example/src/img/flags/ge.png
56 silly gunzTarPerm extractEntry example/src/img/flags/gg.png
57 silly gunzTarPerm extractEntry example/src/img/flags/gh.png
58 silly gunzTarPerm extractEntry example/src/img/flags/gl.png
59 silly gunzTarPerm extractEntry example/src/img/flags/gm.png
60 silly gunzTarPerm extractEntry example/src/img/flags/gn.png
61 silly gunzTarPerm extractEntry example/src/img/flags/gq.png
62 silly gunzTarPerm extractEntry example/src/img/flags/gr.png
63 silly gunzTarPerm extractEntry example/src/img/flags-2x/gb.png
64 silly gunzTarPerm extractEntry example/src/img/flags-2x/gd.png
65 silly gunzTarPerm extractEntry example/src/img/flags-2x/ge.png
66 silly gunzTarPerm extractEntry example/src/img/flags-2x/gg.png
67 silly gunzTarPerm extractEntry example/src/img/flags-2x/gh.png
68 silly gunzTarPerm extractEntry example/src/img/flags-2x/gl.png
69 silly gunzTarPerm extractEntry example/src/img/flags-2x/gm.png
70 silly gunzTarPerm extractEntry example/src/img/flags-2x/gn.png
71 silly gunzTarPerm extractEntry example/src/img/flags-2x/gq.png
72 silly gunzTarPerm extractEntry example/src/img/flags-2x/gr.png
73 silly gunzTarPerm extractEntry lib/builder.js
74 silly gunzTarPerm extractEntry lib/imagemagick.js
75 silly gunzTarPerm extractEntry lib/layout.js
76 silly gunzTarPerm extractEntry lib/style.js
77 silly gunzTarPerm extractEntry src/builder.coffee
78 silly gunzTarPerm extractEntry src/imagemagick.coffee
79 silly gunzTarPerm extractEntry src/layout.coffee
80 silly gunzTarPerm extractEntry src/style.coffee
81 silly gunzTarPerm extractEntry tasks/spritesheet.js
82 silly lockFile bbae7da7-es-node-modules-node-spritesheet tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet
83 silly lockFile bbae7da7-es-node-modules-node-spritesheet tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet
84 silly lockFile d41405e4-de-spritesheet-0-4-2-package-tgz tar:///Users/dominicmercier/.npm/node-spritesheet/0.4.2/package.tgz
85 silly lockFile d41405e4-de-spritesheet-0-4-2-package-tgz tar:///Users/dominicmercier/.npm/node-spritesheet/0.4.2/package.tgz
86 info preinstall node-spritesheet@0.4.2
87 verbose readDependencies using package.json deps
88 verbose readDependencies using package.json deps
89 verbose cache add [ 'underscore@~1.4.2', null ]
90 verbose cache add name=undefined spec="underscore@~1.4.2" args=["underscore@~1.4.2",null]
91 verbose parsed url { protocol: null,
91 verbose parsed url slashes: null,
91 verbose parsed url auth: null,
91 verbose parsed url host: null,
91 verbose parsed url port: null,
91 verbose parsed url hostname: null,
91 verbose parsed url hash: null,
91 verbose parsed url search: null,
91 verbose parsed url query: null,
91 verbose parsed url pathname: 'underscore@~1.4.2',
91 verbose parsed url path: 'underscore@~1.4.2',
91 verbose parsed url href: 'underscore@~1.4.2' }
92 verbose cache add name="underscore" spec="~1.4.2" args=["underscore","~1.4.2"]
93 verbose parsed url { protocol: null,
93 verbose parsed url slashes: null,
93 verbose parsed url auth: null,
93 verbose parsed url host: null,
93 verbose parsed url port: null,
93 verbose parsed url hostname: null,
93 verbose parsed url hash: null,
93 verbose parsed url search: null,
93 verbose parsed url query: null,
93 verbose parsed url pathname: '~1.4.2',
93 verbose parsed url path: '~1.4.2',
93 verbose parsed url href: '~1.4.2' }
94 verbose addNamed [ 'underscore', '~1.4.2' ]
95 verbose addNamed [ null, '>=1.4.2-0 <1.5.0-0' ]
96 silly lockFile 0234e20e-underscore-1-4-2 underscore@~1.4.2
97 verbose lock underscore@~1.4.2 /Users/dominicmercier/.npm/0234e20e-underscore-1-4-2.lock
98 verbose cache add [ 'grunt-contrib-coffee@~0.7.0', null ]
99 verbose cache add name=undefined spec="grunt-contrib-coffee@~0.7.0" args=["grunt-contrib-coffee@~0.7.0",null]
100 verbose parsed url { protocol: null,
100 verbose parsed url slashes: null,
100 verbose parsed url auth: null,
100 verbose parsed url host: null,
100 verbose parsed url port: null,
100 verbose parsed url hostname: null,
100 verbose parsed url hash: null,
100 verbose parsed url search: null,
100 verbose parsed url query: null,
100 verbose parsed url pathname: 'grunt-contrib-coffee@~0.7.0',
100 verbose parsed url path: 'grunt-contrib-coffee@~0.7.0',
100 verbose parsed url href: 'grunt-contrib-coffee@~0.7.0' }
101 verbose cache add name="grunt-contrib-coffee" spec="~0.7.0" args=["grunt-contrib-coffee","~0.7.0"]
102 verbose parsed url { protocol: null,
102 verbose parsed url slashes: null,
102 verbose parsed url auth: null,
102 verbose parsed url host: null,
102 verbose parsed url port: null,
102 verbose parsed url hostname: null,
102 verbose parsed url hash: null,
102 verbose parsed url search: null,
102 verbose parsed url query: null,
102 verbose parsed url pathname: '~0.7.0',
102 verbose parsed url path: '~0.7.0',
102 verbose parsed url href: '~0.7.0' }
103 verbose addNamed [ 'grunt-contrib-coffee', '~0.7.0' ]
104 verbose addNamed [ null, '>=0.7.0-0 <0.8.0-0' ]
105 silly lockFile 2d9311bb-grunt-contrib-coffee-0-7-0 grunt-contrib-coffee@~0.7.0
106 verbose lock grunt-contrib-coffee@~0.7.0 /Users/dominicmercier/.npm/2d9311bb-grunt-contrib-coffee-0-7-0.lock
107 verbose cache add [ 'grunt-contrib-clean@~0.5.0', null ]
108 verbose cache add name=undefined spec="grunt-contrib-clean@~0.5.0" args=["grunt-contrib-clean@~0.5.0",null]
109 verbose parsed url { protocol: null,
109 verbose parsed url slashes: null,
109 verbose parsed url auth: null,
109 verbose parsed url host: null,
109 verbose parsed url port: null,
109 verbose parsed url hostname: null,
109 verbose parsed url hash: null,
109 verbose parsed url search: null,
109 verbose parsed url query: null,
109 verbose parsed url pathname: 'grunt-contrib-clean@~0.5.0',
109 verbose parsed url path: 'grunt-contrib-clean@~0.5.0',
109 verbose parsed url href: 'grunt-contrib-clean@~0.5.0' }
110 verbose cache add name="grunt-contrib-clean" spec="~0.5.0" args=["grunt-contrib-clean","~0.5.0"]
111 verbose parsed url { protocol: null,
111 verbose parsed url slashes: null,
111 verbose parsed url auth: null,
111 verbose parsed url host: null,
111 verbose parsed url port: null,
111 verbose parsed url hostname: null,
111 verbose parsed url hash: null,
111 verbose parsed url search: null,
111 verbose parsed url query: null,
111 verbose parsed url pathname: '~0.5.0',
111 verbose parsed url path: '~0.5.0',
111 verbose parsed url href: '~0.5.0' }
112 verbose addNamed [ 'grunt-contrib-clean', '~0.5.0' ]
113 verbose addNamed [ null, '>=0.5.0-0 <0.6.0-0' ]
114 silly lockFile 83f743bc-grunt-contrib-clean-0-5-0 grunt-contrib-clean@~0.5.0
115 verbose lock grunt-contrib-clean@~0.5.0 /Users/dominicmercier/.npm/83f743bc-grunt-contrib-clean-0-5-0.lock
116 silly addNameRange { name: 'underscore',
116 silly addNameRange range: '>=1.4.2-0 <1.5.0-0',
116 silly addNameRange hasData: false }
117 silly addNameRange { name: 'grunt-contrib-coffee',
117 silly addNameRange range: '>=0.7.0-0 <0.8.0-0',
117 silly addNameRange hasData: false }
118 silly addNameRange { name: 'grunt-contrib-clean',
118 silly addNameRange range: '>=0.5.0-0 <0.6.0-0',
118 silly addNameRange hasData: false }
119 verbose cache add [ 'async@~0.1.22', null ]
120 verbose cache add name=undefined spec="async@~0.1.22" args=["async@~0.1.22",null]
121 verbose parsed url { protocol: null,
121 verbose parsed url slashes: null,
121 verbose parsed url auth: null,
121 verbose parsed url host: null,
121 verbose parsed url port: null,
121 verbose parsed url hostname: null,
121 verbose parsed url hash: null,
121 verbose parsed url search: null,
121 verbose parsed url query: null,
121 verbose parsed url pathname: 'async@~0.1.22',
121 verbose parsed url path: 'async@~0.1.22',
121 verbose parsed url href: 'async@~0.1.22' }
122 verbose cache add name="async" spec="~0.1.22" args=["async","~0.1.22"]
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: '~0.1.22',
123 verbose parsed url path: '~0.1.22',
123 verbose parsed url href: '~0.1.22' }
124 verbose addNamed [ 'async', '~0.1.22' ]
125 verbose addNamed [ null, '>=0.1.22-0 <0.2.0-0' ]
126 silly lockFile 3af71045-async-0-1-22 async@~0.1.22
127 verbose lock async@~0.1.22 /Users/dominicmercier/.npm/3af71045-async-0-1-22.lock
128 verbose cache add [ 'q-fs@~0.1.32', null ]
129 verbose cache add name=undefined spec="q-fs@~0.1.32" args=["q-fs@~0.1.32",null]
130 verbose parsed url { protocol: null,
130 verbose parsed url slashes: null,
130 verbose parsed url auth: null,
130 verbose parsed url host: null,
130 verbose parsed url port: null,
130 verbose parsed url hostname: null,
130 verbose parsed url hash: null,
130 verbose parsed url search: null,
130 verbose parsed url query: null,
130 verbose parsed url pathname: 'q-fs@~0.1.32',
130 verbose parsed url path: 'q-fs@~0.1.32',
130 verbose parsed url href: 'q-fs@~0.1.32' }
131 verbose cache add name="q-fs" spec="~0.1.32" args=["q-fs","~0.1.32"]
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: '~0.1.32',
132 verbose parsed url path: '~0.1.32',
132 verbose parsed url href: '~0.1.32' }
133 verbose addNamed [ 'q-fs', '~0.1.32' ]
134 verbose addNamed [ null, '>=0.1.32-0 <0.2.0-0' ]
135 silly lockFile 32175cc5-q-fs-0-1-32 q-fs@~0.1.32
136 verbose lock q-fs@~0.1.32 /Users/dominicmercier/.npm/32175cc5-q-fs-0-1-32.lock
137 silly addNameRange { name: 'async', range: '>=0.1.22-0 <0.2.0-0', hasData: false }
138 verbose url raw underscore
139 verbose url resolving [ 'https://registry.npmjs.org/', './underscore' ]
140 verbose url resolved https://registry.npmjs.org/underscore
141 info trying registry request attempt 1 at 11:35:56
142 verbose etag "4TPMEUNHOJCBPU6ABL9SRRTLA"
143 http GET https://registry.npmjs.org/underscore
144 silly addNameRange { name: 'q-fs', range: '>=0.1.32-0 <0.2.0-0', hasData: false }
145 verbose url raw grunt-contrib-coffee
146 verbose url resolving [ 'https://registry.npmjs.org/', './grunt-contrib-coffee' ]
147 verbose url resolved https://registry.npmjs.org/grunt-contrib-coffee
148 info trying registry request attempt 1 at 11:35:56
149 verbose etag "4419IHQ142TQPNXNWR7MXBL5W"
150 http GET https://registry.npmjs.org/grunt-contrib-coffee
151 verbose url raw grunt-contrib-clean
152 verbose url resolving [ 'https://registry.npmjs.org/', './grunt-contrib-clean' ]
153 verbose url resolved https://registry.npmjs.org/grunt-contrib-clean
154 info trying registry request attempt 1 at 11:35:56
155 verbose etag "B0C3CBIM3CRFDBBL84PPUKNFI"
156 http GET https://registry.npmjs.org/grunt-contrib-clean
157 verbose url raw async
158 verbose url resolving [ 'https://registry.npmjs.org/', './async' ]
159 verbose url resolved https://registry.npmjs.org/async
160 info trying registry request attempt 1 at 11:35:56
161 verbose etag "EMEUTIIMHACQUJENNNGQCRBQT"
162 http GET https://registry.npmjs.org/async
163 verbose url raw q-fs
164 verbose url resolving [ 'https://registry.npmjs.org/', './q-fs' ]
165 verbose url resolved https://registry.npmjs.org/q-fs
166 info trying registry request attempt 1 at 11:35:56
167 verbose etag "B6OIJ0Q59OQO79SAIU85OMTG5"
168 http GET https://registry.npmjs.org/q-fs
169 http 304 https://registry.npmjs.org/async
170 silly registry.get cb [ 304,
170 silly registry.get { date: 'Thu, 13 Mar 2014 15:35:57 GMT',
170 silly registry.get server: 'Apache',
170 silly registry.get via: '1.1 varnish',
170 silly registry.get 'last-modified': 'Thu, 13 Mar 2014 15:35:54 GMT',
170 silly registry.get 'cache-control': 'max-age=1',
170 silly registry.get etag: '"EMEUTIIMHACQUJENNNGQCRBQT"',
170 silly registry.get 'x-served-by': 'cache-jfk1034-JFK',
170 silly registry.get 'x-cache': 'HIT',
170 silly registry.get 'x-cache-hits': '2',
170 silly registry.get 'x-timer': 'S1394724957.404277802,VS0,VE0',
170 silly registry.get vary: 'Accept',
170 silly registry.get 'content-length': '0',
170 silly registry.get 'keep-alive': 'timeout=10, max=50',
170 silly registry.get connection: 'Keep-Alive' } ]
171 verbose etag async from cache
172 silly addNameRange number 2 { name: 'async', range: '>=0.1.22-0 <0.2.0-0', hasData: true }
173 silly addNameRange versions [ 'async',
173 silly addNameRange [ '0.1.0',
173 silly addNameRange '0.1.1',
173 silly addNameRange '0.1.2',
173 silly addNameRange '0.1.3',
173 silly addNameRange '0.1.4',
173 silly addNameRange '0.1.5',
173 silly addNameRange '0.1.6',
173 silly addNameRange '0.1.7',
173 silly addNameRange '0.1.8',
173 silly addNameRange '0.1.9',
173 silly addNameRange '0.1.10',
173 silly addNameRange '0.1.11',
173 silly addNameRange '0.1.12',
173 silly addNameRange '0.1.13',
173 silly addNameRange '0.1.14',
173 silly addNameRange '0.1.15',
173 silly addNameRange '0.1.16',
173 silly addNameRange '0.1.17',
173 silly addNameRange '0.1.18',
173 silly addNameRange '0.1.19',
173 silly addNameRange '0.1.20',
173 silly addNameRange '0.1.21',
173 silly addNameRange '0.1.22',
173 silly addNameRange '0.2.0',
173 silly addNameRange '0.2.1',
173 silly addNameRange '0.2.2',
173 silly addNameRange '0.2.3',
173 silly addNameRange '0.2.4',
173 silly addNameRange '0.2.5',
173 silly addNameRange '0.2.6',
173 silly addNameRange '0.2.7',
173 silly addNameRange '0.2.8',
173 silly addNameRange '0.2.9',
173 silly addNameRange '0.2.10' ] ]
174 verbose addNamed [ 'async', '0.1.22' ]
175 verbose addNamed [ '0.1.22', '0.1.22' ]
176 silly lockFile 09d21715-async-0-1-22 async@0.1.22
177 verbose lock async@0.1.22 /Users/dominicmercier/.npm/09d21715-async-0-1-22.lock
178 silly lockFile 09d21715-async-0-1-22 async@0.1.22
179 silly lockFile 09d21715-async-0-1-22 async@0.1.22
180 silly lockFile 3af71045-async-0-1-22 async@~0.1.22
181 silly lockFile 3af71045-async-0-1-22 async@~0.1.22
182 http 200 https://registry.npmjs.org/underscore
183 silly registry.get cb [ 200,
183 silly registry.get { date: 'Thu, 13 Mar 2014 15:35:57 GMT',
183 silly registry.get server: 'CouchDB/1.5.0 (Erlang OTP/R16B)',
183 silly registry.get etag: '"60KCLU170DOLRMXWEVTFS6EA5"',
183 silly registry.get 'content-type': 'application/json',
183 silly registry.get via: '1.1 varnish',
183 silly registry.get 'cache-control': 'max-age=1',
183 silly registry.get 'content-length': '29603',
183 silly registry.get 'accept-ranges': 'bytes',
183 silly registry.get age: '3422',
183 silly registry.get 'x-served-by': 'cache-v43-ASH, cache-jfk1029-JFK',
183 silly registry.get 'x-cache': 'MISS, HIT',
183 silly registry.get 'x-cache-hits': '0, 2',
183 silly registry.get 'x-timer': 'S1394724957.395995855,VS0,VE0',
183 silly registry.get vary: 'Accept',
183 silly registry.get 'keep-alive': 'timeout=10, max=50',
183 silly registry.get connection: 'Keep-Alive' } ]
184 silly addNameRange number 2 { name: 'underscore',
184 silly addNameRange range: '>=1.4.2-0 <1.5.0-0',
184 silly addNameRange hasData: true }
185 silly addNameRange versions [ 'underscore',
185 silly addNameRange [ '1.0.3',
185 silly addNameRange '1.0.4',
185 silly addNameRange '1.1.0',
185 silly addNameRange '1.1.1',
185 silly addNameRange '1.1.2',
185 silly addNameRange '1.1.3',
185 silly addNameRange '1.1.4',
185 silly addNameRange '1.1.5',
185 silly addNameRange '1.1.6',
185 silly addNameRange '1.1.7',
185 silly addNameRange '1.2.0',
185 silly addNameRange '1.2.1',
185 silly addNameRange '1.2.2',
185 silly addNameRange '1.2.3',
185 silly addNameRange '1.2.4',
185 silly addNameRange '1.3.0',
185 silly addNameRange '1.3.1',
185 silly addNameRange '1.3.2',
185 silly addNameRange '1.3.3',
185 silly addNameRange '1.4.0',
185 silly addNameRange '1.4.1',
185 silly addNameRange '1.4.2',
185 silly addNameRange '1.4.3',
185 silly addNameRange '1.4.4',
185 silly addNameRange '1.5.0',
185 silly addNameRange '1.5.1',
185 silly addNameRange '1.5.2',
185 silly addNameRange '1.6.0' ] ]
186 verbose addNamed [ 'underscore', '1.4.4' ]
187 verbose addNamed [ '1.4.4', '1.4.4' ]
188 silly lockFile c6b5e825-underscore-1-4-4 underscore@1.4.4
189 verbose lock underscore@1.4.4 /Users/dominicmercier/.npm/c6b5e825-underscore-1-4-4.lock
190 http 304 https://registry.npmjs.org/q-fs
191 silly registry.get cb [ 304,
191 silly registry.get { date: 'Thu, 13 Mar 2014 15:35:57 GMT',
191 silly registry.get server: 'Apache',
191 silly registry.get via: '1.1 varnish',
191 silly registry.get 'last-modified': 'Thu, 13 Mar 2014 15:35:57 GMT',
191 silly registry.get 'cache-control': 'max-age=1',
191 silly registry.get etag: '"B6OIJ0Q59OQO79SAIU85OMTG5"',
191 silly registry.get 'x-served-by': 'cache-jfk1034-JFK',
191 silly registry.get 'x-cache': 'MISS',
191 silly registry.get 'x-cache-hits': '0',
191 silly registry.get 'x-timer': 'S1394724957.413529158,VS0,VE20',
191 silly registry.get vary: 'Accept',
191 silly registry.get 'content-length': '0',
191 silly registry.get 'keep-alive': 'timeout=10, max=50',
191 silly registry.get connection: 'Keep-Alive' } ]
192 verbose etag q-fs from cache
193 http 304 https://registry.npmjs.org/grunt-contrib-coffee
194 silly registry.get cb [ 304,
194 silly registry.get { date: 'Thu, 13 Mar 2014 15:35:57 GMT',
194 silly registry.get server: 'Apache',
194 silly registry.get via: '1.1 varnish',
194 silly registry.get 'last-modified': 'Thu, 13 Mar 2014 15:35:57 GMT',
194 silly registry.get 'cache-control': 'max-age=1',
194 silly registry.get etag: '"4419IHQ142TQPNXNWR7MXBL5W"',
194 silly registry.get 'x-served-by': 'cache-jfk1022-JFK',
194 silly registry.get 'x-cache': 'HIT',
194 silly registry.get 'x-cache-hits': '1',
194 silly registry.get 'x-timer': 'S1394724957.430720329,VS0,VE7',
194 silly registry.get vary: 'Accept',
194 silly registry.get 'content-length': '0',
194 silly registry.get 'keep-alive': 'timeout=10, max=50',
194 silly registry.get connection: 'Keep-Alive' } ]
195 verbose etag grunt-contrib-coffee from cache
196 http 304 https://registry.npmjs.org/grunt-contrib-clean
197 silly registry.get cb [ 304,
197 silly registry.get { date: 'Thu, 13 Mar 2014 15:35:57 GMT',
197 silly registry.get server: 'Apache',
197 silly registry.get via: '1.1 varnish',
197 silly registry.get 'last-modified': 'Thu, 13 Mar 2014 15:35:57 GMT',
197 silly registry.get 'cache-control': 'max-age=1',
197 silly registry.get etag: '"B0C3CBIM3CRFDBBL84PPUKNFI"',
197 silly registry.get 'x-served-by': 'cache-jfk1024-JFK',
197 silly registry.get 'x-cache': 'HIT',
197 silly registry.get 'x-cache-hits': '1',
197 silly registry.get 'x-timer': 'S1394724957.431285620,VS0,VE8',
197 silly registry.get vary: 'Accept',
197 silly registry.get 'content-length': '0',
197 silly registry.get 'keep-alive': 'timeout=10, max=50',
197 silly registry.get connection: 'Keep-Alive' } ]
198 verbose etag grunt-contrib-clean from cache
199 silly addNameRange number 2 { name: 'q-fs', range: '>=0.1.32-0 <0.2.0-0', hasData: true }
200 silly addNameRange versions [ 'q-fs',
200 silly addNameRange [ '0.0.0',
200 silly addNameRange '0.0.1',
200 silly addNameRange '0.0.2',
200 silly addNameRange '0.0.3',
200 silly addNameRange '0.0.4',
200 silly addNameRange '0.0.5',
200 silly addNameRange '0.0.6',
200 silly addNameRange '0.0.7',
200 silly addNameRange '0.0.9',
200 silly addNameRange '0.0.10',
200 silly addNameRange '0.0.11',
200 silly addNameRange '0.0.12',
200 silly addNameRange '0.0.13',
200 silly addNameRange '0.0.14',
200 silly addNameRange '0.0.15',
200 silly addNameRange '0.0.16',
200 silly addNameRange '0.1.0',
200 silly addNameRange '0.1.1',
200 silly addNameRange '0.1.2',
200 silly addNameRange '0.1.3',
200 silly addNameRange '0.1.4',
200 silly addNameRange '0.1.5',
200 silly addNameRange '0.1.6',
200 silly addNameRange '0.1.7',
200 silly addNameRange '0.1.8',
200 silly addNameRange '0.1.9',
200 silly addNameRange '0.1.10',
200 silly addNameRange '0.1.11',
200 silly addNameRange '0.1.12',
200 silly addNameRange '0.1.13',
200 silly addNameRange '0.1.14',
200 silly addNameRange '0.1.15',
200 silly addNameRange '0.1.16',
200 silly addNameRange '0.1.17',
200 silly addNameRange '0.1.18',
200 silly addNameRange '0.1.19',
200 silly addNameRange '0.1.20',
200 silly addNameRange '0.1.21',
200 silly addNameRange '0.1.22',
200 silly addNameRange '0.1.23',
200 silly addNameRange '0.1.24',
200 silly addNameRange '0.1.25',
200 silly addNameRange '0.1.26',
200 silly addNameRange '0.1.27',
200 silly addNameRange '0.1.28',
200 silly addNameRange '0.1.29',
200 silly addNameRange '0.1.30',
200 silly addNameRange '0.1.31',
200 silly addNameRange '0.1.32',
200 silly addNameRange '0.1.33',
200 silly addNameRange '0.1.34',
200 silly addNameRange '0.1.35',
200 silly addNameRange '0.1.36' ] ]
201 verbose addNamed [ 'q-fs', '0.1.36' ]
202 verbose addNamed [ '0.1.36', '0.1.36' ]
203 silly lockFile ba0157c1-q-fs-0-1-36 q-fs@0.1.36
204 verbose lock q-fs@0.1.36 /Users/dominicmercier/.npm/ba0157c1-q-fs-0-1-36.lock
205 silly addNameRange number 2 { name: 'grunt-contrib-clean',
205 silly addNameRange range: '>=0.5.0-0 <0.6.0-0',
205 silly addNameRange hasData: true }
206 silly addNameRange versions [ 'grunt-contrib-clean',
206 silly addNameRange [ '0.1.0',
206 silly addNameRange '0.2.0',
206 silly addNameRange '0.3.0',
206 silly addNameRange '0.3.1',
206 silly addNameRange '0.3.2',
206 silly addNameRange '0.4.0',
206 silly addNameRange '0.4.1',
206 silly addNameRange '0.5.0',
206 silly addNameRange '0.4.0-a',
206 silly addNameRange '0.4.0-rc5',
206 silly addNameRange '0.4.0-rc6' ] ]
207 verbose addNamed [ 'grunt-contrib-clean', '0.5.0' ]
208 verbose addNamed [ '0.5.0', '0.5.0' ]
209 silly lockFile 9e0b1814-grunt-contrib-clean-0-5-0 grunt-contrib-clean@0.5.0
210 verbose lock grunt-contrib-clean@0.5.0 /Users/dominicmercier/.npm/9e0b1814-grunt-contrib-clean-0-5-0.lock
211 silly addNameRange number 2 { name: 'grunt-contrib-coffee',
211 silly addNameRange range: '>=0.7.0-0 <0.8.0-0',
211 silly addNameRange hasData: true }
212 silly addNameRange versions [ 'grunt-contrib-coffee',
212 silly addNameRange [ '0.2.0',
212 silly addNameRange '0.3.0',
212 silly addNameRange '0.3.1',
212 silly addNameRange '0.3.2',
212 silly addNameRange '0.4.0',
212 silly addNameRange '0.5.0',
212 silly addNameRange '0.6.0',
212 silly addNameRange '0.6.1',
212 silly addNameRange '0.6.2',
212 silly addNameRange '0.6.3',
212 silly addNameRange '0.6.4',
212 silly addNameRange '0.6.5',
212 silly addNameRange '0.6.6',
212 silly addNameRange '0.6.7',
212 silly addNameRange '0.7.0',
212 silly addNameRange '0.8.0',
212 silly addNameRange '0.8.2',
212 silly addNameRange '0.9.0',
212 silly addNameRange '0.10.0',
212 silly addNameRange '0.4.0-rc7',
212 silly addNameRange '0.10.1' ] ]
213 verbose addNamed [ 'grunt-contrib-coffee', '0.7.0' ]
214 verbose addNamed [ '0.7.0', '0.7.0' ]
215 silly lockFile a82ca7a6-grunt-contrib-coffee-0-7-0 grunt-contrib-coffee@0.7.0
216 verbose lock grunt-contrib-coffee@0.7.0 /Users/dominicmercier/.npm/a82ca7a6-grunt-contrib-coffee-0-7-0.lock
217 silly lockFile c6b5e825-underscore-1-4-4 underscore@1.4.4
218 silly lockFile c6b5e825-underscore-1-4-4 underscore@1.4.4
219 silly lockFile 0234e20e-underscore-1-4-2 underscore@~1.4.2
220 silly lockFile 0234e20e-underscore-1-4-2 underscore@~1.4.2
221 silly lockFile ba0157c1-q-fs-0-1-36 q-fs@0.1.36
222 silly lockFile ba0157c1-q-fs-0-1-36 q-fs@0.1.36
223 silly lockFile 9e0b1814-grunt-contrib-clean-0-5-0 grunt-contrib-clean@0.5.0
224 silly lockFile 9e0b1814-grunt-contrib-clean-0-5-0 grunt-contrib-clean@0.5.0
225 silly lockFile a82ca7a6-grunt-contrib-coffee-0-7-0 grunt-contrib-coffee@0.7.0
226 silly lockFile a82ca7a6-grunt-contrib-coffee-0-7-0 grunt-contrib-coffee@0.7.0
227 silly lockFile 32175cc5-q-fs-0-1-32 q-fs@~0.1.32
228 silly lockFile 32175cc5-q-fs-0-1-32 q-fs@~0.1.32
229 silly lockFile 83f743bc-grunt-contrib-clean-0-5-0 grunt-contrib-clean@~0.5.0
230 silly lockFile 83f743bc-grunt-contrib-clean-0-5-0 grunt-contrib-clean@~0.5.0
231 silly lockFile 2d9311bb-grunt-contrib-coffee-0-7-0 grunt-contrib-coffee@~0.7.0
232 silly lockFile 2d9311bb-grunt-contrib-coffee-0-7-0 grunt-contrib-coffee@~0.7.0
233 silly resolved [ { name: 'async',
233 silly resolved description: 'Higher-order functions and common patterns for asynchronous code',
233 silly resolved main: './index',
233 silly resolved author: { name: 'Caolan McMahon' },
233 silly resolved version: '0.1.22',
233 silly resolved repository: { type: 'git', url: 'http://github.com/caolan/async.git' },
233 silly resolved bugs: { url: 'http://github.com/caolan/async/issues' },
233 silly resolved licenses: [ [Object] ],
233 silly resolved devDependencies: { nodeunit: '>0.0.0', 'uglify-js': '1.2.x', nodelint: '>0.0.0' },
233 silly resolved readme: '# Async.js\n\nAsync is a utility module which provides straight-forward, powerful functions\nfor working with asynchronous JavaScript. Although originally designed for\nuse with [node.js](http://nodejs.org), it can also be used directly in the\nbrowser.\n\nAsync provides around 20 functions that include the usual \'functional\'\nsuspects (map, reduce, filter, forEach…) as well as some common patterns\nfor asynchronous control flow (parallel, series, waterfall…). All these\nfunctions assume you follow the node.js convention of providing a single\ncallback as the last argument of your async function.\n\n\n## Quick Examples\n\n async.map([\'file1\',\'file2\',\'file3\'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n });\n\n async.filter([\'file1\',\'file2\',\'file3\'], path.exists, function(results){\n // results now equals an array of the existing files\n });\n\n async.parallel([\n function(){ ... },\n function(){ ... }\n ], callback);\n\n async.series([\n function(){ ... },\n function(){ ... }\n ]);\n\nThere are many more functions available so take a look at the docs below for a\nfull list. This module aims to be comprehensive, so if you feel anything is\nmissing please create a GitHub issue for it.\n\n\n## Download\n\nReleases are available for download from\n[GitHub](http://github.com/caolan/async/downloads).\nAlternatively, you can install using Node Package Manager (npm):\n\n npm install async\n\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 17.5kb Uncompressed\n\n__Production:__ [async.min.js](https://github.com/caolan/async/raw/master/dist/async.min.js) - 1.7kb Packed and Gzipped\n\n\n## In the Browser\n\nSo far its been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:\n\n <script type="text/javascript" src="async.js"></script>\n <script type="text/javascript">\n\n async.map(data, asyncProcess, function(err, results){\n alert(results);\n });\n\n </script>\n\n\n## Documentation\n\n### Collections\n\n* [forEach](#forEach)\n* [map](#map)\n* [filter](#filter)\n* [reject](#reject)\n* [reduce](#reduce)\n* [detect](#detect)\n* [sortBy](#sortBy)\n* [some](#some)\n* [every](#every)\n* [concat](#concat)\n\n### Control Flow\n\n* [series](#series)\n* [parallel](#parallel)\n* [whilst](#whilst)\n* [until](#until)\n* [waterfall](#waterfall)\n* [queue](#queue)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n\n### Utils\n\n* [memoize](#memoize)\n* [unmemoize](#unmemoize)\n* [log](#log)\n* [dir](#dir)\n* [noConflict](#noConflict)\n\n\n## Collections\n\n<a name="forEach" />\n### forEach(arr, iterator, callback)\n\nApplies an iterator function to each item in an array, in parallel.\nThe iterator is called with an item from the list and a callback for when it\nhas finished. If the iterator passes an error to this callback, the main\ncallback for the forEach function is immediately called with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n // assuming openFiles is an array of file names and saveFile is a function\n // to save the modified contents of that file:\n\n async.forEach(openFiles, saveFile, function(err){\n // if any of the saves produced an error, err would equal that error\n });\n\n---------------------------------------\n\n<a name="forEachSeries" />\n### forEachSeries(arr, iterator, callback)\n\nThe same as forEach only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. This means the iterator functions will complete in order.\n\n\n---------------------------------------\n\n<a name="forEachLimit" />\n### forEachLimit(arr, limit, iterator, callback)\n\nThe same as forEach only the iterator is applied to batches of items in the\narray, in series. The next batch of iterators is only called once the current\none has completed processing.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - How many items should be in each batch.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n // Assume documents is an array of JSON objects and requestApi is a\n // function that interacts with a rate-limited REST api.\n\n async.forEachLimit(documents, 20, requestApi, function(err){\n // if any of the saves produced an error, err would equal that error\n });\n---------------------------------------\n\n<a name="map" />\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in the given array through\nthe iterator function. The iterator is called with an item from the array and a\ncallback for when it has finished processing. The callback takes 2 arguments, \nan error and the transformed item from the array. If the iterator passes an\nerror to this callback, the main callback for the map function is immediately\ncalled with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order, however\nthe results array will be in the same order as the original array.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array of the\n transformed items from the original array.\n\n__Example__\n\n async.map([\'file1\',\'file2\',\'file3\'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n });\n\n---------------------------------------\n\n<a name="mapSeries" />\n### mapSeries(arr, iterator, callback)\n\nThe same as map only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n---------------------------------------\n\n<a name="filter" />\n### filter(arr, iterator, callback)\n\n__Alias:__ select\n\nReturns a new array of all the values which pass an async truth test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.exists. This operation is\nperformed in parallel, but the results array will be in the same order as the\noriginal.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(results) - A callback which is called after all the iterator\n functions have finished.\n\n__Example__\n\n async.filter([\'file1\',\'file2\',\'file3\'], path.exists, function(results){\n // results now equals an array of the existing files\n });\n\n---------------------------------------\n\n<a name="filterSeries" />\n### filterSeries(arr, iterator, callback)\n\n__alias:__ selectSeries\n\nThe same as filter only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n---------------------------------------\n\n<a name="reject" />\n### reject(arr, iterator, callback)\n\nThe opposite of filter. Removes values that pass an async truth test.\n\n---------------------------------------\n\n<a name="rejectSeries" />\n### rejectSeries(arr, iterator, callback)\n\nThe same as filter, only the iterator is applied to each item in the array\nin series.\n\n\n---------------------------------------\n\n<a name="reduce" />\n### reduce(arr, memo, iterator, callback)\n\n__aliases:__ inject, foldl\n\nReduces a list of values into a single value using an async iterator to return\neach successive step. Memo is the initial state of the reduction. This\nfunction only operates in series. For performance reasons, it may make sense to\nsplit a call to this function into a parallel map, then use the normal\nArray.prototype.reduce on the results. This function is for situations where\neach step in the reduction needs to be async, if you can get the data before\nreducing it then its probably a good idea to do so.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* memo - The initial state of the reduction.\n* iterator(memo, item, callback) - A function applied to each item in the\n array to produce the next step in the reduction. The iterator is passed a\n callback which accepts an optional error as its first argument, and the state\n of the reduction as the second. If an error is passed to the callback, the\n reduction is stopped and the main callback is immediately called with the\n error.\n* callback(err, result) - A callback which is called after all the iterator\n functions have finished. Result is the reduced value.\n\n__Example__\n\n async.reduce([1,2,3], 0, function(memo, item, callback){\n // pointless async:\n process.nextTick(function(){\n callback(null, memo + item)\n });\n }, function(err, result){\n // result is now equal to the last value of memo, which is 6\n });\n\n---------------------------------------\n\n<a name="reduceRight" />\n### reduceRight(arr, memo, iterator, callback)\n\n__Alias:__ foldr\n\nSame as reduce, only operates on the items in the array in reverse order.\n\n\n---------------------------------------\n\n<a name="detect" />\n### detect(arr, iterator, callback)\n\nReturns the first value in a list that passes an async truth test. The\niterator is applied in parallel, meaning the first iterator to return true will\nfire the detect callback with that result. That means the result might not be\nthe first item in the original array (in terms of order) that passes the test.\n\nIf order within the original array is important then look at detectSeries.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n true, or after all the iterator functions have finished. Result will be\n the first item in the array that passes the truth test (iterator) or the\n value undefined if none passed.\n\n__Example__\n\n async.detect([\'file1\',\'file2\',\'file3\'], path.exists, function(result){\n // result now equals the first file in the list that exists\n });\n\n---------------------------------------\n\n<a name="detectSeries" />\n### detectSeries(arr, iterator, callback)\n\nThe same as detect, only the iterator is applied to each item in the array\nin series. This means the result is always the first in the original array (in\nterms of array order) that passes the truth test.\n\n\n---------------------------------------\n\n<a name="sortBy" />\n### sortBy(arr, iterator, callback)\n\nSorts a list by the results of running each value through an async iterator.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and a value to use as the sort criteria.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is the items from\n the original array sorted by the values returned by the iterator calls.\n\n__Example__\n\n async.sortBy([\'file1\',\'file2\',\'file3\'], function(file, callback){\n fs.stat(file, function(err, stats){\n callback(err, stats.mtime);\n });\n }, function(err, results){\n // results is now the original array of files sorted by\n // modified date\n });\n\n\n---------------------------------------\n\n<a name="some" />\n### some(arr, iterator, callback)\n\n__Alias:__ any\n\nReturns true if at least one element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.exists. Once any iterator\ncall returns true, the main callback is immediately called.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n true, or after all the iterator functions have finished. Result will be\n either true or false depending on the values of the async tests.\n\n__Example__\n\n async.some([\'file1\',\'file2\',\'file3\'], path.exists, function(result){\n // if result is true then at least one of the files exists\n });\n\n---------------------------------------\n\n<a name="every" />\n### every(arr, iterator, callback)\n\n__Alias:__ all\n\nReturns true if every element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.exists.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(result) - A callback which is called after all the iterator\n functions have finished. Result will be either true or false depending on\n the values of the async tests.\n\n__Example__\n\n async.every([\'file1\',\'file2\',\'file3\'], path.exists, function(result){\n // if result is true then every file exists\n });\n\n---------------------------------------\n\n<a name="concat" />\n### concat(arr, iterator, callback)\n\nApplies an iterator to each item in a list, concatenating the results. Returns the\nconcatenated list. The iterators are called in parallel, and the results are\nconcatenated as they return. There is no guarantee that the results array will\nbe returned in the original order of the arguments passed to the iterator function.\n\n__Arguments__\n\n* arr - An array to iterate over\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and an array of results.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array containing\n the concatenated results of the iterator function.\n\n__Example__\n\n async.concat([\'dir1\',\'dir2\',\'dir3\'], fs.readdir, function(err, files){\n // files is now a list of filenames that exist in the 3 directories\n });\n\n---------------------------------------\n\n<a name="concatSeries" />\n### concatSeries(arr, iterator, callback)\n\nSame as async.concat, but executes in series instead of parallel.\n\n\n## Control Flow\n\n<a name="series" />\n### series(tasks, [callback])\n\nRun an array of functions in series, each one running once the previous\nfunction has completed. If any functions in the series pass an error to its\ncallback, no more functions are run and the callback for the series is\nimmediately called with the value of the error. Once the tasks have completed,\nthe results are passed to the final callback as an array.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.series.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed\n a callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets an array of all the arguments passed to\n the callbacks used in the array.\n\n__Example__\n\n async.series([\n function(callback){\n // do some stuff ...\n callback(null, \'one\');\n },\n function(callback){\n // do some more stuff ...\n callback(null, \'two\');\n },\n ],\n // optional callback\n function(err, results){\n // results is now equal to [\'one\', \'two\']\n });\n\n\n // an example using an object instead of an array\n async.series({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n },\n },\n function(err, results) {\n // results is now equal to: {one: 1, two: 2}\n });\n\n\n---------------------------------------\n\n<a name="parallel" />\n### parallel(tasks, [callback])\n\nRun an array of functions in parallel, without waiting until the previous\nfunction has completed. If any of the functions pass an error to its\ncallback, the main callback is immediately called with the value of the error.\nOnce the tasks have completed, the results are passed to the final callback as an\narray.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.parallel.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed a\n callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets an array of all the arguments passed to\n the callbacks used in the array.\n\n__Example__\n\n async.parallel([\n function(callback){\n setTimeout(function(){\n callback(null, \'one\');\n }, 200);\n },\n function(callback){\n setTimeout(function(){\n callback(null, \'two\');\n }, 100);\n },\n ],\n // optional callback\n function(err, results){\n // the results array will equal [\'one\',\'two\'] even though\n // the second function had a shorter timeout.\n });\n\n\n // an example using an object instead of an array\n async.parallel({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n },\n },\n function(err, results) {\n // results is now equals to: {one: 1, two: 2}\n });\n\n\n---------------------------------------\n\n<a name="whilst" />\n### whilst(test, fn, callback)\n\nRepeatedly call fn, while test returns true. Calls the callback when stopped,\nor an error occurs.\n\n__Arguments__\n\n* test() - synchronous truth test to perform before each execution of fn.\n* fn(callback) - A function to call each time the test passes. The function is\n passed a callback which must be called once it has completed with an optional\n error as the first argument.\n* callback(err) - A callback which is called after the test fails and repeated\n execution of fn has stopped.\n\n__Example__\n\n var count = 0;\n\n async.whilst(\n function () { return count < 5; },\n function (callback) {\n count++;\n setTimeout(callback, 1000);\n },\n function (err) {\n // 5 seconds have passed\n }\n );\n\n\n---------------------------------------\n\n<a name="until" />\n### until(test, fn, callback)\n\nRepeatedly call fn, until test returns true. Calls the callback when stopped,\nor an error occurs.\n\nThe inverse of async.whilst.\n\n\n---------------------------------------\n\n<a name="waterfall" />\n### waterfall(tasks, [callback])\n\nRuns an array of functions in series, each passing their results to the next in\nthe array. However, if any of the functions pass an error to the callback, the\nnext function is not executed and the main callback is immediately called with\nthe error.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a callback it\n must call on completion.\n* callback(err, [results]) - An optional callback to run once all the functions\n have completed. This will be passed the results of the last task\'s callback.\n\n\n\n__Example__\n\n async.waterfall([\n function(callback){\n callback(null, \'one\', \'two\');\n },\n function(arg1, arg2, callback){\n callback(null, \'three\');\n },\n function(arg1, callback){\n // arg1 now equals \'three\'\n callback(null, \'done\');\n }\n ], function (err, result) {\n // result now equals \'done\' \n });\n\n\n---------------------------------------\n\n<a name="queue" />\n### queue(worker, concurrency)\n\nCreates a queue object with the specified concurrency. Tasks added to the\nqueue will be processed in parallel (up to the concurrency limit). If all\nworkers are in progress, the task is queued until one is available. Once\na worker has completed a task, the task\'s callback is called.\n\n__Arguments__\n\n* worker(task, callback) - An asynchronous function for processing a queued\n task.\n* concurrency - An integer for determining how many worker functions should be\n run in parallel.\n\n__Queue objects__\n\nThe queue object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* concurrency - an integer for determining how many worker functions should be\n run in parallel. This property can be changed after a queue is created to\n alter the concurrency on-the-fly.\n* push(task, [callback]) - add a new task to the queue, the callback is called\n once the worker has finished processing the task.\n instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last item from the queue has returned from the worker\n\n__Example__\n\n // create a queue object with concurrency 2\n\n var q = async.queue(function (task, callback) {\n console.log(\'hello \' + task.name);\n callback();\n }, 2);\n\n\n // assign a callback\n q.drain = function() {\n console.log(\'all items have been processed\');\n }\n\n // add some items to the queue\n\n q.push({name: \'foo\'}, function (err) {\n console.log(\'finished processing foo\');\n });\n q.push({name: \'bar\'}, function (err) {\n console.log(\'finished processing bar\');\n });\n\n // add some items to the queue (batch-wise)\n\n q.push([{name: \'baz\'},{name: \'bay\'},{name: \'bax\'}], function (err) {\n console.log(\'finished processing bar\');\n });\n\n\n---------------------------------------\n\n<a name="auto" />\n### auto(tasks, [callback])\n\nDetermines the best order for running functions based on their requirements.\nEach function can optionally depend on other functions being completed first,\nand each function is run as soon as its requirements are satisfied. If any of\nthe functions pass an error to their callback, that function will not complete\n(so any other functions depending on it will not run) and the main callback\nwill be called immediately with the error. Functions also receive an object\ncontaining the results of functions which have completed so far.\n\n__Arguments__\n\n* tasks - An object literal containing named functions or an array of\n requirements, with the function itself the last item in the array. The key\n used for each function or array is used when specifying requirements. The\n syntax is easier to understand by looking at the example.\n* callback(err, results) - An optional callback which is called when all the\n tasks have been completed. The callback will receive an error as an argument\n if any tasks pass an error to their callback. If all tasks complete\n successfully, it will receive an object containing their results.\n\n__Example__\n\n async.auto({\n get_data: function(callback){\n // async code to get some data\n },\n make_folder: function(callback){\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n },\n write_file: [\'get_data\', \'make_folder\', function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n callback(null, filename);\n }],\n email_link: [\'write_file\', function(callback, results){\n // once the file is written let\'s email a link to it...\n // results.write_file contains the filename returned by write_file.\n }]\n });\n\nThis is a fairly trivial example, but to do this using the basic parallel and\nseries functions would look like this:\n\n async.parallel([\n function(callback){\n // async code to get some data\n },\n function(callback){\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n }\n ],\n function(results){\n async.series([\n function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n },\n email_link: function(callback){\n // once the file is written let\'s email a link to it...\n }\n ]);\n });\n\nFor a complicated series of async tasks using the auto function makes adding\nnew tasks much easier and makes the code more readable.\n\n\n---------------------------------------\n\n<a name="iterator" />\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the array,\nreturning a continuation to call the next one after that. Its also possible to\n\'peek\' the next iterator by doing iterator.next().\n\nThis function is used internally by the async module but can be useful when\nyou want to manually control the flow of functions in series.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a callback it\n must call on completion.\n\n__Example__\n\n var iterator = async.iterator([\n function(){ sys.p(\'one\'); },\n function(){ sys.p(\'two\'); },\n function(){ sys.p(\'three\'); }\n ]);\n\n node> var iterator2 = iterator();\n \'one\'\n node> var iterator3 = iterator2();\n \'two\'\n node> iterator3();\n \'three\'\n node> var nextfn = iterator2.next();\n node> nextfn();\n \'three\'\n\n\n---------------------------------------\n\n<a name="apply" />\n### apply(function, arguments..)\n\nCreates a continuation function with some arguments already applied, a useful\nshorthand when combined with other control flow functions. Any arguments\npassed to the returned function are added to the arguments originally passed\nto apply.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to automatically apply when the\n continuation is called.\n\n__Example__\n\n // using apply\n\n async.parallel([\n async.apply(fs.writeFile, \'testfile1\', \'test1\'),\n async.apply(fs.writeFile, \'testfile2\', \'test2\'),\n ]);\n\n\n // the same process without using apply\n\n async.parallel([\n function(callback){\n fs.writeFile(\'testfile1\', \'test1\', callback);\n },\n function(callback){\n fs.writeFile(\'testfile2\', \'test2\', callback);\n },\n ]);\n\nIt\'s possible to pass any number of additional arguments when calling the\ncontinuation:\n\n node> var fn = async.apply(sys.puts, \'one\');\n node> fn(\'two\', \'three\');\n one\n two\n three\n\n---------------------------------------\n\n<a name="nextTick" />\n### nextTick(callback)\n\nCalls the callback on a later loop around the event loop. In node.js this just\ncalls process.nextTick, in the browser it falls back to setTimeout(callback, 0),\nwhich means other higher priority events may precede the execution of the callback.\n\nThis is used internally for browser-compatibility purposes.\n\n__Arguments__\n\n* callback - The function to call on a later loop around the event loop.\n\n__Example__\n\n var call_order = [];\n async.nextTick(function(){\n call_order.push(\'two\');\n // call_order now equals [\'one\',\'two]\n });\n call_order.push(\'one\')\n\n\n## Utils\n\n<a name="memoize" />\n### memoize(fn, [hasher])\n\nCaches the results of an async function. When creating a hash to store function\nresults against, the callback is omitted from the hash and an optional hash\nfunction can be used.\n\n__Arguments__\n\n* fn - the function you to proxy and cache results from.\n* hasher - an optional function for generating a custom hash for storing\n results, it has all the arguments applied to it apart from the callback, and\n must be synchronous.\n\n__Example__\n\n var slow_fn = function (name, callback) {\n // do something\n callback(null, result);\n };\n var fn = async.memoize(slow_fn);\n\n // fn can now be used as if it were slow_fn\n fn(\'some name\', function () {\n // callback\n });\n\n<a name="unmemoize" />\n### unmemoize(fn)\n\nUndoes a memoized function, reverting it to the original, unmemoized\nform. Comes handy in tests.\n\n__Arguments__\n\n* fn - the memoized function\n\n<a name="log" />\n### log(function, arguments)\n\nLogs the result of an async function to the console. Only works in node.js or\nin browsers that support console.log and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.log is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n var hello = function(name, callback){\n setTimeout(function(){\n callback(null, \'hello \' + name);\n }, 1000);\n };\n\n node> async.log(hello, \'world\');\n \'hello world\'\n\n\n---------------------------------------\n\n<a name="dir" />\n### dir(function, arguments)\n\nLogs the result of an async function to the console using console.dir to\ndisplay the properties of the resulting object. Only works in node.js or\nin browsers that support console.dir and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.dir is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n var hello = function(name, callback){\n setTimeout(function(){\n callback(null, {hello: name});\n }, 1000);\n };\n\n node> async.dir(hello, \'world\');\n {hello: \'world\'}\n\n\n---------------------------------------\n\n<a name="noConflict" />\n### noConflict()\n\nChanges the value of async back to its original value, returning a reference to the\nasync object.\n',
233 silly resolved readmeFilename: 'README.md',
233 silly resolved homepage: 'https://github.com/caolan/async',
233 silly resolved _id: 'async@0.1.22',
233 silly resolved _from: 'async@~0.1.22' },
233 silly resolved { name: 'underscore',
233 silly resolved description: 'JavaScript\'s functional programming helper library.',
233 silly resolved homepage: 'http://underscorejs.org',
233 silly resolved keywords: [ 'util', 'functional', 'server', 'client', 'browser' ],
233 silly resolved author: { name: 'Jeremy Ashkenas', email: 'jeremy@documentcloud.org' },
233 silly resolved repository:
233 silly resolved { type: 'git',
233 silly resolved url: 'git://github.com/documentcloud/underscore.git' },
233 silly resolved main: 'underscore.js',
233 silly resolved version: '1.4.4',
233 silly resolved devDependencies: { phantomjs: '0.2.2' },
233 silly resolved scripts: { test: 'phantomjs test/vendor/runner.js test/index.html?noglobals=true' },
233 silly resolved readme: ' __\n /\\ \\ __\n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____\n /\\ \\/\\ \\ /\' _ `\\ /\'_ \\ /\'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/\'__`\\ \\/\\ \\ /\',__\\\n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n \\ \\____/\n \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n',
233 silly resolved readmeFilename: 'README.md',
233 silly resolved bugs: { url: 'https://github.com/documentcloud/underscore/issues' },
233 silly resolved _id: 'underscore@1.4.4',
233 silly resolved _from: 'underscore@~1.4.2' },
233 silly resolved { name: 'q-fs',
233 silly resolved version: '0.1.36',
233 silly resolved description: 'Q Promise wrappers for Node\'s file system.',
233 silly resolved homepage: 'http://github.com/kriskowal/q-fs/',
233 silly resolved author:
233 silly resolved { name: 'Kris Kowal',
233 silly resolved email: 'kris@cixar.com',
233 silly resolved url: 'http://github.com/kriskowal/' },
233 silly resolved bugs: { url: 'http://github.com/kriskowal/q-fs/issues' },
233 silly resolved licenses: [ [Object] ],
233 silly resolved main: 'q-fs.js',
233 silly resolved dependencies: { q: '0.8.x', 'q-io': '0.0.x', 'fs-boot': '0.0.x' },
233 silly resolved devDependencies: { test: '0.1.1' },
233 silly resolved repository: { type: 'git', url: 'http://github.com/kriskowal/q-fs.git' },
233 silly resolved scripts: { test: 'node test/all.js' },
233 silly resolved readme: '\nOut of service. Please use [Q-IO][] instead.\n\n[Q-IO]: https://github.com/kriskowal/q-io\n\nThe `q-io/fs` module provides the interface once provided by `q-fs`.\n\n',
233 silly resolved readmeFilename: 'README.md',
233 silly resolved _id: 'q-fs@0.1.36',
233 silly resolved _from: 'q-fs@~0.1.32' },
233 silly resolved { name: 'grunt-contrib-clean',
233 silly resolved description: 'Clean files and folders.',
233 silly resolved version: '0.5.0',
233 silly resolved homepage: 'https://github.com/gruntjs/grunt-contrib-clean',
233 silly resolved author: { name: 'Grunt Team', url: 'http://gruntjs.com/' },
233 silly resolved repository:
233 silly resolved { type: 'git',
233 silly resolved url: 'git://github.com/gruntjs/grunt-contrib-clean.git' },
233 silly resolved bugs: { url: 'https://github.com/gruntjs/grunt-contrib-clean/issues' },
233 silly resolved licenses: [ [Object] ],
233 silly resolved main: 'Gruntfile.js',
233 silly resolved engines: { node: '>= 0.8.0' },
233 silly resolved scripts: { test: 'grunt test' },
233 silly resolved dependencies: { rimraf: '~2.2.1' },
233 silly resolved devDependencies:
233 silly resolved { 'grunt-contrib-jshint': '~0.2.0',
233 silly resolved 'grunt-contrib-nodeunit': '~0.1.2',
233 silly resolved 'grunt-contrib-internal': '~0.4.4',
233 silly resolved grunt: '~0.4.0' },
233 silly resolved peerDependencies: { grunt: '~0.4.0' },
233 silly resolved keywords: [ 'gruntplugin' ],
233 silly resolved contributors: [ [Object], [Object], [Object], [Object], [Object], [Object] ],
233 silly resolved readme: '# grunt-contrib-clean [![Build Status](https://travis-ci.org/gruntjs/grunt-contrib-clean.png?branch=master)](https://travis-ci.org/gruntjs/grunt-contrib-clean)\n\n> Clean files and folders.\n\n\n\n## Getting Started\nThis plugin requires Grunt `~0.4.0`\n\nIf you haven\'t used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you\'re familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-contrib-clean --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks(\'grunt-contrib-clean\');\n```\n\n*This plugin was designed to work with Grunt 0.4.x. If you\'re still using grunt v0.3.x it\'s strongly recommended that [you upgrade](http://gruntjs.com/upgrading-from-0.3-to-0.4), but in case you can\'t please use [v0.3.2](https://github.com/gruntjs/grunt-contrib-clean/tree/grunt-0.3-stable).*\n\n\n\n## Clean task\n_Run this task with the `grunt clean` command._\n\nTask targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide.\n\n*Due to the destructive nature of this task, always be cautious of the paths you clean.*\n### Options\n\n#### force\nType: `Boolean` \nDefault: false\n\nThis overrides this task from blocking deletion of folders outside current working dir (CWD). Use with caution.\n\n#### no-write\nType: `Boolean` \nDefault: false\n\nWill log messages of what would happen if the task was ran but doesn\'t actually delete the files.\n\n### Usage Examples\n\nThere are three formats you can use to run this task.\n\n#### Short\n\n```js\nclean: ["path/to/dir/one", "path/to/dir/two"]\n```\n\n#### Medium (specific targets with global options)\n\n```js\nclean: {\n build: ["path/to/dir/one", "path/to/dir/two"],\n release: ["path/to/another/dir/one", "path/to/another/dir/two"]\n},\n```\n\n#### Long (specific targets with per target options)\n\n```js\nclean: {\n build: {\n src: ["path/to/dir/one", "path/to/dir/two"]\n }\n}\n```\n\n## Release History\n\n * 2013-07-15   v0.5.0   Use rimraf directly, version 2.2.1 to fix issue on Windows. Add no-write option to mimic grunt.file.delete behavior.\n * 2013-04-16   v0.4.1   Check if file exists to avoid trying to delete a non-existent file.\n * 2013-02-15   v0.4.0   First official release for Grunt 0.4.0.\n * 2013-01-18   v0.4.0rc6   Updating grunt/gruntplugin dependencies to rc6. Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions.\n * 2013-01-09   v0.4.0rc5   Updating to work with grunt v0.4.0rc5. Switching to this.filesSrc api.\n * 2012-12-07   v0.4.0a   Conversion to grunt v0.4 conventions. Remove node v0.6 and grunt v0.3 support. Add force option to bypass CWD check.\n * 2012-09-23   v0.3.0   Options no longer accepted from global config key.\n * 2012-09-10   v0.2.0   Refactored from grunt-contrib into individual repo.\n\n---\n\nTask submitted by [Tim Branyen](http://tbranyen.com/)\n\n*This file was generated on Mon Jul 15 2013 20:45:46.*\n',
233 silly resolved readmeFilename: 'README.md',
233 silly resolved _id: 'grunt-contrib-clean@0.5.0',
233 silly resolved _from: 'grunt-contrib-clean@~0.5.0' },
233 silly resolved { name: 'grunt-contrib-coffee',
233 silly resolved description: 'Compile CoffeeScript files to JavaScript.',
233 silly resolved version: '0.7.0',
233 silly resolved homepage: 'https://github.com/gruntjs/grunt-contrib-coffee',
233 silly resolved author: { name: 'Grunt Team', url: 'http://gruntjs.com/' },
233 silly resolved repository:
233 silly resolved { type: 'git',
233 silly resolved url: 'git://github.com/gruntjs/grunt-contrib-coffee.git' },
233 silly resolved bugs: { url: 'https://github.com/gruntjs/grunt-contrib-coffee/issues' },
233 silly resolved licenses: [ [Object] ],
233 silly resolved main: 'Gruntfile.js',
233 silly resolved engines: { node: '>=0.8.0' },
233 silly resolved scripts: { test: 'grunt test' },
233 silly resolved dependencies: { 'coffee-script': '~1.6.2' },
233 silly resolved devDependencies:
233 silly resolved { 'grunt-contrib-jshint': '~0.2.0',
233 silly resolved 'grunt-contrib-nodeunit': '~0.1.2',
233 silly resolved 'grunt-contrib-clean': '~0.4.0',
233 silly resolved 'grunt-contrib-internal': '~0.4.2',
233 silly resolved grunt: '~0.4.0' },
233 silly resolved peerDependencies: { grunt: '~0.4.0' },
233 silly resolved keywords: [ 'gruntplugin' ],
233 silly resolved contributors:
233 silly resolved [ [Object],
233 silly resolved [Object],
233 silly resolved [Object],
233 silly resolved [Object],
233 silly resolved [Object],
233 silly resolved [Object],
233 silly resolved [Object],
233 silly resolved [Object],
233 silly resolved [Object] ],
233 silly resolved readme: '# grunt-contrib-coffee [![Build Status](https://secure.travis-ci.org/gruntjs/grunt-contrib-coffee.png?branch=master)](http://travis-ci.org/gruntjs/grunt-contrib-coffee)\n\n> Compile CoffeeScript files to JavaScript.\n\n\n\n## Getting Started\nThis plugin requires Grunt `~0.4.0`\n\nIf you haven\'t used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you\'re familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-contrib-coffee --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks(\'grunt-contrib-coffee\');\n```\n\n*This plugin was designed to work with Grunt 0.4.x. If you\'re still using grunt v0.3.x it\'s strongly recommended that [you upgrade](http://gruntjs.com/upgrading-from-0.3-to-0.4), but in case you can\'t please use [v0.3.2](https://github.com/gruntjs/grunt-contrib-coffee/tree/grunt-0.3-stable).*\n\n\n## Coffee task\n_Run this task with the `grunt coffee` command._\n\nTask targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide.\n### Options\n\n#### separator\nType: `String`\nDefault: linefeed\n\nConcatenated files will be joined on this string.\n\n#### bare\nType: `boolean`\n\nCompile the JavaScript without the top-level function safety wrapper.\n\n#### join\nType: `boolean`\nDefault: `false`\n\nWhen compiling multiple .coffee files into a single .js file, concatenate first.\n\n#### sourceMap\nType: `boolean`\nDefault: `false`\n\nCompile JavaScript and create a .map file linking it to the CoffeeScript source. When compiling multiple .coffee files to a single .js file, concatenation occurs as though the \'join\' option is enabled. The concatenated CoffeeScript is written into the output directory, and becomes the target for source mapping.\n### Usage Examples\n\n```js\ncoffee: {\n compile: {\n files: {\n \'path/to/result.js\': \'path/to/source.coffee\', // 1:1 compile\n \'path/to/another.js\': [\'path/to/sources/*.coffee\', \'path/to/more/*.coffee\'] // compile and concat into single file\n }\n },\n\n compileBare: {\n options: {\n bare: true\n },\n files: {\n \'path/to/result.js\': \'path/to/source.coffee\', // 1:1 compile\n \'path/to/another.js\': [\'path/to/sources/*.coffee\', \'path/to/more/*.coffee\'] // compile and concat into single file\n }\n },\n\n compileJoined: {\n options: {\n join: true\n },\n files: {\n \'path/to/result.js\': \'path/to/source.coffee\', // 1:1 compile, identical output to join = false\n \'path/to/another.js\': [\'path/to/sources/*.coffee\', \'path/to/more/*.coffee\'] // concat then compile into single file\n }\n },\n\n compileWithMaps: {\n options: {\n sourceMap: true\n },\n files: {\n \'path/to/result.js\': \'path/to/source.coffee\', // 1:1 compile\n \'path/to/another.js\': [\'path/to/sources/*.coffee\', \'path/to/more/*.coffee\'] // concat then compile into single file\n }\n },\n\n glob_to_multiple: {\n expand: true,\n flatten: true,\n cwd: \'path/to\',\n src: [\'*.coffee\'],\n dest: \'path/to/dest/\',\n ext: \'.js\'\n }\n}\n```\n\nFor more examples on how to use the `expand` API to manipulate the default dynamic path construction in the `glob_to_multiple` examples, see "Building the files object dynamically" in the grunt wiki entry [Configuring Tasks](http://gruntjs.com/configuring-tasks).\n\n## Release History\n\n * 2013-04-19   v0.7.0   Place Sourcemaps at bottom of file Change extension for Sourcemaps from .maps to .js.map\n * 2013-04-18   v0.6.7   Improved error reporting\n * 2013-04-08   v0.6.6   Fix regression with single-file compilation.\n * 2013-04-05   v0.6.5   Improved error reporting\n * 2013-03-22   v0.6.4   Sourcemap support\n * 2013-03-19   v0.6.3   Increase error logging verbosity.\n * 2013-03-18   v0.6.2   Bump to CoffeeScript 1.6.2\n * 2013-03-18   v0.6.1   Support `join` option\n * 2013-03-06   v0.6.0   Bump to CoffeeScript 1.6 Support literate CoffeeScript extension coffee.md\n * 2013-02-25   v0.5.0   Bump to CoffeeScript 1.5 Support literate CoffeeScript (.litcoffee)\n * 2013-02-15   v0.4.0   First official release for Grunt 0.4.0.\n * 2013-01-23   v0.4.0rc7   Updating grunt/gruntplugin dependencies to rc7. Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions. Bump coffeescript dependency to 1.4.\n * 2013-01-09   v0.4.0rc5   Updating to work with grunt v0.4.0rc5. Switching to this.filesSrc api.\n * 2012-12-15   v0.4.0a   Conversion to grunt v0.4 conventions. Remove experimental destination wildcards.\n * 2012-10-12   v0.3.2   Rename grunt-contrib-lib dep to grunt-lib-contrib.\n * 2012-09-25   v0.3.1   Don\'t fail when there are no files.\n * 2012-09-24   v0.3.0   Global options depreciated.\n * 2012-09-10   v0.2.0   Refactored from grunt-contrib into individual repo.\n\n---\n\nTask submitted by [Eric Woroshow](http://ericw.ca/)\n\n*This file was generated on Fri Apr 19 2013 09:49:08.*\n',
233 silly resolved readmeFilename: 'README.md',
233 silly resolved _id: 'grunt-contrib-coffee@0.7.0',
233 silly resolved _from: 'grunt-contrib-coffee@~0.7.0' } ]
234 info install async@0.1.22 into /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet
235 info install underscore@1.4.4 into /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet
236 info install q-fs@0.1.36 into /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet
237 info install grunt-contrib-clean@0.5.0 into /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet
238 info install grunt-contrib-coffee@0.7.0 into /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet
239 info installOne async@0.1.22
240 info installOne underscore@1.4.4
241 info installOne q-fs@0.1.36
242 info installOne grunt-contrib-clean@0.5.0
243 info installOne grunt-contrib-coffee@0.7.0
244 info /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/async unbuild
245 info /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/underscore unbuild
246 info /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs unbuild
247 info /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean unbuild
248 info /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee unbuild
249 verbose tar unpack /Users/dominicmercier/.npm/async/0.1.22/package.tgz
250 silly lockFile cbb0db57-e-spritesheet-node-modules-async tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/async
251 verbose lock tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/async /Users/dominicmercier/.npm/cbb0db57-e-spritesheet-node-modules-async.lock
252 silly lockFile 95f854f4-ier-npm-async-0-1-22-package-tgz tar:///Users/dominicmercier/.npm/async/0.1.22/package.tgz
253 verbose lock tar:///Users/dominicmercier/.npm/async/0.1.22/package.tgz /Users/dominicmercier/.npm/95f854f4-ier-npm-async-0-1-22-package-tgz.lock
254 verbose tar unpack /Users/dominicmercier/.npm/underscore/1.4.4/package.tgz
255 silly lockFile 0a77cc45-itesheet-node-modules-underscore tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/underscore
256 verbose lock tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/underscore /Users/dominicmercier/.npm/0a77cc45-itesheet-node-modules-underscore.lock
257 silly lockFile 4e831571-npm-underscore-1-4-4-package-tgz tar:///Users/dominicmercier/.npm/underscore/1.4.4/package.tgz
258 verbose lock tar:///Users/dominicmercier/.npm/underscore/1.4.4/package.tgz /Users/dominicmercier/.npm/4e831571-npm-underscore-1-4-4-package-tgz.lock
259 verbose tar unpack /Users/dominicmercier/.npm/q-fs/0.1.36/package.tgz
260 silly lockFile 1f326368-de-spritesheet-node-modules-q-fs tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs
261 verbose lock tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs /Users/dominicmercier/.npm/1f326368-de-spritesheet-node-modules-q-fs.lock
262 silly lockFile 869a3331-cier-npm-q-fs-0-1-36-package-tgz tar:///Users/dominicmercier/.npm/q-fs/0.1.36/package.tgz
263 verbose lock tar:///Users/dominicmercier/.npm/q-fs/0.1.36/package.tgz /Users/dominicmercier/.npm/869a3331-cier-npm-q-fs-0-1-36-package-tgz.lock
264 verbose tar unpack /Users/dominicmercier/.npm/grunt-contrib-clean/0.5.0/package.tgz
265 silly lockFile 3b8fac9f-node-modules-grunt-contrib-clean tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean
266 verbose lock tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean /Users/dominicmercier/.npm/3b8fac9f-node-modules-grunt-contrib-clean.lock
267 silly lockFile 6c247f1d--contrib-clean-0-5-0-package-tgz tar:///Users/dominicmercier/.npm/grunt-contrib-clean/0.5.0/package.tgz
268 verbose lock tar:///Users/dominicmercier/.npm/grunt-contrib-clean/0.5.0/package.tgz /Users/dominicmercier/.npm/6c247f1d--contrib-clean-0-5-0-package-tgz.lock
269 verbose tar unpack /Users/dominicmercier/.npm/grunt-contrib-coffee/0.7.0/package.tgz
270 silly lockFile 00dd6a8e-ode-modules-grunt-contrib-coffee tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee
271 verbose lock tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee /Users/dominicmercier/.npm/00dd6a8e-ode-modules-grunt-contrib-coffee.lock
272 silly lockFile b39da990-contrib-coffee-0-7-0-package-tgz tar:///Users/dominicmercier/.npm/grunt-contrib-coffee/0.7.0/package.tgz
273 verbose lock tar:///Users/dominicmercier/.npm/grunt-contrib-coffee/0.7.0/package.tgz /Users/dominicmercier/.npm/b39da990-contrib-coffee-0-7-0-package-tgz.lock
274 silly gunzTarPerm modes [ '755', '644' ]
275 silly gunzTarPerm modes [ '755', '644' ]
276 silly gunzTarPerm modes [ '755', '644' ]
277 silly gunzTarPerm modes [ '755', '644' ]
278 silly gunzTarPerm modes [ '755', '644' ]
279 silly gunzTarPerm extractEntry package.json
280 silly gunzTarPerm extractEntry package.json
281 silly gunzTarPerm extractEntry package.json
282 silly gunzTarPerm extractEntry .npmignore
283 silly gunzTarPerm extractEntry README.md
284 silly gunzTarPerm extractEntry .npmignore
285 silly gunzTarPerm extractEntry README.md
286 silly gunzTarPerm extractEntry package.json
287 silly gunzTarPerm extractEntry package.json
288 silly gunzTarPerm extractEntry .npmignore
289 silly gunzTarPerm extractEntry README.md
290 silly gunzTarPerm extractEntry .npmignore
291 silly gunzTarPerm extractEntry README.md
292 silly gunzTarPerm extractEntry .npmignore
293 silly gunzTarPerm extractEntry README.md
294 silly gunzTarPerm extractEntry LICENSE
295 silly gunzTarPerm extractEntry root.js
296 silly gunzTarPerm extractEntry LICENSE
297 silly gunzTarPerm extractEntry underscore-min.js
298 silly gunzTarPerm extractEntry Gruntfile.js
299 silly gunzTarPerm extractEntry AUTHORS
300 silly gunzTarPerm extractEntry LICENSE
301 silly gunzTarPerm extractEntry common.js
302 silly gunzTarPerm extractEntry q-fs.js
303 silly gunzTarPerm extractEntry mock.js
304 silly gunzTarPerm extractEntry .travis.yml
305 silly gunzTarPerm extractEntry examples/read.js
306 silly gunzTarPerm extractEntry CHANGES.md
307 silly gunzTarPerm extractEntry test/all.js
308 silly gunzTarPerm extractEntry test/lazy.js
309 silly gunzTarPerm extractEntry test/partial.js
310 silly gunzTarPerm extractEntry test/root.js
311 silly gunzTarPerm extractEntry test/fixtures/1234.txt
312 silly gunzTarPerm extractEntry test/issues/1.js
313 silly gunzTarPerm extractEntry test/mock/merge.js
314 silly gunzTarPerm extractEntry test/mock/object.js
315 silly gunzTarPerm extractEntry test/mock/read.js
316 silly gunzTarPerm extractEntry test/mock/subtree.js
317 silly gunzTarPerm extractEntry test/mock/dummy/hello.txt
318 silly gunzTarPerm extractEntry underscore.js
319 silly gunzTarPerm extractEntry Gruntfile.js
320 silly gunzTarPerm extractEntry CHANGELOG
321 silly gunzTarPerm extractEntry CHANGELOG
322 silly gunzTarPerm extractEntry CONTRIBUTING.md
323 silly gunzTarPerm extractEntry .jshintrc
324 silly gunzTarPerm extractEntry LICENSE-MIT
325 silly gunzTarPerm extractEntry .gitattributes
326 silly gunzTarPerm extractEntry docs/coffee-examples.md
327 silly gunzTarPerm extractEntry docs/coffee-options.md
328 silly gunzTarPerm extractEntry docs/coffee-overview.md
329 silly gunzTarPerm extractEntry docs/overview.md
330 silly gunzTarPerm extractEntry .travis.yml
331 silly gunzTarPerm extractEntry tasks/coffee.js
332 silly gunzTarPerm extractEntry test/coffee_test.js
333 silly gunzTarPerm extractEntry test/expected/bare/coffee.js
334 silly gunzTarPerm extractEntry test/expected/bare/concat.js
335 silly gunzTarPerm extractEntry test/expected/bare/litcoffee.js
336 silly gunzTarPerm extractEntry test/expected/default/coffee.js
337 silly gunzTarPerm extractEntry test/expected/default/concat.js
338 silly gunzTarPerm extractEntry test/expected/default/litcoffee.js
339 silly gunzTarPerm extractEntry test/expected/eachMap/coffee1.js
340 silly gunzTarPerm extractEntry test/expected/eachMap/litcoffee.js
341 silly gunzTarPerm extractEntry test/expected/eachMap/coffee1.js.map
342 silly gunzTarPerm extractEntry test/expected/eachMap/litcoffee.js.map
343 silly gunzTarPerm extractEntry test/expected/join/bareJoin.js
344 silly gunzTarPerm extractEntry test/expected/join/join.js
345 silly gunzTarPerm extractEntry test/expected/maps/coffee.js
346 silly gunzTarPerm extractEntry test/expected/maps/coffeeBare.js
347 silly gunzTarPerm extractEntry test/expected/maps/coffeeBareJoin.js
348 silly gunzTarPerm extractEntry test/expected/maps/coffeeJoin.js
349 silly gunzTarPerm extractEntry test/expected/maps/coffee.js.map
350 silly gunzTarPerm extractEntry test/expected/maps/coffeeBare.js.map
351 silly gunzTarPerm extractEntry test/expected/maps/coffeeBareJoin.js.map
352 silly gunzTarPerm extractEntry test/expected/maps/coffeeBareJoin.src.coffee
353 silly gunzTarPerm extractEntry test/expected/maps/coffeeJoin.js.map
354 silly gunzTarPerm extractEntry test/expected/maps/coffeeJoin.src.coffee
355 silly gunzTarPerm extractEntry test/fixtures/coffee1.coffee
356 silly gunzTarPerm extractEntry test/fixtures/coffee2.coffee
357 silly gunzTarPerm extractEntry test/fixtures/litcoffee.coffee.md
358 silly gunzTarPerm extractEntry test/fixtures/litcoffee.litcoffee
359 silly gunzTarPerm extractEntry index.js
360 silly gunzTarPerm extractEntry .gitmodules
361 silly gunzTarPerm extractEntry index.js
362 silly gunzTarPerm extractEntry .travis.yml
363 silly gunzTarPerm extractEntry CONTRIBUTING.md
364 silly gunzTarPerm extractEntry .jshintrc
365 silly gunzTarPerm extractEntry index.html
366 silly gunzTarPerm extractEntry favicon.ico
367 silly gunzTarPerm extractEntry LICENSE-MIT
368 silly gunzTarPerm extractEntry .travis.yml
369 silly gunzTarPerm extractEntry CONTRIBUTING.md
370 silly gunzTarPerm extractEntry CNAME
371 silly gunzTarPerm extractEntry lib/async.js
372 silly gunzTarPerm extractEntry Makefile
373 silly gunzTarPerm extractEntry docs/clean-examples.md
374 silly gunzTarPerm extractEntry docs/clean-options.md
375 silly gunzTarPerm extractEntry docs/clean-overview.md
376 silly gunzTarPerm extractEntry docs/overview.md
377 silly gunzTarPerm extractEntry AUTHORS
378 silly gunzTarPerm extractEntry tasks/clean.js
379 silly gunzTarPerm extractEntry test/clean_test.js
380 silly gunzTarPerm extractEntry test/fixtures/sample_long/long.txt
381 silly gunzTarPerm extractEntry test/fixtures/sample_short/short.txt
382 silly lockFile cbb0db57-e-spritesheet-node-modules-async tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/async
383 silly lockFile cbb0db57-e-spritesheet-node-modules-async tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/async
384 silly lockFile 95f854f4-ier-npm-async-0-1-22-package-tgz tar:///Users/dominicmercier/.npm/async/0.1.22/package.tgz
385 silly lockFile 95f854f4-ier-npm-async-0-1-22-package-tgz tar:///Users/dominicmercier/.npm/async/0.1.22/package.tgz
386 info preinstall async@0.1.22
387 verbose readDependencies using package.json deps
388 verbose readDependencies using package.json deps
389 silly resolved []
390 verbose about to build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/async
391 info build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/async
392 verbose linkStuff [ false,
392 verbose linkStuff false,
392 verbose linkStuff false,
392 verbose linkStuff '/Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules' ]
393 info linkStuff async@0.1.22
394 verbose linkBins async@0.1.22
395 verbose linkMans async@0.1.22
396 verbose rebuildBundles async@0.1.22
397 info install async@0.1.22
398 info postinstall async@0.1.22
399 silly lockFile 0a77cc45-itesheet-node-modules-underscore tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/underscore
400 silly lockFile 0a77cc45-itesheet-node-modules-underscore tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/underscore
401 silly lockFile 4e831571-npm-underscore-1-4-4-package-tgz tar:///Users/dominicmercier/.npm/underscore/1.4.4/package.tgz
402 silly lockFile 4e831571-npm-underscore-1-4-4-package-tgz tar:///Users/dominicmercier/.npm/underscore/1.4.4/package.tgz
403 info preinstall underscore@1.4.4
404 verbose readDependencies using package.json deps
405 verbose readDependencies using package.json deps
406 silly resolved []
407 verbose about to build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/underscore
408 info build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/underscore
409 verbose linkStuff [ false,
409 verbose linkStuff false,
409 verbose linkStuff false,
409 verbose linkStuff '/Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules' ]
410 info linkStuff underscore@1.4.4
411 verbose linkBins underscore@1.4.4
412 verbose linkMans underscore@1.4.4
413 verbose rebuildBundles underscore@1.4.4
414 info install underscore@1.4.4
415 info postinstall underscore@1.4.4
416 silly lockFile 3b8fac9f-node-modules-grunt-contrib-clean tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean
417 silly lockFile 3b8fac9f-node-modules-grunt-contrib-clean tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean
418 silly lockFile 6c247f1d--contrib-clean-0-5-0-package-tgz tar:///Users/dominicmercier/.npm/grunt-contrib-clean/0.5.0/package.tgz
419 silly lockFile 6c247f1d--contrib-clean-0-5-0-package-tgz tar:///Users/dominicmercier/.npm/grunt-contrib-clean/0.5.0/package.tgz
420 info preinstall grunt-contrib-clean@0.5.0
421 verbose readDependencies using package.json deps
422 verbose readDependencies using package.json deps
423 verbose cache add [ 'rimraf@~2.2.1', null ]
424 verbose cache add name=undefined spec="rimraf@~2.2.1" args=["rimraf@~2.2.1",null]
425 verbose parsed url { protocol: null,
425 verbose parsed url slashes: null,
425 verbose parsed url auth: null,
425 verbose parsed url host: null,
425 verbose parsed url port: null,
425 verbose parsed url hostname: null,
425 verbose parsed url hash: null,
425 verbose parsed url search: null,
425 verbose parsed url query: null,
425 verbose parsed url pathname: 'rimraf@~2.2.1',
425 verbose parsed url path: 'rimraf@~2.2.1',
425 verbose parsed url href: 'rimraf@~2.2.1' }
426 verbose cache add name="rimraf" spec="~2.2.1" args=["rimraf","~2.2.1"]
427 verbose parsed url { protocol: null,
427 verbose parsed url slashes: null,
427 verbose parsed url auth: null,
427 verbose parsed url host: null,
427 verbose parsed url port: null,
427 verbose parsed url hostname: null,
427 verbose parsed url hash: null,
427 verbose parsed url search: null,
427 verbose parsed url query: null,
427 verbose parsed url pathname: '~2.2.1',
427 verbose parsed url path: '~2.2.1',
427 verbose parsed url href: '~2.2.1' }
428 verbose addNamed [ 'rimraf', '~2.2.1' ]
429 verbose addNamed [ null, '>=2.2.1-0 <2.3.0-0' ]
430 silly lockFile 2b539b12-rimraf-2-2-1 rimraf@~2.2.1
431 verbose lock rimraf@~2.2.1 /Users/dominicmercier/.npm/2b539b12-rimraf-2-2-1.lock
432 silly addNameRange { name: 'rimraf', range: '>=2.2.1-0 <2.3.0-0', hasData: false }
433 verbose url raw rimraf
434 verbose url resolving [ 'https://registry.npmjs.org/', './rimraf' ]
435 verbose url resolved https://registry.npmjs.org/rimraf
436 info trying registry request attempt 1 at 11:35:57
437 verbose etag "5S85FC2BUF2NOB3GZHIKV3P7X"
438 http GET https://registry.npmjs.org/rimraf
439 silly lockFile 1f326368-de-spritesheet-node-modules-q-fs tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs
440 silly lockFile 1f326368-de-spritesheet-node-modules-q-fs tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs
441 silly lockFile 869a3331-cier-npm-q-fs-0-1-36-package-tgz tar:///Users/dominicmercier/.npm/q-fs/0.1.36/package.tgz
442 silly lockFile 869a3331-cier-npm-q-fs-0-1-36-package-tgz tar:///Users/dominicmercier/.npm/q-fs/0.1.36/package.tgz
443 info preinstall q-fs@0.1.36
444 verbose readDependencies using package.json deps
445 verbose readDependencies using package.json deps
446 verbose cache add [ 'q@0.8.x', null ]
447 verbose cache add name=undefined spec="q@0.8.x" args=["q@0.8.x",null]
448 verbose parsed url { protocol: null,
448 verbose parsed url slashes: null,
448 verbose parsed url auth: null,
448 verbose parsed url host: null,
448 verbose parsed url port: null,
448 verbose parsed url hostname: null,
448 verbose parsed url hash: null,
448 verbose parsed url search: null,
448 verbose parsed url query: null,
448 verbose parsed url pathname: 'q@0.8.x',
448 verbose parsed url path: 'q@0.8.x',
448 verbose parsed url href: 'q@0.8.x' }
449 verbose cache add name="q" spec="0.8.x" args=["q","0.8.x"]
450 verbose parsed url { protocol: null,
450 verbose parsed url slashes: null,
450 verbose parsed url auth: null,
450 verbose parsed url host: null,
450 verbose parsed url port: null,
450 verbose parsed url hostname: null,
450 verbose parsed url hash: null,
450 verbose parsed url search: null,
450 verbose parsed url query: null,
450 verbose parsed url pathname: '0.8.x',
450 verbose parsed url path: '0.8.x',
450 verbose parsed url href: '0.8.x' }
451 verbose addNamed [ 'q', '0.8.x' ]
452 verbose addNamed [ null, '>=0.8.0-0 <0.9.0-0' ]
453 silly lockFile 092bea3a-q-0-8-x q@0.8.x
454 verbose lock q@0.8.x /Users/dominicmercier/.npm/092bea3a-q-0-8-x.lock
455 verbose cache add [ 'q-io@0.0.x', null ]
456 verbose cache add name=undefined spec="q-io@0.0.x" args=["q-io@0.0.x",null]
457 verbose parsed url { protocol: null,
457 verbose parsed url slashes: null,
457 verbose parsed url auth: null,
457 verbose parsed url host: null,
457 verbose parsed url port: null,
457 verbose parsed url hostname: null,
457 verbose parsed url hash: null,
457 verbose parsed url search: null,
457 verbose parsed url query: null,
457 verbose parsed url pathname: 'q-io@0.0.x',
457 verbose parsed url path: 'q-io@0.0.x',
457 verbose parsed url href: 'q-io@0.0.x' }
458 verbose cache add name="q-io" spec="0.0.x" args=["q-io","0.0.x"]
459 verbose parsed url { protocol: null,
459 verbose parsed url slashes: null,
459 verbose parsed url auth: null,
459 verbose parsed url host: null,
459 verbose parsed url port: null,
459 verbose parsed url hostname: null,
459 verbose parsed url hash: null,
459 verbose parsed url search: null,
459 verbose parsed url query: null,
459 verbose parsed url pathname: '0.0.x',
459 verbose parsed url path: '0.0.x',
459 verbose parsed url href: '0.0.x' }
460 verbose addNamed [ 'q-io', '0.0.x' ]
461 verbose addNamed [ null, '>=0.0.0-0 <0.1.0-0' ]
462 silly lockFile bbea88cf-q-io-0-0-x q-io@0.0.x
463 verbose lock q-io@0.0.x /Users/dominicmercier/.npm/bbea88cf-q-io-0-0-x.lock
464 verbose cache add [ 'fs-boot@0.0.x', null ]
465 verbose cache add name=undefined spec="fs-boot@0.0.x" args=["fs-boot@0.0.x",null]
466 verbose parsed url { protocol: null,
466 verbose parsed url slashes: null,
466 verbose parsed url auth: null,
466 verbose parsed url host: null,
466 verbose parsed url port: null,
466 verbose parsed url hostname: null,
466 verbose parsed url hash: null,
466 verbose parsed url search: null,
466 verbose parsed url query: null,
466 verbose parsed url pathname: 'fs-boot@0.0.x',
466 verbose parsed url path: 'fs-boot@0.0.x',
466 verbose parsed url href: 'fs-boot@0.0.x' }
467 verbose cache add name="fs-boot" spec="0.0.x" args=["fs-boot","0.0.x"]
468 verbose parsed url { protocol: null,
468 verbose parsed url slashes: null,
468 verbose parsed url auth: null,
468 verbose parsed url host: null,
468 verbose parsed url port: null,
468 verbose parsed url hostname: null,
468 verbose parsed url hash: null,
468 verbose parsed url search: null,
468 verbose parsed url query: null,
468 verbose parsed url pathname: '0.0.x',
468 verbose parsed url path: '0.0.x',
468 verbose parsed url href: '0.0.x' }
469 verbose addNamed [ 'fs-boot', '0.0.x' ]
470 verbose addNamed [ null, '>=0.0.0-0 <0.1.0-0' ]
471 silly lockFile 80845ac1-fs-boot-0-0-x fs-boot@0.0.x
472 verbose lock fs-boot@0.0.x /Users/dominicmercier/.npm/80845ac1-fs-boot-0-0-x.lock
473 silly addNameRange { name: 'q', range: '>=0.8.0-0 <0.9.0-0', hasData: false }
474 silly addNameRange { name: 'q-io', range: '>=0.0.0-0 <0.1.0-0', hasData: false }
475 silly addNameRange { name: 'fs-boot', range: '>=0.0.0-0 <0.1.0-0', hasData: false }
476 verbose url raw q
477 verbose url resolving [ 'https://registry.npmjs.org/', './q' ]
478 verbose url resolved https://registry.npmjs.org/q
479 info trying registry request attempt 1 at 11:35:57
480 verbose etag "ARZV33A009JMKIXK72ITW32LB"
481 http GET https://registry.npmjs.org/q
482 verbose url raw fs-boot
483 verbose url resolving [ 'https://registry.npmjs.org/', './fs-boot' ]
484 verbose url resolved https://registry.npmjs.org/fs-boot
485 info trying registry request attempt 1 at 11:35:57
486 verbose etag "2UNYECOSRLVQALM7T2LFPF6RR"
487 http GET https://registry.npmjs.org/fs-boot
488 verbose url raw q-io
489 verbose url resolving [ 'https://registry.npmjs.org/', './q-io' ]
490 verbose url resolved https://registry.npmjs.org/q-io
491 info trying registry request attempt 1 at 11:35:57
492 verbose etag "4OYH5EZ0QNMT9EGML5PNFAG7X"
493 http GET https://registry.npmjs.org/q-io
494 silly lockFile 00dd6a8e-ode-modules-grunt-contrib-coffee tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee
495 silly lockFile 00dd6a8e-ode-modules-grunt-contrib-coffee tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee
496 silly lockFile b39da990-contrib-coffee-0-7-0-package-tgz tar:///Users/dominicmercier/.npm/grunt-contrib-coffee/0.7.0/package.tgz
497 silly lockFile b39da990-contrib-coffee-0-7-0-package-tgz tar:///Users/dominicmercier/.npm/grunt-contrib-coffee/0.7.0/package.tgz
498 info preinstall grunt-contrib-coffee@0.7.0
499 verbose readDependencies using package.json deps
500 verbose readDependencies using package.json deps
501 verbose cache add [ 'coffee-script@~1.6.2', null ]
502 verbose cache add name=undefined spec="coffee-script@~1.6.2" args=["coffee-script@~1.6.2",null]
503 verbose parsed url { protocol: null,
503 verbose parsed url slashes: null,
503 verbose parsed url auth: null,
503 verbose parsed url host: null,
503 verbose parsed url port: null,
503 verbose parsed url hostname: null,
503 verbose parsed url hash: null,
503 verbose parsed url search: null,
503 verbose parsed url query: null,
503 verbose parsed url pathname: 'coffee-script@~1.6.2',
503 verbose parsed url path: 'coffee-script@~1.6.2',
503 verbose parsed url href: 'coffee-script@~1.6.2' }
504 verbose cache add name="coffee-script" spec="~1.6.2" args=["coffee-script","~1.6.2"]
505 verbose parsed url { protocol: null,
505 verbose parsed url slashes: null,
505 verbose parsed url auth: null,
505 verbose parsed url host: null,
505 verbose parsed url port: null,
505 verbose parsed url hostname: null,
505 verbose parsed url hash: null,
505 verbose parsed url search: null,
505 verbose parsed url query: null,
505 verbose parsed url pathname: '~1.6.2',
505 verbose parsed url path: '~1.6.2',
505 verbose parsed url href: '~1.6.2' }
506 verbose addNamed [ 'coffee-script', '~1.6.2' ]
507 verbose addNamed [ null, '>=1.6.2-0 <1.7.0-0' ]
508 silly lockFile 93470bfc-coffee-script-1-6-2 coffee-script@~1.6.2
509 verbose lock coffee-script@~1.6.2 /Users/dominicmercier/.npm/93470bfc-coffee-script-1-6-2.lock
510 silly addNameRange { name: 'coffee-script',
510 silly addNameRange range: '>=1.6.2-0 <1.7.0-0',
510 silly addNameRange hasData: false }
511 verbose url raw coffee-script
512 verbose url resolving [ 'https://registry.npmjs.org/', './coffee-script' ]
513 verbose url resolved https://registry.npmjs.org/coffee-script
514 info trying registry request attempt 1 at 11:35:57
515 verbose etag "7SFLKJO7TDFY9TNXKV6Y9CEBO"
516 http GET https://registry.npmjs.org/coffee-script
517 http 304 https://registry.npmjs.org/q
518 silly registry.get cb [ 304,
518 silly registry.get { date: 'Thu, 13 Mar 2014 15:35:58 GMT',
518 silly registry.get server: 'Apache',
518 silly registry.get via: '1.1 varnish',
518 silly registry.get 'last-modified': 'Thu, 13 Mar 2014 15:35:58 GMT',
518 silly registry.get 'cache-control': 'max-age=1',
518 silly registry.get etag: '"ARZV33A009JMKIXK72ITW32LB"',
518 silly registry.get 'x-served-by': 'cache-jfk1033-JFK',
518 silly registry.get 'x-cache': 'HIT',
518 silly registry.get 'x-cache-hits': '1',
518 silly registry.get 'x-timer': 'S1394724958.678255320,VS0,VE1',
518 silly registry.get vary: 'Accept',
518 silly registry.get 'content-length': '0',
518 silly registry.get 'keep-alive': 'timeout=10, max=50',
518 silly registry.get connection: 'Keep-Alive' } ]
519 verbose etag q from cache
520 silly addNameRange number 2 { name: 'q', range: '>=0.8.0-0 <0.9.0-0', hasData: true }
521 silly addNameRange versions [ 'q',
521 silly addNameRange [ '0.0.0',
521 silly addNameRange '0.0.1',
521 silly addNameRange '0.0.2',
521 silly addNameRange '0.0.3',
521 silly addNameRange '0.1.0',
521 silly addNameRange '0.1.1',
521 silly addNameRange '0.1.2',
521 silly addNameRange '0.1.3',
521 silly addNameRange '0.1.4',
521 silly addNameRange '0.1.5',
521 silly addNameRange '0.1.6',
521 silly addNameRange '0.1.7',
521 silly addNameRange '0.1.8',
521 silly addNameRange '0.1.9',
521 silly addNameRange '0.2.0-rc1',
521 silly addNameRange '0.2.0',
521 silly addNameRange '0.2.1',
521 silly addNameRange '0.2.2',
521 silly addNameRange '0.2.3',
521 silly addNameRange '0.2.4',
521 silly addNameRange '0.2.5',
521 silly addNameRange '0.2.6',
521 silly addNameRange '0.2.7',
521 silly addNameRange '0.2.8',
521 silly addNameRange '0.2.9',
521 silly addNameRange '0.3.0',
521 silly addNameRange '0.2.10',
521 silly addNameRange '0.4.0',
521 silly addNameRange '0.4.1',
521 silly addNameRange '0.4.2',
521 silly addNameRange '0.4.4',
521 silly addNameRange '0.5.0',
521 silly addNameRange '0.5.1',
521 silly addNameRange '0.5.2',
521 silly addNameRange '0.5.3',
521 silly addNameRange '0.6.0',
521 silly addNameRange '0.7.0',
521 silly addNameRange '0.7.1',
521 silly addNameRange '0.7.2',
521 silly addNameRange '0.8.0',
521 silly addNameRange '0.8.1',
521 silly addNameRange '0.8.2',
521 silly addNameRange '0.8.3',
521 silly addNameRange '0.8.4',
521 silly addNameRange '0.8.5',
521 silly addNameRange '0.8.6',
521 silly addNameRange '0.8.7',
521 silly addNameRange '0.8.8',
521 silly addNameRange '0.8.9',
521 silly addNameRange '0.8.10',
521 silly addNameRange '0.8.11',
521 silly addNameRange '0.8.12',
521 silly addNameRange '0.9.0',
521 silly addNameRange '0.9.1',
521 silly addNameRange '0.9.2',
521 silly addNameRange '0.9.3',
521 silly addNameRange '0.9.4',
521 silly addNameRange '0.9.5',
521 silly addNameRange '0.9.6',
521 silly addNameRange '0.9.7',
521 silly addNameRange '1.0.0',
521 silly addNameRange '1.0.1' ] ]
522 verbose addNamed [ 'q', '0.8.12' ]
523 verbose addNamed [ '0.8.12', '0.8.12' ]
524 silly lockFile fc308994-q-0-8-12 q@0.8.12
525 verbose lock q@0.8.12 /Users/dominicmercier/.npm/fc308994-q-0-8-12.lock
526 http 304 https://registry.npmjs.org/coffee-script
527 silly registry.get cb [ 304,
527 silly registry.get { date: 'Thu, 13 Mar 2014 15:35:58 GMT',
527 silly registry.get server: 'Apache',
527 silly registry.get via: '1.1 varnish',
527 silly registry.get 'last-modified': 'Thu, 13 Mar 2014 15:35:49 GMT',
527 silly registry.get 'cache-control': 'max-age=1',
527 silly registry.get etag: '"7SFLKJO7TDFY9TNXKV6Y9CEBO"',
527 silly registry.get 'x-served-by': 'cache-jfk1026-JFK',
527 silly registry.get 'x-cache': 'HIT',
527 silly registry.get 'x-cache-hits': '2',
527 silly registry.get 'x-timer': 'S1394724958.689627409,VS0,VE0',
527 silly registry.get vary: 'Accept',
527 silly registry.get 'content-length': '0',
527 silly registry.get 'keep-alive': 'timeout=10, max=50',
527 silly registry.get connection: 'Keep-Alive' } ]
528 verbose etag coffee-script from cache
529 silly addNameRange number 2 { name: 'coffee-script',
529 silly addNameRange range: '>=1.6.2-0 <1.7.0-0',
529 silly addNameRange hasData: true }
530 silly addNameRange versions [ 'coffee-script',
530 silly addNameRange [ '0.7.0',
530 silly addNameRange '0.7.1',
530 silly addNameRange '0.7.2',
530 silly addNameRange '0.9.0',
530 silly addNameRange '0.9.1',
530 silly addNameRange '0.9.2',
530 silly addNameRange '0.9.3',
530 silly addNameRange '0.9.4',
530 silly addNameRange '0.9.5',
530 silly addNameRange '0.9.6',
530 silly addNameRange '1.0.0',
530 silly addNameRange '1.0.1',
530 silly addNameRange '1.1.0',
530 silly addNameRange '1.1.1',
530 silly addNameRange '1.1.2',
530 silly addNameRange '1.1.3',
530 silly addNameRange '1.2.0',
530 silly addNameRange '1.3.0',
530 silly addNameRange '1.3.1',
530 silly addNameRange '1.3.2',
530 silly addNameRange '1.3.3',
530 silly addNameRange '1.4.0',
530 silly addNameRange '1.5.0',
530 silly addNameRange '1.6.0',
530 silly addNameRange '1.6.1',
530 silly addNameRange '1.6.2',
530 silly addNameRange '1.6.3',
530 silly addNameRange '1.7.0',
530 silly addNameRange '1.7.1' ] ]
531 verbose addNamed [ 'coffee-script', '1.6.3' ]
532 verbose addNamed [ '1.6.3', '1.6.3' ]
533 silly lockFile 15ab88ca-coffee-script-1-6-3 coffee-script@1.6.3
534 verbose lock coffee-script@1.6.3 /Users/dominicmercier/.npm/15ab88ca-coffee-script-1-6-3.lock
535 silly lockFile fc308994-q-0-8-12 q@0.8.12
536 silly lockFile fc308994-q-0-8-12 q@0.8.12
537 silly lockFile 092bea3a-q-0-8-x q@0.8.x
538 silly lockFile 092bea3a-q-0-8-x q@0.8.x
539 silly lockFile 15ab88ca-coffee-script-1-6-3 coffee-script@1.6.3
540 silly lockFile 15ab88ca-coffee-script-1-6-3 coffee-script@1.6.3
541 silly lockFile 93470bfc-coffee-script-1-6-2 coffee-script@~1.6.2
542 silly lockFile 93470bfc-coffee-script-1-6-2 coffee-script@~1.6.2
543 silly resolved [ { name: 'coffee-script',
543 silly resolved description: 'Unfancy JavaScript',
543 silly resolved keywords: [ 'javascript', 'language', 'coffeescript', 'compiler' ],
543 silly resolved author: { name: 'Jeremy Ashkenas' },
543 silly resolved version: '1.6.3',
543 silly resolved licenses: [ [Object] ],
543 silly resolved engines: { node: '>=0.8.0' },
543 silly resolved directories: { lib: './lib/coffee-script' },
543 silly resolved main: './lib/coffee-script/coffee-script',
543 silly resolved bin: { coffee: './bin/coffee', cake: './bin/cake' },
543 silly resolved scripts: { test: 'node ./bin/cake test' },
543 silly resolved homepage: 'http://coffeescript.org',
543 silly resolved bugs: { url: 'https://github.com/jashkenas/coffee-script/issues' },
543 silly resolved repository:
543 silly resolved { type: 'git',
543 silly resolved url: 'git://github.com/jashkenas/coffee-script.git' },
543 silly resolved devDependencies: { 'uglify-js': '~2.2', jison: '>=0.2.0' },
543 silly resolved readme: '\n {\n } } {\n { { } }\n } }{ {\n { }{ } } _____ __ __\n ( }{ }{ { ) / ____| / _|/ _|\n .- { { } { }} -. | | ___ | |_| |_ ___ ___\n ( ( } { } { } } ) | | / _ \\| _| _/ _ \\/ _ \\\n |`-..________ ..-\'| | |___| (_) | | | || __/ __/\n | | \\_____\\___/|_| |_| \\___|\\___|\n | ;--.\n | (__ \\ _____ _ _\n | | ) ) / ____| (_) | |\n | |/ / | (___ ___ _ __ _ _ __ | |_\n | ( / \\___ \\ / __| \'__| | \'_ \\| __|\n | |/ ____) | (__| | | | |_) | |_\n | | |_____/ \\___|_| |_| .__/ \\__|\n `-.._________..-\' | |\n |_|\n\n\n CoffeeScript is a little language that compiles into JavaScript.\n\n Install Node.js, and then the CoffeeScript compiler:\n sudo bin/cake install\n\n Or, if you have the Node Package Manager installed:\n npm install -g coffee-script\n (Leave off the -g if you don\'t wish to install globally.)\n\n Execute a script:\n coffee /path/to/script.coffee\n\n Compile a script:\n coffee -c /path/to/script.coffee\n\n For documentation, usage, and examples, see:\n http://coffeescript.org/\n\n To suggest a feature, report a bug, or general discussion:\n http://github.com/jashkenas/coffee-script/issues/\n\n If you\'d like to chat, drop by #coffeescript on Freenode IRC,\n or on webchat.freenode.net.\n\n The source repository:\n git://github.com/jashkenas/coffee-script.git\n\n All contributors are listed here:\n http://github.com/jashkenas/coffee-script/contributors\n',
543 silly resolved readmeFilename: 'README',
543 silly resolved _id: 'coffee-script@1.6.3',
543 silly resolved _from: 'coffee-script@~1.6.2' } ]
544 info install coffee-script@1.6.3 into /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee
545 info installOne coffee-script@1.6.3
546 http 304 https://registry.npmjs.org/rimraf
547 silly registry.get cb [ 304,
547 silly registry.get { date: 'Thu, 13 Mar 2014 15:35:58 GMT',
547 silly registry.get server: 'Apache',
547 silly registry.get via: '1.1 varnish',
547 silly registry.get 'last-modified': 'Thu, 13 Mar 2014 15:35:58 GMT',
547 silly registry.get 'cache-control': 'max-age=1',
547 silly registry.get etag: '"5S85FC2BUF2NOB3GZHIKV3P7X"',
547 silly registry.get 'x-served-by': 'cache-jfk1030-JFK',
547 silly registry.get 'x-cache': 'HIT',
547 silly registry.get 'x-cache-hits': '1',
547 silly registry.get 'x-timer': 'S1394724958.689305305,VS0,VE6',
547 silly registry.get vary: 'Accept',
547 silly registry.get 'content-length': '0',
547 silly registry.get 'keep-alive': 'timeout=10, max=50',
547 silly registry.get connection: 'Keep-Alive' } ]
548 verbose etag rimraf from cache
549 http 304 https://registry.npmjs.org/fs-boot
550 silly registry.get cb [ 304,
550 silly registry.get { date: 'Thu, 13 Mar 2014 15:35:58 GMT',
550 silly registry.get server: 'Apache',
550 silly registry.get via: '1.1 varnish',
550 silly registry.get 'last-modified': 'Thu, 13 Mar 2014 15:35:58 GMT',
550 silly registry.get 'cache-control': 'max-age=1',
550 silly registry.get etag: '"2UNYECOSRLVQALM7T2LFPF6RR"',
550 silly registry.get 'x-served-by': 'cache-jfk1022-JFK',
550 silly registry.get 'x-cache': 'MISS',
550 silly registry.get 'x-cache-hits': '0',
550 silly registry.get 'x-timer': 'S1394724958.689416170,VS0,VE8',
550 silly registry.get vary: 'Accept',
550 silly registry.get 'content-length': '0',
550 silly registry.get 'keep-alive': 'timeout=10, max=50',
550 silly registry.get connection: 'Keep-Alive' } ]
551 verbose etag fs-boot from cache
552 info /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee/node_modules/coffee-script unbuild
553 verbose tar unpack /Users/dominicmercier/.npm/coffee-script/1.6.3/package.tgz
554 silly lockFile 0e16145a-offee-node-modules-coffee-script tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee/node_modules/coffee-script
555 verbose lock tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee/node_modules/coffee-script /Users/dominicmercier/.npm/0e16145a-offee-node-modules-coffee-script.lock
556 silly lockFile b06f50ba--coffee-script-1-6-3-package-tgz tar:///Users/dominicmercier/.npm/coffee-script/1.6.3/package.tgz
557 verbose lock tar:///Users/dominicmercier/.npm/coffee-script/1.6.3/package.tgz /Users/dominicmercier/.npm/b06f50ba--coffee-script-1-6-3-package-tgz.lock
558 silly addNameRange number 2 { name: 'fs-boot', range: '>=0.0.0-0 <0.1.0-0', hasData: true }
559 silly addNameRange versions [ 'fs-boot',
559 silly addNameRange [ '0.0.0',
559 silly addNameRange '0.0.1',
559 silly addNameRange '0.0.2',
559 silly addNameRange '0.0.3',
559 silly addNameRange '0.0.4',
559 silly addNameRange '0.0.5',
559 silly addNameRange '0.0.6',
559 silly addNameRange '0.0.7',
559 silly addNameRange '0.0.8',
559 silly addNameRange '0.0.9' ] ]
560 verbose addNamed [ 'fs-boot', '0.0.9' ]
561 verbose addNamed [ '0.0.9', '0.0.9' ]
562 silly lockFile ff5e28f3-fs-boot-0-0-9 fs-boot@0.0.9
563 verbose lock fs-boot@0.0.9 /Users/dominicmercier/.npm/ff5e28f3-fs-boot-0-0-9.lock
564 silly addNameRange number 2 { name: 'rimraf', range: '>=2.2.1-0 <2.3.0-0', hasData: true }
565 silly addNameRange versions [ 'rimraf',
565 silly addNameRange [ '1.0.0',
565 silly addNameRange '1.0.1',
565 silly addNameRange '1.0.2',
565 silly addNameRange '1.0.4',
565 silly addNameRange '1.0.5',
565 silly addNameRange '1.0.6',
565 silly addNameRange '1.0.7',
565 silly addNameRange '1.0.8',
565 silly addNameRange '1.0.9',
565 silly addNameRange '2.0.0',
565 silly addNameRange '2.0.1',
565 silly addNameRange '2.0.2',
565 silly addNameRange '2.0.3',
565 silly addNameRange '2.1.0',
565 silly addNameRange '2.1.1',
565 silly addNameRange '2.1.2',
565 silly addNameRange '2.1.3',
565 silly addNameRange '2.1.4',
565 silly addNameRange '2.2.0',
565 silly addNameRange '2.2.1',
565 silly addNameRange '2.2.2',
565 silly addNameRange '2.2.3',
565 silly addNameRange '2.2.4',
565 silly addNameRange '2.2.5',
565 silly addNameRange '2.2.6' ] ]
566 verbose addNamed [ 'rimraf', '2.2.6' ]
567 verbose addNamed [ '2.2.6', '2.2.6' ]
568 silly lockFile b59ed777-rimraf-2-2-6 rimraf@2.2.6
569 verbose lock rimraf@2.2.6 /Users/dominicmercier/.npm/b59ed777-rimraf-2-2-6.lock
570 silly gunzTarPerm modes [ '755', '644' ]
571 silly lockFile ff5e28f3-fs-boot-0-0-9 fs-boot@0.0.9
572 silly lockFile ff5e28f3-fs-boot-0-0-9 fs-boot@0.0.9
573 silly lockFile b59ed777-rimraf-2-2-6 rimraf@2.2.6
574 silly lockFile b59ed777-rimraf-2-2-6 rimraf@2.2.6
575 silly lockFile 80845ac1-fs-boot-0-0-x fs-boot@0.0.x
576 silly lockFile 80845ac1-fs-boot-0-0-x fs-boot@0.0.x
577 silly gunzTarPerm extractEntry package.json
578 silly lockFile 2b539b12-rimraf-2-2-1 rimraf@~2.2.1
579 silly lockFile 2b539b12-rimraf-2-2-1 rimraf@~2.2.1
580 silly resolved [ { name: 'rimraf',
580 silly resolved version: '2.2.6',
580 silly resolved main: 'rimraf.js',
580 silly resolved description: 'A deep deletion module for node (like `rm -rf`)',
580 silly resolved author:
580 silly resolved { name: 'Isaac Z. Schlueter',
580 silly resolved email: 'i@izs.me',
580 silly resolved url: 'http://blog.izs.me/' },
580 silly resolved license:
580 silly resolved { type: 'MIT',
580 silly resolved url: 'https://github.com/isaacs/rimraf/raw/master/LICENSE' },
580 silly resolved repository: { type: 'git', url: 'git://github.com/isaacs/rimraf.git' },
580 silly resolved scripts: { test: 'cd test && bash run.sh' },
580 silly resolved bin: { rimraf: './bin.js' },
580 silly resolved contributors: [ [Object], [Object], [Object], [Object], [Object] ],
580 silly resolved readme: '`rm -rf` for node.\n\nInstall with `npm install rimraf`, or just drop rimraf.js somewhere.\n\n## API\n\n`rimraf(f, callback)`\n\nThe callback will be called with an error if there is one. Certain\nerrors are handled for you:\n\n* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of\n `opts.maxBusyTries` times before giving up.\n* `ENOENT` - If the file doesn\'t exist, rimraf will return\n successfully, since your desired outcome is already the case.\n\n## rimraf.sync\n\nIt can remove stuff synchronously, too. But that\'s not so good. Use\nthe async API. It\'s better.\n\n## CLI\n\nIf installed with `npm install rimraf -g` it can be used as a global\ncommand `rimraf <path>` which is useful for cross platform support.\n\n## mkdirp\n\nIf you need to create a directory recursively, check out\n[mkdirp](https://github.com/substack/node-mkdirp).\n',
580 silly resolved readmeFilename: 'README.md',
580 silly resolved bugs: { url: 'https://github.com/isaacs/rimraf/issues' },
580 silly resolved homepage: 'https://github.com/isaacs/rimraf',
580 silly resolved _id: 'rimraf@2.2.6',
580 silly resolved _from: 'rimraf@~2.2.1' } ]
581 info install rimraf@2.2.6 into /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean
582 info installOne rimraf@2.2.6
583 info /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean/node_modules/rimraf unbuild
584 verbose tar unpack /Users/dominicmercier/.npm/rimraf/2.2.6/package.tgz
585 silly lockFile bbc1917f-ontrib-clean-node-modules-rimraf tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean/node_modules/rimraf
586 verbose lock tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean/node_modules/rimraf /Users/dominicmercier/.npm/bbc1917f-ontrib-clean-node-modules-rimraf.lock
587 silly lockFile fa6a0755-ier-npm-rimraf-2-2-6-package-tgz tar:///Users/dominicmercier/.npm/rimraf/2.2.6/package.tgz
588 verbose lock tar:///Users/dominicmercier/.npm/rimraf/2.2.6/package.tgz /Users/dominicmercier/.npm/fa6a0755-ier-npm-rimraf-2-2-6-package-tgz.lock
589 silly gunzTarPerm modes [ '755', '644' ]
590 silly gunzTarPerm extractEntry .npmignore
591 silly gunzTarPerm extractEntry README
592 silly gunzTarPerm extractEntry package.json
593 silly gunzTarPerm extractEntry README.md
594 silly gunzTarPerm extractEntry LICENSE
595 silly gunzTarPerm extractEntry LICENSE
596 silly gunzTarPerm extractEntry CNAME
597 silly gunzTarPerm extractEntry bin.js
598 silly gunzTarPerm extractEntry rimraf.js
599 silly gunzTarPerm extractEntry CONTRIBUTING.md
600 silly gunzTarPerm extractEntry Rakefile
601 silly gunzTarPerm extractEntry AUTHORS
602 silly gunzTarPerm extractEntry test/test-async.js
603 silly gunzTarPerm extractEntry bin/cake
604 silly gunzTarPerm extractEntry bin/coffee
605 silly gunzTarPerm extractEntry test/test-sync.js
606 silly gunzTarPerm extractEntry test/run.sh
607 silly gunzTarPerm extractEntry lib/coffee-script/browser.js
608 silly gunzTarPerm extractEntry lib/coffee-script/grammar.js
609 silly gunzTarPerm extractEntry lib/coffee-script/helpers.js
610 silly gunzTarPerm extractEntry lib/coffee-script/index.js
611 silly gunzTarPerm extractEntry test/setup.sh
612 silly gunzTarPerm extractEntry lib/coffee-script/command.js
613 silly gunzTarPerm extractEntry lib/coffee-script/nodes.js
614 http 304 https://registry.npmjs.org/q-io
615 silly registry.get cb [ 304,
615 silly registry.get { date: 'Thu, 13 Mar 2014 15:35:58 GMT',
615 silly registry.get server: 'Apache',
615 silly registry.get via: '1.1 varnish',
615 silly registry.get 'last-modified': 'Thu, 13 Mar 2014 15:35:58 GMT',
615 silly registry.get 'cache-control': 'max-age=1',
615 silly registry.get etag: '"4OYH5EZ0QNMT9EGML5PNFAG7X"',
615 silly registry.get 'x-served-by': 'cache-jfk1030-JFK',
615 silly registry.get 'x-cache': 'MISS',
615 silly registry.get 'x-cache-hits': '0',
615 silly registry.get 'x-timer': 'S1394724958.689304590,VS0,VE79',
615 silly registry.get vary: 'Accept',
615 silly registry.get 'content-length': '0',
615 silly registry.get 'keep-alive': 'timeout=10, max=50',
615 silly registry.get connection: 'Keep-Alive' } ]
616 verbose etag q-io from cache
617 silly gunzTarPerm extractEntry lib/coffee-script/optparse.js
618 silly gunzTarPerm extractEntry lib/coffee-script/parser.js
619 silly addNameRange number 2 { name: 'q-io', range: '>=0.0.0-0 <0.1.0-0', hasData: true }
620 silly addNameRange versions [ 'q-io',
620 silly addNameRange [ '0.0.0',
620 silly addNameRange '0.0.1',
620 silly addNameRange '0.0.2',
620 silly addNameRange '0.0.3',
620 silly addNameRange '0.0.4',
620 silly addNameRange '0.0.5',
620 silly addNameRange '0.0.6',
620 silly addNameRange '0.0.8',
620 silly addNameRange '0.0.9',
620 silly addNameRange '0.0.10',
620 silly addNameRange '0.0.11',
620 silly addNameRange '0.0.12',
620 silly addNameRange '0.0.13',
620 silly addNameRange '0.0.14',
620 silly addNameRange '0.0.15',
620 silly addNameRange '0.0.16',
620 silly addNameRange '0.0.17',
620 silly addNameRange '0.0.18',
620 silly addNameRange '1.0.0',
620 silly addNameRange '1.1.0',
620 silly addNameRange '1.1.1',
620 silly addNameRange '1.2.0',
620 silly addNameRange '1.3.0',
620 silly addNameRange '1.3.1',
620 silly addNameRange '1.3.2',
620 silly addNameRange '1.4.0',
620 silly addNameRange '1.4.1',
620 silly addNameRange '1.5.0',
620 silly addNameRange '1.5.1',
620 silly addNameRange '1.5.2',
620 silly addNameRange '1.5.3',
620 silly addNameRange '1.5.4',
620 silly addNameRange '1.6.0',
620 silly addNameRange '1.6.1',
620 silly addNameRange '1.6.2',
620 silly addNameRange '1.6.3',
620 silly addNameRange '1.6.4',
620 silly addNameRange '1.6.5',
620 silly addNameRange '1.6.6',
620 silly addNameRange '1.7.0',
620 silly addNameRange '1.7.1',
620 silly addNameRange '1.7.2',
620 silly addNameRange '1.7.3',
620 silly addNameRange '1.8.0',
620 silly addNameRange '1.9.0',
620 silly addNameRange '1.9.1',
620 silly addNameRange '1.9.2',
620 silly addNameRange '1.9.3',
620 silly addNameRange '1.9.4',
620 silly addNameRange '1.10.0',
620 silly addNameRange '1.10.1',
620 silly addNameRange '1.10.2',
620 silly addNameRange '1.10.3',
620 silly addNameRange '1.10.4',
620 silly addNameRange '1.10.5',
620 silly addNameRange '1.10.6',
620 silly addNameRange '1.10.8',
620 silly addNameRange '1.10.9',
620 silly addNameRange '1.11.0' ] ]
621 verbose addNamed [ 'q-io', '0.0.18' ]
622 verbose addNamed [ '0.0.18', '0.0.18' ]
623 silly lockFile 18181675-q-io-0-0-18 q-io@0.0.18
624 verbose lock q-io@0.0.18 /Users/dominicmercier/.npm/18181675-q-io-0-0-18.lock
625 silly lockFile 18181675-q-io-0-0-18 q-io@0.0.18
626 silly lockFile 18181675-q-io-0-0-18 q-io@0.0.18
627 silly lockFile bbea88cf-q-io-0-0-x q-io@0.0.x
628 silly lockFile bbea88cf-q-io-0-0-x q-io@0.0.x
629 silly resolved [ { name: 'q',
629 silly resolved version: '0.8.12',
629 silly resolved description: 'A library for promises (CommonJS/Promises/A,B,D)',
629 silly resolved homepage: 'https://github.com/kriskowal/q',
629 silly resolved author:
629 silly resolved { name: 'Kris Kowal',
629 silly resolved email: 'kris@cixar.com',
629 silly resolved url: 'https://github.com/kriskowal' },
629 silly resolved keywords:
629 silly resolved [ 'q',
629 silly resolved 'promise',
629 silly resolved 'promises',
629 silly resolved 'promises-a',
629 silly resolved 'promises-a-plus',
629 silly resolved 'deferred',
629 silly resolved 'future',
629 silly resolved 'async',
629 silly resolved 'flow control',
629 silly resolved 'fluent',
629 silly resolved 'browser',
629 silly resolved 'node' ],
629 silly resolved contributors: [ [Object], [Object], [Object] ],
629 silly resolved bugs: { url: 'http://github.com/kriskowal/q/issues' },
629 silly resolved licenses: [ [Object] ],
629 silly resolved main: 'q.js',
629 silly resolved repository: { type: 'git', url: 'git://github.com/kriskowal/q.git' },
629 silly resolved engines: { node: '>=0.6.0', teleport: '>=0.2.0' },
629 silly resolved dependencies: {},
629 silly resolved devDependencies:
629 silly resolved { jshint: '>=0.9.1',
629 silly resolved cover: '*',
629 silly resolved 'jasmine-node': '*',
629 silly resolved opener: '*',
629 silly resolved 'promises-aplus-tests': '~1.0' },
629 silly resolved scripts:
629 silly resolved { test: 'jasmine-node spec && promises-aplus-tests spec/aplus-adapter',
629 silly resolved 'test-browser': 'opener spec/q-spec.html',
629 silly resolved lint: 'jshint q.js',
629 silly resolved cover: 'cover run node_modules/jasmine-node/bin/jasmine-node spec && cover report html && opener cover_html/index.html' },
629 silly resolved overlay: { teleport: [Object] },
629 silly resolved directories: { test: './spec' },
629 silly resolved readme: '[![Build Status](https://secure.travis-ci.org/kriskowal/q.png)](http://travis-ci.org/kriskowal/q)\n\n<a href="http://promises-aplus.github.com/promises-spec">\n <img src="http://promises-aplus.github.com/promises-spec/assets/logo-small.png"\n align="right" alt="Promises/A+ logo" />\n</a>\n\nIf a function cannot return a value or throw an exception without\nblocking, it can return a promise instead. A promise is an object\nthat represents the return value or the thrown exception that the\nfunction may eventually provide. A promise can also be used as a\nproxy for a [remote object][Q-Connection] to overcome latency.\n\n[Q-Connection]: https://github.com/kriskowal/q-connection\n\nOn the first pass, promises can mitigate the “[Pyramid of\nDoom][POD]”: the situation where code marches to the right faster\nthan it marches forward.\n\n[POD]: http://calculist.org/blog/2011/12/14/why-coroutines-wont-work-on-the-web/\n\n```javascript\nstep1(function (value1) {\n step2(value1, function(value2) {\n step3(value2, function(value3) {\n step4(value3, function(value4) {\n // Do something with value4\n });\n });\n });\n});\n```\n\nWith a promise library, you can flatten the pyramid.\n\n```javascript\nQ.fcall(step1)\n.then(step2)\n.then(step3)\n.then(step4)\n.then(function (value4) {\n // Do something with value4\n}, function (error) {\n // Handle any error from step1 through step4\n})\n.done();\n```\n\nWith this approach, you also get implicit error propagation,\njust like ``try``, ``catch``, and ``finally``. An error in\n``step1`` will flow all the way to ``step5``, where it’s\ncaught and handled.\n\nThe callback approach is called an “inversion of control”.\nA function that accepts a callback instead of a return value\nis saying, “Don’t call me, I’ll call you.”. Promises\n[un-invert][IOC] the inversion, cleanly separating the input\narguments from control flow arguments. This simplifies the\nuse and creation of API’s, particularly variadic,\nrest and spread arguments.\n\n[IOC]: http://www.slideshare.net/domenicdenicola/callbacks-promises-and-coroutines-oh-my-the-evolution-of-asynchronicity-in-javascript\n\n\n## Getting Started\n\nThe Q module can be loaded as:\n\n- a ``<script>`` tag (creating a ``Q`` global variable):\n ~3.5 KB minified and gzipped.\n- a Node.js and CommonJS module available from NPM as the ``q``\n package\n- a RequireJS module\n\nQ can exchange promises with jQuery, Dojo, When.js, WinJS, and more.\nAdditionally, there are many libraries that produce and consume Q promises for\neverything from file system/database access or RPC to templating. For a list of\nsome of the more popular ones, see [Libraries][].\n\nPlease join the Q-Continuum [mailing list](https://groups.google.com/forum/#!forum/q-continuum).\n\n[Libraries]: https://github.com/kriskowal/q/wiki/Libraries\n\n\n## Tutorial\n\nPromises have a ``then`` method, which you can use to get the eventual\nreturn value (fulfillment) or thrown exception (rejection).\n\n```javascript\nfoo()\n.then(function (value) {\n}, function (reason) {\n})\n```\n\nIf ``foo`` returns a promise that gets fulfilled later with a return\nvalue, the first function (the value handler) will be called with the\nvalue. However, if the ``foo`` function gets rejected later by a\nthrown exception, the second function (the error handler) will be\ncalled with the error.\n\nNote that resolution of a promise is always asynchronous: that is, the\nvalue or error handler will always be called in the next turn of the\nevent loop (i.e. `process.nextTick` in Node). This gives you a nice\nguarantee when mentally tracing the flow of your code, namely that\n``then`` will always return before either handler is executed.\n\n\n### Propagation\n\nThe ``then`` method returns a promise, which in this example, I’m\nassigning to ``bar``.\n\n```javascript\nvar bar = foo()\n.then(function (value) {\n}, function (reason) {\n})\n```\n\nThe ``bar`` variable becomes a new promise for the return value of\neither handler. Since a function can only either return a value or\nthrow an exception, only one handler will ever be called and it will\nbe responsible for resolving ``bar``.\n\n- If you return a value in a handler, ``bar`` will get fulfilled.\n\n- If you throw an exception in a handler ``bar`` will get rejected.\n\n- If you return a **promise** in a handler, ``bar`` will “become”\n that promise. Being able to become a new promise is useful for\n managing delays, combining results, or recovering from errors.\n\nIf the ``foo()`` promise gets rejected and you omit the error handler,\nthe **error** will go to ``bar``:\n\n```javascript\nvar bar = foo()\n.then(function (value) {\n})\n```\n\nIf the ``foo()`` promise gets fulfilled and you omit the value\nhandler, the **value** will go to ``bar``:\n\n```javascript\nvar bar = foo()\n.then(null, function (error) {\n})\n```\n\nQ promises provide a ``fail`` shorthand for ``then`` when you are only\ninterested in handling the error:\n\n```javascript\nvar bar = foo()\n.fail(function (error) {\n})\n```\n\nThey also have a ``fin`` function that is like a ``finally`` clause.\nThe final handler gets called, with no arguments, when the promise\nreturned by ``foo()`` either returns a value or throws an error. The\nvalue returned or error thrown by ``foo()`` passes directly to ``bar``.\n\n```javascript\nvar bar = foo()\n.fin(function () {\n // close files, database connections, stop servers, conclude tests\n})\n```\n\n- If the handler returns a value, the value is ignored\n- If the handler throws an error, the error passes to ``bar``\n- If the handler returns a promise, ``bar`` gets postponed. The\n eventual value or error has the same effect as an immediate return\n value or thrown error: a value would be ignored, an error would be\n forwarded.\n\n### Chaining\n\nThere are two ways to chain promises. You can chain promises either\ninside or outside handlers. The next two examples are equivalent.\n\n```javascript\nreturn foo()\n.then(function (fooValue) {\n return bar(fooValue)\n .then(function (barValue) {\n // if we get here without an error,\n // the value returned here\n // or the exception thrown here\n // resolves the promise returned\n // by the first line\n })\n})\n```\n\n```javascript\nreturn foo()\n.then(function (fooValue) {\n return bar(fooValue);\n})\n.then(function (barValue) {\n // if we get here without an error,\n // the value returned here\n // or the exception thrown here\n // resolves the promise returned\n // by the first line\n})\n```\n\nThe only difference is nesting. It’s useful to nest handlers if you\nneed to capture both ``fooValue`` and ``barValue`` in the last\nhandler.\n\n```javascript\nfunction eventualAdd(a, b) {\n return a.then(function (a) {\n return b.then(function (b) {\n return a + b;\n });\n });\n}\n```\n\n\n### Combination\n\nYou can turn an array of promises into a promise for the whole,\nfulfilled array using ``all``.\n\n```javascript\nreturn Q.all([\n eventualAdd(2, 2),\n eventualAdd(10, 20)\n])\n```\n\nIf you have a promise for an array, you can use ``spread`` as a\nreplacement for ``then``. The ``spread`` function “spreads” the\nvalues over the arguments of the value handler. The error handler\nwill get called at the first sign of failure. That is, whichever of\nthe recived promises fails first gets handled by the error handler.\n\n```javascript\nfunction eventualAdd(a, b) {\n return Q.spread([a, b], function (a, b) {\n return a + b;\n })\n}\n```\n\nBut ``spread`` calls ``all`` initially, so you can skip it in chains.\n\n```javascript\nreturn foo()\n.then(function (info) {\n return [info.name, FS.read(info.location, "utf-8")];\n // FS.read returns a promise, so this array\n // mixes values and promises\n})\n.spread(function (name, text) {\n})\n```\n\nThe ``all`` function returns a promise for an array of values. If one\nof the given promise fails, the whole returned promise fails, not\nwaiting for the rest of the batch. If you want to wait for all of the\npromises to either be fulfilled or rejected, you can use\n``allResolved``.\n\n```javascript\nQ.allResolved(promises)\n.then(function (promises) {\n promises.forEach(function (promise) {\n if (promise.isFulfilled()) {\n var value = promise.valueOf();\n } else {\n var exception = promise.valueOf().exception;\n }\n })\n})\n```\n\n\n### Sequences\n\nIf you have a number of promise-producing functions that need\nto be run sequentially, you can of course do so manually:\n\n```javascript\nreturn foo(initialVal).then(bar).then(baz).then(quux);\n```\n\nHowever, if you want to run a dynamically constructed sequence of\nfunctions, you\'ll want something like this:\n\n```javascript\nvar funcs = [foo, bar, baz, quux];\n\nvar result = Q.resolve(initialVal);\nfuncs.forEach(function (f) {\n result = result.then(f);\n});\nreturn result;\n```\n\nYou can make this slightly more compact using `reduce`:\n\n```javascript\nreturn funcs.reduce(function (soFar, f) {\n return soFar.then(f);\n}, Q.resolve(initialVal));\n```\n\n\n### Handling Errors\n\nOne sometimes-unintuive aspect of promises is that if you throw an\nexception in the value handler, it will not be be caught by the error\nhandler.\n\n```javascript\nfoo()\n.then(function (value) {\n throw new Error("Can\'t bar.");\n}, function (error) {\n // We only get here if "foo" fails\n})\n```\n\nTo see why this is, consider the parallel between promises and\n``try``/``catch``. We are ``try``-ing to execute ``foo()``: the error\nhandler represents a ``catch`` for ``foo()``, while the value handler\nrepresents code that happens *after* the ``try``/``catch`` block.\nThat code then needs its own ``try``/``catch`` block.\n\nIn terms of promises, this means chaining your error handler:\n\n```javascript\nfoo()\n.then(function (value) {\n throw new Error("Can\'t bar.");\n})\n.fail(function (error) {\n // We get here with either foo\'s error or bar\'s error\n})\n```\n\n\n### The End\n\nWhen you get to the end of a chain of promises, you should either\nreturn the last promise or end the chain. Since handlers catch\nerrors, it’s an unfortunate pattern that the exceptions can go\nunobserved.\n\nSo, either return it,\n\n```javascript\nreturn foo()\n.then(function () {\n return "bar";\n})\n```\n\nOr, end it.\n\n```javascript\nfoo()\n.then(function () {\n return "bar";\n})\n.done()\n```\n\nEnding a promise chain makes sure that, if an error doesn’t get\nhandled before the end, it will get rethrown and reported.\n\nThis is a stopgap. We are exploring ways to make unhandled errors\nvisible without any explicit handling.\n\n\n### The Beginning\n\nEverything above assumes you get a promise from somewhere else. This\nis the common case. Every once in a while, you will need to create a\npromise from scratch.\n\n#### Using ``Q.fcall``\n\nYou can create a promise from a value using ``Q.fcall``. This returns a\npromise for 10.\n\n```javascript\nreturn Q.fcall(function () {\n return 10;\n});\n```\n\nYou can also use ``fcall`` to get a promise for an exception.\n\n```javascript\nreturn Q.fcall(function () {\n throw new Error("Can\'t do it");\n})\n```\n\nAs the name implies, ``fcall`` can call functions, or even promised\nfunctions. This uses the ``eventualAdd`` function above to add two\nnumbers.\n\n```javascript\nreturn Q.fcall(eventualAdd, 2, 2);\n```\n\n\n#### Using Deferreds\n\nIf you have to interface with asynchronous functions that are callback-based\ninstead of promise-based, Q provides a few shortcuts (like ``Q.nfcall`` and\nfriends). But much of the time, the solution will be to use *deferreds*.\n\n```javascript\nvar deferred = Q.defer();\nFS.readFile("foo.txt", "utf-8", function (error, text) {\n if (error) {\n deferred.reject(new Error(error));\n } else {\n deferred.resolve(text);\n }\n});\nreturn deferred.promise;\n```\n\nNote that a deferred can be resolved with a value or a promise. The\n``reject`` function is a shorthand for resolving with a rejected\npromise.\n\n```javascript\n// this:\ndeferred.reject(new Error("Can\'t do it"));\n\n// is shorthand for:\nvar rejection = Q.fcall(function () {\n throw new Error("Can\'t do it");\n});\ndeferred.resolve(rejection);\n```\n\nThis is a simplified implementation of ``Q.delay``.\n\n```javascript\nfunction delay(ms) {\n var deferred = Q.defer();\n setTimeout(deferred.resolve, ms);\n return deferred.promise;\n}\n```\n\nThis is a simplified implementation of ``Q.timeout``\n\n```javascript\nfunction timeout(promise, ms) {\n var deferred = Q.defer();\n Q.when(promise, deferred.resolve);\n Q.when(delay(ms), function () {\n deferred.reject(new Error("Timed out"));\n });\n return deferred.promise;\n}\n```\n\n\n### The Middle\n\nIf you are using a function that may return a promise, but just might\nreturn a value if it doesn’t need to defer, you can use the “static”\nmethods of the Q library.\n\nThe ``when`` function is the static equivalent for ``then``.\n\n```javascript\nreturn Q.when(valueOrPromise, function (value) {\n}, function (error) {\n});\n```\n\nAll of the other methods on a promise have static analogs with the\nsame name.\n\nThe following are equivalent:\n\n```javascript\nreturn Q.all([a, b]);\n```\n\n```javascript\nreturn Q.fcall(function () {\n return [a, b];\n})\n.all();\n```\n\nWhen working with promises provided by other libraries, you should\nconvert it to a Q promise. Not all promise libraries make the same\nguarantees as Q and certainly don’t provide all of the same methods.\nMost libraries only provide a partially functional ``then`` method.\nThis thankfully is all we need to turn them into vibrant Q promises.\n\n```javascript\nreturn Q.when($.ajax(...))\n.then(function () {\n})\n```\n\nIf there is any chance that the promise you receive is not a Q promise\nas provided by your library, you should wrap it using a Q function.\nYou can even use ``Q.invoke`` as a shorthand.\n\n```javascript\nreturn Q.invoke($, \'ajax\', ...)\n.then(function () {\n})\n```\n\n\n### Over the Wire\n\nA promise can serve as a proxy for another object, even a remote\nobject. There are methods that allow you to optimistically manipulate\nproperties or call functions. All of these interactions return\npromises, so they can be chained.\n\n```\ndirect manipulation using a promise as a proxy\n-------------------------- -------------------------------\nvalue.foo promise.get("foo")\nvalue.foo = value promise.put("foo", value)\ndelete value.foo promise.del("foo")\nvalue.foo(...args) promise.post("foo", [args])\nvalue.foo(...args) promise.invoke("foo", ...args)\nvalue(...args) promise.fapply([args])\nvalue(...args) promise.fcall(...args)\n```\n\nIf the promise is a proxy for a remote object, you can shave\nround-trips by using these functions instead of ``then``. To take\nadvantage of promises for remote objects, check out [Q-Comm][].\n\n[Q-Comm]: https://github.com/kriskowal/q-comm\n\nEven in the case of non-remote objects, these methods can be used as\nshorthand for particularly-simple value handlers. For example, you\ncan replace\n\n```javascript\nreturn Q.fcall(function () {\n return [{ foo: "bar" }, { foo: "baz" }];\n})\n.then(function (value) {\n return value[0].foo;\n})\n```\n\nwith\n\n```javascript\nreturn Q.fcall(function () {\n return [{ foo: "bar" }, { foo: "baz" }];\n})\n.get(0)\n.get("foo")\n```\n\n\n### Adapting Node\n\nThere is a ``makeNodeResolver`` method on deferreds that is handy for\nthe NodeJS callback pattern.\n\n```javascript\nvar deferred = Q.defer();\nFS.readFile("foo.txt", "utf-8", deferred.makeNodeResolver());\nreturn deferred.promise;\n```\n\nAnd there are ``Q.nfcall`` and ``Q.ninvoke`` for even shorter\nexpression.\n\n```javascript\nreturn Q.nfcall(FS.readFile, "foo.txt", "utf-8");\n```\n\n```javascript\nreturn Q.ninvoke(FS, "readFile", "foo.txt", "utf-8");\n```\n\nThere is also a ``Q.nfbind`` function that that creates a reusable\nwrapper.\n\n```javascript\nvar readFile = Q.nfbind(FS.readFile);\nreturn readFile("foo.txt", "utf-8");\n```\n\nNote that, since promises are always resolved in the next turn of the\nevent loop, working with streams [can be tricky][streams]. The\nessential problem is that, since Node does not buffer input, it is\nnecessary to attach your ``"data"`` event listeners immediately,\nbefore this next turn comes around. There are a variety of solutions\nto this problem, and even some hope that in future versions of Node it\nwill [be ameliorated][streamsnext].\n\n[streams]: https://groups.google.com/d/topic/q-continuum/xr8znxc_K5E/discussion\n[streamsnext]: http://maxogden.com/node-streams#streams.next\n\n## Reference\n\nA method-by-method [Q API reference][reference] is available on the wiki.\n\n[reference]: https://github.com/kriskowal/q/wiki/API-Reference\n\n## More Examples\n\nA growing [examples gallery][examples] is available on the wiki, showing how Q\ncan be used to make everything better. From XHR to database access to accessing\nthe Flickr API, Q is there for you.\n\n[examples]: https://github.com/kriskowal/q/wiki/Examples-Gallery\n\n---\n\nCopyright 2009-2012 Kristopher Michael Kowal\nMIT License (enclosed)\n\n',
629 silly resolved readmeFilename: 'README.md',
629 silly resolved _id: 'q@0.8.12',
629 silly resolved _from: 'q@0.8.x' },
629 silly resolved { name: 'fs-boot',
629 silly resolved version: '0.0.9',
629 silly resolved description: 'Pure JavaScript implementation of common file-system API components',
629 silly resolved homepage: 'http://github.com/kriskowal/fs-boot/',
629 silly resolved author:
629 silly resolved { name: 'Kris Kowal',
629 silly resolved email: 'kris@cixar.com',
629 silly resolved url: 'http://github.com/kriskowal/' },
629 silly resolved bugs: { url: 'http://github.com/kriskowal/fs-boot/issues' },
629 silly resolved licenses: [ [Object] ],
629 silly resolved main: 'fs-boot.js',
629 silly resolved repository: { type: 'git', url: 'http://github.com/kriskowal/fs-boot.git' },
629 silly resolved devDependences: { test: '0.3.0' },
629 silly resolved engines: { node: '>=0.2.0' },
629 silly resolved readme: '\nAPI\n\n ROOT\n SEPARATOR\n ALT_SEPARATOR\n SEPARATORS_RE()\n split(path)\n join(...path)\n resolve(...path)\n normal(...path)\n isAbsolute(path)\n isRelative(path)\n isRoot(path)\n root(path)\n directory(path)\n base(path, extension_opt)\n extension(path)\n\n',
629 silly resolved readmeFilename: 'README',
629 silly resolved _id: 'fs-boot@0.0.9',
629 silly resolved _from: 'fs-boot@0.0.x' },
629 silly resolved { name: 'q-io',
629 silly resolved version: '0.0.18',
629 silly resolved description: 'Q Promise wrappers for Node\'s IO.',
629 silly resolved homepage: 'http://github.com/kriskowal/q-io/',
629 silly resolved author:
629 silly resolved { name: 'Kris Kowal',
629 silly resolved email: 'kris@cixar.com',
629 silly resolved url: 'http://github.com/kriskowal/' },
629 silly resolved bugs: { url: 'http://github.com/kriskowal/q-io/issues' },
629 silly resolved licenses: [ [Object] ],
629 silly resolved main: 'q-io.js',
629 silly resolved dependencies: { q: '0.8.x' },
629 silly resolved repository: { type: 'git', url: 'http://github.com/kriskowal/q-io.git' },
629 silly resolved engines: { node: '>=0.2.0' },
629 silly resolved readme: '\nCopyright 2009–2012 Kristopher Michael Kowal\nMIT License (enclosed)\n\n',
629 silly resolved readmeFilename: 'README.md',
629 silly resolved _id: 'q-io@0.0.18',
629 silly resolved _from: 'q-io@0.0.x' } ]
630 info install q@0.8.12 into /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs
631 info install fs-boot@0.0.9 into /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs
632 info install q-io@0.0.18 into /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs
633 info installOne q@0.8.12
634 info installOne fs-boot@0.0.9
635 info installOne q-io@0.0.18
636 info /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/q unbuild
637 info /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/fs-boot unbuild
638 info /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/q-io unbuild
639 verbose tar unpack /Users/dominicmercier/.npm/q/0.8.12/package.tgz
640 silly lockFile 19d48341-node-modules-q-fs-node-modules-q tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/q
641 verbose lock tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/q /Users/dominicmercier/.npm/19d48341-node-modules-q-fs-node-modules-q.lock
642 silly lockFile 254a1214-mercier-npm-q-0-8-12-package-tgz tar:///Users/dominicmercier/.npm/q/0.8.12/package.tgz
643 verbose lock tar:///Users/dominicmercier/.npm/q/0.8.12/package.tgz /Users/dominicmercier/.npm/254a1214-mercier-npm-q-0-8-12-package-tgz.lock
644 verbose tar unpack /Users/dominicmercier/.npm/fs-boot/0.0.9/package.tgz
645 silly lockFile a0927452-odules-q-fs-node-modules-fs-boot tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/fs-boot
646 verbose lock tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/fs-boot /Users/dominicmercier/.npm/a0927452-odules-q-fs-node-modules-fs-boot.lock
647 silly lockFile 3bf06014-er-npm-fs-boot-0-0-9-package-tgz tar:///Users/dominicmercier/.npm/fs-boot/0.0.9/package.tgz
648 verbose lock tar:///Users/dominicmercier/.npm/fs-boot/0.0.9/package.tgz /Users/dominicmercier/.npm/3bf06014-er-npm-fs-boot-0-0-9-package-tgz.lock
649 verbose tar unpack /Users/dominicmercier/.npm/q-io/0.0.18/package.tgz
650 silly lockFile 6edd2475-e-modules-q-fs-node-modules-q-io tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/q-io
651 verbose lock tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/q-io /Users/dominicmercier/.npm/6edd2475-e-modules-q-fs-node-modules-q-io.lock
652 silly lockFile c21a583a-cier-npm-q-io-0-0-18-package-tgz tar:///Users/dominicmercier/.npm/q-io/0.0.18/package.tgz
653 verbose lock tar:///Users/dominicmercier/.npm/q-io/0.0.18/package.tgz /Users/dominicmercier/.npm/c21a583a-cier-npm-q-io-0-0-18-package-tgz.lock
654 silly gunzTarPerm modes [ '755', '644' ]
655 silly gunzTarPerm modes [ '755', '644' ]
656 silly gunzTarPerm modes [ '755', '644' ]
657 silly gunzTarPerm extractEntry package.json
658 silly gunzTarPerm extractEntry lib/coffee-script/repl.js
659 silly gunzTarPerm extractEntry lib/coffee-script/rewriter.js
660 silly gunzTarPerm extractEntry package.json
661 silly gunzTarPerm extractEntry package.json
662 silly gunzTarPerm extractEntry .npmignore
663 silly gunzTarPerm extractEntry README
664 silly gunzTarPerm extractEntry README.md
665 silly gunzTarPerm extractEntry q.js
666 silly gunzTarPerm extractEntry queue.js
667 silly gunzTarPerm extractEntry .npmignore
668 silly gunzTarPerm extractEntry README.md
669 silly gunzTarPerm extractEntry lib/coffee-script/coffee-script.js
670 silly gunzTarPerm extractEntry lib/coffee-script/scope.js
671 silly gunzTarPerm extractEntry LICENSE
672 silly gunzTarPerm extractEntry fs-boot.js
673 silly gunzTarPerm extractEntry LICENSE
674 silly gunzTarPerm extractEntry q-io.js
675 silly gunzTarPerm extractEntry CHANGES
676 silly gunzTarPerm extractEntry test/directory.js
677 silly lockFile bbc1917f-ontrib-clean-node-modules-rimraf tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean/node_modules/rimraf
678 silly lockFile bbc1917f-ontrib-clean-node-modules-rimraf tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean/node_modules/rimraf
679 silly lockFile fa6a0755-ier-npm-rimraf-2-2-6-package-tgz tar:///Users/dominicmercier/.npm/rimraf/2.2.6/package.tgz
680 silly lockFile fa6a0755-ier-npm-rimraf-2-2-6-package-tgz tar:///Users/dominicmercier/.npm/rimraf/2.2.6/package.tgz
681 silly gunzTarPerm extractEntry lib/coffee-script/cake.js
682 silly gunzTarPerm extractEntry lib/coffee-script/sourcemap.js
683 silly gunzTarPerm extractEntry CHANGES
684 silly gunzTarPerm extractEntry test/issues/1.js
685 info preinstall rimraf@2.2.6
686 verbose readDependencies using package.json deps
687 verbose readDependencies using package.json deps
688 silly resolved []
689 verbose about to build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean/node_modules/rimraf
690 info build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean/node_modules/rimraf
691 verbose linkStuff [ false,
691 verbose linkStuff false,
691 verbose linkStuff false,
691 verbose linkStuff '/Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean/node_modules' ]
692 info linkStuff rimraf@2.2.6
693 verbose linkBins rimraf@2.2.6
694 verbose link bins [ { rimraf: './bin.js' },
694 verbose link bins '/Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean/node_modules/.bin',
694 verbose link bins false ]
695 verbose linkMans rimraf@2.2.6
696 verbose rebuildBundles rimraf@2.2.6
697 silly gunzTarPerm extractEntry lib/coffee-script/lexer.js
698 info install rimraf@2.2.6
699 info postinstall rimraf@2.2.6
700 verbose about to build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean
701 info build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-clean
702 verbose linkStuff [ false,
702 verbose linkStuff false,
702 verbose linkStuff false,
702 verbose linkStuff '/Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules' ]
703 info linkStuff grunt-contrib-clean@0.5.0
704 verbose linkBins grunt-contrib-clean@0.5.0
705 verbose linkMans grunt-contrib-clean@0.5.0
706 verbose rebuildBundles grunt-contrib-clean@0.5.0
707 verbose rebuildBundles [ '.bin', 'rimraf' ]
708 info install grunt-contrib-clean@0.5.0
709 info postinstall grunt-contrib-clean@0.5.0
710 silly lockFile 19d48341-node-modules-q-fs-node-modules-q tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/q
711 silly lockFile 19d48341-node-modules-q-fs-node-modules-q tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/q
712 silly lockFile 254a1214-mercier-npm-q-0-8-12-package-tgz tar:///Users/dominicmercier/.npm/q/0.8.12/package.tgz
713 silly lockFile 254a1214-mercier-npm-q-0-8-12-package-tgz tar:///Users/dominicmercier/.npm/q/0.8.12/package.tgz
714 silly lockFile a0927452-odules-q-fs-node-modules-fs-boot tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/fs-boot
715 silly lockFile a0927452-odules-q-fs-node-modules-fs-boot tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/fs-boot
716 silly lockFile 3bf06014-er-npm-fs-boot-0-0-9-package-tgz tar:///Users/dominicmercier/.npm/fs-boot/0.0.9/package.tgz
717 silly lockFile 3bf06014-er-npm-fs-boot-0-0-9-package-tgz tar:///Users/dominicmercier/.npm/fs-boot/0.0.9/package.tgz
718 info preinstall q@0.8.12
719 verbose readDependencies using package.json deps
720 verbose readDependencies using package.json deps
721 silly resolved []
722 verbose about to build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/q
723 info build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/q
724 verbose linkStuff [ false,
724 verbose linkStuff false,
724 verbose linkStuff false,
724 verbose linkStuff '/Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules' ]
725 info linkStuff q@0.8.12
726 verbose linkBins q@0.8.12
727 verbose linkMans q@0.8.12
728 verbose rebuildBundles q@0.8.12
729 info preinstall fs-boot@0.0.9
730 info install q@0.8.12
731 info postinstall q@0.8.12
732 verbose readDependencies using package.json deps
733 verbose readDependencies using package.json deps
734 silly resolved []
735 verbose about to build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/fs-boot
736 info build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/fs-boot
737 verbose linkStuff [ false,
737 verbose linkStuff false,
737 verbose linkStuff false,
737 verbose linkStuff '/Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules' ]
738 info linkStuff fs-boot@0.0.9
739 verbose linkBins fs-boot@0.0.9
740 verbose linkMans fs-boot@0.0.9
741 verbose rebuildBundles fs-boot@0.0.9
742 info install fs-boot@0.0.9
743 info postinstall fs-boot@0.0.9
744 silly lockFile 6edd2475-e-modules-q-fs-node-modules-q-io tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/q-io
745 silly lockFile 6edd2475-e-modules-q-fs-node-modules-q-io tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/q-io
746 silly lockFile c21a583a-cier-npm-q-io-0-0-18-package-tgz tar:///Users/dominicmercier/.npm/q-io/0.0.18/package.tgz
747 silly lockFile c21a583a-cier-npm-q-io-0-0-18-package-tgz tar:///Users/dominicmercier/.npm/q-io/0.0.18/package.tgz
748 info preinstall q-io@0.0.18
749 verbose readDependencies using package.json deps
750 verbose readDependencies using package.json deps
751 silly resolved []
752 verbose about to build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/q-io
753 info build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules/q-io
754 verbose linkStuff [ false,
754 verbose linkStuff false,
754 verbose linkStuff false,
754 verbose linkStuff '/Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs/node_modules' ]
755 info linkStuff q-io@0.0.18
756 verbose linkBins q-io@0.0.18
757 verbose linkMans q-io@0.0.18
758 verbose rebuildBundles q-io@0.0.18
759 info install q-io@0.0.18
760 info postinstall q-io@0.0.18
761 verbose about to build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs
762 info build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/q-fs
763 verbose linkStuff [ false,
763 verbose linkStuff false,
763 verbose linkStuff false,
763 verbose linkStuff '/Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules' ]
764 info linkStuff q-fs@0.1.36
765 verbose linkBins q-fs@0.1.36
766 verbose linkMans q-fs@0.1.36
767 verbose rebuildBundles q-fs@0.1.36
768 verbose rebuildBundles [ 'fs-boot', 'q', 'q-io' ]
769 info install q-fs@0.1.36
770 info postinstall q-fs@0.1.36
771 silly lockFile 0e16145a-offee-node-modules-coffee-script tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee/node_modules/coffee-script
772 silly lockFile 0e16145a-offee-node-modules-coffee-script tar:///Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee/node_modules/coffee-script
773 silly lockFile b06f50ba--coffee-script-1-6-3-package-tgz tar:///Users/dominicmercier/.npm/coffee-script/1.6.3/package.tgz
774 silly lockFile b06f50ba--coffee-script-1-6-3-package-tgz tar:///Users/dominicmercier/.npm/coffee-script/1.6.3/package.tgz
775 info preinstall coffee-script@1.6.3
776 verbose readDependencies using package.json deps
777 verbose readDependencies using package.json deps
778 silly resolved []
779 verbose about to build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee/node_modules/coffee-script
780 info build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee/node_modules/coffee-script
781 verbose linkStuff [ false,
781 verbose linkStuff false,
781 verbose linkStuff false,
781 verbose linkStuff '/Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee/node_modules' ]
782 info linkStuff coffee-script@1.6.3
783 verbose linkBins coffee-script@1.6.3
784 verbose link bins [ { coffee: './bin/coffee', cake: './bin/cake' },
784 verbose link bins '/Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee/node_modules/.bin',
784 verbose link bins false ]
785 verbose linkMans coffee-script@1.6.3
786 verbose rebuildBundles coffee-script@1.6.3
787 info install coffee-script@1.6.3
788 info postinstall coffee-script@1.6.3
789 verbose about to build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee
790 info build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules/grunt-contrib-coffee
791 verbose linkStuff [ false,
791 verbose linkStuff false,
791 verbose linkStuff false,
791 verbose linkStuff '/Volumes/Crosby/commedesbetes/node_modules/node-spritesheet/node_modules' ]
792 info linkStuff grunt-contrib-coffee@0.7.0
793 verbose linkBins grunt-contrib-coffee@0.7.0
794 verbose linkMans grunt-contrib-coffee@0.7.0
795 verbose rebuildBundles grunt-contrib-coffee@0.7.0
796 verbose rebuildBundles [ '.bin', 'coffee-script' ]
797 info install grunt-contrib-coffee@0.7.0
798 info postinstall grunt-contrib-coffee@0.7.0
799 verbose about to build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet
800 info build /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet
801 verbose linkStuff [ false,
801 verbose linkStuff false,
801 verbose linkStuff false,
801 verbose linkStuff '/Volumes/Crosby/commedesbetes/node_modules' ]
802 info linkStuff node-spritesheet@0.4.2
803 verbose linkBins node-spritesheet@0.4.2
804 verbose linkMans node-spritesheet@0.4.2
805 verbose rebuildBundles node-spritesheet@0.4.2
806 verbose rebuildBundles [ 'async',
806 verbose rebuildBundles 'grunt-contrib-clean',
806 verbose rebuildBundles 'grunt-contrib-coffee',
806 verbose rebuildBundles 'q-fs',
806 verbose rebuildBundles 'underscore' ]
807 info install node-spritesheet@0.4.2
808 verbose unsafe-perm in lifecycle true
809 info node-spritesheet@0.4.2 Failed to exec install script
810 info /Volumes/Crosby/commedesbetes/node_modules/node-spritesheet unbuild
811 info preuninstall node-spritesheet@0.4.2
812 info uninstall node-spritesheet@0.4.2
813 verbose true,/Volumes/Crosby/commedesbetes/node_modules,/Volumes/Crosby/commedesbetes/node_modules unbuild node-spritesheet@0.4.2
814 info postuninstall node-spritesheet@0.4.2
815 error node-spritesheet@0.4.2 install: `grunt`
815 error Exit status 127
816 error Failed at the node-spritesheet@0.4.2 install script.
816 error This is most likely a problem with the node-spritesheet package,
816 error not with npm itself.
816 error Tell the author that this fails on your system:
816 error grunt
816 error You can get their info via:
816 error npm owner ls node-spritesheet
816 error There is likely additional logging output above.
817 error System Darwin 13.1.0
818 error command "node" "/usr/local/bin/npm" "install" "node-spritesheet" "--save-dev"
819 error cwd /Volumes/Crosby/commedesbetes
820 error node -v v0.10.26
821 error npm -v 1.4.3
822 error code ELIFECYCLE
823 verbose exit [ 1, true ]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment