diff options
author | Graeme Yeates <yeatesgraeme@gmail.com> | 2015-12-23 18:29:52 -0500 |
---|---|---|
committer | Graeme Yeates <yeatesgraeme@gmail.com> | 2015-12-29 16:48:48 -0500 |
commit | 1448f24a5e7d5c4b9ff56ef573d35291511c2a71 (patch) | |
tree | 3efbaea4ef8ac80ef7c37bf1bcbdeeee5dd7dd81 | |
parent | 18e61d4f07f48604601f2effdbe2a7e188d14d4a (diff) | |
download | async-1448f24a5e7d5c4b9ff56ef573d35291511c2a71.tar.gz |
Fix implementations (test green lights)
-rw-r--r-- | .jscsrc | 5 | ||||
-rw-r--r-- | .jshintrc | 1 | ||||
-rw-r--r-- | lib/applyEach.js | 6 | ||||
-rw-r--r-- | lib/applyEachSeries.js | 2 | ||||
-rw-r--r-- | lib/auto.js | 45 | ||||
-rw-r--r-- | lib/doWhilst.js | 2 | ||||
-rw-r--r-- | lib/eachLimit.js | 2 | ||||
-rw-r--r-- | lib/log.js | 5 | ||||
-rw-r--r-- | lib/map.js | 8 | ||||
-rw-r--r-- | lib/retry.js | 12 | ||||
-rw-r--r-- | lib/timesLimit.js | 2 | ||||
-rw-r--r-- | lib/unmemoize.js | 2 | ||||
-rw-r--r-- | lib/waterfall.js | 15 | ||||
-rw-r--r-- | package.json | 72 | ||||
-rwxr-xr-x | test/test-async.js | 2 |
15 files changed, 64 insertions, 117 deletions
@@ -1,3 +1,4 @@ { - "validateIndentation": 4 -}
\ No newline at end of file + "validateIndentation": 4, + "esnext": true +} @@ -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'; @@ -1,2 +1,5 @@ 'use strict'; -export default require('async.util.consolefn')('log'); + +import consoleFunc from './internal/consoleFunc'; + +export default consoleFunc('log'); @@ -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){ |