Skip to content

Commit 9809ef4

Browse files
committedJun 15, 2017
Add typescript support
1 parent 7f33b7b commit 9809ef4

File tree

2 files changed

+258
-1
lines changed

2 files changed

+258
-1
lines changed
 

‎.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ node_modules
44
/lib
55
/domains
66
/setimmediate
7-
coverage
7+
coverage
8+
package-lock.json

‎index.d.ts

+256
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
1+
interface Thenable<T> {
2+
/**
3+
* Attaches callbacks for the resolution and/or rejection of the ThenPromise.
4+
* @param onfulfilled The callback to execute when the ThenPromise is resolved.
5+
* @param onrejected The callback to execute when the ThenPromise is rejected.
6+
* @returns A ThenPromise for the completion of which ever callback is executed.
7+
*/
8+
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | Thenable<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | Thenable<TResult2>) | undefined | null): Thenable<TResult1 | TResult2>;
9+
}
10+
11+
/**
12+
* Represents the completion of an asynchronous operation
13+
*/
14+
interface ThenPromise<T> {
15+
/**
16+
* Attaches callbacks for the resolution and/or rejection of the ThenPromise.
17+
* @param onfulfilled The callback to execute when the ThenPromise is resolved.
18+
* @param onrejected The callback to execute when the ThenPromise is rejected.
19+
* @returns A ThenPromise for the completion of which ever callback is executed.
20+
*/
21+
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | Thenable<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | Thenable<TResult2>) | undefined | null): ThenPromise<TResult1 | TResult2>;
22+
23+
/**
24+
* Attaches a callback for only the rejection of the ThenPromise.
25+
* @param onrejected The callback to execute when the ThenPromise is rejected.
26+
* @returns A ThenPromise for the completion of the callback.
27+
*/
28+
catch<TResult = never>(onrejected?: ((reason: any) => TResult | Thenable<TResult>) | undefined | null): ThenPromise<T | TResult>;
29+
30+
// Extensions specific to then/promise
31+
32+
/**
33+
* Attaches callbacks for the resolution and/or rejection of the ThenPromise, without returning a new promise.
34+
* @param onfulfilled The callback to execute when the ThenPromise is resolved.
35+
* @param onrejected The callback to execute when the ThenPromise is rejected.
36+
*/
37+
done(onfulfilled?: ((value: T) => any) | undefined | null, onrejected?: ((reason: any) => any) | undefined | null): void;
38+
39+
40+
/**
41+
* Calls a node.js style callback. If none is provided, the promise is returned.
42+
*/
43+
nodeify(callback: void | null): ThenPromise<T>;
44+
nodeify(callback: (err: Error, value: T) => void): void;
45+
}
46+
47+
interface ThenPromiseConstructor {
48+
/**
49+
* A reference to the prototype.
50+
*/
51+
readonly prototype: ThenPromise<any>;
52+
53+
/**
54+
* Creates a new ThenPromise.
55+
* @param executor A callback used to initialize the promise. This callback is passed two arguments:
56+
* a resolve callback used resolve the promise with a value or the result of another promise,
57+
* and a reject callback used to reject the promise with a provided reason or error.
58+
*/
59+
new <T>(executor: (resolve: (value?: T | Thenable<T>) => void, reject: (reason?: any) => void) => any): ThenPromise<T>;
60+
61+
/**
62+
* Creates a ThenPromise that is resolved with an array of results when all of the provided Promises
63+
* resolve, or rejected when any ThenPromise is rejected.
64+
* @param values An array of Promises.
65+
* @returns A new ThenPromise.
66+
*/
67+
all<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>, T4 | Thenable <T4>, T5 | Thenable<T5>, T6 | Thenable<T6>, T7 | Thenable<T7>, T8 | Thenable<T8>, T9 | Thenable<T9>, T10 | Thenable<T10>]): ThenPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>;
68+
69+
/**
70+
* Creates a ThenPromise that is resolved with an array of results when all of the provided Promises
71+
* resolve, or rejected when any ThenPromise is rejected.
72+
* @param values An array of Promises.
73+
* @returns A new ThenPromise.
74+
*/
75+
all<T1, T2, T3, T4, T5, T6, T7, T8, T9>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>, T4 | Thenable <T4>, T5 | Thenable<T5>, T6 | Thenable<T6>, T7 | Thenable<T7>, T8 | Thenable<T8>, T9 | Thenable<T9>]): ThenPromise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>;
76+
77+
/**
78+
* Creates a ThenPromise that is resolved with an array of results when all of the provided Promises
79+
* resolve, or rejected when any ThenPromise is rejected.
80+
* @param values An array of Promises.
81+
* @returns A new ThenPromise.
82+
*/
83+
all<T1, T2, T3, T4, T5, T6, T7, T8>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>, T4 | Thenable <T4>, T5 | Thenable<T5>, T6 | Thenable<T6>, T7 | Thenable<T7>, T8 | Thenable<T8>]): ThenPromise<[T1, T2, T3, T4, T5, T6, T7, T8]>;
84+
85+
/**
86+
* Creates a ThenPromise that is resolved with an array of results when all of the provided Promises
87+
* resolve, or rejected when any ThenPromise is rejected.
88+
* @param values An array of Promises.
89+
* @returns A new ThenPromise.
90+
*/
91+
all<T1, T2, T3, T4, T5, T6, T7>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>, T4 | Thenable <T4>, T5 | Thenable<T5>, T6 | Thenable<T6>, T7 | Thenable<T7>]): ThenPromise<[T1, T2, T3, T4, T5, T6, T7]>;
92+
93+
/**
94+
* Creates a ThenPromise that is resolved with an array of results when all of the provided Promises
95+
* resolve, or rejected when any ThenPromise is rejected.
96+
* @param values An array of Promises.
97+
* @returns A new ThenPromise.
98+
*/
99+
all<T1, T2, T3, T4, T5, T6>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>, T4 | Thenable <T4>, T5 | Thenable<T5>, T6 | Thenable<T6>]): ThenPromise<[T1, T2, T3, T4, T5, T6]>;
100+
101+
/**
102+
* Creates a ThenPromise that is resolved with an array of results when all of the provided Promises
103+
* resolve, or rejected when any ThenPromise is rejected.
104+
* @param values An array of Promises.
105+
* @returns A new ThenPromise.
106+
*/
107+
all<T1, T2, T3, T4, T5>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>, T4 | Thenable <T4>, T5 | Thenable<T5>]): ThenPromise<[T1, T2, T3, T4, T5]>;
108+
109+
/**
110+
* Creates a ThenPromise that is resolved with an array of results when all of the provided Promises
111+
* resolve, or rejected when any ThenPromise is rejected.
112+
* @param values An array of Promises.
113+
* @returns A new ThenPromise.
114+
*/
115+
all<T1, T2, T3, T4>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>, T4 | Thenable <T4>]): ThenPromise<[T1, T2, T3, T4]>;
116+
117+
/**
118+
* Creates a ThenPromise that is resolved with an array of results when all of the provided Promises
119+
* resolve, or rejected when any ThenPromise is rejected.
120+
* @param values An array of Promises.
121+
* @returns A new ThenPromise.
122+
*/
123+
all<T1, T2, T3>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>]): ThenPromise<[T1, T2, T3]>;
124+
125+
/**
126+
* Creates a ThenPromise that is resolved with an array of results when all of the provided Promises
127+
* resolve, or rejected when any ThenPromise is rejected.
128+
* @param values An array of Promises.
129+
* @returns A new ThenPromise.
130+
*/
131+
all<T1, T2>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>]): ThenPromise<[T1, T2]>;
132+
133+
/**
134+
* Creates a ThenPromise that is resolved with an array of results when all of the provided Promises
135+
* resolve, or rejected when any ThenPromise is rejected.
136+
* @param values An array of Promises.
137+
* @returns A new ThenPromise.
138+
*/
139+
all<T>(values: (T | Thenable<T>)[]): ThenPromise<T[]>;
140+
141+
/**
142+
* Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved
143+
* or rejected.
144+
* @param values An array of Promises.
145+
* @returns A new ThenPromise.
146+
*/
147+
race<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>, T4 | Thenable<T4>, T5 | Thenable<T5>, T6 | Thenable<T6>, T7 | Thenable<T7>, T8 | Thenable<T8>, T9 | Thenable<T9>, T10 | Thenable<T10>]): ThenPromise<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9 | T10>;
148+
149+
/**
150+
* Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved
151+
* or rejected.
152+
* @param values An array of Promises.
153+
* @returns A new ThenPromise.
154+
*/
155+
race<T1, T2, T3, T4, T5, T6, T7, T8, T9>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>, T4 | Thenable<T4>, T5 | Thenable<T5>, T6 | Thenable<T6>, T7 | Thenable<T7>, T8 | Thenable<T8>, T9 | Thenable<T9>]): ThenPromise<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9>;
156+
157+
/**
158+
* Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved
159+
* or rejected.
160+
* @param values An array of Promises.
161+
* @returns A new ThenPromise.
162+
*/
163+
race<T1, T2, T3, T4, T5, T6, T7, T8>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>, T4 | Thenable<T4>, T5 | Thenable<T5>, T6 | Thenable<T6>, T7 | Thenable<T7>, T8 | Thenable<T8>]): ThenPromise<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8>;
164+
165+
/**
166+
* Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved
167+
* or rejected.
168+
* @param values An array of Promises.
169+
* @returns A new ThenPromise.
170+
*/
171+
race<T1, T2, T3, T4, T5, T6, T7>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>, T4 | Thenable<T4>, T5 | Thenable<T5>, T6 | Thenable<T6>, T7 | Thenable<T7>]): ThenPromise<T1 | T2 | T3 | T4 | T5 | T6 | T7>;
172+
173+
/**
174+
* Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved
175+
* or rejected.
176+
* @param values An array of Promises.
177+
* @returns A new ThenPromise.
178+
*/
179+
race<T1, T2, T3, T4, T5, T6>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>, T4 | Thenable<T4>, T5 | Thenable<T5>, T6 | Thenable<T6>]): ThenPromise<T1 | T2 | T3 | T4 | T5 | T6>;
180+
181+
/**
182+
* Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved
183+
* or rejected.
184+
* @param values An array of Promises.
185+
* @returns A new ThenPromise.
186+
*/
187+
race<T1, T2, T3, T4, T5>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>, T4 | Thenable<T4>, T5 | Thenable<T5>]): ThenPromise<T1 | T2 | T3 | T4 | T5>;
188+
189+
/**
190+
* Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved
191+
* or rejected.
192+
* @param values An array of Promises.
193+
* @returns A new ThenPromise.
194+
*/
195+
race<T1, T2, T3, T4>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>, T4 | Thenable<T4>]): ThenPromise<T1 | T2 | T3 | T4>;
196+
197+
/**
198+
* Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved
199+
* or rejected.
200+
* @param values An array of Promises.
201+
* @returns A new ThenPromise.
202+
*/
203+
race<T1, T2, T3>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>, T3 | Thenable<T3>]): ThenPromise<T1 | T2 | T3>;
204+
205+
/**
206+
* Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved
207+
* or rejected.
208+
* @param values An array of Promises.
209+
* @returns A new ThenPromise.
210+
*/
211+
race<T1, T2>(values: [T1 | Thenable<T1>, T2 | Thenable<T2>]): ThenPromise<T1 | T2>;
212+
213+
/**
214+
* Creates a ThenPromise that is resolved or rejected when any of the provided Promises are resolved
215+
* or rejected.
216+
* @param values An array of Promises.
217+
* @returns A new ThenPromise.
218+
*/
219+
race<T>(values: (T | Thenable<T>)[]): ThenPromise<T>;
220+
221+
/**
222+
* Creates a new rejected promise for the provided reason.
223+
* @param reason The reason the promise was rejected.
224+
* @returns A new rejected ThenPromise.
225+
*/
226+
reject(reason: any): ThenPromise<never>;
227+
228+
/**
229+
* Creates a new rejected promise for the provided reason.
230+
* @param reason The reason the promise was rejected.
231+
* @returns A new rejected ThenPromise.
232+
*/
233+
reject<T>(reason: any): ThenPromise<T>;
234+
235+
/**
236+
* Creates a new resolved promise for the provided value.
237+
* @param value A promise.
238+
* @returns A promise whose internal state matches the provided promise.
239+
*/
240+
resolve<T>(value: T | Thenable<T>): ThenPromise<T>;
241+
242+
/**
243+
* Creates a new resolved promise .
244+
* @returns A resolved promise.
245+
*/
246+
resolve(): ThenPromise<void>;
247+
248+
// Extensions specific to then/promise
249+
250+
denodeify: (fn: Function) => (...args: any[]) => ThenPromise<any>;
251+
nodeify: (fn: Function) => Function;
252+
}
253+
254+
declare var ThenPromise: ThenPromiseConstructor;
255+
256+
export = ThenPromise;

0 commit comments

Comments
 (0)
Please sign in to comment.