/*! ***************************************************************************** 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(...[value]: [] | [TNext]): IteratorResult; return?(value?: TReturn): IteratorResult; throw?(e?: any): IteratorResult; } interface Iterable { [Symbol.iterator](): Iterator; } /** * Describes a user-defined {@link Iterator} that is also iterable. */ interface IterableIterator extends Iterator { [Symbol.iterator](): IterableIterator; } /** * Describes an {@link Iterator} produced by the runtime that inherits from the intrinsic `Iterator.prototype`. */ interface IteratorObject extends Iterator { [Symbol.iterator](): IteratorObject; } /** * Defines the `TReturn` type used for built-in iterators produced by `Array`, `Map`, `Set`, and others. * This is `undefined` when `strictBuiltInIteratorReturn` is `true`; otherwise, this is `any`. */ type BuiltinIteratorReturn = intrinsic; interface ArrayIterator extends IteratorObject { [Symbol.iterator](): ArrayIterator; } interface Array { /** Iterator */ [Symbol.iterator](): ArrayIterator; /** * Returns an iterable of key, value pairs for every entry in the array */ entries(): ArrayIterator<[number, T]>; /** * Returns an iterable of keys in the array */ keys(): ArrayIterator; /** * Returns an iterable of values in the array */ values(): ArrayIterator; } 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](): ArrayIterator; /** * Returns an iterable of key, value pairs for every entry in the array */ entries(): ArrayIterator<[number, T]>; /** * Returns an iterable of keys in the array */ keys(): ArrayIterator; /** * Returns an iterable of values in the array */ values(): ArrayIterator; } interface IArguments { /** Iterator */ [Symbol.iterator](): ArrayIterator; } interface MapIterator extends IteratorObject { [Symbol.iterator](): MapIterator; } interface Map { /** Returns an iterable of entries in the map. */ [Symbol.iterator](): MapIterator<[K, V]>; /** * Returns an iterable of key, value pairs for every entry in the map. */ entries(): MapIterator<[K, V]>; /** * Returns an iterable of keys in the map */ keys(): MapIterator; /** * Returns an iterable of values in the map */ values(): MapIterator; } interface ReadonlyMap { /** Returns an iterable of entries in the map. */ [Symbol.iterator](): MapIterator<[K, V]>; /** * Returns an iterable of key, value pairs for every entry in the map. */ entries(): MapIterator<[K, V]>; /** * Returns an iterable of keys in the map */ keys(): MapIterator; /** * Returns an iterable of values in the map */ values(): MapIterator; } interface MapConstructor { new (): Map; new (iterable?: Iterable | null): Map; } interface WeakMap {} interface WeakMapConstructor { new (iterable: Iterable): WeakMap; } interface SetIterator extends IteratorObject { [Symbol.iterator](): SetIterator; } interface Set { /** Iterates over values in the set. */ [Symbol.iterator](): SetIterator; /** * Returns an iterable of [v,v] pairs for every value `v` in the set. */ entries(): SetIterator<[T, T]>; /** * Despite its name, returns an iterable of the values in the set. */ keys(): SetIterator; /** * Returns an iterable of values in the set. */ values(): SetIterator; } interface ReadonlySet { /** Iterates over values in the set. */ [Symbol.iterator](): SetIterator; /** * Returns an iterable of [v,v] pairs for every value `v` in the set. */ entries(): SetIterator<[T, T]>; /** * Despite its name, returns an iterable of the values in the set. */ keys(): SetIterator; /** * Returns an iterable of values in the set. */ values(): SetIterator; } 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>; } interface StringIterator extends IteratorObject { [Symbol.iterator](): StringIterator; } interface String { /** Iterator */ [Symbol.iterator](): StringIterator; } interface Int8Array { [Symbol.iterator](): ArrayIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): ArrayIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): ArrayIterator; /** * Returns an list of values in the array */ values(): ArrayIterator; } 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](): ArrayIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): ArrayIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): ArrayIterator; /** * Returns an list of values in the array */ values(): ArrayIterator; } 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](): ArrayIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): ArrayIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): ArrayIterator; /** * Returns an list of values in the array */ values(): ArrayIterator; } 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](): ArrayIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): ArrayIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): ArrayIterator; /** * Returns an list of values in the array */ values(): ArrayIterator; } 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](): ArrayIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): ArrayIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): ArrayIterator; /** * Returns an list of values in the array */ values(): ArrayIterator; } 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](): ArrayIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): ArrayIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): ArrayIterator; /** * Returns an list of values in the array */ values(): ArrayIterator; } 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](): ArrayIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): ArrayIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): ArrayIterator; /** * Returns an list of values in the array */ values(): ArrayIterator; } 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](): ArrayIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): ArrayIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): ArrayIterator; /** * Returns an list of values in the array */ values(): ArrayIterator; } 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](): ArrayIterator; /** * Returns an array of key, value pairs for every entry in the array */ entries(): ArrayIterator<[number, number]>; /** * Returns an list of keys in the array */ keys(): ArrayIterator; /** * Returns an list of values in the array */ values(): ArrayIterator; } 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; }