CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
forEachOf.js185 linesDownload Raw Back to async
1'use strict';2 3Object.defineProperty(exports, "__esModule", {4    value: true5});6 7var _isArrayLike = require('./internal/isArrayLike.js');8 9var _isArrayLike2 = _interopRequireDefault(_isArrayLike);10 11var _breakLoop = require('./internal/breakLoop.js');12 13var _breakLoop2 = _interopRequireDefault(_breakLoop);14 15var _eachOfLimit = require('./eachOfLimit.js');16 17var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);18 19var _once = require('./internal/once.js');20 21var _once2 = _interopRequireDefault(_once);22 23var _onlyOnce = require('./internal/onlyOnce.js');24 25var _onlyOnce2 = _interopRequireDefault(_onlyOnce);26 27var _wrapAsync = require('./internal/wrapAsync.js');28 29var _wrapAsync2 = _interopRequireDefault(_wrapAsync);30 31var _awaitify = require('./internal/awaitify.js');32 33var _awaitify2 = _interopRequireDefault(_awaitify);34 35function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }36 37// eachOf implementation optimized for array-likes38function eachOfArrayLike(coll, iteratee, callback) {39    callback = (0, _once2.default)(callback);40    var index = 0,41        completed = 0,42        { length } = coll,43        canceled = false;44    if (length === 0) {45        callback(null);46    }47 48    function iteratorCallback(err, value) {49        if (err === false) {50            canceled = true;51        }52        if (canceled === true) return;53        if (err) {54            callback(err);55        } else if (++completed === length || value === _breakLoop2.default) {56            callback(null);57        }58    }59 60    for (; index < length; index++) {61        iteratee(coll[index], index, (0, _onlyOnce2.default)(iteratorCallback));62    }63}64 65// a generic version of eachOf which can handle array, object, and iterator cases.66function eachOfGeneric(coll, iteratee, callback) {67    return (0, _eachOfLimit2.default)(coll, Infinity, iteratee, callback);68}69 70/**71 * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument72 * to the iteratee.73 *74 * @name eachOf75 * @static76 * @memberOf module:Collections77 * @method78 * @alias forEachOf79 * @category Collection80 * @see [async.each]{@link module:Collections.each}81 * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.82 * @param {AsyncFunction} iteratee - A function to apply to each83 * item in `coll`.84 * The `key` is the item's key, or index in the case of an array.85 * Invoked with (item, key, callback).86 * @param {Function} [callback] - A callback which is called when all87 * `iteratee` functions have finished, or an error occurs. Invoked with (err).88 * @returns {Promise} a promise, if a callback is omitted89 * @example90 *91 * // dev.json is a file containing a valid json object config for dev environment92 * // dev.json is a file containing a valid json object config for test environment93 * // prod.json is a file containing a valid json object config for prod environment94 * // invalid.json is a file with a malformed json object95 *96 * let configs = {}; //global variable97 * let validConfigFileMap = {dev: 'dev.json', test: 'test.json', prod: 'prod.json'};98 * let invalidConfigFileMap = {dev: 'dev.json', test: 'test.json', invalid: 'invalid.json'};99 *100 * // asynchronous function that reads a json file and parses the contents as json object101 * function parseFile(file, key, callback) {102 *     fs.readFile(file, "utf8", function(err, data) {103 *         if (err) return calback(err);104 *         try {105 *             configs[key] = JSON.parse(data);106 *         } catch (e) {107 *             return callback(e);108 *         }109 *         callback();110 *     });111 * }112 *113 * // Using callbacks114 * async.forEachOf(validConfigFileMap, parseFile, function (err) {115 *     if (err) {116 *         console.error(err);117 *     } else {118 *         console.log(configs);119 *         // configs is now a map of JSON data, e.g.120 *         // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}121 *     }122 * });123 *124 * //Error handing125 * async.forEachOf(invalidConfigFileMap, parseFile, function (err) {126 *     if (err) {127 *         console.error(err);128 *         // JSON parse error exception129 *     } else {130 *         console.log(configs);131 *     }132 * });133 *134 * // Using Promises135 * async.forEachOf(validConfigFileMap, parseFile)136 * .then( () => {137 *     console.log(configs);138 *     // configs is now a map of JSON data, e.g.139 *     // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}140 * }).catch( err => {141 *     console.error(err);142 * });143 *144 * //Error handing145 * async.forEachOf(invalidConfigFileMap, parseFile)146 * .then( () => {147 *     console.log(configs);148 * }).catch( err => {149 *     console.error(err);150 *     // JSON parse error exception151 * });152 *153 * // Using async/await154 * async () => {155 *     try {156 *         let result = await async.forEachOf(validConfigFileMap, parseFile);157 *         console.log(configs);158 *         // configs is now a map of JSON data, e.g.159 *         // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}160 *     }161 *     catch (err) {162 *         console.log(err);163 *     }164 * }165 *166 * //Error handing167 * async () => {168 *     try {169 *         let result = await async.forEachOf(invalidConfigFileMap, parseFile);170 *         console.log(configs);171 *     }172 *     catch (err) {173 *         console.log(err);174 *         // JSON parse error exception175 *     }176 * }177 *178 */179function eachOf(coll, iteratee, callback) {180    var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric;181    return eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback);182}183 184exports.default = (0, _awaitify2.default)(eachOf, 3);185module.exports = exports.default;
basant307/AI_Governance_Project · CoolFace