aboutsummaryrefslogtreecommitdiff
path: root/node_modules/when/pipeline.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-10-10 03:43:44 +0200
committerFlorian Dold <florian.dold@gmail.com>2016-10-10 03:43:44 +0200
commitabd94a7f5a50f43c797a11b53549ae48fff667c3 (patch)
treeab8ed457f65cdd72e13e0571d2975729428f1551 /node_modules/when/pipeline.js
parenta0247c6a3fd6a09a41a7e35a3441324c4dcb58be (diff)
downloadwallet-core-abd94a7f5a50f43c797a11b53549ae48fff667c3.tar.xz
add node_modules to address #4364
Diffstat (limited to 'node_modules/when/pipeline.js')
-rw-r--r--node_modules/when/pipeline.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/node_modules/when/pipeline.js b/node_modules/when/pipeline.js
new file mode 100644
index 000000000..e5c0bd3b9
--- /dev/null
+++ b/node_modules/when/pipeline.js
@@ -0,0 +1,50 @@
+/** @license MIT License (c) copyright 2011-2013 original author or authors */
+
+/**
+ * pipeline.js
+ *
+ * Run a set of task functions in sequence, passing the result
+ * of the previous as an argument to the next. Like a shell
+ * pipeline, e.g. `cat file.txt | grep 'foo' | sed -e 's/foo/bar/g'
+ *
+ * @author Brian Cavalier
+ * @author John Hann
+ */
+
+(function(define) {
+define(function(require) {
+
+ var when = require('./when');
+ var all = when.Promise.all;
+ var slice = Array.prototype.slice;
+
+ /**
+ * Run array of tasks in a pipeline where the next
+ * tasks receives the result of the previous. The first task
+ * will receive the initialArgs as its argument list.
+ * @param tasks {Array|Promise} array or promise for array of task functions
+ * @param [initialArgs...] {*} arguments to be passed to the first task
+ * @return {Promise} promise for return value of the final task
+ */
+ return function pipeline(tasks /* initialArgs... */) {
+ // Self-optimizing function to run first task with multiple
+ // args using apply, but subsequence tasks via direct invocation
+ var runTask = function(args, task) {
+ runTask = function(arg, task) {
+ return task(arg);
+ };
+
+ return task.apply(null, args);
+ };
+
+ return all(slice.call(arguments, 1)).then(function(args) {
+ return when.reduce(tasks, function(arg, task) {
+ return runTask(arg, task);
+ }, args);
+ });
+ };
+
+});
+})(typeof define === 'function' && define.amd ? define : function (factory) { module.exports = factory(require); });
+
+