From ef23f9bd41df8ba59e590ff62cc04a0ed63b659f Mon Sep 17 00:00:00 2001 From: krlwlfrt Date: Tue, 2 Oct 2018 20:13:01 +0200 Subject: [PATCH] Add type definitions for tiny-async-pool (#29373) --- types/tiny-async-pool/index.d.ts | 29 +++++++++++++++++++ .../tiny-async-pool/tiny-async-pool-tests.ts | 13 +++++++++ types/tiny-async-pool/tsconfig.json | 23 +++++++++++++++ types/tiny-async-pool/tslint.json | 1 + 4 files changed, 66 insertions(+) create mode 100644 types/tiny-async-pool/index.d.ts create mode 100644 types/tiny-async-pool/tiny-async-pool-tests.ts create mode 100644 types/tiny-async-pool/tsconfig.json create mode 100644 types/tiny-async-pool/tslint.json diff --git a/types/tiny-async-pool/index.d.ts b/types/tiny-async-pool/index.d.ts new file mode 100644 index 0000000000..a08ff66c3e --- /dev/null +++ b/types/tiny-async-pool/index.d.ts @@ -0,0 +1,29 @@ +// Type definitions for tiny-async-pool 1.0 +// Project: https://github.com/rxaviers/async-pool#readme +// Definitions by: Karl-Philipp Wulfert +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/** + * This declaration specifies that the function is the exported object from the file + */ +export = asyncPool; + +/** + * 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 completes. + * It calls the iterator function as soon as possible (under concurrency limit). + * + * @param poolLimit The pool limit number (>= 1). + * @param array Input array. + * @param iteratorFn Iterator function that takes two arguments (array item and the array itself). + * The iterator function should either return a promise or be an async function. + * + * @template IN Type of the input array + * @template OUT Type of the resolves of the promises + */ +declare function asyncPool( + poolLimit: number, + array: ReadonlyArray, + iteratorFn: (generator: IN) => Promise +): Promise; diff --git a/types/tiny-async-pool/tiny-async-pool-tests.ts b/types/tiny-async-pool/tiny-async-pool-tests.ts new file mode 100644 index 0000000000..f4a9c6a75f --- /dev/null +++ b/types/tiny-async-pool/tiny-async-pool-tests.ts @@ -0,0 +1,13 @@ +import asyncPool = require('tiny-async-pool'); + +const expected = JSON.stringify(['A', 'B', 'C']); + +asyncPool(5, ['a', 'b', 'c'], (value) => { + return new Promise((resolve) => { + resolve(value.toUpperCase); + }); +}).then((results) => { + if (JSON.stringify(results) !== expected) { + throw new Error('Result is not equal to expected result!'); + } +}); diff --git a/types/tiny-async-pool/tsconfig.json b/types/tiny-async-pool/tsconfig.json new file mode 100644 index 0000000000..6e18b60331 --- /dev/null +++ b/types/tiny-async-pool/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "tiny-async-pool-tests.ts" + ] +} diff --git a/types/tiny-async-pool/tslint.json b/types/tiny-async-pool/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/tiny-async-pool/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }