UNPKG

@intlayer/chokidar

Version:

Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.

27 lines (25 loc) 1.19 kB
import { pLimit } from "./pLimit.mjs"; //#region src/utils/parallelizeGlobal.ts let _globalLimiter = null; /** Get (and optionally configure) the single, shared limiter. */ const getGlobalLimiter = (concurrency) => { if (!_globalLimiter) _globalLimiter = 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 = 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 export { getGlobalLimiter, getTaskLimiter, parallelizeGlobal }; //# sourceMappingURL=parallelizeGlobal.mjs.map