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: 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<[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<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>): Promise<T extends PromiseLike<infer U> ? U : T>;
\r
237 * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
\r
239 * @param values An iterable of Promises.
\r
240 * @returns A new Promise.
\r
242 race<T>(values: Iterable<T | PromiseLike<T>>): Promise<T>;
\r
245 declare namespace Reflect {
\r
246 function enumerate(target: object): IterableIterator<any>;
\r
251 [Symbol.iterator](): IterableIterator<string>;
\r
254 interface Int8Array {
\r
255 [Symbol.iterator](): IterableIterator<number>;
\r
257 * Returns an array of key, value pairs for every entry in the array
\r
259 entries(): IterableIterator<[number, number]>;
\r
261 * Returns an list of keys in the array
\r
263 keys(): IterableIterator<number>;
\r
265 * Returns an list of values in the array
\r
267 values(): IterableIterator<number>;
\r
270 interface Int8ArrayConstructor {
\r
271 new (elements: Iterable<number>): Int8Array;
\r
274 * Creates an array from an array-like or iterable object.
\r
275 * @param arrayLike An array-like or iterable object to convert to an array.
\r
276 * @param mapfn A mapping function to call on every element of the array.
\r
277 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
279 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array;
\r
282 interface Uint8Array {
\r
283 [Symbol.iterator](): IterableIterator<number>;
\r
285 * Returns an array of key, value pairs for every entry in the array
\r
287 entries(): IterableIterator<[number, number]>;
\r
289 * Returns an list of keys in the array
\r
291 keys(): IterableIterator<number>;
\r
293 * Returns an list of values in the array
\r
295 values(): IterableIterator<number>;
\r
298 interface Uint8ArrayConstructor {
\r
299 new (elements: Iterable<number>): Uint8Array;
\r
302 * Creates an array from an array-like or iterable object.
\r
303 * @param arrayLike An array-like or iterable object to convert to an array.
\r
304 * @param mapfn A mapping function to call on every element of the array.
\r
305 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
307 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array;
\r
310 interface Uint8ClampedArray {
\r
311 [Symbol.iterator](): IterableIterator<number>;
\r
313 * Returns an array of key, value pairs for every entry in the array
\r
315 entries(): IterableIterator<[number, number]>;
\r
318 * Returns an list of keys in the array
\r
320 keys(): IterableIterator<number>;
\r
323 * Returns an list of values in the array
\r
325 values(): IterableIterator<number>;
\r
328 interface Uint8ClampedArrayConstructor {
\r
329 new (elements: Iterable<number>): Uint8ClampedArray;
\r
333 * Creates an array from an array-like or iterable object.
\r
334 * @param arrayLike An array-like or iterable object to convert to an array.
\r
335 * @param mapfn A mapping function to call on every element of the array.
\r
336 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
338 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray;
\r
341 interface Int16Array {
\r
342 [Symbol.iterator](): IterableIterator<number>;
\r
344 * Returns an array of key, value pairs for every entry in the array
\r
346 entries(): IterableIterator<[number, number]>;
\r
349 * Returns an list of keys in the array
\r
351 keys(): IterableIterator<number>;
\r
354 * Returns an list of values in the array
\r
356 values(): IterableIterator<number>;
\r
359 interface Int16ArrayConstructor {
\r
360 new (elements: Iterable<number>): Int16Array;
\r
363 * Creates an array from an array-like or iterable object.
\r
364 * @param arrayLike An array-like or iterable object to convert to an array.
\r
365 * @param mapfn A mapping function to call on every element of the array.
\r
366 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
368 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array;
\r
371 interface Uint16Array {
\r
372 [Symbol.iterator](): IterableIterator<number>;
\r
374 * Returns an array of key, value pairs for every entry in the array
\r
376 entries(): IterableIterator<[number, number]>;
\r
378 * Returns an list of keys in the array
\r
380 keys(): IterableIterator<number>;
\r
382 * Returns an list of values in the array
\r
384 values(): IterableIterator<number>;
\r
387 interface Uint16ArrayConstructor {
\r
388 new (elements: Iterable<number>): Uint16Array;
\r
391 * Creates an array from an array-like or iterable object.
\r
392 * @param arrayLike An array-like or iterable object to convert to an array.
\r
393 * @param mapfn A mapping function to call on every element of the array.
\r
394 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
396 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array;
\r
399 interface Int32Array {
\r
400 [Symbol.iterator](): IterableIterator<number>;
\r
402 * Returns an array of key, value pairs for every entry in the array
\r
404 entries(): IterableIterator<[number, number]>;
\r
406 * Returns an list of keys in the array
\r
408 keys(): IterableIterator<number>;
\r
410 * Returns an list of values in the array
\r
412 values(): IterableIterator<number>;
\r
415 interface Int32ArrayConstructor {
\r
416 new (elements: Iterable<number>): Int32Array;
\r
419 * Creates an array from an array-like or iterable object.
\r
420 * @param arrayLike An array-like or iterable object to convert to an array.
\r
421 * @param mapfn A mapping function to call on every element of the array.
\r
422 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
424 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array;
\r
427 interface Uint32Array {
\r
428 [Symbol.iterator](): IterableIterator<number>;
\r
430 * Returns an array of key, value pairs for every entry in the array
\r
432 entries(): IterableIterator<[number, number]>;
\r
434 * Returns an list of keys in the array
\r
436 keys(): IterableIterator<number>;
\r
438 * Returns an list of values in the array
\r
440 values(): IterableIterator<number>;
\r
443 interface Uint32ArrayConstructor {
\r
444 new (elements: Iterable<number>): Uint32Array;
\r
447 * Creates an array from an array-like or iterable object.
\r
448 * @param arrayLike An array-like or iterable object to convert to an array.
\r
449 * @param mapfn A mapping function to call on every element of the array.
\r
450 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
452 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array;
\r
455 interface Float32Array {
\r
456 [Symbol.iterator](): IterableIterator<number>;
\r
458 * Returns an array of key, value pairs for every entry in the array
\r
460 entries(): IterableIterator<[number, number]>;
\r
462 * Returns an list of keys in the array
\r
464 keys(): IterableIterator<number>;
\r
466 * Returns an list of values in the array
\r
468 values(): IterableIterator<number>;
\r
471 interface Float32ArrayConstructor {
\r
472 new (elements: Iterable<number>): Float32Array;
\r
475 * Creates an array from an array-like or iterable object.
\r
476 * @param arrayLike An array-like or iterable object to convert to an array.
\r
477 * @param mapfn A mapping function to call on every element of the array.
\r
478 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
480 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array;
\r
483 interface Float64Array {
\r
484 [Symbol.iterator](): IterableIterator<number>;
\r
486 * Returns an array of key, value pairs for every entry in the array
\r
488 entries(): IterableIterator<[number, number]>;
\r
490 * Returns an list of keys in the array
\r
492 keys(): IterableIterator<number>;
\r
494 * Returns an list of values in the array
\r
496 values(): IterableIterator<number>;
\r
499 interface Float64ArrayConstructor {
\r
500 new (elements: Iterable<number>): Float64Array;
\r
503 * Creates an array from an array-like or iterable object.
\r
504 * @param arrayLike An array-like or iterable object to convert to an array.
\r
505 * @param mapfn A mapping function to call on every element of the array.
\r
506 * @param thisArg Value of 'this' used to invoke the mapfn.
\r
508 from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array;
\r