UNPKG

@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
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