1 /*! *****************************************************************************
2 Copyright (c) Microsoft Corporation. All rights reserved.
3 Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4 this file except in compliance with the License. You may obtain a copy of the
5 License at http://www.apache.org/licenses/LICENSE-2.0
7 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8 KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
9 WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
10 MERCHANTABLITY OR NON-INFRINGEMENT.
12 See the Apache Version 2.0 License for specific language governing permissions
13 and limitations under the License.
14 ***************************************************************************** */
18 /// <reference no-default-lib="true"/>
\r
21 /// <reference lib="es2015.symbol" />
\r
23 interface SymbolConstructor {
\r
25 * A method that returns the default iterator for an object. Called by the semantics of the
\r
28 readonly iterator: unique symbol;
\r
31 interface IteratorYieldResult<TYield> {
\r
36 interface IteratorReturnResult<TReturn> {
\r
41 type IteratorResult<T, TReturn = any> = IteratorYieldResult<T> | IteratorReturnResult<TReturn>;
\r
43 interface Iterator<T, TReturn = any, TNext = undefined> {
\r
44 // NOTE: 'next' is defined using a tuple to ensure we report the correct assignability errors in all places.
\r
45 next(...args: [] | [TNext]): IteratorResult<T, TReturn>;
\r
46 return?(value?: TReturn): IteratorResult<T, TReturn>;
\r
47 throw?(e?: any): IteratorResult<T, TReturn>;
\r
50 interface Iterable<T> {
\r
51 [Symbol.iterator](): Iterator<T>;
\r
54 interface IterableIterator<T> extends Iterator<T> {
\r
55 [Symbol.iterator](): IterableIterator<T>;
\r
58 interface Array<T> {
\r
60 [Symbol.iterator](): IterableIterator<T>;
\r
63 * Returns an iterable of key, value pairs for every entry in the array
\r
65 entries(): IterableIterator<[number, T]>;
\r
68 * Returns an iterable of keys in the array
\r
70 keys(): IterableIterator<number>;
\r
73 * Returns an iterable of values in the array
\r
75 values(): IterableIterator<T>;
\r
78 interface ArrayConstructor {
\r
80 * Creates an array from an iterable object.
\r
81 * @param iterable An iterable object to convert to an array.
\r
83 from<T>(iterable: Iterable<T> | ArrayLike<T>): T[];
\r
86 * Creates an array from an iterable object.
\r
87 * @param iterable An iterable object to convert to an array.
\r
88 * @param mapfn A mapping function to call on every element of the array.
\r
89 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
91 from<T, U>(iterable: Iterable<T> | ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): U[];
\r
94 interface ReadonlyArray<T> {
\r
95 /** Iterator of values in the array. */
\r
96 [Symbol.iterator](): IterableIterator<T>;
\r
99 * Returns an iterable of key, value pairs for every entry in the array
\r
101 entries(): IterableIterator<[number, T]>;
\r
104 * Returns an iterable of keys in the array
\r
106 keys(): IterableIterator<number>;
\r
109 * Returns an iterable of values in the array
\r
111 values(): IterableIterator<T>;
\r
114 interface IArguments {
\r
116 [Symbol.iterator](): IterableIterator<any>;
\r
119 interface Map<K, V> {
\r
120 /** Returns an iterable of entries in the map. */
\r
121 [Symbol.iterator](): IterableIterator<[K, V]>;
\r
124 * Returns an iterable of key, value pairs for every entry in the map.
\r
126 entries(): IterableIterator<[K, V]>;
\r
129 * Returns an iterable of keys in the map
\r
131 keys(): IterableIterator<K>;
\r
134 * Returns an iterable of values in the map
\r
136 values(): IterableIterator<V>;
\r
139 interface ReadonlyMap<K, V> {
\r
140 /** Returns an iterable of entries in the map. */
\r
141 [Symbol.iterator](): IterableIterator<[K, V]>;
\r
144 * Returns an iterable of key, value pairs for every entry in the map.
\r
146 entries(): IterableIterator<[K, V]>;
\r
149 * Returns an iterable of keys in the map
\r
151 keys(): IterableIterator<K>;
\r
154 * Returns an iterable of values in the map
\r
156 values(): IterableIterator<V>;
\r
159 interface MapConstructor {
\r
160 new <K, V>(iterable: Iterable<readonly [K, V]>): Map<K, V>;
\r
163 interface WeakMap<K extends object, V> { }
\r
165 interface WeakMapConstructor {
\r
166 new <K extends object, V>(iterable: Iterable<readonly [K, V]>): WeakMap<K, V>;
\r
170 /** Iterates over values in the set. */
\r
171 [Symbol.iterator](): IterableIterator<T>;
\r
173 * Returns an iterable of [v,v] pairs for every value `v` in the set.
\r
175 entries(): IterableIterator<[T, T]>;
\r
177 * Despite its name, returns an iterable of the values in the set.
\r
179 keys(): IterableIterator<T>;
\r
182 * Returns an iterable of values in the set.
\r
184 values(): IterableIterator<T>;
\r
187 interface ReadonlySet<T> {
\r
188 /** Iterates over values in the set. */
\r
189 [Symbol.iterator](): IterableIterator<T>;
\r
192 * Returns an iterable of [v,v] pairs for every value `v` in the set.
\r
194 entries(): IterableIterator<[T, T]>;
\r
197 * Despite its name, returns an iterable of the values in the set.
\r
199 keys(): IterableIterator<T>;
\r
202 * Returns an iterable of values in the set.
\r
204 values(): IterableIterator<T>;
\r
207 interface SetConstructor {
\r
208 new <T>(iterable?: Iterable<T> | null): Set<T>;
\r
211 interface WeakSet<T extends object> { }
\r
213 interface WeakSetConstructor {
\r
214 new <T extends object = object>(iterable: Iterable<T>): WeakSet<T>;
\r
217 interface Promise<T> { }
\r
219 interface PromiseConstructor {
\r
221 * Creates a Promise that is resolved with an array of results when all of the provided Promises
\r
222 * resolve, or rejected when any Promise is rejected.
\r
223 * @param values An iterable of Promises.
\r
224 * @returns A new Promise.
\r
226 all<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>[]>;
\r
229 * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
\r
231 * @param values An iterable of Promises.
\r
232 * @returns A new Promise.
\r
234 race<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>>;
\r
239 [Symbol.iterator](): IterableIterator<string>;
\r
242 interface Int8Array {
\r
243 [Symbol.iterator](): IterableIterator<number>;
\r
245 * Returns an array of key, value pairs for every entry in the array
\r
247 entries(): IterableIterator<[number, number]>;
\r
249 * Returns an list of keys in the array
\r
251 keys(): IterableIterator<number>;
\r
253 * Returns an list of values in the array
\r
255 values(): IterableIterator<number>;
\r
258 interface Int8ArrayConstructor {
\r
259 new (elements: Iterable<number>): Int8Array;
\r
262 * Creates an array from an array-like or iterable object.
\r
263 * @param arrayLike An array-like or iterable object to convert to an array.
\r
264 * @param mapfn A mapping function to call on every element of the array.
\r
265 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
267 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array;
\r
270 interface Uint8Array {
\r
271 [Symbol.iterator](): IterableIterator<number>;
\r
273 * Returns an array of key, value pairs for every entry in the array
\r
275 entries(): IterableIterator<[number, number]>;
\r
277 * Returns an list of keys in the array
\r
279 keys(): IterableIterator<number>;
\r
281 * Returns an list of values in the array
\r
283 values(): IterableIterator<number>;
\r
286 interface Uint8ArrayConstructor {
\r
287 new (elements: Iterable<number>): Uint8Array;
\r
290 * Creates an array from an array-like or iterable object.
\r
291 * @param arrayLike An array-like or iterable object to convert to an array.
\r
292 * @param mapfn A mapping function to call on every element of the array.
\r
293 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
295 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array;
\r
298 interface Uint8ClampedArray {
\r
299 [Symbol.iterator](): IterableIterator<number>;
\r
301 * Returns an array of key, value pairs for every entry in the array
\r
303 entries(): IterableIterator<[number, number]>;
\r
306 * Returns an list of keys in the array
\r
308 keys(): IterableIterator<number>;
\r
311 * Returns an list of values in the array
\r
313 values(): IterableIterator<number>;
\r
316 interface Uint8ClampedArrayConstructor {
\r
317 new (elements: Iterable<number>): Uint8ClampedArray;
\r
321 * Creates an array from an array-like or iterable object.
\r
322 * @param arrayLike An array-like or iterable object to convert to an array.
\r
323 * @param mapfn A mapping function to call on every element of the array.
\r
324 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
326 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray;
\r
329 interface Int16Array {
\r
330 [Symbol.iterator](): IterableIterator<number>;
\r
332 * Returns an array of key, value pairs for every entry in the array
\r
334 entries(): IterableIterator<[number, number]>;
\r
337 * Returns an list of keys in the array
\r
339 keys(): IterableIterator<number>;
\r
342 * Returns an list of values in the array
\r
344 values(): IterableIterator<number>;
\r
347 interface Int16ArrayConstructor {
\r
348 new (elements: Iterable<number>): Int16Array;
\r
351 * Creates an array from an array-like or iterable object.
\r
352 * @param arrayLike An array-like or iterable object to convert to an array.
\r
353 * @param mapfn A mapping function to call on every element of the array.
\r
354 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
356 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array;
\r
359 interface Uint16Array {
\r
360 [Symbol.iterator](): IterableIterator<number>;
\r
362 * Returns an array of key, value pairs for every entry in the array
\r
364 entries(): IterableIterator<[number, number]>;
\r
366 * Returns an list of keys in the array
\r
368 keys(): IterableIterator<number>;
\r
370 * Returns an list of values in the array
\r
372 values(): IterableIterator<number>;
\r
375 interface Uint16ArrayConstructor {
\r
376 new (elements: Iterable<number>): Uint16Array;
\r
379 * Creates an array from an array-like or iterable object.
\r
380 * @param arrayLike An array-like or iterable object to convert to an array.
\r
381 * @param mapfn A mapping function to call on every element of the array.
\r
382 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
384 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array;
\r
387 interface Int32Array {
\r
388 [Symbol.iterator](): IterableIterator<number>;
\r
390 * Returns an array of key, value pairs for every entry in the array
\r
392 entries(): IterableIterator<[number, number]>;
\r
394 * Returns an list of keys in the array
\r
396 keys(): IterableIterator<number>;
\r
398 * Returns an list of values in the array
\r
400 values(): IterableIterator<number>;
\r
403 interface Int32ArrayConstructor {
\r
404 new (elements: Iterable<number>): Int32Array;
\r
407 * Creates an array from an array-like or iterable object.
\r
408 * @param arrayLike An array-like or iterable object to convert to an array.
\r
409 * @param mapfn A mapping function to call on every element of the array.
\r
410 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
412 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array;
\r
415 interface Uint32Array {
\r
416 [Symbol.iterator](): IterableIterator<number>;
\r
418 * Returns an array of key, value pairs for every entry in the array
\r
420 entries(): IterableIterator<[number, number]>;
\r
422 * Returns an list of keys in the array
\r
424 keys(): IterableIterator<number>;
\r
426 * Returns an list of values in the array
\r
428 values(): IterableIterator<number>;
\r
431 interface Uint32ArrayConstructor {
\r
432 new (elements: Iterable<number>): Uint32Array;
\r
435 * Creates an array from an array-like or iterable object.
\r
436 * @param arrayLike An array-like or iterable object to convert to an array.
\r
437 * @param mapfn A mapping function to call on every element of the array.
\r
438 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
440 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array;
\r
443 interface Float32Array {
\r
444 [Symbol.iterator](): IterableIterator<number>;
\r
446 * Returns an array of key, value pairs for every entry in the array
\r
448 entries(): IterableIterator<[number, number]>;
\r
450 * Returns an list of keys in the array
\r
452 keys(): IterableIterator<number>;
\r
454 * Returns an list of values in the array
\r
456 values(): IterableIterator<number>;
\r
459 interface Float32ArrayConstructor {
\r
460 new (elements: Iterable<number>): Float32Array;
\r
463 * Creates an array from an array-like or iterable object.
\r
464 * @param arrayLike An array-like or iterable object to convert to an array.
\r
465 * @param mapfn A mapping function to call on every element of the array.
\r
466 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
468 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array;
\r
471 interface Float64Array {
\r
472 [Symbol.iterator](): IterableIterator<number>;
\r
474 * Returns an array of key, value pairs for every entry in the array
\r
476 entries(): IterableIterator<[number, number]>;
\r
478 * Returns an list of keys in the array
\r
480 keys(): IterableIterator<number>;
\r
482 * Returns an list of values in the array
\r
484 values(): IterableIterator<number>;
\r
487 interface Float64ArrayConstructor {
\r
488 new (elements: Iterable<number>): Float64Array;
\r
491 * Creates an array from an array-like or iterable object.
\r
492 * @param arrayLike An array-like or iterable object to convert to an array.
\r
493 * @param mapfn A mapping function to call on every element of the array.
\r
494 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
496 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array;
\r