summaryrefslogtreecommitdiff
path: root/build-es/auto.js
diff options
context:
space:
mode:
Diffstat (limited to 'build-es/auto.js')
-rw-r--r--build-es/auto.js114
1 files changed, 0 insertions, 114 deletions
diff --git a/build-es/auto.js b/build-es/auto.js
deleted file mode 100644
index ad5d081..0000000
--- a/build-es/auto.js
+++ /dev/null
@@ -1,114 +0,0 @@
-'use strict';
-
-import arrayEach from 'lodash-es/_arrayEach';
-import arrayEvery from 'lodash-es/_arrayEvery';
-import baseHas from 'lodash-es/_baseHas';
-import forOwn from 'lodash-es/forOwn';
-import indexOf from 'lodash-es/indexOf';
-import isArray from 'lodash-es/isArray';
-import okeys from 'lodash-es/keys';
-import noop from 'lodash-es/noop';
-import once from 'lodash-es/once';
-import rest from 'lodash-es/rest';
-
-import setImmediate from './internal/setImmediate';
-
-export default function (tasks, concurrency, callback) {
- if (typeof arguments[1] === 'function') {
- // concurrency is optional, shift the args.
- callback = concurrency;
- concurrency = null;
- }
- callback = once(callback || noop);
- var keys = okeys(tasks);
- var remainingTasks = keys.length;
- if (!remainingTasks) {
- return callback(null);
- }
- if (!concurrency) {
- concurrency = remainingTasks;
- }
-
- var results = {};
- var runningTasks = 0;
- var hasError = false;
-
- var listeners = [];
- function addListener(fn) {
- listeners.unshift(fn);
- }
- function removeListener(fn) {
- var idx = indexOf(listeners, fn);
- if (idx >= 0) listeners.splice(idx, 1);
- }
- function taskComplete() {
- remainingTasks--;
- arrayEach(listeners.slice(), function (fn) {
- fn();
- });
- }
-
- addListener(function () {
- if (!remainingTasks) {
- callback(null, results);
- }
- });
-
- arrayEach(keys, function (k) {
- if (hasError) return;
- var task = isArray(tasks[k]) ? tasks[k]: [tasks[k]];
- var taskCallback = rest(function(err, args) {
- runningTasks--;
- if (args.length <= 1) {
- args = args[0];
- }
- if (err) {
- var safeResults = {};
- forOwn(results, function(val, rkey) {
- safeResults[rkey] = val;
- });
- safeResults[k] = args;
- hasError = true;
-
- callback(err, safeResults);
- }
- else {
- results[k] = args;
- setImmediate(taskComplete);
- }
- });
- var requires = task.slice(0, task.length - 1);
- // prevent dead-locks
- var len = requires.length;
- var dep;
- while (len--) {
- if (!(dep = tasks[requires[len]])) {
- throw new Error('Has non-existent dependency in ' +
- requires.join(', '));
- }
- if (isArray(dep) && indexOf(dep, k) >= 0) {
- throw new Error('Has cyclic dependencies');
- }
- }
- function ready() {
- return runningTasks < concurrency && !baseHas(results, k) &&
- arrayEvery(requires, function (x) {
- return baseHas(results, x);
- });
- }
- if (ready()) {
- runningTasks++;
- task[task.length - 1](taskCallback, results);
- }
- else {
- addListener(listener);
- }
- function listener() {
- if (ready()) {
- runningTasks++;
- removeListener(listener);
- task[task.length - 1](taskCallback, results);
- }
- }
- });
-}