[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