/compass/005_compass/compass/node_modules/array-parallel/README.md |
@@ -0,0 +1,78 @@ |
# Array Series [![Build Status](https://travis-ci.org/component/array-parallel.png)](https://travis-ci.org/component/array-parallel) |
|
Call an array of asynchronous functions in parallel |
|
### API |
|
#### parallel(fns[, context[, callback]]) |
|
```js |
var parallel = require('array-parallel') |
|
parallel([ |
function (done) { |
done() |
} |
], this, function (err) { |
|
}) |
``` |
|
#### fns |
|
`fns` is an array of functions to call in parallel. |
The argument signature should be: |
|
```js |
function (done) { |
done(new Error()) |
// or |
done(null, result) |
} |
``` |
|
That is, each function should only take a `done` as an argument. |
Each callback should only take an `Error` as the first argument, |
or a value as the second. |
|
#### context |
|
Optional context to pass to each `fn`. |
Basically `fn.call(context, done)`. |
|
#### callback(err, results) |
|
```js |
function (err, results) { |
|
} |
``` |
|
Only argument is an `Error` argument. |
It will be the first error retrieved from all the `fns`. |
`results` will be an array of results from each `fn`, |
thus this could be considered an asynchronous version of `[].map`. |
|
### License |
|
The MIT License (MIT) |
|
Copyright (c) 2013 Jonathan Ong me@jongleberry.com |
|
Permission is hereby granted, free of charge, to any person obtaining a copy |
of this software and associated documentation files (the "Software"), to deal |
in the Software without restriction, including without limitation the rights |
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
copies of the Software, and to permit persons to whom the Software is |
furnished to do so, subject to the following conditions: |
|
The above copyright notice and this permission notice shall be included in |
all copies or substantial portions of the Software. |
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
THE SOFTWARE. |
/compass/005_compass/compass/node_modules/array-parallel/index.js |
@@ -0,0 +1,40 @@ |
module.exports = function parallel(fns, context, callback) { |
if (!callback) { |
if (typeof context === 'function') { |
callback = context |
context = null |
} else { |
callback = noop |
} |
} |
|
var pending = fns && fns.length |
if (!pending) return callback(null, []); |
|
var finished = false |
var results = new Array(pending) |
|
fns.forEach(context ? function (fn, i) { |
fn.call(context, maybeDone(i)) |
} : function (fn, i) { |
fn(maybeDone(i)) |
}) |
|
function maybeDone(i) { |
return function (err, result) { |
if (finished) return; |
|
if (err) { |
callback(err, results) |
finished = true |
return |
} |
|
results[i] = result |
|
if (!--pending) callback(null, results); |
} |
} |
} |
|
function noop() {} |
/compass/005_compass/compass/node_modules/array-parallel/package.json |
@@ -0,0 +1,48 @@ |
{ |
"_from": "array-parallel@~0.1.3", |
"_id": "array-parallel@0.1.3", |
"_inBundle": false, |
"_integrity": "sha1-j3hTCJJu1apHjEfmTRszS2wMlH0=", |
"_location": "/array-parallel", |
"_phantomChildren": {}, |
"_requested": { |
"type": "range", |
"registry": true, |
"raw": "array-parallel@~0.1.3", |
"name": "array-parallel", |
"escapedName": "array-parallel", |
"rawSpec": "~0.1.3", |
"saveSpec": null, |
"fetchSpec": "~0.1.3" |
}, |
"_requiredBy": [ |
"/gm" |
], |
"_resolved": "https://registry.npmjs.org/array-parallel/-/array-parallel-0.1.3.tgz", |
"_shasum": "8f785308926ed5aa478c47e64d1b334b6c0c947d", |
"_spec": "array-parallel@~0.1.3", |
"_where": "/Users/horia.corcalciuc/Documents/Development/corrade-nucleus-nucleons/compass/005_compass/compass/node_modules/gm", |
"author": { |
"name": "Jonathan Ong", |
"email": "me@jongleberry.com", |
"url": "http://jongleberry.com" |
}, |
"bugs": { |
"url": "https://github.com/component/array-parallel/issues", |
"email": "me@jongleberry.com" |
}, |
"bundleDependencies": false, |
"deprecated": false, |
"description": "Call an array of asynchronous functions in parallel", |
"homepage": "https://github.com/component/array-parallel#readme", |
"license": "MIT", |
"name": "array-parallel", |
"repository": { |
"type": "git", |
"url": "git+https://github.com/component/array-parallel.git" |
}, |
"scripts": { |
"test": "node test" |
}, |
"version": "0.1.3" |
} |
/compass/005_compass/compass/node_modules/array-parallel/test.js |
@@ -0,0 +1,62 @@ |
var assert = require('assert') |
var parallel = require('./') |
|
var a, b, c |
parallel([ |
function (done) { |
setTimeout(function () { |
done(null, a = 0) |
}, 5) |
}, |
function (done) { |
setTimeout(function () { |
done(null, b = 1) |
}, 10) |
}, |
function (done) { |
setTimeout(function () { |
done(null, c = 2) |
}, 15) |
} |
], function (err, results) { |
assert.equal(a, 0) |
assert.equal(b, 1) |
assert.equal(c, 2) |
|
assert.deepEqual(results, [0, 1, 2]) |
}) |
|
var d, e |
parallel([ |
function (done) { |
setTimeout(function () { |
d = 1 |
done(new Error('message')) |
}, 5) |
}, |
function (done) { |
setTimeout(function () { |
e = 2 |
done() |
}, 10) |
} |
], function (err) { |
assert.equal(err.message, 'message') |
assert.equal(d, 1) |
assert.equal(e, undefined) |
}) |
|
var context = 'hello' |
parallel([function (done) { |
assert.equal(this, context) |
}], context) |
|
var f |
parallel([function (done) { |
f = true |
done() |
}]) |
|
process.nextTick(function () { |
assert.equal(f, true) |
}) |