UNPKG

@bedrock-apis/env-types

Version:

A collection of environment-specific TypeScript type definitions for engines with non-standard versioning and selective feature support across versions.

1,277 lines (1,264 loc) 381 kB
/*! ***************************************************************************** This file includes content derived from Microsoft's TypeScript standard library declaration files (lib.es*.d.ts), licensed under the Apache License, Version 2.0. Modifications include: Portions of the original files have been removed to include only the declarations used by this project. 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, MERCHANTABILITY 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"/> interface Map<K, V> { clear(): void; /** * @returns true if an element in the Map existed and has been removed, or false if the element does not exist. */ delete(key: K): boolean; /** * Executes a provided function once per each key/value pair in the Map, in insertion order. */ forEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void; /** * Returns a specified element from the Map object. If the value that is associated to the provided key is an object, then you will get a reference to that object and any change made to that object will effectively modify it inside the Map. * @returns Returns the element associated with the specified key. If no element is associated with the specified key, undefined is returned. */ get(key: K): V | undefined; /** * @returns boolean indicating whether an element with the specified key exists or not. */ has(key: K): boolean; /** * Adds a new element with a specified key and value to the Map. If an element with the same key already exists, the element will be updated. */ set(key: K, value: V): this; /** * @returns the number of elements in the Map. */ readonly size: number; } interface MapConstructor { new (): Map<any, any>; new <K, V>(entries?: readonly (readonly [K, V])[] | null): Map<K, V>; readonly prototype: Map<any, any>; } declare var Map: MapConstructor; interface ReadonlyMap<K, V> { forEach(callbackfn: (value: V, key: K, map: ReadonlyMap<K, V>) => void, thisArg?: any): void; get(key: K): V | undefined; has(key: K): boolean; readonly size: number; } interface WeakMap<K extends WeakKey, V> { /** * Removes the specified element from the WeakMap. * @returns true if the element was successfully removed, or false if it was not present. */ delete(key: K): boolean; /** * @returns a specified element. */ get(key: K): V | undefined; /** * @returns a boolean indicating whether an element with the specified key exists or not. */ has(key: K): boolean; /** * Adds a new element with a specified key and value. * @param key Must be an object or symbol. */ set(key: K, value: V): this; } interface WeakMapConstructor { new <K extends WeakKey = WeakKey, V = any>(entries?: readonly (readonly [K, V])[] | null): WeakMap<K, V>; readonly prototype: WeakMap<WeakKey, any>; } declare var WeakMap: WeakMapConstructor; interface Set<T> { /** * Appends a new element with a specified value to the end of the Set. */ add(value: T): this; clear(): void; /** * Removes a specified value from the Set. * @returns Returns true if an element in the Set existed and has been removed, or false if the element does not exist. */ delete(value: T): boolean; /** * Executes a provided function once per each value in the Set object, in insertion order. */ forEach(callbackfn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any): void; /** * @returns a boolean indicating whether an element with the specified value exists in the Set or not. */ has(value: T): boolean; /** * @returns the number of (unique) elements in Set. */ readonly size: number; } interface SetConstructor { new <T = any>(values?: readonly T[] | null): Set<T>; readonly prototype: Set<any>; } declare var Set: SetConstructor; interface ReadonlySet<T> { forEach(callbackfn: (value: T, value2: T, set: ReadonlySet<T>) => void, thisArg?: any): void; has(value: T): boolean; readonly size: number; } interface WeakSet<T extends WeakKey> { /** * Appends a new value to the end of the WeakSet. */ add(value: T): this; /** * Removes the specified element from the WeakSet. * @returns Returns true if the element existed and has been removed, or false if the element does not exist. */ delete(value: T): boolean; /** * @returns a boolean indicating whether a value exists in the WeakSet or not. */ has(value: T): boolean; } interface WeakSetConstructor { new <T extends WeakKey = WeakKey>(values?: readonly T[] | null): WeakSet<T>; readonly prototype: WeakSet<WeakKey>; } declare var WeakSet: WeakSetConstructor; interface Array<T> { /** * Returns the value of the first element in the array where predicate is true, and undefined * otherwise. * @param predicate find calls predicate once for each element of the array, in ascending * order, until it finds one where predicate returns true. If such an element is found, find * immediately returns that element value. Otherwise, find returns undefined. * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ find<S extends T>(predicate: (value: T, index: number, obj: T[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): T | undefined; /** * Returns the index of the first element in the array where predicate is true, and -1 * otherwise. * @param predicate find calls predicate once for each element of the array, in ascending * order, until it finds one where predicate returns true. If such an element is found, * findIndex immediately returns that element index. Otherwise, findIndex returns -1. * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ findIndex(predicate: (value: T, index: number, obj: T[]) => unknown, thisArg?: any): number; /** * Changes all array elements from `start` to `end` index to a static `value` and returns the modified array * @param value value to fill array section with * @param start index to start filling the array at. If start is negative, it is treated as * length+start where length is the length of the array. * @param end index to stop filling the array at. If end is negative, it is treated as * length+end. */ fill(value: T, start?: number, end?: number): this; /** * Returns the this object after copying a section of the array identified by start and end * to the same array starting at position target * @param target If target is negative, it is treated as length+target where length is the * length of the array. * @param start If start is negative, it is treated as length+start. If end is negative, it * is treated as length+end. * @param end If not specified, length of the this object is used as its default value. */ copyWithin(target: number, start: number, end?: number): this; } interface ArrayConstructor { /** * Creates an array from an array-like object. * @param arrayLike An array-like object to convert to an array. */ from<T>(arrayLike: ArrayLike<T>): T[]; /** * Creates an array from an iterable object. * @param arrayLike An array-like 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<T, U>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; /** * Returns a new array from a set of elements. * @param items A set of elements to include in the new array object. */ of<T>(...items: T[]): T[]; } interface DateConstructor { new (value: number | string | Date): Date; } interface Function { /** * Returns the name of the function. Function names are read-only and can not be changed. */ readonly name: string; } interface Math { /** * Returns the number of leading zero bits in the 32-bit binary representation of a number. * @param x A numeric expression. */ clz32(x: number): number; /** * Returns the result of 32-bit multiplication of two numbers. * @param x First number * @param y Second number */ imul(x: number, y: number): number; /** * Returns the sign of the x, indicating whether x is positive, negative or zero. * @param x The numeric expression to test */ sign(x: number): number; /** * Returns the base 10 logarithm of a number. * @param x A numeric expression. */ log10(x: number): number; /** * Returns the base 2 logarithm of a number. * @param x A numeric expression. */ log2(x: number): number; /** * Returns the natural logarithm of 1 + x. * @param x A numeric expression. */ log1p(x: number): number; /** * Returns the result of (e^x - 1), which is an implementation-dependent approximation to * subtracting 1 from the exponential function of x (e raised to the power of x, where e * is the base of the natural logarithms). * @param x A numeric expression. */ expm1(x: number): number; /** * Returns the hyperbolic cosine of a number. * @param x A numeric expression that contains an angle measured in radians. */ cosh(x: number): number; /** * Returns the hyperbolic sine of a number. * @param x A numeric expression that contains an angle measured in radians. */ sinh(x: number): number; /** * Returns the hyperbolic tangent of a number. * @param x A numeric expression that contains an angle measured in radians. */ tanh(x: number): number; /** * Returns the inverse hyperbolic cosine of a number. * @param x A numeric expression that contains an angle measured in radians. */ acosh(x: number): number; /** * Returns the inverse hyperbolic sine of a number. * @param x A numeric expression that contains an angle measured in radians. */ asinh(x: number): number; /** * Returns the inverse hyperbolic tangent of a number. * @param x A numeric expression that contains an angle measured in radians. */ atanh(x: number): number; /** * Returns the square root of the sum of squares of its arguments. * @param values Values to compute the square root for. * If no arguments are passed, the result is +0. * If there is only one argument, the result is the absolute value. * If any argument is +Infinity or -Infinity, the result is +Infinity. * If any argument is NaN, the result is NaN. * If all arguments are either +0 or −0, the result is +0. */ hypot(...values: number[]): number; /** * Returns the integral part of the a numeric expression, x, removing any fractional digits. * If x is already an integer, the result is x. * @param x A numeric expression. */ trunc(x: number): number; /** * Returns the nearest single precision float representation of a number. * @param x A numeric expression. */ fround(x: number): number; /** * Returns an implementation-dependent approximation to the cube root of number. * @param x A numeric expression. */ cbrt(x: number): number; } interface NumberConstructor { /** * The value of Number.EPSILON is the difference between 1 and the smallest value greater than 1 * that is representable as a Number value, which is approximately: * 2.2204460492503130808472633361816 x 10‍−‍16. */ readonly EPSILON: number; /** * Returns true if passed value is finite. * Unlike the global isFinite, Number.isFinite doesn't forcibly convert the parameter to a * number. Only finite values of the type number, result in true. * @param number A numeric value. */ isFinite(number: unknown): boolean; /** * Returns true if the value passed is an integer, false otherwise. * @param number A numeric value. */ isInteger(number: unknown): boolean; /** * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a * number). Unlike the global isNaN(), Number.isNaN() doesn't forcefully convert the parameter * to a number. Only values of the type number, that are also NaN, result in true. * @param number A numeric value. */ isNaN(number: unknown): boolean; /** * Returns true if the value passed is a safe integer. * @param number A numeric value. */ isSafeInteger(number: unknown): boolean; /** * The value of the largest integer n such that n and n + 1 are both exactly representable as * a Number value. * The value of Number.MAX_SAFE_INTEGER is 9007199254740991 2^53 − 1. */ readonly MAX_SAFE_INTEGER: number; /** * The value of the smallest integer n such that n and n − 1 are both exactly representable as * a Number value. * The value of Number.MIN_SAFE_INTEGER is −9007199254740991 (−(2^53 − 1)). */ readonly MIN_SAFE_INTEGER: number; /** * Converts a string to a floating-point number. * @param string A string that contains a floating-point number. */ parseFloat(string: string): number; /** * Converts A string to an integer. * @param string A string to convert into a number. * @param radix A value between 2 and 36 that specifies the base of the number in `string`. * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal. * All other strings are considered decimal. */ parseInt(string: string, radix?: number): number; } interface ObjectConstructor { /** * Copy the values of all of the enumerable own properties from one or more source objects to a * target object. Returns the target object. * @param target The target object to copy to. * @param source The source object from which to copy properties. */ assign<T extends {}, U>(target: T, source: U): T & U; /** * Copy the values of all of the enumerable own properties from one or more source objects to a * target object. Returns the target object. * @param target The target object to copy to. * @param source1 The first source object from which to copy properties. * @param source2 The second source object from which to copy properties. */ assign<T extends {}, U, V>(target: T, source1: U, source2: V): T & U & V; /** * Copy the values of all of the enumerable own properties from one or more source objects to a * target object. Returns the target object. * @param target The target object to copy to. * @param source1 The first source object from which to copy properties. * @param source2 The second source object from which to copy properties. * @param source3 The third source object from which to copy properties. */ assign<T extends {}, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W; /** * Copy the values of all of the enumerable own properties from one or more source objects to a * target object. Returns the target object. * @param target The target object to copy to. * @param sources One or more source objects from which to copy properties */ assign(target: object, ...sources: any[]): any; /** * Returns an array of all symbol properties found directly on object o. * @param o Object to retrieve the symbols from. */ getOwnPropertySymbols(o: any): symbol[]; /** * Returns the names of the enumerable string properties and methods of an object. * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object. */ keys(o: {}): string[]; /** * Returns true if the values are the same value, false otherwise. * @param value1 The first value. * @param value2 The second value. */ is(value1: any, value2: any): boolean; /** * Sets the prototype of a specified object o to object proto or null. Returns the object o. * @param o The object to change its prototype. * @param proto The value of the new prototype or null. */ setPrototypeOf(o: any, proto: object | null): any; } interface ReadonlyArray<T> { /** * Returns the value of the first element in the array where predicate is true, and undefined * otherwise. * @param predicate find calls predicate once for each element of the array, in ascending * order, until it finds one where predicate returns true. If such an element is found, find * immediately returns that element value. Otherwise, find returns undefined. * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ find<S extends T>(predicate: (value: T, index: number, obj: readonly T[]) => value is S, thisArg?: any): S | undefined; find(predicate: (value: T, index: number, obj: readonly T[]) => unknown, thisArg?: any): T | undefined; /** * Returns the index of the first element in the array where predicate is true, and -1 * otherwise. * @param predicate find calls predicate once for each element of the array, in ascending * order, until it finds one where predicate returns true. If such an element is found, * findIndex immediately returns that element index. Otherwise, findIndex returns -1. * @param thisArg If provided, it will be used as the this value for each invocation of * predicate. If it is not provided, undefined is used instead. */ findIndex(predicate: (value: T, index: number, obj: readonly T[]) => unknown, thisArg?: any): number; } interface RegExp { /** * Returns a string indicating the flags of the regular expression in question. This field is read-only. * The characters in this string are sequenced and concatenated in the following order: * * - "g" for global * - "i" for ignoreCase * - "m" for multiline * - "u" for unicode * - "y" for sticky * * If no flags are set, the value is the empty string. */ readonly flags: string; /** * Returns a Boolean value indicating the state of the sticky flag (y) used with a regular * expression. Default is false. Read-only. */ readonly sticky: boolean; /** * Returns a Boolean value indicating the state of the Unicode flag (u) used with a regular * expression. Default is false. Read-only. */ readonly unicode: boolean; } interface RegExpConstructor { new (pattern: RegExp | string, flags?: string): RegExp; (pattern: RegExp | string, flags?: string): RegExp; } interface String { /** * Returns a nonnegative integer Number less than 1114112 (0x110000) that is the code point * value of the UTF-16 encoded code point starting at the string element at position pos in * the String resulting from converting this object to a String. * If there is no element at that position, the result is undefined. * If a valid UTF-16 surrogate pair does not begin at pos, the result is the code unit at pos. */ codePointAt(pos: number): number | undefined; /** * Returns true if searchString appears as a substring of the result of converting this * object to a String, at one or more positions that are * greater than or equal to position; otherwise, returns false. * @param searchString search string * @param position If position is undefined, 0 is assumed, so as to search all of the String. */ includes(searchString: string, position?: number): boolean; /** * Returns true if the sequence of elements of searchString converted to a String is the * same as the corresponding elements of this object (converted to a String) starting at * endPosition – length(this). Otherwise returns false. */ endsWith(searchString: string, endPosition?: number): boolean; /** * Returns the String value result of normalizing the string into the normalization form * named by form as specified in Unicode Standard Annex #15, Unicode Normalization Forms. * @param form Applicable values: "NFC", "NFD", "NFKC", or "NFKD", If not specified default * is "NFC" */ normalize(form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; /** * Returns the String value result of normalizing the string into the normalization form * named by form as specified in Unicode Standard Annex #15, Unicode Normalization Forms. * @param form Applicable values: "NFC", "NFD", "NFKC", or "NFKD", If not specified default * is "NFC" */ normalize(form?: string): string; /** * Returns a String value that is made from count copies appended together. If count is 0, * the empty string is returned. * @param count number of copies to append */ repeat(count: number): string; /** * Returns true if the sequence of elements of searchString converted to a String is the * same as the corresponding elements of this object (converted to a String) starting at * position. Otherwise returns false. */ startsWith(searchString: string, position?: number): boolean; /** * Returns an `<a>` HTML anchor element and sets the name attribute to the text value * @deprecated A legacy feature for browser compatibility * @param name */ anchor(name: string): string; /** * Returns a `<big>` HTML element * @deprecated A legacy feature for browser compatibility */ big(): string; /** * Returns a `<blink>` HTML element * @deprecated A legacy feature for browser compatibility */ blink(): string; /** * Returns a `<b>` HTML element * @deprecated A legacy feature for browser compatibility */ bold(): string; /** * Returns a `<tt>` HTML element * @deprecated A legacy feature for browser compatibility */ fixed(): string; /** * Returns a `<font>` HTML element and sets the color attribute value * @deprecated A legacy feature for browser compatibility */ fontcolor(color: string): string; /** * Returns a `<font>` HTML element and sets the size attribute value * @deprecated A legacy feature for browser compatibility */ fontsize(size: number): string; /** * Returns a `<font>` HTML element and sets the size attribute value * @deprecated A legacy feature for browser compatibility */ fontsize(size: string): string; /** * Returns an `<i>` HTML element * @deprecated A legacy feature for browser compatibility */ italics(): string; /** * Returns an `<a>` HTML element and sets the href attribute value * @deprecated A legacy feature for browser compatibility */ link(url: string): string; /** * Returns a `<small>` HTML element * @deprecated A legacy feature for browser compatibility */ small(): string; /** * Returns a `<strike>` HTML element * @deprecated A legacy feature for browser compatibility */ strike(): string; /** * Returns a `<sub>` HTML element * @deprecated A legacy feature for browser compatibility */ sub(): string; /** * Returns a `<sup>` HTML element * @deprecated A legacy feature for browser compatibility */ sup(): string; } interface StringConstructor { /** * Return the String value whose elements are, in order, the elements in the List elements. * If length is 0, the empty string is returned. */ fromCodePoint(...codePoints: number[]): string; /** * String.raw is usually used as a tag function of a Tagged Template String. When called as * such, the first argument will be a well formed template call site object and the rest * parameter will contain the substitution values. It can also be called directly, for example, * to interleave strings and values from your own tag function, and in this case the only thing * it needs from the first argument is the raw property. * @param template A well-formed template string call site representation. * @param substitutions A set of substitution values. */ raw(template: { raw: readonly string[] | ArrayLike<string>; }, ...substitutions: any[]): string; } interface Int8Array<TArrayBuffer extends ArrayBufferLike> { } interface Uint8Array<TArrayBuffer extends ArrayBufferLike> { } interface Uint8ClampedArray<TArrayBuffer extends ArrayBufferLike> { } interface Int16Array<TArrayBuffer extends ArrayBufferLike> { } interface Uint16Array<TArrayBuffer extends ArrayBufferLike> { } interface Int32Array<TArrayBuffer extends ArrayBufferLike> { } interface Uint32Array<TArrayBuffer extends ArrayBufferLike> { } interface Float32Array<TArrayBuffer extends ArrayBufferLike> { } interface Float64Array<TArrayBuffer extends ArrayBufferLike> { } interface Generator<T = unknown, TReturn = any, TNext = any> extends IteratorObject<T, TReturn, TNext> { // NOTE: 'next' is defined using a tuple to ensure we report the correct assignability errors in all places. next(...[value]: [] | [TNext]): IteratorResult<T, TReturn>; return(value: TReturn): IteratorResult<T, TReturn>; throw(e: any): IteratorResult<T, TReturn>; [Symbol.iterator](): Generator<T, TReturn, TNext>; } interface GeneratorFunction { /** * Creates a new Generator object. * @param args A list of arguments the function accepts. */ new (...args: any[]): Generator; /** * Creates a new Generator object. * @param args A list of arguments the function accepts. */ (...args: any[]): Generator; /** * The length of the arguments. */ readonly length: number; /** * Returns the name of the function. */ readonly name: string; /** * A reference to the prototype. */ readonly prototype: Generator; } interface GeneratorFunctionConstructor { /** * Creates a new Generator function. * @param args A list of arguments the function accepts. */ new (...args: string[]): GeneratorFunction; /** * Creates a new Generator function. * @param args A list of arguments the function accepts. */ (...args: string[]): GeneratorFunction; /** * The length of the arguments. */ readonly length: number; /** * Returns the name of the function. */ readonly name: string; /** * A reference to the prototype. */ readonly prototype: GeneratorFunction; } 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<TYield> { done?: false; value: TYield; } interface IteratorReturnResult<TReturn> { done: true; value: TReturn; } type IteratorResult<T, TReturn = any> = IteratorYieldResult<T> | IteratorReturnResult<TReturn>; interface Iterator<T, TReturn = any, TNext = any> { // NOTE: 'next' is defined using a tuple to ensure we report the correct assignability errors in all places. next(...[value]: [] | [TNext]): IteratorResult<T, TReturn>; return?(value?: TReturn): IteratorResult<T, TReturn>; throw?(e?: any): IteratorResult<T, TReturn>; } interface Iterable<T, TReturn = any, TNext = any> { [Symbol.iterator](): Iterator<T, TReturn, TNext>; } /** * Describes a user-defined {@link Iterator} that is also iterable. */ interface IterableIterator<T, TReturn = any, TNext = any> extends Iterator<T, TReturn, TNext> { [Symbol.iterator](): IterableIterator<T, TReturn, TNext>; } /** * Describes an {@link Iterator} produced by the runtime that inherits from the intrinsic `Iterator.prototype`. */ interface IteratorObject<T, TReturn = unknown, TNext = unknown> extends Iterator<T, TReturn, TNext> { [Symbol.iterator](): IteratorObject<T, TReturn, TNext>; } /** * 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<T> extends IteratorObject<T, BuiltinIteratorReturn, unknown> { [Symbol.iterator](): ArrayIterator<T>; } interface Array<T> { /** Iterator */ [Symbol.iterator](): ArrayIterator<T>; /** * 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<number>; /** * Returns an iterable of values in the array */ values(): ArrayIterator<T>; } interface ArrayConstructor { /** * Creates an array from an iterable object. * @param iterable An iterable object to convert to an array. */ from<T>(iterable: Iterable<T> | ArrayLike<T>): 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<T, U>(iterable: Iterable<T> | ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } interface ReadonlyArray<T> { /** Iterator of values in the array. */ [Symbol.iterator](): ArrayIterator<T>; /** * 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<number>; /** * Returns an iterable of values in the array */ values(): ArrayIterator<T>; } interface IArguments { /** Iterator */ [Symbol.iterator](): ArrayIterator<any>; } interface MapIterator<T> extends IteratorObject<T, BuiltinIteratorReturn, unknown> { [Symbol.iterator](): MapIterator<T>; } interface Map<K, V> { /** 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<K>; /** * Returns an iterable of values in the map */ values(): MapIterator<V>; } interface ReadonlyMap<K, V> { /** 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<K>; /** * Returns an iterable of values in the map */ values(): MapIterator<V>; } interface MapConstructor { new (): Map<any, any>; new <K, V>(iterable?: Iterable<readonly [K, V]> | null): Map<K, V>; } interface WeakMap<K extends WeakKey, V> {} interface WeakMapConstructor { new <K extends WeakKey, V>(iterable: Iterable<readonly [K, V]>): WeakMap<K, V>; } interface SetIterator<T> extends IteratorObject<T, BuiltinIteratorReturn, unknown> { [Symbol.iterator](): SetIterator<T>; } interface Set<T> { /** Iterates over values in the set. */ [Symbol.iterator](): SetIterator<T>; /** * 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<T>; /** * Returns an iterable of values in the set. */ values(): SetIterator<T>; } interface ReadonlySet<T> { /** Iterates over values in the set. */ [Symbol.iterator](): SetIterator<T>; /** * 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<T>; /** * Returns an iterable of values in the set. */ values(): SetIterator<T>; } interface SetConstructor { new <T>(iterable?: Iterable<T> | null): Set<T>; } interface WeakSet<T extends WeakKey> {} interface WeakSetConstructor { new <T extends WeakKey = WeakKey>(iterable: Iterable<T>): WeakSet<T>; } interface Promise<T> {} 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<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<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<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>>; } interface StringIterator<T> extends IteratorObject<T, BuiltinIteratorReturn, unknown> { [Symbol.iterator](): StringIterator<T>; } interface String { /** Iterator */ [Symbol.iterator](): StringIterator<string>; } interface Int8Array<TArrayBuffer extends ArrayBufferLike> { [Symbol.iterator](): ArrayIterator<number>; /** * 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<number>; /** * Returns an list of values in the array */ values(): ArrayIterator<number>; } interface Int8ArrayConstructor { new (elements: Iterable<number>): Int8Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements An iterable object to convert to an array. */ from(elements: Iterable<number>): Int8Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements 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<T>(elements: Iterable<T>, mapfn?: (v: T, k: number) => number, thisArg?: any): Int8Array<ArrayBuffer>; } interface Uint8Array<TArrayBuffer extends ArrayBufferLike> { [Symbol.iterator](): ArrayIterator<number>; /** * 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<number>; /** * Returns an list of values in the array */ values(): ArrayIterator<number>; } interface Uint8ArrayConstructor { new (elements: Iterable<number>): Uint8Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements An iterable object to convert to an array. */ from(elements: Iterable<number>): Uint8Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements 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<T>(elements: Iterable<T>, mapfn?: (v: T, k: number) => number, thisArg?: any): Uint8Array<ArrayBuffer>; } interface Uint8ClampedArray<TArrayBuffer extends ArrayBufferLike> { [Symbol.iterator](): ArrayIterator<number>; /** * 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<number>; /** * Returns an list of values in the array */ values(): ArrayIterator<number>; } interface Uint8ClampedArrayConstructor { new (elements: Iterable<number>): Uint8ClampedArray<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements An iterable object to convert to an array. */ from(elements: Iterable<number>): Uint8ClampedArray<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements 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<T>(elements: Iterable<T>, mapfn?: (v: T, k: number) => number, thisArg?: any): Uint8ClampedArray<ArrayBuffer>; } interface Int16Array<TArrayBuffer extends ArrayBufferLike> { [Symbol.iterator](): ArrayIterator<number>; /** * 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<number>; /** * Returns an list of values in the array */ values(): ArrayIterator<number>; } interface Int16ArrayConstructor { new (elements: Iterable<number>): Int16Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements An iterable object to convert to an array. */ from(elements: Iterable<number>): Int16Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements 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<T>(elements: Iterable<T>, mapfn?: (v: T, k: number) => number, thisArg?: any): Int16Array<ArrayBuffer>; } interface Uint16Array<TArrayBuffer extends ArrayBufferLike> { [Symbol.iterator](): ArrayIterator<number>; /** * 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<number>; /** * Returns an list of values in the array */ values(): ArrayIterator<number>; } interface Uint16ArrayConstructor { new (elements: Iterable<number>): Uint16Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements An iterable object to convert to an array. */ from(elements: Iterable<number>): Uint16Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements 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<T>(elements: Iterable<T>, mapfn?: (v: T, k: number) => number, thisArg?: any): Uint16Array<ArrayBuffer>; } interface Int32Array<TArrayBuffer extends ArrayBufferLike> { [Symbol.iterator](): ArrayIterator<number>; /** * 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<number>; /** * Returns an list of values in the array */ values(): ArrayIterator<number>; } interface Int32ArrayConstructor { new (elements: Iterable<number>): Int32Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements An iterable object to convert to an array. */ from(elements: Iterable<number>): Int32Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements 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<T>(elements: Iterable<T>, mapfn?: (v: T, k: number) => number, thisArg?: any): Int32Array<ArrayBuffer>; } interface Uint32Array<TArrayBuffer extends ArrayBufferLike> { [Symbol.iterator](): ArrayIterator<number>; /** * 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<number>; /** * Returns an list of values in the array */ values(): ArrayIterator<number>; } interface Uint32ArrayConstructor { new (elements: Iterable<number>): Uint32Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements An iterable object to convert to an array. */ from(elements: Iterable<number>): Uint32Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements 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<T>(elements: Iterable<T>, mapfn?: (v: T, k: number) => number, thisArg?: any): Uint32Array<ArrayBuffer>; } interface Float32Array<TArrayBuffer extends ArrayBufferLike> { [Symbol.iterator](): ArrayIterator<number>; /** * 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<number>; /** * Returns an list of values in the array */ values(): ArrayIterator<number>; } interface Float32ArrayConstructor { new (elements: Iterable<number>): Float32Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements An iterable object to convert to an array. */ from(elements: Iterable<number>): Float32Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements 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<T>(elements: Iterable<T>, mapfn?: (v: T, k: number) => number, thisArg?: any): Float32Array<ArrayBuffer>; } interface Float64Array<TArrayBuffer extends ArrayBufferLike> { [Symbol.iterator](): ArrayIterator<number>; /** * 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<number>; /** * Returns an list of values in the array */ values(): ArrayIterator<number>; } interface Float64ArrayConstructor { new (elements: Iterable<number>): Float64Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements An iterable object to convert to an array. */ from(elements: Iterable<number>): Float64Array<ArrayBuffer>; /** * Creates an array from an array-like or iterable object. * @param elements 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<T>(elements: Iterable<T>, mapfn?: (v: T, k: number) => number, thisArg?: any): Float64Array<ArrayBuffer>; } interface PromiseConstructor { /** * A reference to the prototype. */ readonly prototype: Promise<any>; /** * Creates a new Promise. * @param executor A callback used to initialize the promise. This callback is passed two arguments: * a resolve callback used to resolve the promise with a value or the result of another promise, * and a reject callback used to reject the promise with a provided reason or error. */ new <T>(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T>; /** * 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 array of Promises. * @returns A new Promise. */ all<T extends readonly unknown[] | []>(values: T): Promise<{ -readonly [P in keyof T]: Awaited<T[P]>; }>; // see: lib.es2015.iterable.d.ts // all<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>[]>; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved * or rejected. * @param values An array of Promises. * @returns A new Promise. */ race<T extends readonly unknown[] | []>(values: T): Promise<Awaited<T[number]>>; // see: lib.es2015.iterable.d.ts // race<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>>; /** * Creates a new rejected promise for the provided reason. * @param reason The reason the promise was rejected. * @returns A new rejected Promise. */ reject<T = never>(reason?: any): Promise<T>; /** * Creates a new resolved promise. * @returns A resolved promise. */ resolve(): Promise<void>; /** * Creates a new resolved promise for the provided value. * @param value A promise. * @returns A promise whose internal state matches the provided promise. */ resolve<T>(value: T): Promise<Awaited<T>>; /** * Creates a new resolved promise for the provided value. * @param value A promise. * @returns A promise whose internal state matches the provided promise. */ resolve<T>(value: T | PromiseLike<T>): Promise<Awaited<T>>; } declare var Promise: PromiseConstructor; interface ProxyHandler<T extends object> { /** * A trap method for a function call. * @param target The original callable object which is being proxied. */ apply?(target: T, thisArg: any, argArray: any[]): any; /** * A trap for the `new` operator. * @param target The original object which is being proxied. * @param newTarget The constructor that was originally called. */ construct?(target: T, argArray: any[], newTarget: Function): object; /** * A trap for `Object.defineProperty()`. * @param target The original object which is being proxied. * @returns A `Boolean` indicating whether or not the property has been defined. */ defineProperty?(target: T, property: string | symbol, attributes: PropertyDescriptor): boolean; /** * A trap for the `delete` operator. * @param target The original object which is being proxied. * @param p The name or `Symbol` of the property to delete. * @returns A `Boolean` indicating whether or not the property was deleted. */ deleteProperty?(target: T, p: string | symbol): boolean; /** * A trap for getting a property value. * @param target The original object which is being proxied. * @param p The name or `Symbol` of the property to get. * @param receiver The proxy or an object that inherits from the proxy. */ get?(target: T, p: string | symbol, receiver: any): any; /** * A trap for `Object.getOwnPropertyDescriptor()`. * @param target The original object which is being proxied. * @param p The name of the property whose description should be retrieved. */ getOwnPropertyDescriptor?(target: T, p: string | symbol): PropertyDescriptor | undefined; /** * A trap for the `[[GetPrototypeOf]]` internal method. * @param target The original object which is being proxied. */ getPrototypeOf?(target: T): object | null; /** * A trap for the `in` operator. * @param target The original object which is being proxied. * @param p The name or `Symbol` of the property to check for existence. */ has?(target: T, p: string | symbol): boolean; /** * A trap for `Object.isExtensible()`. * @param target The original object which is being proxied. */ isExtensible?(target: T): boolean; /** * A trap for `Reflect.ownKeys()`. * @param target The original object which is being proxied. */ ownKeys?(target: