summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraeme Yeates <yeatesgraeme@gmail.com>2015-12-23 18:29:52 -0500
committerGraeme Yeates <yeatesgraeme@gmail.com>2015-12-29 16:48:48 -0500
commit1448f24a5e7d5c4b9ff56ef573d35291511c2a71 (patch)
tree3efbaea4ef8ac80ef7c37bf1bcbdeeee5dd7dd81
parent18e61d4f07f48604601f2effdbe2a7e188d14d4a (diff)
downloadasync-1448f24a5e7d5c4b9ff56ef573d35291511c2a71.tar.gz
Fix implementations (test green lights)
-rw-r--r--.jscsrc5
-rw-r--r--.jshintrc1
-rw-r--r--lib/applyEach.js6
-rw-r--r--lib/applyEachSeries.js2
-rw-r--r--lib/auto.js45
-rw-r--r--lib/doWhilst.js2
-rw-r--r--lib/eachLimit.js2
-rw-r--r--lib/log.js5
-rw-r--r--lib/map.js8
-rw-r--r--lib/retry.js12
-rw-r--r--lib/timesLimit.js2
-rw-r--r--lib/unmemoize.js2
-rw-r--r--lib/waterfall.js15
-rw-r--r--package.json72
-rwxr-xr-xtest/test-async.js2
15 files changed, 64 insertions, 117 deletions
diff --git a/.jscsrc b/.jscsrc
index b8cfa17..3e93b59 100644
--- a/.jscsrc
+++ b/.jscsrc
@@ -1,3 +1,4 @@
{
- "validateIndentation": 4
-} \ No newline at end of file
+ "validateIndentation": 4,
+ "esnext": true
+}
diff --git a/.jshintrc b/.jshintrc
index 76be34a..85f0274 100644
--- a/.jshintrc
+++ b/.jshintrc
@@ -9,6 +9,7 @@
"trailing": true,
"evil": true,
"laxcomma": true,
+ "esnext": true,
// Relaxing options
"onevar": false,
diff --git a/lib/applyEach.js b/lib/applyEach.js
index 90d2d6f..2c5f001 100644
--- a/lib/applyEach.js
+++ b/lib/applyEach.js
@@ -1,6 +1,6 @@
'use strict';
-import eachOf from './eachof';
-var applyEach = require('async.util.applyeach');
+import applyEach from './internal/applyEach';
+import eachOf from './eachOf';
-export default applyEach(eachOf);
+export default applyEach(eachOf);
diff --git a/lib/applyEachSeries.js b/lib/applyEachSeries.js
index cf7577e..e917618 100644
--- a/lib/applyEachSeries.js
+++ b/lib/applyEachSeries.js
@@ -1,6 +1,6 @@
'use strict';
+import applyEach from './internal/applyEach';
import eachOfSeries from './eachOfSeries';
-import applyEach from './applyEach';
export default applyEach(eachOfSeries);
diff --git a/lib/auto.js b/lib/auto.js
index e48735c..82ad468 100644
--- a/lib/auto.js
+++ b/lib/auto.js
@@ -1,28 +1,28 @@
'use strict';
import arrayEach from 'lodash/internal/arrayEach';
+import arrayEvery from 'lodash/internal/arrayEvery';
import forOwn from 'lodash/object/forOwn';
import indexOf from 'lodash/array/indexOf';
import isArray from 'lodash/lang/isArray';
-import keys from 'lodash/object/keys';
+import okeys from 'lodash/object/keys';
import noop from 'lodash/utility/noop';
import once from 'lodash/function/once';
import restParam from 'lodash/function/restParam';
-import reduce from './reduce';
import setImmediate from './internal/setImmediate';
-export default function auto(tasks, concurrency, cb) {
+export default function (tasks, concurrency, callback) {
if (typeof arguments[1] === 'function') {
// concurrency is optional, shift the args.
- cb = concurrency;
+ callback = concurrency;
concurrency = null;
}
- cb = once(cb || noop);
- var okeys = keys(tasks);
- var remainingTasks = okeys.length;
+ callback = once(callback || noop);
+ var keys = okeys(tasks);
+ var remainingTasks = keys.length;
if (!remainingTasks) {
- return cb(null);
+ return callback(null);
}
if (!concurrency) {
concurrency = remainingTasks;
@@ -32,31 +32,28 @@ export default function auto(tasks, concurrency, cb) {
var runningTasks = 0;
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, function(fn) {
+ arrayEach(listeners.slice(), function (fn) {
fn();
});
}
- addListener(function() {
+ addListener(function () {
if (!remainingTasks) {
- cb(null, results);
+ callback(null, results);
}
});
- arrayEach(okeys, function(k) {
- var task = isArray(tasks[k]) ? tasks[k] : [tasks[k]];
+ arrayEach(keys, function (k) {
+ var task = isArray(tasks[k]) ? tasks[k]: [tasks[k]];
var taskCallback = restParam(function(err, args) {
runningTasks--;
if (args.length <= 1) {
@@ -68,8 +65,9 @@ export default function auto(tasks, concurrency, cb) {
safeResults[rkey] = val;
});
safeResults[k] = args;
- cb(err, safeResults);
- } else {
+ callback(err, safeResults);
+ }
+ else {
results[k] = args;
setImmediate(taskComplete);
}
@@ -86,19 +84,18 @@ export default function auto(tasks, concurrency, cb) {
throw new Error('Has cyclic dependencies');
}
}
-
function ready() {
- return runningTasks < concurrency && reduce(requires, function(a, x) {
- return (a && results.hasOwnProperty(x));
- }, true) && !results.hasOwnProperty(k);
+ return runningTasks < concurrency && arrayEvery(requires, function (x) {
+ return results.hasOwnProperty(x);
+ }) && !results.hasOwnProperty(k);
}
if (ready()) {
runningTasks++;
task[task.length - 1](taskCallback, results);
- } else {
+ }
+ else {
addListener(listener);
}
-
function listener() {
if (ready()) {
runningTasks++;
diff --git a/lib/doWhilst.js b/lib/doWhilst.js
index 0603f2a..b05d1d8 100644
--- a/lib/doWhilst.js
+++ b/lib/doWhilst.js
@@ -7,4 +7,4 @@ export default function doWhilst(iterator, test, cb) {
return whilst(function() {
return ++calls <= 1 || test.apply(this, arguments);
}, iterator, cb);
-};
+}
diff --git a/lib/eachLimit.js b/lib/eachLimit.js
index 811a99a..5009cc3 100644
--- a/lib/eachLimit.js
+++ b/lib/eachLimit.js
@@ -1,6 +1,6 @@
'use strict';
-import eachOfLimit from './eachOfLimit';
+import eachOfLimit from './internal/eachOfLimit';
import withoutIndex from './internal/withoutIndex';
diff --git a/lib/log.js b/lib/log.js
index 892c91f..b581264 100644
--- a/lib/log.js
+++ b/lib/log.js
@@ -1,2 +1,5 @@
'use strict';
-export default require('async.util.consolefn')('log');
+
+import consoleFunc from './internal/consoleFunc';
+
+export default consoleFunc('log');
diff --git a/lib/map.js b/lib/map.js
index 9a02059..2a8449c 100644
--- a/lib/map.js
+++ b/lib/map.js
@@ -1,4 +1,6 @@
'use strict';
-var mapAsync = require('async.util.mapasync');
-var doParallel = require('async.util.doparallel');
-export default doParallel(mapAsync);
+
+import doParallel from './internal/doParallel';
+import map from './internal/map';
+
+export default doParallel(map);
diff --git a/lib/retry.js b/lib/retry.js
index 9ed4c0e..506a424 100644
--- a/lib/retry.js
+++ b/lib/retry.js
@@ -2,7 +2,7 @@
import series from './series';
-export default function retry(times, task, cb) {
+export default function retry(times, task, callback) {
var DEFAULT_TIMES = 5;
var DEFAULT_INTERVAL = 0;
@@ -28,13 +28,13 @@ export default function retry(times, task, cb) {
if (length < 1 || length > 3) {
throw new Error('Invalid arguments - must be either (task), (task, callback), (times, task) or (times, task, callback)');
} else if (length <= 2 && typeof times === 'function') {
- cb = task;
+ callback = task;
task = times;
}
if (typeof times !== 'function') {
parseTimes(opts, times);
}
- opts.cb = cb;
+ opts.callback = callback;
opts.task = task;
function wrappedTask(wrappedCallback, wrappedResults) {
@@ -68,10 +68,10 @@ export default function retry(times, task, cb) {
series(attempts, function(done, data) {
data = data[data.length - 1];
- (wrappedCallback || opts.cb)(data.err, data.result);
+ (wrappedCallback || opts.callback)(data.err, data.result);
});
}
// If a callback is passed, run this as a controll flow
- return opts.cb ? wrappedTask() : wrappedTask;
-};
+ return opts.callback ? wrappedTask() : wrappedTask;
+}
diff --git a/lib/timesLimit.js b/lib/timesLimit.js
index fa36020..d2af3d9 100644
--- a/lib/timesLimit.js
+++ b/lib/timesLimit.js
@@ -5,4 +5,4 @@ import range from 'lodash/utility/range';
export default function timeLimit(count, limit, iterator, cb) {
return mapLimit(range(0, count), limit, iterator, cb);
-};
+}
diff --git a/lib/unmemoize.js b/lib/unmemoize.js
index 9d4aa56..d652e7b 100644
--- a/lib/unmemoize.js
+++ b/lib/unmemoize.js
@@ -4,4 +4,4 @@ export default function unmemoize(fn) {
return function () {
return (fn.unmemoized || fn).apply(null, arguments);
};
-};
+}
diff --git a/lib/waterfall.js b/lib/waterfall.js
index 54f111c..d82d344 100644
--- a/lib/waterfall.js
+++ b/lib/waterfall.js
@@ -1,11 +1,12 @@
'use strict';
-var once = require('async.util.once');
-var noop = require('async.util.noop');
-var isArray = require('async.util.isarray');
-var restParam = require('async.util.restparam');
-var ensureAsync = require('async.util.ensureasync');
-var iterator = require('async.iterator');
+import isArray from 'lodash/lang/isArray';
+import noop from 'lodash/utility/noop';
+import once from 'lodash/function/once';
+import restParam from 'lodash/function/restParam';
+
+import ensureAsync from './ensureAsync';
+import iterator from './iterator';
export default function(tasks, cb) {
cb = once(cb || noop);
@@ -28,4 +29,4 @@ export default function(tasks, cb) {
});
}
wrapIterator(iterator(tasks))();
-};
+}
diff --git a/package.json b/package.json
index 03d8b23..b05a4e0 100644
--- a/package.json
+++ b/package.json
@@ -17,71 +17,10 @@
"module",
"utility"
],
- "dependencies": {
- "async.nexttick": "^0.5.1",
- "async.setimmediate": "^0.5.1",
- "async.each": "^0.5.1",
- "async.eachseries": "^0.5.1",
- "async.eachlimit": "^0.5.1",
- "async.eachof": "^0.5.1",
- "async.eachofseries": "^0.5.1",
- "async.eachoflimit": "^0.5.1",
- "async.map": "^0.5.1",
- "async.mapseries": "^0.5.1",
- "async.maplimit": "^0.5.1",
- "async.reduce": "^0.5.1",
- "async.reduceright": "^0.5.1",
- "async.transform": "^0.5.1",
- "async.filter": "^0.5.1",
- "async.filterlimit": "^0.5.1",
- "async.filterseries": "^0.5.1",
- "async.reject": "^0.5.1",
- "async.rejectlimit": "^0.5.1",
- "async.rejectseries": "^0.5.1",
- "async.some": "^0.5.1",
- "async.somelimit": "^0.5.1",
- "async.every": "^0.5.1",
- "async.everylimit": "^0.5.1",
- "async.detect": "^0.5.1",
- "async.detectseries": "^0.5.1",
- "async.detectlimit": "^0.5.1",
- "async.sortby": "^0.5.1",
- "async.auto": "git://github.com/async-js/async.auto.git",
- "async.retry": "^0.5.1",
- "async.waterfall": "^0.5.1",
- "async.parallel": "^0.5.1",
- "async.parallellimit": "^0.5.1",
- "async.series": "^0.5.1",
- "async.iterator": "^0.5.1",
- "async.apply": "^0.5.1",
- "async.concat": "^0.5.1",
- "async.concatseries": "^0.5.1",
- "async.whilst": "^0.5.1",
- "async.dowhilst": "^0.5.1",
- "async.until": "^0.5.1",
- "async.dountil": "^0.5.1",
- "async.during": "^0.5.1",
- "async.doduring": "^0.5.1",
- "async.queue": "^0.5.1",
- "async.priorityqueue": "^0.5.1",
- "async.cargo": "^0.5.1",
- "async.log": "^0.5.1",
- "async.dir": "^0.5.1",
- "async.memoize": "^0.5.1",
- "async.unmemoize": "^0.5.1",
- "async.times": "^0.5.1",
- "async.timesseries": "^0.5.1",
- "async.timeslimit": "^0.5.1",
- "async.seq": "^0.5.1",
- "async.compose": "^0.5.1",
- "async.applyeach": "^0.5.1",
- "async.applyeachseries": "^0.5.1",
- "async.forever": "^0.5.1",
- "async.ensureasync": "^0.5.1",
- "async.constant": "^0.5.1",
- "async.asyncify": "^0.5.1"
- },
+ "dependencies": {},
"devDependencies": {
+ "babel-core": "^6.3.26",
+ "babel-preset-es2015": "^6.3.13",
"benchmark": "bestiejs/benchmark.js",
"bluebird": "^2.9.32",
"chai": "^3.1.0",
@@ -96,13 +35,14 @@
"karma-firefox-launcher": "^0.1.6",
"karma-mocha": "^0.2.0",
"karma-mocha-reporter": "^1.0.2",
- "lodash": "^3.9.0",
+ "lodash": "^3.10.1",
"lodash.template": "~3.6.2",
"mkdirp": "~0.5.1",
"mocha": "^2.2.5",
"native-promise-only": "^0.8.0-a",
"nodeunit": ">0.0.0",
"nyc": "^2.1.0",
+ "rollup": "^0.22.0",
"rsvp": "^3.0.18",
"semver": "^4.3.6",
"uglify-js": "~2.4.0",
@@ -121,7 +61,7 @@
"coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls",
"lint": "jshint lib/*.js test/*.js perf/*.js && jscs lib/*.js test/*.js perf/*.js",
"mocha-browser-test": "karma start",
- "mocha-node-test": "mocha mocha_test/",
+ "mocha-node-test": "mocha mocha_test/ --compilers js:babel-core/register",
"mocha-test": "npm run mocha-node-test && npm run mocha-browser-test",
"nodeunit-test": "nodeunit test/test-async.js",
"test": "npm run-script lint && npm run nodeunit-test && npm run mocha-test"
diff --git a/test/test-async.js b/test/test-async.js
index a0be51b..34771f1 100755
--- a/test/test-async.js
+++ b/test/test-async.js
@@ -3,6 +3,7 @@
* adding a new test, consider creating a new spec file in mocha_tests/
*/
+require('babel-core/register');
var async = require('../lib');
if (!Function.prototype.bind) {
@@ -291,6 +292,7 @@ exports['seq without callback'] = function (test) {
};
exports['auto'] = function(test){
+ test.expect(2);
var callOrder = [];
async.auto({
task1: ['task2', function(callback){