UNPKG

12.1 kBTypeScriptView Raw
1interface 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 */
14interface 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
47interface 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
254declare var ThenPromise: ThenPromiseConstructor;
255
256export = ThenPromise;
\No newline at end of file