/*! *****************************************************************************
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;
}