diff options
author | --global <alexander.early@gmail.com> | 2016-01-15 17:59:41 -0800 |
---|---|---|
committer | --global <alexander.early@gmail.com> | 2016-01-15 17:59:41 -0800 |
commit | af0a2edfab9ded3f32165c6cfac0389b852a2071 (patch) | |
tree | 71b24da7bcf737c1bf973466de77770cba219bd5 /build/eachOf.js | |
parent | f984553b9d5a2d4600b599ec6746c459707c7338 (diff) | |
download | async-af0a2edfab9ded3f32165c6cfac0389b852a2071.tar.gz |
rename build files, add smoke test for build
Diffstat (limited to 'build/eachOf.js')
-rw-r--r-- | build/eachOf.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/build/eachOf.js b/build/eachOf.js new file mode 100644 index 0000000..31214fa --- /dev/null +++ b/build/eachOf.js @@ -0,0 +1,53 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = eachOf; + +var _once = require('lodash/once'); + +var _once2 = _interopRequireDefault(_once); + +var _noop = require('lodash/noop'); + +var _noop2 = _interopRequireDefault(_noop); + +var _keyIterator = require('./internal/keyIterator'); + +var _keyIterator2 = _interopRequireDefault(_keyIterator); + +var _onlyOnce = require('./internal/onlyOnce'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function eachOf(object, iterator, callback) { + callback = (0, _once2.default)(callback || _noop2.default); + object = object || []; + + var iter = (0, _keyIterator2.default)(object); + var key, + completed = 0; + + while ((key = iter()) != null) { + completed += 1; + iterator(object[key], key, (0, _onlyOnce2.default)(done)); + } + + if (completed === 0) callback(null); + + function done(err) { + completed--; + if (err) { + callback(err); + } + // Check key is null in case iterator isn't exhausted + // and done resolved synchronously. + else if (key === null && completed <= 0) { + callback(null); + } + } +} +module.exports = exports['default'];
\ No newline at end of file |