Files
SnowLuma/.pnpm-store/v11/files/b8/c3ecb2735998073acb6785b3c6cecd8b20580f0ae170ffb981fcf23ad547a8d53b8248871da9e38804bad93f558c13bfd38914f28e05e90cd725e89f6e5420
TanTan 2a69b23b47
Dev Build / cleanup (push) Canceled after 0s
Dev Build / typecheck (push) Canceled after 0s
Dev Build / build (linux-arm64, ubuntu-24.04-arm, linux-arm64) (push) Canceled after 0s
Dev Build / build (linux-x64, ubuntu-latest, linux-x64) (push) Canceled after 0s
Dev Build / build (win-x64, windows-latest, win32-x64) (push) Canceled after 0s
Dev Build / dispatch-dev-docker (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:27:07 +08:00

32 lines
896 B
Plaintext

Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
//#region src/utils/concurrent.ts
/**
* @module
* Concurrent utility.
*/
const DEFAULT_CONCURRENCY = 1024;
const createPool = ({ concurrency, interval } = {}) => {
concurrency ||= DEFAULT_CONCURRENCY;
if (concurrency === Infinity) return { run: async (fn) => fn() };
const pool = /* @__PURE__ */ new Set();
const run = async (fn, promise, resolve) => {
if (pool.size >= concurrency) {
promise ||= new Promise((r) => resolve = r);
setTimeout(() => run(fn, promise, resolve));
return promise;
}
const marker = {};
pool.add(marker);
const result = await fn();
if (interval) setTimeout(() => pool.delete(marker), interval);
else pool.delete(marker);
if (resolve) {
resolve(result);
return promise;
} else return result;
};
return { run };
};
//#endregion
exports.createPool = createPool;