Skip to content

Commit b020386

Browse files
committed
update build files, include them in npm package
1 parent 7db25c7 commit b020386

File tree

5 files changed

+58
-30
lines changed

5 files changed

+58
-30
lines changed

Makefile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ all: lint test clean build
1010

1111
build: $(wildcard lib/*.js)
1212
mkdir -p $(BUILDDIR)
13-
cp $(SRC) $(BUILDDIR)/async.js
14-
cd $(BUILDDIR) && uglifyjs async.js -mc --source-map async.min.map -o async.min.js
13+
cp $(SRC) async.js
14+
uglifyjs $(BUILDDIR)/async.js -mc \
15+
--source-map $(BUILDDIR)/async.min.map \
16+
-o $(BUILDDIR)/async.min.js
1517

1618
test:
1719
nodeunit test

dist/async.js

Lines changed: 48 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,6 @@
7777
);
7878
}
7979

80-
function _each(coll, iterator) {
81-
return _isArrayLike(coll) ?
82-
_arrayEach(coll, iterator) :
83-
_forEachOf(coll, iterator);
84-
}
85-
8680
function _arrayEach(arr, iterator) {
8781
var index = -1,
8882
length = arr.length;
@@ -230,23 +224,26 @@
230224
async.eachOf = function (object, iterator, callback) {
231225
callback = _once(callback || noop);
232226
object = object || [];
233-
var size = _isArrayLike(object) ? object.length : _keys(object).length;
234-
var completed = 0;
235-
if (!size) {
236-
return callback(null);
237-
}
238-
_each(object, function (value, key) {
227+
228+
var iter = _keyIterator(object);
229+
var key, completed = 0;
230+
231+
while ((key = iter()) != null) {
232+
completed += 1;
239233
iterator(object[key], key, only_once(done));
240-
});
234+
}
235+
236+
if (completed === 0) callback(null);
237+
241238
function done(err) {
239+
completed--;
242240
if (err) {
243241
callback(err);
244242
}
245-
else {
246-
completed += 1;
247-
if (completed >= size) {
248-
callback(null);
249-
}
243+
// Check key is null in case iterator isn't exhausted
244+
// and done resolved synchronously.
245+
else if (key === null && completed <= 0) {
246+
callback(null);
250247
}
251248
}
252249
};
@@ -272,7 +269,7 @@
272269
return callback(null);
273270
} else {
274271
if (sync) {
275-
async.nextTick(iterate);
272+
async.setImmediate(iterate);
276273
} else {
277274
iterate();
278275
}
@@ -353,7 +350,8 @@
353350

354351
function _asyncMap(eachfn, arr, iterator, callback) {
355352
callback = _once(callback || noop);
356-
var results = [];
353+
arr = arr || [];
354+
var results = _isArrayLike(arr) ? [] : {};
357355
eachfn(arr, function (value, index, callback) {
358356
iterator(value, function (err, v) {
359357
results[index] = v;
@@ -379,7 +377,7 @@
379377
callback(err);
380378
});
381379
}, function (err) {
382-
callback(err || null, memo);
380+
callback(err, memo);
383381
});
384382
};
385383

@@ -389,6 +387,20 @@
389387
async.reduce(reversed, memo, iterator, callback);
390388
};
391389

390+
async.transform = function (arr, memo, iterator, callback) {
391+
if (arguments.length === 3) {
392+
callback = iterator;
393+
iterator = memo;
394+
memo = _isArray(arr) ? [] : {};
395+
}
396+
397+
async.eachOf(arr, function(v, k, cb) {
398+
iterator(memo, v, k, cb);
399+
}, function(err) {
400+
callback(err, memo);
401+
});
402+
};
403+
392404
function _filter(eachfn, arr, iterator, callback) {
393405
var results = [];
394406
eachfn(arr, function (x, index, callback) {
@@ -497,15 +509,24 @@
497509
}
498510
};
499511

500-
async.auto = function (tasks, callback) {
512+
async.auto = function (tasks, concurrency, callback) {
513+
if (!callback) {
514+
// concurrency is optional, shift the args.
515+
callback = concurrency;
516+
concurrency = null;
517+
}
501518
callback = _once(callback || noop);
502519
var keys = _keys(tasks);
503520
var remainingTasks = keys.length;
504521
if (!remainingTasks) {
505522
return callback(null);
506523
}
524+
if (!concurrency) {
525+
concurrency = remainingTasks;
526+
}
507527

508528
var results = {};
529+
var runningTasks = 0;
509530

510531
var listeners = [];
511532
function addListener(fn) {
@@ -531,6 +552,7 @@
531552
_arrayEach(keys, function (k) {
532553
var task = _isArray(tasks[k]) ? tasks[k]: [tasks[k]];
533554
var taskCallback = _restParam(function(err, args) {
555+
runningTasks--;
534556
if (args.length <= 1) {
535557
args = args[0];
536558
}
@@ -560,18 +582,20 @@
560582
}
561583
}
562584
function ready() {
563-
return _reduce(requires, function (a, x) {
585+
return runningTasks < concurrency && _reduce(requires, function (a, x) {
564586
return (a && results.hasOwnProperty(x));
565587
}, true) && !results.hasOwnProperty(k);
566588
}
567589
if (ready()) {
590+
runningTasks++;
568591
task[task.length - 1](taskCallback, results);
569592
}
570593
else {
571594
addListener(listener);
572595
}
573596
function listener() {
574597
if (ready()) {
598+
runningTasks++;
575599
removeListener(listener);
576600
task[task.length - 1](taskCallback, results);
577601
}
@@ -1062,7 +1086,7 @@
10621086
var callback = args.pop();
10631087
var key = hasher.apply(null, args);
10641088
if (key in memo) {
1065-
async.nextTick(function () {
1089+
async.setImmediate(function () {
10661090
callback.apply(null, memo[key]);
10671091
});
10681092
}

dist/async.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)