UNPKG

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