@krlwlfrt/async-pool
Advanced tools
Comparing version 1.0.0 to 1.1.0
@@ -12,3 +12,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.asyncPool = void 0; | ||
exports.asyncPool = asyncPool; | ||
function asyncPool(poolLimit, items, iteratorFunction) { | ||
@@ -32,3 +32,2 @@ return __awaiter(this, void 0, void 0, function* () { | ||
} | ||
exports.asyncPool = asyncPool; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBZUEsU0FBc0IsU0FBUyxDQUM3QixTQUFpQixFQUNqQixLQUFtQixFQUNuQixnQkFBaUQ7O1FBR2pELE1BQU0sUUFBUSxHQUF3QixFQUFFLENBQUM7UUFHekMsTUFBTSxJQUFJLEdBQXlCLEVBQUUsQ0FBQztRQUd0QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtZQUV4QixNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUd2QyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBR3ZCLE1BQU0sVUFBVSxHQUFrQixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFHbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUFDO1lBR0gsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUd0QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFO2dCQUU1QixNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDMUI7U0FDRjtRQUdELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQUE7QUF0Q0QsOEJBc0NDIn0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFhQSw4QkFzQ0M7QUF0Q0QsU0FBc0IsU0FBUyxDQUM3QixTQUFpQixFQUNqQixLQUFtQixFQUNuQixnQkFBaUQ7O1FBR2pELE1BQU0sUUFBUSxHQUFtQixFQUFFLENBQUM7UUFHcEMsTUFBTSxJQUFJLEdBQW9CLEVBQUUsQ0FBQztRQUdqQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBRXpCLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBR3ZDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFHdkIsTUFBTSxVQUFVLEdBQWtCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUdsRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDLENBQUM7WUFHSCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBR3RCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFFN0IsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO1FBR0QsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7Q0FBQSJ9 |
{ | ||
"name": "@krlwlfrt/async-pool", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"description": "Async pool for iterables", | ||
@@ -11,3 +11,3 @@ "main": "lib/index.js", | ||
"documentation": "typedoc --out docs --readme README.md src/index.ts", | ||
"lint": "eslint src --ext .ts", | ||
"lint": "eslint src", | ||
"prepublishOnly": "npm ci && npm run build && npm test", | ||
@@ -35,17 +35,19 @@ "preversion": "npm run prepublishOnly", | ||
"devDependencies": { | ||
"@krlwlfrt/otpc": "1.0.0", | ||
"@eslint/js": "9.15.0", | ||
"@krlwlfrt/otpc": "2.0.0", | ||
"@testdeck/mocha": "0.3.3", | ||
"@types/mocha": "10.0.1", | ||
"@types/node": "18.14.2", | ||
"@typescript-eslint/eslint-plugin": "5.54.0", | ||
"@typescript-eslint/parser": "5.54.0", | ||
"conventional-changelog-cli": "2.2.2", | ||
"eslint": "8.35.0", | ||
"mocha": "10.2.0", | ||
"nyc": "15.1.0", | ||
"@types/eslint__js": "8.42.3", | ||
"@types/mocha": "10.0.10", | ||
"@types/node": "22.9.3", | ||
"conventional-changelog-cli": "5.0.0", | ||
"eslint": "9.15.0", | ||
"eslint-plugin-jsdoc": "50.5.0", | ||
"mocha": "10.8.2", | ||
"nyc": "17.1.0", | ||
"prepend-file-cli": "1.0.6", | ||
"rimraf": "4.1.2", | ||
"ts-node": "10.9.1", | ||
"typedoc": "0.23.26", | ||
"typescript": "4.9.5" | ||
"rimraf": "6.0.1", | ||
"ts-node": "10.9.2", | ||
"typedoc": "0.26.11", | ||
"typescript": "5.6.3", | ||
"typescript-eslint": "8.15.0" | ||
}, | ||
@@ -52,0 +54,0 @@ "nyc": { |
/** | ||
* Runs multiple promise-returning & async functions in a limited concurrency pool | ||
* | ||
* - It rejects immediately as soon as one of the promises rejects. | ||
* - It resolves when all the promises complete. | ||
* - It calls the iterator function as soon as possible (under concurrency limit). | ||
* | ||
* @param poolLimit The pool limit number (>= 1) | ||
@@ -12,5 +10,5 @@ * @param items Iterable list of items | ||
* The iterator function should either return a promise or be an async function. | ||
* | ||
* @template IN Type of the input items | ||
* @template OUT Type of the resolves of the promises | ||
* @returns Array of promises that resolve with results of inputs | ||
*/ | ||
@@ -23,6 +21,6 @@ export async function asyncPool<IN, OUT>( | ||
// instantiate promises array | ||
const promises: Array<Promise<OUT>> = []; | ||
const promises: Promise<OUT>[] = []; | ||
// instantiate pool array | ||
const pool: Array<Promise<void>> = []; | ||
const pool: Promise<void>[] = []; | ||
@@ -29,0 +27,0 @@ // iterate over all items |
8887
17
76