Skip to content

Commit

Permalink
Refactor TypeScript definition to CommonJS compatible export (#5)
Browse files Browse the repository at this point in the history
  • Loading branch information
BendingBender authored and sindresorhus committed Apr 6, 2019
1 parent df07dc5 commit 56395e9
Show file tree
Hide file tree
Showing 4 changed files with 178 additions and 170 deletions.
337 changes: 172 additions & 165 deletions index.d.ts
Original file line number Diff line number Diff line change
@@ -1,47 +1,41 @@
export interface Options {
/**
* Number of concurrent pending promises. Minimum: `1`.
*
* @default Infinity
*/
concurrency?: number;
}
declare namespace pAll {
interface Options {
/**
Number of concurrent pending promises. Minimum: `1`.
@default Infinity
*/
concurrency?: number;
}

export type PromiseFactory<T> = () => PromiseLike<T>;
type PromiseFactory<T> = () => PromiseLike<T>;
}

/**
* Run promise-returning & async functions concurrently with optional limited concurrency.
*
* @param tasks - Iterable with promise-returning/async functions.
* @returns A `Promise` that is fulfilled when all promises returned from calling the functions in `tasks` are fulfilled, or rejects if any of the promises reject. The fulfilled value is an `Array` of the fulfilled values in `tasks` order.
*/
declare function pAll<
Result1,
Result2,
Result3,
Result4,
Result5,
Result6,
Result7,
Result8,
Result9,
Result10
>(
tasks: [
PromiseFactory<Result1>,
PromiseFactory<Result2>,
PromiseFactory<Result3>,
PromiseFactory<Result4>,
PromiseFactory<Result5>,
PromiseFactory<Result6>,
PromiseFactory<Result7>,
PromiseFactory<Result8>,
PromiseFactory<Result9>,
PromiseFactory<Result10>
],
options?: Options
): Promise<
[
Run promise-returning & async functions concurrently with optional limited concurrency.
@param tasks - Iterable with promise-returning/async functions.
@returns A `Promise` that is fulfilled when all promises returned from calling the functions in `tasks` are fulfilled, or rejects if any of the promises reject. The fulfilled value is an `Array` of the fulfilled values in `tasks` order.
@example
```
import pAll = require('p-all');
import got = require('got');
(async () => {
const actions = [
() => got('https://sindresorhus.com'),
() => got('https://ava.li'),
() => checkSomething(),
() => doSomethingElse()
];
console.log(await pAll(actions, {concurrency: 2}));
})();
```
*/
declare const pAll: {
<
Result1,
Result2,
Result3,
Expand All @@ -52,33 +46,35 @@ declare function pAll<
Result8,
Result9,
Result10
]
>;
declare function pAll<
Result1,
Result2,
Result3,
Result4,
Result5,
Result6,
Result7,
Result8,
Result9
>(
tasks: [
PromiseFactory<Result1>,
PromiseFactory<Result2>,
PromiseFactory<Result3>,
PromiseFactory<Result4>,
PromiseFactory<Result5>,
PromiseFactory<Result6>,
PromiseFactory<Result7>,
PromiseFactory<Result8>,
PromiseFactory<Result9>
],
options?: Options
): Promise<
[
>(
tasks: [
pAll.PromiseFactory<Result1>,
pAll.PromiseFactory<Result2>,
pAll.PromiseFactory<Result3>,
pAll.PromiseFactory<Result4>,
pAll.PromiseFactory<Result5>,
pAll.PromiseFactory<Result6>,
pAll.PromiseFactory<Result7>,
pAll.PromiseFactory<Result8>,
pAll.PromiseFactory<Result9>,
pAll.PromiseFactory<Result10>
],
options?: pAll.Options
): Promise<
[
Result1,
Result2,
Result3,
Result4,
Result5,
Result6,
Result7,
Result8,
Result9,
Result10
]
>;
<
Result1,
Result2,
Result3,
Expand All @@ -88,101 +84,112 @@ declare function pAll<
Result7,
Result8,
Result9
]
>;
declare function pAll<
Result1,
Result2,
Result3,
Result4,
Result5,
Result6,
Result7,
Result8
>(
tasks: [
PromiseFactory<Result1>,
PromiseFactory<Result2>,
PromiseFactory<Result3>,
PromiseFactory<Result4>,
PromiseFactory<Result5>,
PromiseFactory<Result6>,
PromiseFactory<Result7>,
PromiseFactory<Result8>
],
options?: Options
): Promise<
[Result1, Result2, Result3, Result4, Result5, Result6, Result7, Result8]
>;
declare function pAll<
Result1,
Result2,
Result3,
Result4,
Result5,
Result6,
Result7
>(
tasks: [
PromiseFactory<Result1>,
PromiseFactory<Result2>,
PromiseFactory<Result3>,
PromiseFactory<Result4>,
PromiseFactory<Result5>,
PromiseFactory<Result6>,
PromiseFactory<Result7>
],
options?: Options
): Promise<[Result1, Result2, Result3, Result4, Result5, Result6, Result7]>;
declare function pAll<Result1, Result2, Result3, Result4, Result5, Result6>(
tasks: [
PromiseFactory<Result1>,
PromiseFactory<Result2>,
PromiseFactory<Result3>,
PromiseFactory<Result4>,
PromiseFactory<Result5>,
PromiseFactory<Result6>
],
options?: Options
): Promise<[Result1, Result2, Result3, Result4, Result5, Result6]>;
declare function pAll<Result1, Result2, Result3, Result4, Result5>(
tasks: [
PromiseFactory<Result1>,
PromiseFactory<Result2>,
PromiseFactory<Result3>,
PromiseFactory<Result4>,
PromiseFactory<Result5>
],
options?: Options
): Promise<[Result1, Result2, Result3, Result4, Result5]>;
declare function pAll<Result1, Result2, Result3, Result4>(
tasks: [
PromiseFactory<Result1>,
PromiseFactory<Result2>,
PromiseFactory<Result3>,
PromiseFactory<Result4>
],
options?: Options
): Promise<[Result1, Result2, Result3, Result4]>;
declare function pAll<Result1, Result2, Result3>(
tasks: [
PromiseFactory<Result1>,
PromiseFactory<Result2>,
PromiseFactory<Result3>
],
options?: Options
): Promise<[Result1, Result2, Result3]>;
declare function pAll<Result1, Result2>(
tasks: [PromiseFactory<Result1>, PromiseFactory<Result2>],
options?: Options
): Promise<[Result1, Result2]>;
declare function pAll<Result1>(
tasks: [PromiseFactory<Result1>],
options?: Options
): Promise<[Result1]>;
declare function pAll<TAll>(
tasks: Iterable<PromiseFactory<TAll>> | PromiseFactory<TAll>[],
options?: Options
): Promise<TAll[]>;
>(
tasks: [
pAll.PromiseFactory<Result1>,
pAll.PromiseFactory<Result2>,
pAll.PromiseFactory<Result3>,
pAll.PromiseFactory<Result4>,
pAll.PromiseFactory<Result5>,
pAll.PromiseFactory<Result6>,
pAll.PromiseFactory<Result7>,
pAll.PromiseFactory<Result8>,
pAll.PromiseFactory<Result9>
],
options?: pAll.Options
): Promise<
[
Result1,
Result2,
Result3,
Result4,
Result5,
Result6,
Result7,
Result8,
Result9
]
>;
<Result1, Result2, Result3, Result4, Result5, Result6, Result7, Result8>(
tasks: [
pAll.PromiseFactory<Result1>,
pAll.PromiseFactory<Result2>,
pAll.PromiseFactory<Result3>,
pAll.PromiseFactory<Result4>,
pAll.PromiseFactory<Result5>,
pAll.PromiseFactory<Result6>,
pAll.PromiseFactory<Result7>,
pAll.PromiseFactory<Result8>
],
options?: pAll.Options
): Promise<
[Result1, Result2, Result3, Result4, Result5, Result6, Result7, Result8]
>;
<Result1, Result2, Result3, Result4, Result5, Result6, Result7>(
tasks: [
pAll.PromiseFactory<Result1>,
pAll.PromiseFactory<Result2>,
pAll.PromiseFactory<Result3>,
pAll.PromiseFactory<Result4>,
pAll.PromiseFactory<Result5>,
pAll.PromiseFactory<Result6>,
pAll.PromiseFactory<Result7>
],
options?: pAll.Options
): Promise<[Result1, Result2, Result3, Result4, Result5, Result6, Result7]>;
<Result1, Result2, Result3, Result4, Result5, Result6>(
tasks: [
pAll.PromiseFactory<Result1>,
pAll.PromiseFactory<Result2>,
pAll.PromiseFactory<Result3>,
pAll.PromiseFactory<Result4>,
pAll.PromiseFactory<Result5>,
pAll.PromiseFactory<Result6>
],
options?: pAll.Options
): Promise<[Result1, Result2, Result3, Result4, Result5, Result6]>;
<Result1, Result2, Result3, Result4, Result5>(
tasks: [
pAll.PromiseFactory<Result1>,
pAll.PromiseFactory<Result2>,
pAll.PromiseFactory<Result3>,
pAll.PromiseFactory<Result4>,
pAll.PromiseFactory<Result5>
],
options?: pAll.Options
): Promise<[Result1, Result2, Result3, Result4, Result5]>;
<Result1, Result2, Result3, Result4>(
tasks: [
pAll.PromiseFactory<Result1>,
pAll.PromiseFactory<Result2>,
pAll.PromiseFactory<Result3>,
pAll.PromiseFactory<Result4>
],
options?: pAll.Options
): Promise<[Result1, Result2, Result3, Result4]>;
<Result1, Result2, Result3>(
tasks: [
pAll.PromiseFactory<Result1>,
pAll.PromiseFactory<Result2>,
pAll.PromiseFactory<Result3>
],
options?: pAll.Options
): Promise<[Result1, Result2, Result3]>;
<Result1, Result2>(
tasks: [pAll.PromiseFactory<Result1>, pAll.PromiseFactory<Result2>],
options?: pAll.Options
): Promise<[Result1, Result2]>;
<Result1>(
tasks: [pAll.PromiseFactory<Result1>],
options?: pAll.Options
): Promise<[Result1]>;
<TAll>(
tasks: Iterable<pAll.PromiseFactory<TAll>> | pAll.PromiseFactory<TAll>[],
options?: pAll.Options
): Promise<TAll[]>;

// TODO: Remove this for the next major release, refactor the whole definition back to multiple overloaded functions
default: typeof pAll;
};

export default pAll;
export = pAll;
1 change: 1 addition & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
const pMap = require('p-map');

module.exports = (iterable, options) => pMap(iterable, element => element(), options);
// TODO: Remove this for the next major release
module.exports.default = module.exports;
4 changes: 2 additions & 2 deletions index.test-d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {expectType} from 'tsd-check';
import pAll from '.';
import {expectType} from 'tsd';
import pAll = require('.');

const actions: [
() => Promise<string>,
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"node": ">=6"
},
"scripts": {
"test": "xo && ava && tsd-check"
"test": "xo && ava && tsd"
},
"files": [
"index.js",
Expand Down Expand Up @@ -46,9 +46,9 @@
"p-map": "^2.0.0"
},
"devDependencies": {
"ava": "^1.2.1",
"ava": "^1.4.1",
"delay": "^4.1.0",
"tsd-check": "^0.3.0",
"tsd": "^0.7.2",
"xo": "^0.24.0"
}
}

0 comments on commit 56395e9

Please sign in to comment.