--- /dev/null
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at http://www.apache.org/licenses/LICENSE-2.0
+
+THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+MERCHANTABLITY OR NON-INFRINGEMENT.
+
+See the Apache Version 2.0 License for specific language governing permissions
+and limitations under the License.
+***************************************************************************** */
+
+
+
+/// <reference no-default-lib="true"/>\r
+
+
+/// <reference lib="es2015.symbol" />\r
+\r
+interface SymbolConstructor {\r
+ /**\r
+ * A method that returns the default iterator for an object. Called by the semantics of the\r
+ * for-of statement.\r
+ */\r
+ readonly iterator: symbol;\r
+}\r
+\r
+interface IteratorYieldResult<TYield> {\r
+ done?: false;\r
+ value: TYield;\r
+}\r
+\r
+interface IteratorReturnResult<TReturn> {\r
+ done: true;\r
+ value: TReturn;\r
+}\r
+\r
+type IteratorResult<T, TReturn = any> = IteratorYieldResult<T> | IteratorReturnResult<TReturn>;\r
+\r
+interface Iterator<T, TReturn = any, TNext = undefined> {\r
+ // NOTE: 'next' is defined using a tuple to ensure we report the correct assignability errors in all places.\r
+ next(...args: [] | [TNext]): IteratorResult<T, TReturn>;\r
+ return?(value?: TReturn): IteratorResult<T, TReturn>;\r
+ throw?(e?: any): IteratorResult<T, TReturn>;\r
+}\r
+\r
+interface Iterable<T> {\r
+ [Symbol.iterator](): Iterator<T>;\r
+}\r
+\r
+interface IterableIterator<T> extends Iterator<T> {\r
+ [Symbol.iterator](): IterableIterator<T>;\r
+}\r
+\r
+interface Array<T> {\r
+ /** Iterator */\r
+ [Symbol.iterator](): IterableIterator<T>;\r
+\r
+ /**\r
+ * Returns an iterable of key, value pairs for every entry in the array\r
+ */\r
+ entries(): IterableIterator<[number, T]>;\r
+\r
+ /**\r
+ * Returns an iterable of keys in the array\r
+ */\r
+ keys(): IterableIterator<number>;\r
+\r
+ /**\r
+ * Returns an iterable of values in the array\r
+ */\r
+ values(): IterableIterator<T>;\r
+}\r
+\r
+interface ArrayConstructor {\r
+ /**\r
+ * Creates an array from an iterable object.\r
+ * @param iterable An iterable object to convert to an array.\r
+ */\r
+ from<T>(iterable: Iterable<T> | ArrayLike<T>): T[];\r
+\r
+ /**\r
+ * Creates an array from an iterable object.\r
+ * @param iterable An iterable object to convert to an array.\r
+ * @param mapfn A mapping function to call on every element of the array.\r
+ * @param thisArg Value of 'this' used to invoke the mapfn.\r
+ */\r
+ from<T, U>(iterable: Iterable<T> | ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): U[];\r
+}\r
+\r
+interface ReadonlyArray<T> {\r
+ /** Iterator of values in the array. */\r
+ [Symbol.iterator](): IterableIterator<T>;\r
+\r
+ /**\r
+ * Returns an iterable of key, value pairs for every entry in the array\r
+ */\r
+ entries(): IterableIterator<[number, T]>;\r
+\r
+ /**\r
+ * Returns an iterable of keys in the array\r
+ */\r
+ keys(): IterableIterator<number>;\r
+\r
+ /**\r
+ * Returns an iterable of values in the array\r
+ */\r
+ values(): IterableIterator<T>;\r
+}\r
+\r
+interface IArguments {\r
+ /** Iterator */\r
+ [Symbol.iterator](): IterableIterator<any>;\r
+}\r
+\r
+interface Map<K, V> {\r
+ /** Returns an iterable of entries in the map. */\r
+ [Symbol.iterator](): IterableIterator<[K, V]>;\r
+\r
+ /**\r
+ * Returns an iterable of key, value pairs for every entry in the map.\r
+ */\r
+ entries(): IterableIterator<[K, V]>;\r
+\r
+ /**\r
+ * Returns an iterable of keys in the map\r
+ */\r
+ keys(): IterableIterator<K>;\r
+\r
+ /**\r
+ * Returns an iterable of values in the map\r
+ */\r
+ values(): IterableIterator<V>;\r
+}\r
+\r
+interface ReadonlyMap<K, V> {\r
+ /** Returns an iterable of entries in the map. */\r
+ [Symbol.iterator](): IterableIterator<[K, V]>;\r
+\r
+ /**\r
+ * Returns an iterable of key, value pairs for every entry in the map.\r
+ */\r
+ entries(): IterableIterator<[K, V]>;\r
+\r
+ /**\r
+ * Returns an iterable of keys in the map\r
+ */\r
+ keys(): IterableIterator<K>;\r
+\r
+ /**\r
+ * Returns an iterable of values in the map\r
+ */\r
+ values(): IterableIterator<V>;\r
+}\r
+\r
+interface MapConstructor {\r
+ new <K, V>(iterable: Iterable<readonly [K, V]>): Map<K, V>;\r
+}\r
+\r
+interface WeakMap<K extends object, V> { }\r
+\r
+interface WeakMapConstructor {\r
+ new <K extends object, V>(iterable: Iterable<[K, V]>): WeakMap<K, V>;\r
+}\r
+\r
+interface Set<T> {\r
+ /** Iterates over values in the set. */\r
+ [Symbol.iterator](): IterableIterator<T>;\r
+ /**\r
+ * Returns an iterable of [v,v] pairs for every value `v` in the set.\r
+ */\r
+ entries(): IterableIterator<[T, T]>;\r
+ /**\r
+ * Despite its name, returns an iterable of the values in the set,\r
+ */\r
+ keys(): IterableIterator<T>;\r
+\r
+ /**\r
+ * Returns an iterable of values in the set.\r
+ */\r
+ values(): IterableIterator<T>;\r
+}\r
+\r
+interface ReadonlySet<T> {\r
+ /** Iterates over values in the set. */\r
+ [Symbol.iterator](): IterableIterator<T>;\r
+\r
+ /**\r
+ * Returns an iterable of [v,v] pairs for every value `v` in the set.\r
+ */\r
+ entries(): IterableIterator<[T, T]>;\r
+\r
+ /**\r
+ * Despite its name, returns an iterable of the values in the set,\r
+ */\r
+ keys(): IterableIterator<T>;\r
+\r
+ /**\r
+ * Returns an iterable of values in the set.\r
+ */\r
+ values(): IterableIterator<T>;\r
+}\r
+\r
+interface SetConstructor {\r
+ new <T>(iterable?: Iterable<T> | null): Set<T>;\r
+}\r
+\r
+interface WeakSet<T extends object> { }\r
+\r
+interface WeakSetConstructor {\r
+ new <T extends object = object>(iterable: Iterable<T>): WeakSet<T>;\r
+}\r
+\r
+interface Promise<T> { }\r
+\r
+interface PromiseConstructor {\r
+ /**\r
+ * Creates a Promise that is resolved with an array of results when all of the provided Promises\r
+ * resolve, or rejected when any Promise is rejected.\r
+ * @param values An iterable of Promises.\r
+ * @returns A new Promise.\r
+ */\r
+ all<T>(values: Iterable<T | PromiseLike<T>>): Promise<T[]>;\r
+\r
+ /**\r
+ * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved\r
+ * or rejected.\r
+ * @param values An iterable of Promises.\r
+ * @returns A new Promise.\r
+ */\r
+ race<T>(values: Iterable<T>): Promise<T extends PromiseLike<infer U> ? U : T>;\r
+\r
+ /**\r
+ * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved\r
+ * or rejected.\r
+ * @param values An iterable of Promises.\r
+ * @returns A new Promise.\r
+ */\r
+ race<T>(values: Iterable<T | PromiseLike<T>>): Promise<T>;\r
+}\r
+\r
+declare namespace Reflect {\r
+ function enumerate(target: object): IterableIterator<any>;\r
+}\r
+\r
+interface String {\r
+ /** Iterator */\r
+ [Symbol.iterator](): IterableIterator<string>;\r
+}\r
+\r
+interface Int8Array {\r
+ [Symbol.iterator](): IterableIterator<number>;\r
+ /**\r
+ * Returns an array of key, value pairs for every entry in the array\r
+ */\r
+ entries(): IterableIterator<[number, number]>;\r
+ /**\r
+ * Returns an list of keys in the array\r
+ */\r
+ keys(): IterableIterator<number>;\r
+ /**\r
+ * Returns an list of values in the array\r
+ */\r
+ values(): IterableIterator<number>;\r
+}\r
+\r
+interface Int8ArrayConstructor {\r
+ new (elements: Iterable<number>): Int8Array;\r
+\r
+ /**\r
+ * Creates an array from an array-like or iterable object.\r
+ * @param arrayLike An array-like or iterable object to convert to an array.\r
+ * @param mapfn A mapping function to call on every element of the array.\r
+ * @param thisArg Value of 'this' used to invoke the mapfn.\r
+ */\r
+ from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array;\r
+}\r
+\r
+interface Uint8Array {\r
+ [Symbol.iterator](): IterableIterator<number>;\r
+ /**\r
+ * Returns an array of key, value pairs for every entry in the array\r
+ */\r
+ entries(): IterableIterator<[number, number]>;\r
+ /**\r
+ * Returns an list of keys in the array\r
+ */\r
+ keys(): IterableIterator<number>;\r
+ /**\r
+ * Returns an list of values in the array\r
+ */\r
+ values(): IterableIterator<number>;\r
+}\r
+\r
+interface Uint8ArrayConstructor {\r
+ new (elements: Iterable<number>): Uint8Array;\r
+\r
+ /**\r
+ * Creates an array from an array-like or iterable object.\r
+ * @param arrayLike An array-like or iterable object to convert to an array.\r
+ * @param mapfn A mapping function to call on every element of the array.\r
+ * @param thisArg Value of 'this' used to invoke the mapfn.\r
+ */\r
+ from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array;\r
+}\r
+\r
+interface Uint8ClampedArray {\r
+ [Symbol.iterator](): IterableIterator<number>;\r
+ /**\r
+ * Returns an array of key, value pairs for every entry in the array\r
+ */\r
+ entries(): IterableIterator<[number, number]>;\r
+\r
+ /**\r
+ * Returns an list of keys in the array\r
+ */\r
+ keys(): IterableIterator<number>;\r
+\r
+ /**\r
+ * Returns an list of values in the array\r
+ */\r
+ values(): IterableIterator<number>;\r
+}\r
+\r
+interface Uint8ClampedArrayConstructor {\r
+ new (elements: Iterable<number>): Uint8ClampedArray;\r
+\r
+\r
+ /**\r
+ * Creates an array from an array-like or iterable object.\r
+ * @param arrayLike An array-like or iterable object to convert to an array.\r
+ * @param mapfn A mapping function to call on every element of the array.\r
+ * @param thisArg Value of 'this' used to invoke the mapfn.\r
+ */\r
+ from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray;\r
+}\r
+\r
+interface Int16Array {\r
+ [Symbol.iterator](): IterableIterator<number>;\r
+ /**\r
+ * Returns an array of key, value pairs for every entry in the array\r
+ */\r
+ entries(): IterableIterator<[number, number]>;\r
+\r
+ /**\r
+ * Returns an list of keys in the array\r
+ */\r
+ keys(): IterableIterator<number>;\r
+\r
+ /**\r
+ * Returns an list of values in the array\r
+ */\r
+ values(): IterableIterator<number>;\r
+}\r
+\r
+interface Int16ArrayConstructor {\r
+ new (elements: Iterable<number>): Int16Array;\r
+\r
+ /**\r
+ * Creates an array from an array-like or iterable object.\r
+ * @param arrayLike An array-like or iterable object to convert to an array.\r
+ * @param mapfn A mapping function to call on every element of the array.\r
+ * @param thisArg Value of 'this' used to invoke the mapfn.\r
+ */\r
+ from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array;\r
+}\r
+\r
+interface Uint16Array {\r
+ [Symbol.iterator](): IterableIterator<number>;\r
+ /**\r
+ * Returns an array of key, value pairs for every entry in the array\r
+ */\r
+ entries(): IterableIterator<[number, number]>;\r
+ /**\r
+ * Returns an list of keys in the array\r
+ */\r
+ keys(): IterableIterator<number>;\r
+ /**\r
+ * Returns an list of values in the array\r
+ */\r
+ values(): IterableIterator<number>;\r
+}\r
+\r
+interface Uint16ArrayConstructor {\r
+ new (elements: Iterable<number>): Uint16Array;\r
+\r
+ /**\r
+ * Creates an array from an array-like or iterable object.\r
+ * @param arrayLike An array-like or iterable object to convert to an array.\r
+ * @param mapfn A mapping function to call on every element of the array.\r
+ * @param thisArg Value of 'this' used to invoke the mapfn.\r
+ */\r
+ from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array;\r
+}\r
+\r
+interface Int32Array {\r
+ [Symbol.iterator](): IterableIterator<number>;\r
+ /**\r
+ * Returns an array of key, value pairs for every entry in the array\r
+ */\r
+ entries(): IterableIterator<[number, number]>;\r
+ /**\r
+ * Returns an list of keys in the array\r
+ */\r
+ keys(): IterableIterator<number>;\r
+ /**\r
+ * Returns an list of values in the array\r
+ */\r
+ values(): IterableIterator<number>;\r
+}\r
+\r
+interface Int32ArrayConstructor {\r
+ new (elements: Iterable<number>): Int32Array;\r
+\r
+ /**\r
+ * Creates an array from an array-like or iterable object.\r
+ * @param arrayLike An array-like or iterable object to convert to an array.\r
+ * @param mapfn A mapping function to call on every element of the array.\r
+ * @param thisArg Value of 'this' used to invoke the mapfn.\r
+ */\r
+ from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array;\r
+}\r
+\r
+interface Uint32Array {\r
+ [Symbol.iterator](): IterableIterator<number>;\r
+ /**\r
+ * Returns an array of key, value pairs for every entry in the array\r
+ */\r
+ entries(): IterableIterator<[number, number]>;\r
+ /**\r
+ * Returns an list of keys in the array\r
+ */\r
+ keys(): IterableIterator<number>;\r
+ /**\r
+ * Returns an list of values in the array\r
+ */\r
+ values(): IterableIterator<number>;\r
+}\r
+\r
+interface Uint32ArrayConstructor {\r
+ new (elements: Iterable<number>): Uint32Array;\r
+\r
+ /**\r
+ * Creates an array from an array-like or iterable object.\r
+ * @param arrayLike An array-like or iterable object to convert to an array.\r
+ * @param mapfn A mapping function to call on every element of the array.\r
+ * @param thisArg Value of 'this' used to invoke the mapfn.\r
+ */\r
+ from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array;\r
+}\r
+\r
+interface Float32Array {\r
+ [Symbol.iterator](): IterableIterator<number>;\r
+ /**\r
+ * Returns an array of key, value pairs for every entry in the array\r
+ */\r
+ entries(): IterableIterator<[number, number]>;\r
+ /**\r
+ * Returns an list of keys in the array\r
+ */\r
+ keys(): IterableIterator<number>;\r
+ /**\r
+ * Returns an list of values in the array\r
+ */\r
+ values(): IterableIterator<number>;\r
+}\r
+\r
+interface Float32ArrayConstructor {\r
+ new (elements: Iterable<number>): Float32Array;\r
+\r
+ /**\r
+ * Creates an array from an array-like or iterable object.\r
+ * @param arrayLike An array-like or iterable object to convert to an array.\r
+ * @param mapfn A mapping function to call on every element of the array.\r
+ * @param thisArg Value of 'this' used to invoke the mapfn.\r
+ */\r
+ from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array;\r
+}\r
+\r
+interface Float64Array {\r
+ [Symbol.iterator](): IterableIterator<number>;\r
+ /**\r
+ * Returns an array of key, value pairs for every entry in the array\r
+ */\r
+ entries(): IterableIterator<[number, number]>;\r
+ /**\r
+ * Returns an list of keys in the array\r
+ */\r
+ keys(): IterableIterator<number>;\r
+ /**\r
+ * Returns an list of values in the array\r
+ */\r
+ values(): IterableIterator<number>;\r
+}\r
+\r
+interface Float64ArrayConstructor {\r
+ new (elements: Iterable<number>): Float64Array;\r
+\r
+ /**\r
+ * Creates an array from an array-like or iterable object.\r
+ * @param arrayLike An array-like or iterable object to convert to an array.\r
+ * @param mapfn A mapping function to call on every element of the array.\r
+ * @param thisArg Value of 'this' used to invoke the mapfn.\r
+ */\r
+ from(arrayLike: Iterable<number>, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array;\r
+}\r