/*! ***************************************************************************** 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. ***************************************************************************** */ /// /// interface SymbolConstructor { /** * A method that returns the default iterator for an object. Called by the semantics of the * for-of statement. */ readonly iterator: unique symbol; } interface IteratorYieldResult { done?: false; value: TYield; } interface IteratorReturnResult { done: true; value: TReturn; } type IteratorResult = IteratorYieldResult | IteratorReturnResult; interface Iterator { // NOTE: 'next' is defined using a tuple to ensure we report the correct assignability errors in all places. next(...args: [] | [TNext]): IteratorResult; return?(value?: TReturn): IteratorResult; throw?(e?: any): IteratorResult; } interface Iterable { [Symbol.iterator](): Iterator; } interface IterableIterator extends Iterator { [Symbol.iterator](): IterableIterator; } interface Array { /** Iterator */ [Symbol.iterator](): IterableIterator; /** * Returns an iterable of key, value pairs for every entry in the array */ entries(): IterableIterator<[number, T]>; /** * Returns an iterable of keys in the array */ keys(): IterableIterator; /** * Returns an iterable of values in the array */ values(): IterableIterator; } interface ArrayConstructor { /** * Creates an array from an iterable object. * @param iterable An iterable object to convert to an array. */ from(iterable: Iterable | ArrayLike): T[]; /** * Creates an array from an iterable object. * @param iterable An iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ from(iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } interface ReadonlyArray { /** Iterator of values in the array. */ [Symbol.iterator](): IterableIterator; /** * Returns an iterable of key, value pairs for every entry in the array */ entries(): IterableIterator<[number, T]>; /** * Returns an iterable of keys in the array */ keys(): IterableIterator; /** * Returns an iterable of values in the array */ values(): IterableIterator; } interface IArguments { /** Iterator */ [Symbol.iterator](): IterableIterator; } interface Map { /** Returns an iterable of entries in the map. */ [Symbol.iterator](): IterableIterator<[K, V]>; /** * Returns an iterable of key, value pairs for every entry in the map. */ entries(): IterableIterator<[K, V]>; /** * Returns an iterable of keys in the map */ keys(): IterableIterator; /** * Returns an iterable of values in the map */ values(): IterableIterator; } interface ReadonlyMap { /** Returns an iterable of entries in the map. */ [Symbol.iterator](): IterableIterator<[K, V]>; /** * Returns an iterable of key, value pairs for every entry in the map. */ entries(): IterableIterator<[K, V]>; /** * Returns an iterable of keys in the map */ keys(): IterableIterator; /** * Returns an iterable of values in the map */ values(): IterableIterator; } interface MapConstructor { new (iterable: Iterable): Map; } interface WeakMap { } interface WeakMapConstructor { new (iterable: Iterable<[K, V]>): WeakMap; } interface Set { /** Iterates over values in the set. */ [Symbol.iterator](): IterableIterator; /** * Returns an iterable of [v,v] pairs for every value `v` in the set. */ entries(): IterableIterator<[T, T]>; /** * Despite its name, returns an iterable of the values in the set. */ keys(): IterableIterator; /** * Returns an iterable of values in the set. */ values(): IterableIterator; } interface ReadonlySet { /** Iterates over values in the set. */ [Symbol.iterator](): IterableIterator; /** * Returns an iterable of [v,v] pairs for every value `v` in the set. */ entries(): IterableIterator<[T, T]>; /** * Despite its name, returns an iterable of the values in the set. */ keys(): IterableIterator; /** * Returns an iterable of values in the set. */ values(): IterableIterator; } interface SetConstructor { new (iterable?: Iterable | null): Set; } interface WeakSet { } interface WeakSetConstructor { new (iterable: Iterable): WeakSet; } interface Promise { } interface PromiseConstructor { /** * Creates a Promise that is resolved with an array of results when all of the provided Promises * resolve, or rejected when any Promise is rejected. * @param values An iterable of Promises. * @returns A new Promise. */ all(values: Iterable>): Promise; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved * or rejected. * @param values An iterable of Promises. * @returns A new Promise. */ race(values: Iterable): Promise ? U : T>; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved * or rejected. * @param values An iterable of Promises. * @returns A new Promise. */ race(values: Iterable>): Promise; } interface String { /** Iterator */ [Symbol.iterator](): IterableIterator; } interface Int8Array { [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): IterableIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): IterableIterator; /** * Returns an list of values in the array */ values(): IterableIterator; } interface Int8ArrayConstructor { new (elements: Iterable): Int8Array; /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array; } interface Uint8Array { [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): IterableIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): IterableIterator; /** * Returns an list of values in the array */ values(): IterableIterator; } interface Uint8ArrayConstructor { new (elements: Iterable): Uint8Array; /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array; } interface Uint8ClampedArray { [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): IterableIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): IterableIterator; /** * Returns an list of values in the array */ values(): IterableIterator; } interface Uint8ClampedArrayConstructor { new (elements: Iterable): Uint8ClampedArray; /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray; } interface Int16Array { [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): IterableIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): IterableIterator; /** * Returns an list of values in the array */ values(): IterableIterator; } interface Int16ArrayConstructor { new (elements: Iterable): Int16Array; /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array; } interface Uint16Array { [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): IterableIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): IterableIterator; /** * Returns an list of values in the array */ values(): IterableIterator; } interface Uint16ArrayConstructor { new (elements: Iterable): Uint16Array; /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array; } interface Int32Array { [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): IterableIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): IterableIterator; /** * Returns an list of values in the array */ values(): IterableIterator; } interface Int32ArrayConstructor { new (elements: Iterable): Int32Array; /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array; } interface Uint32Array { [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): IterableIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): IterableIterator; /** * Returns an list of values in the array */ values(): IterableIterator; } interface Uint32ArrayConstructor { new (elements: Iterable): Uint32Array; /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array; } interface Float32Array { [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): IterableIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): IterableIterator; /** * Returns an list of values in the array */ values(): IterableIterator; } interface Float32ArrayConstructor { new (elements: Iterable): Float32Array; /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array; } interface Float64Array { [Symbol.iterator](): IterableIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): IterableIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): IterableIterator; /** * Returns an list of values in the array */ values(): IterableIterator; } interface Float64ArrayConstructor { new (elements: Iterable): Float64Array; /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. * @param mapfn A mapping function to call on every element of the array. * @param thisArg Value of 'this' used to invoke the mapfn. */ from(arrayLike: Iterable, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; }