Add type definitions for tiny-async-pool (#29373)

This commit is contained in:
krlwlfrt 2018-10-02 20:13:01 +02:00 committed by Wesley Wigham
parent b2c9fc89f9
commit ef23f9bd41
4 changed files with 66 additions and 0 deletions

29
types/tiny-async-pool/index.d.ts vendored Normal file
View File

@ -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 <https://github.com/krlwlfrt>
// 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<IN, OUT>(
poolLimit: number,
array: ReadonlyArray<IN>,
iteratorFn: (generator: IN) => Promise<OUT>
): Promise<OUT[]>;

View File

@ -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!');
}
});

View File

@ -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"
]
}

View File

@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }