[Pkg-javascript-commits] [node-array-parallel] 01/04: Imported Upstream version 0.1.3
Thorsten Alteholz
alteholz at moszumanska.debian.org
Thu Feb 4 19:01:40 UTC 2016
This is an automated email from the git hooks/post-receive script.
alteholz pushed a commit to branch master
in repository node-array-parallel.
commit 765c27f71ba12833e3d0e357ec04bb17457c8053
Author: Thorsten Alteholz <debian at alteholz.de>
Date: Thu Feb 4 20:01:28 2016 +0100
Imported Upstream version 0.1.3
---
.gitignore | 58 +++++++++++++++++++++++++++++++++++++++++++
.travis.yml | 6 +++++
README.md | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
component.json | 11 +++++++++
index.js | 40 ++++++++++++++++++++++++++++++
package.json | 23 +++++++++++++++++
test.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++
7 files changed, 278 insertions(+)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..03622f0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,58 @@
+# Compiled source #
+###################
+*.com
+*.class
+*.dll
+*.exe
+*.o
+*.so
+
+# Packages #
+############
+# it's better to unpack these files and commit the raw source
+# git has its own built in compression methods
+*.7z
+*.dmg
+*.gz
+*.iso
+*.jar
+*.rar
+*.tar
+*.zip
+
+# Logs and databases #
+######################
+*.log
+*.sql
+*.sqlite
+
+# OS generated files #
+######################
+.DS_Store*
+ehthumbs.db
+Icon?
+Thumbs.db
+
+# Node.js #
+###########
+lib-cov
+*.seed
+*.log
+*.csv
+*.dat
+*.out
+*.pid
+*.gz
+
+pids
+logs
+results
+
+node_modules
+npm-debug.log
+
+# Components #
+##############
+
+/build
+/components
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..8150243
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,6 @@
+language: node_js
+node_js:
+ - "0.4"
+ - "0.6"
+ - "0.8"
+ - "0.10"
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..47d32f3
--- /dev/null
+++ b/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 at 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.
diff --git a/component.json b/component.json
new file mode 100644
index 0000000..2a4a859
--- /dev/null
+++ b/component.json
@@ -0,0 +1,11 @@
+{
+ "name": "array-parallel",
+ "description": "Call an array of asynchronous functions in parallel",
+ "repo": "array-parallel",
+ "version": "0.1.3",
+ "main": "index.js",
+ "scripts": [
+ "index.js"
+ ],
+ "license": "MIT"
+}
\ No newline at end of file
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..ccd193e
--- /dev/null
+++ b/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() {}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..12e1f26
--- /dev/null
+++ b/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "array-parallel",
+ "description": "Call an array of asynchronous functions in parallel",
+ "version": "0.1.3",
+ "scripts": {
+ "test": "node test"
+ },
+ "author": {
+ "name": "Jonathan Ong",
+ "email": "me at jongleberry.com",
+ "url": "http://jongleberry.com",
+ "twitter": "https://twitter.com/jongleberry"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/component/array-parallel.git"
+ },
+ "bugs": {
+ "url": "https://github.com/component/array-parallel/issues",
+ "email": "me at jongleberry.com"
+ },
+ "license": "MIT"
+}
diff --git a/test.js b/test.js
new file mode 100644
index 0000000..d2266ce
--- /dev/null
+++ b/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)
+})
\ No newline at end of file
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-array-parallel.git
More information about the Pkg-javascript-commits
mailing list