@intlayer/chokidar
Version:
Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.
30 lines (28 loc) • 1.39 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_utils_pLimit = require('./pLimit.cjs');
//#region src/utils/parallelizeGlobal.ts
let _globalLimiter = null;
/** Get (and optionally configure) the single, shared limiter. */
const getGlobalLimiter = (concurrency) => {
if (!_globalLimiter) _globalLimiter = require_utils_pLimit.pLimit(concurrency ?? 10);
else if (typeof concurrency === "number") _globalLimiter.concurrency = concurrency;
return _globalLimiter;
};
let _taskLimiter = null;
/** Limits how many *tasks* run concurrently (independent from AI calls). */
const getTaskLimiter = (concurrency) => {
if (!_taskLimiter) _taskLimiter = require_utils_pLimit.pLimit(concurrency ?? 5);
else if (typeof concurrency === "number") _taskLimiter.concurrency = concurrency;
return _taskLimiter;
};
const parallelizeGlobal = async (items, callback = async (item) => item, options) => {
const limiter = options?.limiter ?? getGlobalLimiter(options?.concurrency);
const run = options?.wrapInLimiter ?? true ? (fn) => limiter(fn) : (fn) => fn();
const promises = items.map((item, index) => run(() => callback(item, index)));
return Promise.all(promises);
};
//#endregion
exports.getGlobalLimiter = getGlobalLimiter;
exports.getTaskLimiter = getTaskLimiter;
exports.parallelizeGlobal = parallelizeGlobal;
//# sourceMappingURL=parallelizeGlobal.cjs.map