From bda645380d65e548872de572961fa4fbc82850a8 Mon Sep 17 00:00:00 2001 From: Dimitri Benin Date: Sun, 16 Dec 2018 12:19:00 +0100 Subject: [PATCH] [p-waterfall] Add types --- types/p-waterfall/index.d.ts | 97 ++++++++++++++ types/p-waterfall/p-waterfall-tests.ts | 171 +++++++++++++++++++++++++ types/p-waterfall/tsconfig.json | 23 ++++ types/p-waterfall/tslint.json | 1 + 4 files changed, 292 insertions(+) create mode 100644 types/p-waterfall/index.d.ts create mode 100644 types/p-waterfall/p-waterfall-tests.ts create mode 100644 types/p-waterfall/tsconfig.json create mode 100644 types/p-waterfall/tslint.json diff --git a/types/p-waterfall/index.d.ts b/types/p-waterfall/index.d.ts new file mode 100644 index 0000000000..d78f1928dd --- /dev/null +++ b/types/p-waterfall/index.d.ts @@ -0,0 +1,97 @@ +// Type definitions for p-waterfall 1.0 +// Project: https://github.com/sindresorhus/p-waterfall#readme +// Definitions by: BendingBender +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.6 + +export = pWaterfall; + +type Task = (previousValue: T) => R | PromiseLike; +type InitialTask = () => R | PromiseLike; + +declare function pWaterfall(tasks: [InitialTask]): Promise; +declare function pWaterfall(tasks: [InitialTask, Task]): Promise; +declare function pWaterfall( + tasks: [InitialTask, Task, Task] +): Promise; +declare function pWaterfall( + tasks: [InitialTask, Task, Task, Task] +): Promise; +declare function pWaterfall( + tasks: [InitialTask, Task, Task, Task, Task] +): Promise; +declare function pWaterfall( + tasks: [InitialTask, Task, Task, Task, Task, Task] +): Promise; +declare function pWaterfall( + tasks: [ + InitialTask, + Task, + Task, + Task, + Task, + Task, + Task + ] +): Promise; +declare function pWaterfall( + tasks: [ + InitialTask, + Task, + Task, + Task, + Task, + Task, + Task, + Task + ] +): Promise; + +declare function pWaterfall(tasks: [Task], initialValue: T1): Promise; +declare function pWaterfall( + tasks: [Task, Task], + initialValue: T1 +): Promise; +declare function pWaterfall( + tasks: [Task, Task, Task], + initialValue: T1 +): Promise; +declare function pWaterfall( + tasks: [Task, Task, Task, Task], + initialValue: T1 +): Promise; +declare function pWaterfall( + tasks: [Task, Task, Task, Task, Task], + initialValue: T1 +): Promise; +declare function pWaterfall( + tasks: [Task, Task, Task, Task, Task, Task], + initialValue: T1 +): Promise; +declare function pWaterfall( + tasks: [ + Task, + Task, + Task, + Task, + Task, + Task, + Task + ], + initialValue: T1 +): Promise; +declare function pWaterfall( + tasks: [ + Task, + Task, + Task, + Task, + Task, + Task, + Task, + Task + ], + initialValue: T1 +): Promise; + +declare function pWaterfall(tasks: Iterable>, initialValue?: any): Promise; diff --git a/types/p-waterfall/p-waterfall-tests.ts b/types/p-waterfall/p-waterfall-tests.ts new file mode 100644 index 0000000000..f05587acc1 --- /dev/null +++ b/types/p-waterfall/p-waterfall-tests.ts @@ -0,0 +1,171 @@ +import pWaterfall = require('p-waterfall'); + +pWaterfall([() => `I ❤️ unicorn`]).then(finalValue => { + // $ExpectType string + finalValue; +}); +pWaterfall([() => `I ❤️ unicorn`, (str: string) => true]).then(finalValue => { + // $ExpectType boolean + finalValue; +}); +pWaterfall([() => `I ❤️ unicorn`, (str: string) => true, (bool: boolean) => 1]).then(finalValue => { + // $ExpectType number + finalValue; +}); +pWaterfall([ + () => `I ❤️ unicorn`, + (str: string) => true, + (bool: boolean) => 1, + (num: number) => null, +]).then(finalValue => { + // $ExpectType null + finalValue; +}); +pWaterfall([ + () => `I ❤️ unicorn`, + (str: string) => true, + (bool: boolean) => 1, + (num: number) => null, + (n: null) => undefined, +]).then(finalValue => { + // $ExpectType undefined + finalValue; +}); +pWaterfall([ + () => `I ❤️ unicorn`, + (str: string) => true, + (bool: boolean) => 1, + (num: number) => null, + (n: null) => undefined, + (u: undefined) => ({}), +]).then(finalValue => { + // $ExpectType {} + finalValue; +}); +pWaterfall([ + () => `I ❤️ unicorn`, + (str: string) => true, + (bool: boolean) => 1, + (num: number) => null, + (n: null) => undefined, + (u: undefined) => ({}), + (o: {}) => 'foo', +]).then(finalValue => { + // $ExpectType string + finalValue; +}); +pWaterfall([ + () => `I ❤️ unicorn`, + (str: string) => true, + (bool: boolean) => 1, + (num: number) => null, + (n: null) => undefined, + (u: undefined) => ({}), + (o: {}) => 'foo', + (s: string) => 1, +]).then(finalValue => { + // $ExpectType number + finalValue; +}); + +pWaterfall([previousValue => `I ❤️ ${previousValue}`], 'unicorn').then(finalValue => { + // $ExpectType string + finalValue; +}); +pWaterfall([previousValue => `I ❤️ ${previousValue}`, (str: string) => true], 'unicorn').then( + finalValue => { + // $ExpectType boolean + finalValue; + } +); +pWaterfall( + [previousValue => `I ❤️ ${previousValue}`, (str: string) => true, (bool: boolean) => 1], + 'unicorn' +).then(finalValue => { + // $ExpectType number + finalValue; +}); +pWaterfall( + [ + previousValue => `I ❤️ ${previousValue}`, + (str: string) => true, + (bool: boolean) => 1, + (num: number) => null, + ], + 'unicorn' +).then(finalValue => { + // $ExpectType null + finalValue; +}); +pWaterfall( + [ + previousValue => `I ❤️ ${previousValue}`, + (str: string) => true, + (bool: boolean) => 1, + (num: number) => null, + (n: null) => undefined, + ], + 'unicorn' +).then(finalValue => { + // $ExpectType undefined + finalValue; +}); +pWaterfall( + [ + previousValue => `I ❤️ ${previousValue}`, + (str: string) => true, + (bool: boolean) => 1, + (num: number) => null, + (n: null) => undefined, + (u: undefined) => ({}), + ], + 'unicorn' +).then(finalValue => { + // $ExpectType {} + finalValue; +}); +pWaterfall( + [ + previousValue => `I ❤️ ${previousValue}`, + (str: string) => true, + (bool: boolean) => 1, + (num: number) => null, + (n: null) => undefined, + (u: undefined) => ({}), + (o: {}) => 'foo', + ], + 'unicorn' +).then(finalValue => { + // $ExpectType string + finalValue; +}); +pWaterfall( + [ + previousValue => `I ❤️ ${previousValue}`, + (str: string) => true, + (bool: boolean) => 1, + (num: number) => null, + (n: null) => undefined, + (u: undefined) => ({}), + (o: {}) => 'foo', + (s: string) => 1, + ], + 'unicorn' +).then(finalValue => { + // $ExpectType number + finalValue; +}); + +pWaterfall( + new Set([ + (previousValue: string) => `I ❤️ ${previousValue}`, + (str: string) => true, + (bool: boolean) => 1, + (num: number) => null, + (n: null) => undefined, + ]), + 'unicorn' +).then(finalValue => { + // $ExpectType any + finalValue; +}); diff --git a/types/p-waterfall/tsconfig.json b/types/p-waterfall/tsconfig.json new file mode 100644 index 0000000000..9907fc1223 --- /dev/null +++ b/types/p-waterfall/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", + "p-waterfall-tests.ts" + ] +} diff --git a/types/p-waterfall/tslint.json b/types/p-waterfall/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/p-waterfall/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }