From ebbdadb4b6bd59e57b0eec8e280c7c5c12453167 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 14 Sep 2016 15:55:10 +0200 Subject: [PATCH] sort out libs / fix warnings --- articles/ui/ui.pdf | Bin 0 -> 1595846 bytes lib/decl/chrome/chrome.d.ts | 1 - lib/decl/lib.es6.d.ts | 16944 ++++++++++++++++------------- lib/decl/webrtc/MediaStream.d.ts | 199 - lib/wallet/db.ts | 2 +- lib/wallet/emscriptif.ts | 7 +- lib/wallet/wallet.ts | 10 +- lib/wallet/wxMessaging.ts | 4 +- pages/confirm-contract.tsx | 2 +- pages/confirm-create-reserve.tsx | 6 +- pages/show-db.ts | 6 +- 11 files changed, 9512 insertions(+), 7669 deletions(-) create mode 100644 articles/ui/ui.pdf delete mode 100644 lib/decl/webrtc/MediaStream.d.ts diff --git a/articles/ui/ui.pdf b/articles/ui/ui.pdf new file mode 100644 index 0000000000000000000000000000000000000000..98ae6e2d39f7fdd284fb1b9dd23c6660f8484cc3 GIT binary patch literal 1595846 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 z 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

E^IZIM4!}bD&~*P{awYQ99xtXK? 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�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

? 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¥v~ku_-NZmwY&t{fY|n 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

xH6J27}Q^ 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 literal 0 HcmV?d00001 diff --git a/lib/decl/chrome/chrome.d.ts b/lib/decl/chrome/chrome.d.ts index dbf6a1244..5a67322f2 100755 --- a/lib/decl/chrome/chrome.d.ts +++ b/lib/decl/chrome/chrome.d.ts @@ -3,7 +3,6 @@ // Definitions by: Matthew Kimber , otiai10 , couven92 , RReverser // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -/// /// //////////////////// diff --git a/lib/decl/lib.es6.d.ts b/lib/decl/lib.es6.d.ts index ef3399ba8..084ed4e8a 100644 --- a/lib/decl/lib.es6.d.ts +++ b/lib/decl/lib.es6.d.ts @@ -13,1350 +13,16 @@ See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ -declare type PropertyKey = string | number | symbol; - -interface Symbol { - /** Returns a string representation of an object. */ - toString(): string; - - /** Returns the primitive value of the specified object. */ - valueOf(): Object; - - [Symbol.toStringTag]: "Symbol"; -} - -interface SymbolConstructor { - /** - * A reference to the prototype. - */ - prototype: Symbol; - - /** - * Returns a new unique Symbol value. - * @param description Description of the new Symbol object. - */ - (description?: string|number): symbol; - - /** - * Returns a Symbol object from the global symbol registry matching the given key if found. - * Otherwise, returns a new symbol with this key. - * @param key key to search for. - */ - for(key: string): symbol; - - /** - * Returns a key from the global symbol registry matching the given Symbol if found. - * Otherwise, returns a undefined. - * @param sym Symbol to find the key for. - */ - keyFor(sym: symbol): string; - - // Well-known Symbols - - /** - * A method that determines if a constructor object recognizes an object as one of the - * constructor’s instances. Called by the semantics of the instanceof operator. - */ - hasInstance: symbol; - - /** - * A Boolean value that if true indicates that an object should flatten to its array elements - * by Array.prototype.concat. - */ - isConcatSpreadable: symbol; - - /** - * A method that returns the default iterator for an object. Called by the semantics of the - * for-of statement. - */ - iterator: symbol; - - /** - * A regular expression method that matches the regular expression against a string. Called - * by the String.prototype.match method. - */ - match: symbol; - - /** - * A regular expression method that replaces matched substrings of a string. Called by the - * String.prototype.replace method. - */ - replace: symbol; - - /** - * A regular expression method that returns the index within a string that matches the - * regular expression. Called by the String.prototype.search method. - */ - search: symbol; - - /** - * A function valued property that is the constructor function that is used to create - * derived objects. - */ - species: symbol; - - /** - * A regular expression method that splits a string at the indices that match the regular - * expression. Called by the String.prototype.split method. - */ - split: symbol; - - /** - * A method that converts an object to a corresponding primitive value. - * Called by the ToPrimitive abstract operation. - */ - toPrimitive: symbol; - - /** - * A String value that is used in the creation of the default string description of an object. - * Called by the built-in method Object.prototype.toString. - */ - toStringTag: symbol; - - /** - * An Object whose own property names are property names that are excluded from the 'with' - * environment bindings of the associated objects. - */ - unscopables: symbol; -} -declare var Symbol: SymbolConstructor; - -interface Object { - /** - * Determines whether an object has a property with the specified name. - * @param v A property name. - */ - hasOwnProperty(v: PropertyKey): boolean; - - /** - * Determines whether a specified property is enumerable. - * @param v A property name. - */ - propertyIsEnumerable(v: PropertyKey): boolean; -} - -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(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(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(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: any, ...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 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: any): any; - - /** - * Gets the own property descriptor of the specified object. - * An own property descriptor is one that is defined directly on the object and is not - * inherited from the object's prototype. - * @param o Object that contains the property. - * @param p Name of the property. - */ - getOwnPropertyDescriptor(o: any, propertyKey: PropertyKey): PropertyDescriptor; - - /** - * Adds a property to an object, or modifies attributes of an existing property. - * @param o Object on which to add or modify the property. This can be a native JavaScript - * object (that is, a user-defined object or a built in object) or a DOM object. - * @param p The property name. - * @param attributes Descriptor for the property. It can be for a data property or an accessor - * property. - */ - defineProperty(o: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): any; -} - -interface Function { - /** - * Returns the name of the function. Function names are read-only and can not be changed. - */ - name: string; - - /** - * Determines whether the given value inherits from this function if this function was used - * as a constructor function. - * - * A constructor function can control which objects are recognized as its instances by - * 'instanceof' by overriding this method. - */ - [Symbol.hasInstance](value: any): boolean; -} - -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. - */ - EPSILON: number; - - /** - * Returns true if passed value is finite. - * Unlike the global isFininte, 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: number): boolean; - - /** - * Returns true if the value passed is an integer, false otherwise. - * @param number A numeric value. - */ - isInteger(number: number): 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: number): boolean; - - /** - * Returns true if the value passed is a safe integer. - * @param number A numeric value. - */ - isSafeInteger(number: number): 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.MIN_SAFE_INTEGER is 9007199254740991 2^53 − 1. - */ - 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)). - */ - 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 s A string to convert into a number. - * @param radix A value between 2 and 36 that specifies the base of the number in numString. - * 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 Array { - /** Iterator */ - [Symbol.iterator](): IterableIterator; - - /** - * Returns an object whose properties have the value 'true' - * when they will be absent when used in a 'with' statement. - */ - [Symbol.unscopables](): { - copyWithin: boolean; - entries: boolean; - fill: boolean; - find: boolean; - findIndex: boolean; - keys: boolean; - values: boolean; - }; - - /** - * Returns an array of key, value pairs for every entry in the array - */ - entries(): IterableIterator<[number, T]>; - - /** - * Returns an list of keys in the array - */ - keys(): IterableIterator; - - /** - * Returns an list of values in the array - */ - values(): IterableIterator; - - /** - * 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(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): T; - - /** - * Returns the index 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. - */ - findIndex(predicate: (value: T) => boolean, thisArg?: any): number; - - /** - * Returns the this object after filling the section identified by start and end with value - * @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): T[]; - - /** - * 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): T[]; -} - -interface IArguments { - /** Iterator */ - [Symbol.iterator](): IterableIterator; -} - -interface ArrayConstructor { - /** - * Creates an array from an array-like 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(arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): Array; - - /** - * 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, mapfn: (v: T, k: number) => U, thisArg?: any): Array; - - /** - * Creates an array from an array-like object. - * @param arrayLike An array-like object to convert to an array. - */ - from(arrayLike: ArrayLike): Array; - - /** - * Creates an array from an iterable object. - * @param iterable An iterable object to convert to an array. - */ - from(iterable: Iterable): Array; - - /** - * Returns a new array from a set of elements. - * @param items A set of elements to include in the new array object. - */ - of(...items: T[]): Array; -} - -interface String { - /** Iterator */ - [Symbol.iterator](): IterableIterator; - - /** - * 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; - - /** - * 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?: string): string; - - /** - * Returns a String value that is made from count copies appended together. If count is 0, - * T is 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; - - // Overloads for objects with methods of well-known symbols. - - /** - * Matches a string an object that supports being matched against, and returns an array containing the results of that search. - * @param matcher An object that supports being matched against. - */ - match(matcher: { [Symbol.match](string: string): RegExpMatchArray; }): RegExpMatchArray; - - /** - * Replaces text in a string, using an object that supports replacement within a string. - * @param searchValue A object can search for and replace matches within a string. - * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. - */ - replace(searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; - - /** - * Replaces text in a string, using an object that supports replacement within a string. - * @param searchValue A object can search for and replace matches within a string. - * @param replacer A function that returns the replacement text. - */ - replace(searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Finds the first substring match in a regular expression search. - * @param searcher An object which supports searching within a string. - */ - search(searcher: { [Symbol.search](string: string): number; }): number; - - /** - * Split a string into substrings using the specified separator and return them as an array. - * @param splitter An object that can split a string. - * @param limit A value used to limit the number of elements returned in the array. - */ - split(splitter: { [Symbol.split](string: string, limit?: number): string[]; }, limit?: number): string[]; - - /** - * Returns an HTML anchor element and sets the name attribute to the text value - * @param name - */ - anchor(name: string): string; - - /** Returns a HTML element */ - big(): string; - - /** Returns a HTML element */ - blink(): string; - - /** Returns a HTML element */ - bold(): string; - - /** Returns a HTML element */ - fixed(): string - - /** Returns a HTML element and sets the color attribute value */ - fontcolor(color: string): string - - /** Returns a HTML element and sets the size attribute value */ - fontsize(size: number): string; - - /** Returns a HTML element and sets the size attribute value */ - fontsize(size: string): string; - - /** Returns an HTML element */ - italics(): string; - - /** Returns an HTML element and sets the href attribute value */ - link(url: string): string; - - /** Returns a HTML element */ - small(): string; - - /** Returns a HTML element */ - strike(): string; - - /** Returns a HTML element */ - sub(): string; - - /** Returns a HTML element */ - 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 intended for use 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. - * @param template A well-formed template string call site representation. - * @param substitutions A set of substitution values. - */ - raw(template: TemplateStringsArray, ...substitutions: any[]): string; -} - -interface IteratorResult { - done: boolean; - value?: T; -} - -interface Iterator { - next(value?: any): IteratorResult; - return?(value?: any): IteratorResult; - throw?(e?: any): IteratorResult; -} - -interface Iterable { - [Symbol.iterator](): Iterator; -} - -interface IterableIterator extends Iterator { - [Symbol.iterator](): IterableIterator; -} - -interface GeneratorFunction extends Function { - [Symbol.toStringTag]: "GeneratorFunction"; -} - -interface GeneratorFunctionConstructor { - /** - * Creates a new Generator function. - * @param args A list of arguments the function accepts. - */ - new (...args: string[]): GeneratorFunction; - (...args: string[]): GeneratorFunction; - prototype: GeneratorFunction; -} -declare var GeneratorFunction: GeneratorFunctionConstructor; - -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) 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; - - [Symbol.toStringTag]: "Math"; -} - -interface Date { - /** - * Converts a Date object to a string. - */ - [Symbol.toPrimitive](hint: "default"): string; - /** - * Converts a Date object to a string. - */ - [Symbol.toPrimitive](hint: "string"): string; - /** - * Converts a Date object to a number. - */ - [Symbol.toPrimitive](hint: "number"): number; - /** - * Converts a Date object to a string or number. - * - * @param hint The strings "number", "string", or "default" to specify what primitive to return. - * - * @throws {TypeError} If 'hint' was given something other than "number", "string", or "default". - * @returns A number if 'hint' was "number", a string if 'hint' was "string" or "default". - */ - [Symbol.toPrimitive](hint: string): string | number; -} - -interface RegExp { - /** - * Matches a string with this regular expression, and returns an array containing the results of - * that search. - * @param string A string to search within. - */ - [Symbol.match](string: string): RegExpMatchArray; - - /** - * Replaces text in a string, using this regular expression. - * @param string A String object or string literal whose contents matching against - * this regular expression will be replaced - * @param replaceValue A String object or string literal containing the text to replace for every - * successful match of this regular expression. - */ - [Symbol.replace](string: string, replaceValue: string): string; - - /** - * Replaces text in a string, using this regular expression. - * @param string A String object or string literal whose contents matching against - * this regular expression will be replaced - * @param replacer A function that returns the replacement text. - */ - [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; - - /** - * Finds the position beginning first substring match in a regular expression search - * using this regular expression. - * - * @param string The string to search within. - */ - [Symbol.search](string: string): number; - - /** - * Returns an array of substrings that were delimited by strings in the original input that - * match against this regular expression. - * - * If the regular expression contains capturing parentheses, then each time this - * regular expression matches, the results (including any undefined results) of the - * capturing parentheses are spliced. - * - * @param string string value to split - * @param limit if not undefined, the output array is truncated so that it contains no more - * than 'limit' elements. - */ - [Symbol.split](string: string, limit?: number): string[]; - - /** - * 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. - */ - flags: string; - - /** - * Returns a Boolean value indicating the state of the sticky flag (y) used with a regular - * expression. Default is false. Read-only. - */ - sticky: boolean; - - /** - * Returns a Boolean value indicating the state of the Unicode flag (u) used with a regular - * expression. Default is false. Read-only. - */ - unicode: boolean; -} - -interface RegExpConstructor { - [Symbol.species](): RegExpConstructor; -} - -interface Map { - clear(): void; - delete(key: K): boolean; - entries(): IterableIterator<[K, V]>; - forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; - get(key: K): V; - has(key: K): boolean; - keys(): IterableIterator; - set(key: K, value?: V): Map; - size: number; - values(): IterableIterator; - [Symbol.iterator]():IterableIterator<[K,V]>; - [Symbol.toStringTag]: "Map"; -} - -interface MapConstructor { - new (): Map; - new (): Map; - new (iterable: Iterable<[K, V]>): Map; - prototype: Map; -} -declare var Map: MapConstructor; - -interface WeakMap { - clear(): void; - delete(key: K): boolean; - get(key: K): V; - has(key: K): boolean; - set(key: K, value?: V): WeakMap; - [Symbol.toStringTag]: "WeakMap"; -} - -interface WeakMapConstructor { - new (): WeakMap; - new (): WeakMap; - new (iterable: Iterable<[K, V]>): WeakMap; - prototype: WeakMap; -} -declare var WeakMap: WeakMapConstructor; - -interface Set { - add(value: T): Set; - clear(): void; - delete(value: T): boolean; - entries(): IterableIterator<[T, T]>; - forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; - has(value: T): boolean; - keys(): IterableIterator; - size: number; - values(): IterableIterator; - [Symbol.iterator]():IterableIterator; - [Symbol.toStringTag]: "Set"; -} - -interface SetConstructor { - new (): Set; - new (): Set; - new (iterable: Iterable): Set; - prototype: Set; -} -declare var Set: SetConstructor; - -interface WeakSet { - add(value: T): WeakSet; - clear(): void; - delete(value: T): boolean; - has(value: T): boolean; - [Symbol.toStringTag]: "WeakSet"; -} - -interface WeakSetConstructor { - new (): WeakSet; - new (): WeakSet; - new (iterable: Iterable): WeakSet; - prototype: WeakSet; -} -declare var WeakSet: WeakSetConstructor; - -interface JSON { - [Symbol.toStringTag]: "JSON"; -} - -/** - * Represents a raw buffer of binary data, which is used to store data for the - * different typed arrays. ArrayBuffers cannot be read from or written to directly, - * but can be passed to a typed array or DataView Object to interpret the raw - * buffer as needed. - */ -interface ArrayBuffer { - [Symbol.toStringTag]: "ArrayBuffer"; -} - -interface DataView { - [Symbol.toStringTag]: "DataView"; -} - -/** - * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Int8Array { - /** - * 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; - [Symbol.iterator](): IterableIterator; - [Symbol.toStringTag]: "Int8Array"; -} - -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; -} - -/** - * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8Array { - /** - * 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; - [Symbol.iterator](): IterableIterator; - [Symbol.toStringTag]: "UInt8Array"; -} - -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; -} - -/** - * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. - * If the requested number of bytes could not be allocated an exception is raised. - */ -interface Uint8ClampedArray { - /** - * 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; - - [Symbol.iterator](): IterableIterator; - [Symbol.toStringTag]: "Uint8ClampedArray"; -} - -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; -} - -/** - * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int16Array { - /** - * 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; - - - [Symbol.iterator](): IterableIterator; - [Symbol.toStringTag]: "Int16Array"; -} - -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; -} - -/** - * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint16Array { - /** - * 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; - [Symbol.iterator](): IterableIterator; - [Symbol.toStringTag]: "Uint16Array"; -} - -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; -} - -/** - * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Int32Array { - /** - * 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; - [Symbol.iterator](): IterableIterator; - [Symbol.toStringTag]: "Int32Array"; -} - -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; -} - -/** - * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the - * requested number of bytes could not be allocated an exception is raised. - */ -interface Uint32Array { - /** - * 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; - [Symbol.iterator](): IterableIterator; - [Symbol.toStringTag]: "Uint32Array"; -} - -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; -} - -/** - * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number - * of bytes could not be allocated an exception is raised. - */ -interface Float32Array { - /** - * 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; - [Symbol.iterator](): IterableIterator; - [Symbol.toStringTag]: "Float32Array"; -} - -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; -} - -/** - * A typed array of 64-bit float values. The contents are initialized to 0. If the requested - * number of bytes could not be allocated an exception is raised. - */ -interface Float64Array { - /** - * 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; - [Symbol.iterator](): IterableIterator; - [Symbol.toStringTag]: "Float64Array"; -} - -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; -} - -interface ProxyHandler { - getPrototypeOf? (target: T): any; - setPrototypeOf? (target: T, v: any): boolean; - isExtensible? (target: T): boolean; - preventExtensions? (target: T): boolean; - getOwnPropertyDescriptor? (target: T, p: PropertyKey): PropertyDescriptor; - has? (target: T, p: PropertyKey): boolean; - get? (target: T, p: PropertyKey, receiver: any): any; - set? (target: T, p: PropertyKey, value: any, receiver: any): boolean; - deleteProperty? (target: T, p: PropertyKey): boolean; - defineProperty? (target: T, p: PropertyKey, attributes: PropertyDescriptor): boolean; - enumerate? (target: T): PropertyKey[]; - ownKeys? (target: T): PropertyKey[]; - apply? (target: T, thisArg: any, argArray?: any): any; - construct? (target: T, thisArg: any, argArray?: any): any; -} - -interface ProxyConstructor { - revocable(target: T, handler: ProxyHandler): { proxy: T; revoke: () => void; }; - new (target: T, handler: ProxyHandler): T -} -declare var Proxy: ProxyConstructor; - -declare namespace Reflect { - function apply(target: Function, thisArgument: any, argumentsList: ArrayLike): any; - function construct(target: Function, argumentsList: ArrayLike, newTarget?: any): any; - function defineProperty(target: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): boolean; - function deleteProperty(target: any, propertyKey: PropertyKey): boolean; - function enumerate(target: any): IterableIterator; - function get(target: any, propertyKey: PropertyKey, receiver?: any): any; - function getOwnPropertyDescriptor(target: any, propertyKey: PropertyKey): PropertyDescriptor; - function getPrototypeOf(target: any): any; - function has(target: any, propertyKey: string): boolean; - function has(target: any, propertyKey: symbol): boolean; - function isExtensible(target: any): boolean; - function ownKeys(target: any): Array; - function preventExtensions(target: any): boolean; - function set(target: any, propertyKey: PropertyKey, value: any, receiver?: any): boolean; - function setPrototypeOf(target: any, proto: any): boolean; -} - -/** - * Represents the completion of an asynchronous operation - */ -interface Promise { - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): Promise; - then(onfulfilled?: (value: T) => TResult | PromiseLike, onrejected?: (reason: any) => void): Promise; - - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: (reason: any) => T | PromiseLike): Promise; - catch(onrejected?: (reason: any) => void): Promise; - - [Symbol.toStringTag]: "Promise"; -} - -interface PromiseConstructor { - /** - * A reference to the prototype. - */ - prototype: Promise; - - /** - * Creates a new Promise. - * @param executor A callback used to initialize the promise. This callback is passed two arguments: - * a resolve callback used 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 (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void): Promise; - - /** - * 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(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; - 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 array of Promises. - * @returns A new Promise. - */ - race(values: Iterable>): Promise; - - /** - * Creates a new rejected promise for the provided reason. - * @param reason The reason the promise was rejected. - * @returns A new rejected Promise. - */ - reject(reason: any): Promise; - - /** - * Creates a new rejected promise for the provided reason. - * @param reason The reason the promise was rejected. - * @returns A new rejected Promise. - */ - reject(reason: any): Promise; - - /** - * Creates a new resolved promise for the provided value. - * @param value A promise. - * @returns A promise whose internal state matches the provided promise. - */ - resolve(value: T | PromiseLike): Promise; - - /** - * Creates a new resolved promise . - * @returns A resolved promise. - */ - resolve(): Promise; - - [Symbol.species]: Function; -} - -declare var Promise: PromiseConstructor; /// - ///////////////////////////// /// ECMAScript APIs ///////////////////////////// -declare var NaN: number; -declare var Infinity: number; +declare const NaN: number; +declare const Infinity: number; /** - * Evaluates JavaScript code and executes it. + * Evaluates JavaScript code and executes it. * @param x A String value that contains valid JavaScript code. */ declare function eval(x: string): any; @@ -1364,25 +30,25 @@ declare function eval(x: string): any; /** * Converts A string to an integer. * @param s A string to convert into a number. - * @param radix A value between 2 and 36 that specifies the base of the number in numString. + * @param radix A value between 2 and 36 that specifies the base of the number in numString. * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal. * All other strings are considered decimal. */ declare function parseInt(s: string, radix?: number): number; /** - * Converts a string to a floating-point number. - * @param string A string that contains a floating-point number. + * Converts a string to a floating-point number. + * @param string A string that contains a floating-point number. */ declare function parseFloat(string: string): number; /** - * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a number). + * Returns a Boolean value that indicates whether a value is the reserved value NaN (not a number). * @param number A numeric value. */ declare function isNaN(number: number): boolean; -/** +/** * Determines whether a supplied number is finite. * @param number Any numeric value. */ @@ -1400,7 +66,7 @@ declare function decodeURI(encodedURI: string): string; */ declare function decodeURIComponent(encodedURIComponent: string): string; -/** +/** * Encodes a text string as a valid Uniform Resource Identifier (URI) * @param uri A value representing an encoded URI. */ @@ -1439,18 +105,18 @@ interface Object { valueOf(): Object; /** - * Determines whether an object has a property with the specified name. + * Determines whether an object has a property with the specified name. * @param v A property name. */ hasOwnProperty(v: string): boolean; /** - * Determines whether an object exists in another object's prototype chain. + * Determines whether an object exists in another object's prototype chain. * @param v Another object whose prototype chain is to be checked. */ isPrototypeOf(v: Object): boolean; - /** + /** * Determines whether a specified property is enumerable. * @param v A property name. */ @@ -1463,38 +129,50 @@ interface ObjectConstructor { (value: any): any; /** A reference to the prototype for a class of objects. */ - prototype: Object; + readonly prototype: Object; - /** - * Returns the prototype of an object. + /** + * Returns the prototype of an object. * @param o The object that references the prototype. */ getPrototypeOf(o: any): any; /** - * Gets the own property descriptor of the specified object. - * An own property descriptor is one that is defined directly on the object and is not inherited from the object's prototype. + * Gets the own property descriptor of the specified object. + * An own property descriptor is one that is defined directly on the object and is not inherited from the object's prototype. * @param o Object that contains the property. * @param p Name of the property. */ getOwnPropertyDescriptor(o: any, p: string): PropertyDescriptor; - /** - * Returns the names of the own properties of an object. The own properties of an object are those that are defined directly + /** + * Returns the names of the own properties of an object. The own properties of an object are those that are defined directly * on that object, and are not inherited from the object's prototype. The properties of an object include both fields (objects) and functions. * @param o Object that contains the own properties. */ getOwnPropertyNames(o: any): string[]; - /** - * Creates an object that has the specified prototype, and that optionally contains specified properties. + /** + * Creates an object that has null prototype. * @param o Object to use as a prototype. May be null - * @param properties JavaScript object that contains one or more property descriptors. */ - create(o: any, properties?: PropertyDescriptorMap): any; + create(o: null): any; /** - * Adds a property to an object, or modifies attributes of an existing property. + * Creates an object that has the specified prototype, and that optionally contains specified properties. + * @param o Object to use as a prototype. May be null + */ + create(o: T): T; + + /** + * Creates an object that has the specified prototype, and that optionally contains specified properties. + * @param o Object to use as a prototype. May be null + * @param properties JavaScript object that contains one or more property descriptors. + */ + create(o: any, properties: PropertyDescriptorMap): any; + + /** + * Adds a property to an object, or modifies attributes of an existing property. * @param o Object on which to add or modify the property. This can be a native JavaScript object (that is, a user-defined object or a built in object) or a DOM object. * @param p The property name. * @param attributes Descriptor for the property. It can be for a data property or an accessor property. @@ -1502,7 +180,7 @@ interface ObjectConstructor { defineProperty(o: any, p: string, attributes: PropertyDescriptor): any; /** - * Adds one or more properties to an object, and/or modifies attributes of existing properties. + * Adds one or more properties to an object, and/or modifies attributes of existing properties. * @param o Object on which to add or modify the properties. This can be a native JavaScript object or a DOM object. * @param properties JavaScript object that contains one or more descriptor objects. Each descriptor object describes a data property or an accessor property. */ @@ -1510,7 +188,7 @@ interface ObjectConstructor { /** * Prevents the modification of attributes of existing properties, and prevents the addition of new properties. - * @param o Object on which to lock the attributes. + * @param o Object on which to lock the attributes. */ seal(o: T): T; @@ -1522,25 +200,25 @@ interface ObjectConstructor { /** * Prevents the addition of new properties to an object. - * @param o Object to make non-extensible. + * @param o Object to make non-extensible. */ preventExtensions(o: T): T; /** * Returns true if existing property attributes cannot be modified in an object and new properties cannot be added to the object. - * @param o Object to test. + * @param o Object to test. */ isSealed(o: any): boolean; /** * Returns true if existing property attributes and values cannot be modified in an object, and new properties cannot be added to the object. - * @param o Object to test. + * @param o Object to test. */ isFrozen(o: any): boolean; /** * Returns a value that indicates whether new properties can be added to an object. - * @param o Object to test. + * @param o Object to test. */ isExtensible(o: any): boolean; @@ -1554,7 +232,7 @@ interface ObjectConstructor { /** * Provides functionality common to all JavaScript objects. */ -declare var Object: ObjectConstructor; +declare const Object: ObjectConstructor; /** * Creates a new function. @@ -1565,25 +243,25 @@ interface Function { * @param thisArg The object to be used as the this object. * @param argArray A set of arguments to be passed to the function. */ - apply(thisArg: any, argArray?: any): any; + apply(this: Function, thisArg: any, argArray?: any): any; /** * Calls a method of an object, substituting another object for the current object. * @param thisArg The object to be used as the current object. * @param argArray A list of arguments to be passed to the method. */ - call(thisArg: any, ...argArray: any[]): any; + call(this: Function, thisArg: any, ...argArray: any[]): any; /** - * For a given function, creates a bound function that has the same body as the original function. + * For a given function, creates a bound function that has the same body as the original function. * The this object of the bound function is associated with the specified object, and has the specified initial parameters. * @param thisArg An object to which the this keyword can refer inside the new function. * @param argArray A list of arguments to be passed to the new function. */ - bind(thisArg: any, ...argArray: any[]): any; + bind(this: Function, thisArg: any, ...argArray: any[]): any; prototype: any; - length: number; + readonly length: number; // Non-standard extensions arguments: any; @@ -1597,10 +275,10 @@ interface FunctionConstructor { */ new (...args: string[]): Function; (...args: string[]): Function; - prototype: Function; + readonly prototype: Function; } -declare var Function: FunctionConstructor; +declare const Function: FunctionConstructor; interface IArguments { [index: number]: any; @@ -1618,7 +296,7 @@ interface String { */ charAt(pos: number): string; - /** + /** * Returns the Unicode value of the character at the specified location. * @param index The zero-based index of the desired character. If there is no character at the specified index, NaN is returned. */ @@ -1626,12 +304,12 @@ interface String { /** * Returns a string that contains the concatenation of two or more strings. - * @param strings The strings to append to the end of the string. + * @param strings The strings to append to the end of the string. */ concat(...strings: string[]): string; /** - * Returns the position of the first occurrence of a substring. + * Returns the position of the first occurrence of a substring. * @param searchString The substring to search for in the string * @param position The index at which to begin searching the String object. If omitted, search starts at the beginning of the string. */ @@ -1650,17 +328,17 @@ interface String { */ localeCompare(that: string): number; - /** + /** * Matches a string with a regular expression, and returns an array containing the results of that search. * @param regexp A variable name or string literal containing the regular expression pattern and flags. */ - match(regexp: string): RegExpMatchArray; + match(regexp: string): RegExpMatchArray | null; - /** + /** * Matches a string with a regular expression, and returns an array containing the results of that search. - * @param regexp A regular expression object that contains the regular expression pattern and applicable flags. + * @param regexp A regular expression object that contains the regular expression pattern and applicable flags. */ - match(regexp: RegExp): RegExpMatchArray; + match(regexp: RegExp): RegExpMatchArray | null; /** * Replaces text in a string, using a regular expression or search string. @@ -1692,40 +370,40 @@ interface String { /** * Finds the first substring match in a regular expression search. - * @param regexp The regular expression pattern and applicable flags. + * @param regexp The regular expression pattern and applicable flags. */ search(regexp: string): number; /** * Finds the first substring match in a regular expression search. - * @param regexp The regular expression pattern and applicable flags. + * @param regexp The regular expression pattern and applicable flags. */ search(regexp: RegExp): number; /** * Returns a section of a string. - * @param start The index to the beginning of the specified portion of stringObj. - * @param end The index to the end of the specified portion of stringObj. The substring includes the characters up to, but not including, the character indicated by end. + * @param start The index to the beginning of the specified portion of stringObj. + * @param end The index to the end of the specified portion of stringObj. The substring includes the characters up to, but not including, the character indicated by end. * If this value is not specified, the substring continues to the end of stringObj. */ slice(start?: number, end?: number): string; /** * Split a string into substrings using the specified separator and return them as an array. - * @param separator A string that identifies character or characters to use in separating the string. If omitted, a single-element array containing the entire string is returned. + * @param separator A string that identifies character or characters to use in separating the string. If omitted, a single-element array containing the entire string is returned. * @param limit A value used to limit the number of elements returned in the array. */ split(separator: string, limit?: number): string[]; /** * Split a string into substrings using the specified separator and return them as an array. - * @param separator A Regular Express that identifies character or characters to use in separating the string. If omitted, a single-element array containing the entire string is returned. + * @param separator A Regular Express that identifies character or characters to use in separating the string. If omitted, a single-element array containing the entire string is returned. * @param limit A value used to limit the number of elements returned in the array. */ split(separator: RegExp, limit?: number): string[]; /** - * Returns the substring at the specified location within a String object. + * Returns the substring at the specified location within a String object. * @param start The zero-based index number indicating the beginning of the substring. * @param end Zero-based index number indicating the end of the substring. The substring includes the characters up to, but not including, the character indicated by end. * If end is omitted, the characters from start through the end of the original string are returned. @@ -1748,7 +426,7 @@ interface String { trim(): string; /** Returns the length of a String object. */ - length: number; + readonly length: number; // IE extensions /** @@ -1761,20 +439,20 @@ interface String { /** Returns the primitive value of the specified object. */ valueOf(): string; - [index: number]: string; + readonly [index: number]: string; } interface StringConstructor { new (value?: any): String; (value?: any): string; - prototype: String; + readonly prototype: String; fromCharCode(...codes: number[]): string; } -/** - * Allows manipulation and formatting of text strings and determination and location of substrings within strings. +/** + * Allows manipulation and formatting of text strings and determination and location of substrings within strings. */ -declare var String: StringConstructor; +declare const String: StringConstructor; interface Boolean { /** Returns the primitive value of the specified object. */ @@ -1784,10 +462,10 @@ interface Boolean { interface BooleanConstructor { new (value?: any): Boolean; (value?: any): boolean; - prototype: Boolean; + readonly prototype: Boolean; } -declare var Boolean: BooleanConstructor; +declare const Boolean: BooleanConstructor; interface Number { /** @@ -1796,7 +474,7 @@ interface Number { */ toString(radix?: number): string; - /** + /** * Returns a string representing a number in fixed-point notation. * @param fractionDigits Number of digits after the decimal point. Must be in the range 0 - 20, inclusive. */ @@ -1821,75 +499,75 @@ interface Number { interface NumberConstructor { new (value?: any): Number; (value?: any): number; - prototype: Number; + readonly prototype: Number; /** The largest number that can be represented in JavaScript. Equal to approximately 1.79E+308. */ - MAX_VALUE: number; + readonly MAX_VALUE: number; /** The closest number to zero that can be represented in JavaScript. Equal to approximately 5.00E-324. */ - MIN_VALUE: number; + readonly MIN_VALUE: number; - /** + /** * A value that is not a number. * In equality comparisons, NaN does not equal any value, including itself. To test whether a value is equivalent to NaN, use the isNaN function. */ - NaN: number; - - /** - * A value that is less than the largest negative number that can be represented in JavaScript. - * JavaScript displays NEGATIVE_INFINITY values as -infinity. - */ - NEGATIVE_INFINITY: number; + readonly NaN: number; /** - * A value greater than the largest number that can be represented in JavaScript. - * JavaScript displays POSITIVE_INFINITY values as infinity. + * A value that is less than the largest negative number that can be represented in JavaScript. + * JavaScript displays NEGATIVE_INFINITY values as -infinity. */ - POSITIVE_INFINITY: number; + readonly NEGATIVE_INFINITY: number; + + /** + * A value greater than the largest number that can be represented in JavaScript. + * JavaScript displays POSITIVE_INFINITY values as infinity. + */ + readonly POSITIVE_INFINITY: number; } /** An object that represents a number of any kind. All JavaScript numbers are 64-bit floating-point numbers. */ -declare var Number: NumberConstructor; +declare const Number: NumberConstructor; -interface TemplateStringsArray extends Array { - raw: string[]; +interface TemplateStringsArray extends ReadonlyArray { + readonly raw: ReadonlyArray } interface Math { /** The mathematical constant e. This is Euler's number, the base of natural logarithms. */ - E: number; + readonly E: number; /** The natural logarithm of 10. */ - LN10: number; + readonly LN10: number; /** The natural logarithm of 2. */ - LN2: number; + readonly LN2: number; /** The base-2 logarithm of e. */ - LOG2E: number; + readonly LOG2E: number; /** The base-10 logarithm of e. */ - LOG10E: number; + readonly LOG10E: number; /** Pi. This is the ratio of the circumference of a circle to its diameter. */ - PI: number; + readonly PI: number; /** The square root of 0.5, or, equivalently, one divided by the square root of 2. */ - SQRT1_2: number; + readonly SQRT1_2: number; /** The square root of 2. */ - SQRT2: number; + readonly SQRT2: number; /** - * Returns the absolute value of a number (the value without regard to whether it is positive or negative). + * Returns the absolute value of a number (the value without regard to whether it is positive or negative). * For example, the absolute value of -5 is the same as the absolute value of 5. * @param x A numeric expression for which the absolute value is needed. */ abs(x: number): number; /** - * Returns the arc cosine (or inverse cosine) of a number. + * Returns the arc cosine (or inverse cosine) of a number. * @param x A numeric expression. */ acos(x: number): number; - /** - * Returns the arcsine of a number. + /** + * Returns the arcsine of a number. * @param x A numeric expression. */ asin(x: number): number; /** - * Returns the arctangent of a number. + * Returns the arctangent of a number. * @param x A numeric expression for which the arctangent is needed. */ atan(x: number): number; @@ -1900,49 +578,49 @@ interface Math { */ atan2(y: number, x: number): number; /** - * Returns the smallest number greater than or equal to its numeric argument. + * Returns the smallest number greater than or equal to its numeric argument. * @param x A numeric expression. */ ceil(x: number): number; /** - * Returns the cosine of a number. + * Returns the cosine of a number. * @param x A numeric expression that contains an angle measured in radians. */ cos(x: number): number; /** - * Returns e (the base of natural logarithms) raised to a power. + * Returns e (the base of natural logarithms) raised to a power. * @param x A numeric expression representing the power of e. */ exp(x: number): number; /** - * Returns the greatest number less than or equal to its numeric argument. + * Returns the greatest number less than or equal to its numeric argument. * @param x A numeric expression. */ floor(x: number): number; /** - * Returns the natural logarithm (base e) of a number. + * Returns the natural logarithm (base e) of a number. * @param x A numeric expression. */ log(x: number): number; /** - * Returns the larger of a set of supplied numeric expressions. + * Returns the larger of a set of supplied numeric expressions. * @param values Numeric expressions to be evaluated. */ max(...values: number[]): number; /** - * Returns the smaller of a set of supplied numeric expressions. + * Returns the smaller of a set of supplied numeric expressions. * @param values Numeric expressions to be evaluated. */ min(...values: number[]): number; /** - * Returns the value of a base expression taken to a specified power. + * Returns the value of a base expression taken to a specified power. * @param x The base value of the expression. * @param y The exponent value of the expression. */ pow(x: number, y: number): number; /** Returns a pseudorandom number between 0 and 1. */ random(): number; - /** + /** * Returns a supplied numeric expression rounded to the nearest number. * @param x The value to be rounded to the nearest number. */ @@ -1964,7 +642,7 @@ interface Math { tan(x: number): number; } /** An intrinsic object that provides basic mathematics functionality and constants. */ -declare var Math: Math; +declare const Math: Math; /** Enables basic storage and retrieval of dates and times. */ interface Date { @@ -2018,24 +696,24 @@ interface Date { getUTCMilliseconds(): number; /** Gets the difference in minutes between the time on the local computer and Universal Coordinated Time (UTC). */ getTimezoneOffset(): number; - /** + /** * Sets the date and time value in the Date object. - * @param time A numeric value representing the number of elapsed milliseconds since midnight, January 1, 1970 GMT. + * @param time A numeric value representing the number of elapsed milliseconds since midnight, January 1, 1970 GMT. */ setTime(time: number): number; /** - * Sets the milliseconds value in the Date object using local time. + * Sets the milliseconds value in the Date object using local time. * @param ms A numeric value equal to the millisecond value. */ setMilliseconds(ms: number): number; - /** + /** * Sets the milliseconds value in the Date object using Universal Coordinated Time (UTC). - * @param ms A numeric value equal to the millisecond value. + * @param ms A numeric value equal to the millisecond value. */ setUTCMilliseconds(ms: number): number; /** - * Sets the seconds value in the Date object using local time. + * Sets the seconds value in the Date object using local time. * @param sec A numeric value equal to the seconds value. * @param ms A numeric value equal to the milliseconds value. */ @@ -2047,16 +725,16 @@ interface Date { */ setUTCSeconds(sec: number, ms?: number): number; /** - * Sets the minutes value in the Date object using local time. - * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. + * Sets the minutes value in the Date object using local time. + * @param min A numeric value equal to the minutes value. + * @param sec A numeric value equal to the seconds value. * @param ms A numeric value equal to the milliseconds value. */ setMinutes(min: number, sec?: number, ms?: number): number; /** * Sets the minutes value in the Date object using Universal Coordinated Time (UTC). - * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. + * @param min A numeric value equal to the minutes value. + * @param sec A numeric value equal to the seconds value. * @param ms A numeric value equal to the milliseconds value. */ setUTCMinutes(min: number, sec?: number, ms?: number): number; @@ -2064,7 +742,7 @@ interface Date { * Sets the hour value in the Date object using local time. * @param hours A numeric value equal to the hours value. * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. + * @param sec A numeric value equal to the seconds value. * @param ms A numeric value equal to the milliseconds value. */ setHours(hours: number, min?: number, sec?: number, ms?: number): number; @@ -2072,23 +750,23 @@ interface Date { * Sets the hours value in the Date object using Universal Coordinated Time (UTC). * @param hours A numeric value equal to the hours value. * @param min A numeric value equal to the minutes value. - * @param sec A numeric value equal to the seconds value. + * @param sec A numeric value equal to the seconds value. * @param ms A numeric value equal to the milliseconds value. */ setUTCHours(hours: number, min?: number, sec?: number, ms?: number): number; /** - * Sets the numeric day-of-the-month value of the Date object using local time. + * Sets the numeric day-of-the-month value of the Date object using local time. * @param date A numeric value equal to the day of the month. */ setDate(date: number): number; - /** + /** * Sets the numeric day of the month in the Date object using Universal Coordinated Time (UTC). - * @param date A numeric value equal to the day of the month. + * @param date A numeric value equal to the day of the month. */ setUTCDate(date: number): number; - /** - * Sets the month value in the Date object using local time. - * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively. + /** + * Sets the month value in the Date object using local time. + * @param month A numeric value equal to the month. The value for January is 0, and other month values follow consecutively. * @param date A numeric value representing the day of the month. If this value is not supplied, the value from a call to the getDate method is used. */ setMonth(month: number, date?: number): number; @@ -2126,14 +804,14 @@ interface DateConstructor { new (value: string): Date; new (year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date; (): string; - prototype: Date; + readonly prototype: Date; /** * Parses a string containing a date, and returns the number of milliseconds between that date and midnight, January 1, 1970. * @param s A date string */ parse(s: string): number; /** - * Returns the number of milliseconds between midnight, January 1, 1970 Universal Coordinated Time (UTC) (or GMT) and the specified date. + * Returns the number of milliseconds between midnight, January 1, 1970 Universal Coordinated Time (UTC) (or GMT) and the specified date. * @param year The full year designation is required for cross-century date accuracy. If year is between 0 and 99 is used, then year is assumed to be 1900 + year. * @param month The month as an number between 0 and 11 (January to December). * @param date The date as an number between 1 and 31. @@ -2146,7 +824,7 @@ interface DateConstructor { now(): number; } -declare var Date: DateConstructor; +declare const Date: DateConstructor; interface RegExpMatchArray extends Array { index?: number; @@ -2159,40 +837,42 @@ interface RegExpExecArray extends Array { } interface RegExp { - /** + /** * Executes a search on a string using a regular expression pattern, and returns an array containing the results of that search. * @param string The String object or string literal on which to perform the search. */ - exec(string: string): RegExpExecArray; + exec(string: string): RegExpExecArray | null; - /** + /** * Returns a Boolean value that indicates whether or not a pattern exists in a searched string. * @param string String on which to perform the search. */ test(string: string): boolean; /** Returns a copy of the text of the regular expression pattern. Read-only. The regExp argument is a Regular expression object. It can be a variable name or a literal. */ - source: string; + readonly source: string; /** Returns a Boolean value indicating the state of the global flag (g) used with a regular expression. Default is false. Read-only. */ - global: boolean; + readonly global: boolean; /** Returns a Boolean value indicating the state of the ignoreCase flag (i) used with a regular expression. Default is false. Read-only. */ - ignoreCase: boolean; + readonly ignoreCase: boolean; /** Returns a Boolean value indicating the state of the multiline flag (m) used with a regular expression. Default is false. Read-only. */ - multiline: boolean; + readonly multiline: boolean; lastIndex: number; // Non-standard extensions - compile(): RegExp; + compile(): this; } interface RegExpConstructor { + new (pattern: RegExp): RegExp; new (pattern: string, flags?: string): RegExp; + (pattern: RegExp): RegExp; (pattern: string, flags?: string): RegExp; - prototype: RegExp; + readonly prototype: RegExp; // Non-standard extensions $1: string; @@ -2207,20 +887,21 @@ interface RegExpConstructor { lastMatch: string; } -declare var RegExp: RegExpConstructor; +declare const RegExp: RegExpConstructor; interface Error { name: string; message: string; + stack?: string; } interface ErrorConstructor { new (message?: string): Error; (message?: string): Error; - prototype: Error; + readonly prototype: Error; } -declare var Error: ErrorConstructor; +declare const Error: ErrorConstructor; interface EvalError extends Error { } @@ -2228,10 +909,10 @@ interface EvalError extends Error { interface EvalErrorConstructor { new (message?: string): EvalError; (message?: string): EvalError; - prototype: EvalError; + readonly prototype: EvalError; } -declare var EvalError: EvalErrorConstructor; +declare const EvalError: EvalErrorConstructor; interface RangeError extends Error { } @@ -2239,10 +920,10 @@ interface RangeError extends Error { interface RangeErrorConstructor { new (message?: string): RangeError; (message?: string): RangeError; - prototype: RangeError; + readonly prototype: RangeError; } -declare var RangeError: RangeErrorConstructor; +declare const RangeError: RangeErrorConstructor; interface ReferenceError extends Error { } @@ -2250,10 +931,10 @@ interface ReferenceError extends Error { interface ReferenceErrorConstructor { new (message?: string): ReferenceError; (message?: string): ReferenceError; - prototype: ReferenceError; + readonly prototype: ReferenceError; } -declare var ReferenceError: ReferenceErrorConstructor; +declare const ReferenceError: ReferenceErrorConstructor; interface SyntaxError extends Error { } @@ -2261,10 +942,10 @@ interface SyntaxError extends Error { interface SyntaxErrorConstructor { new (message?: string): SyntaxError; (message?: string): SyntaxError; - prototype: SyntaxError; + readonly prototype: SyntaxError; } -declare var SyntaxError: SyntaxErrorConstructor; +declare const SyntaxError: SyntaxErrorConstructor; interface TypeError extends Error { } @@ -2272,10 +953,10 @@ interface TypeError extends Error { interface TypeErrorConstructor { new (message?: string): TypeError; (message?: string): TypeError; - prototype: TypeError; + readonly prototype: TypeError; } -declare var TypeError: TypeErrorConstructor; +declare const TypeError: TypeErrorConstructor; interface URIError extends Error { } @@ -2283,61 +964,152 @@ interface URIError extends Error { interface URIErrorConstructor { new (message?: string): URIError; (message?: string): URIError; - prototype: URIError; + readonly prototype: URIError; } -declare var URIError: URIErrorConstructor; +declare const URIError: URIErrorConstructor; interface JSON { /** * Converts a JavaScript Object Notation (JSON) string into an object. * @param text A valid JSON string. - * @param reviver A function that transforms the results. This function is called for each member of the object. - * If a member contains nested objects, the nested objects are transformed before the parent object is. + * @param reviver A function that transforms the results. This function is called for each member of the object. + * If a member contains nested objects, the nested objects are transformed before the parent object is. */ parse(text: string, reviver?: (key: any, value: any) => any): any; - /** - * Converts a JavaScript value to a JavaScript Object Notation (JSON) string. - * @param value A JavaScript value, usually an object or array, to be converted. - */ - stringify(value: any): string; - /** - * Converts a JavaScript value to a JavaScript Object Notation (JSON) string. - * @param value A JavaScript value, usually an object or array, to be converted. - * @param replacer A function that transforms the results. - */ - stringify(value: any, replacer: (key: string, value: any) => any): string; - /** - * Converts a JavaScript value to a JavaScript Object Notation (JSON) string. - * @param value A JavaScript value, usually an object or array, to be converted. - * @param replacer Array that transforms the results. - */ - stringify(value: any, replacer: any[]): string; /** * Converts a JavaScript value to a JavaScript Object Notation (JSON) string. * @param value A JavaScript value, usually an object or array, to be converted. * @param replacer A function that transforms the results. * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read. */ - stringify(value: any, replacer: (key: string, value: any) => any, space: string | number): string; + stringify(value: any, replacer?: (key: string, value: any) => any, space?: string | number): string; /** * Converts a JavaScript value to a JavaScript Object Notation (JSON) string. * @param value A JavaScript value, usually an object or array, to be converted. - * @param replacer Array that transforms the results. + * @param replacer An array of strings and numbers that acts as a approved list for selecting the object properties that will be stringified. * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read. */ - stringify(value: any, replacer: any[], space: string | number): string; + stringify(value: any, replacer?: (number | string)[] | null, space?: string | number): string; } + /** * An intrinsic object that provides functions to convert JavaScript values to and from the JavaScript Object Notation (JSON) format. */ -declare var JSON: JSON; +declare const JSON: JSON; ///////////////////////////// /// ECMAScript Array API (specially handled by compiler) ///////////////////////////// +interface ReadonlyArray { + /** + * Gets the length of the array. This is a number one higher than the highest element defined in an array. + */ + readonly length: number; + /** + * Returns a string representation of an array. + */ + toString(): string; + toLocaleString(): string; + /** + * Combines two or more arrays. + * @param items Additional items to add to the end of array1. + */ + concat>(...items: U[]): T[]; + /** + * Combines two or more arrays. + * @param items Additional items to add to the end of array1. + */ + concat(...items: T[][]): T[]; + /** + * Combines two or more arrays. + * @param items Additional items to add to the end of array1. + */ + concat(...items: (T | T[])[]): T[]; + /** + * Adds all the elements of an array separated by the specified separator string. + * @param separator A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma. + */ + join(separator?: string): string; + /** + * Returns a section of an array. + * @param start The beginning of the specified portion of the array. + * @param end The end of the specified portion of the array. + */ + slice(start?: number, end?: number): T[]; + /** + * Returns the index of the first occurrence of a value in an array. + * @param searchElement The value to locate in the array. + * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. + */ + indexOf(searchElement: T, fromIndex?: number): number; + + /** + * Returns the index of the last occurrence of a specified value in an array. + * @param searchElement The value to locate in the array. + * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at the last index in the array. + */ + lastIndexOf(searchElement: T, fromIndex?: number): number; + /** + * Determines whether all the members of an array satisfy the specified test. + * @param callbackfn A function that accepts up to three arguments. The every method calls the callbackfn function for each element in array1 until the callbackfn returns false, or until the end of the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. + */ + every(callbackfn: (value: T, index: number, array: ReadonlyArray) => boolean, thisArg?: any): boolean; + /** + * Determines whether the specified callback function returns true for any element of an array. + * @param callbackfn A function that accepts up to three arguments. The some method calls the callbackfn function for each element in array1 until the callbackfn returns true, or until the end of the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. + */ + some(callbackfn: (value: T, index: number, array: ReadonlyArray) => boolean, thisArg?: any): boolean; + /** + * Performs the specified action for each element in an array. + * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. + */ + forEach(callbackfn: (value: T, index: number, array: ReadonlyArray) => void, thisArg?: any): void; + /** + * Calls a defined callback function on each element of an array, and returns an array that contains the results. + * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. + */ + map(callbackfn: (value: T, index: number, array: ReadonlyArray) => U, thisArg?: any): U[]; + /** + * Returns the elements of an array that meet the condition specified in a callback function. + * @param callbackfn A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. + */ + filter(callbackfn: (value: T, index: number, array: ReadonlyArray) => any, thisArg?: any): T[]; + /** + * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. + */ + reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: ReadonlyArray) => T, initialValue?: T): T; + /** + * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. + */ + reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: ReadonlyArray) => U, initialValue: U): U; + /** + * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. + * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. + */ + reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: ReadonlyArray) => T, initialValue?: T): T; + /** + * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. + * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. + */ + reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: ReadonlyArray) => U, initialValue: U): U; + + readonly [n: number]: T; +} + interface Array { /** * Gets or sets the length of the array. This is a number one higher than the highest element defined in an array. @@ -2356,49 +1128,46 @@ interface Array { /** * Removes the last element from an array and returns it. */ - pop(): T; + pop(): T | undefined; /** * Combines two or more arrays. * @param items Additional items to add to the end of array1. */ - concat(...items: U[]): T[]; + concat(...items: T[][]): T[]; /** * Combines two or more arrays. * @param items Additional items to add to the end of array1. */ - concat(...items: T[]): T[]; + concat(...items: (T | T[])[]): T[]; /** * Adds all the elements of an array separated by the specified separator string. * @param separator A string used to separate one element of an array from the next in the resulting String. If omitted, the array elements are separated with a comma. */ join(separator?: string): string; /** - * Reverses the elements in an Array. + * Reverses the elements in an Array. */ reverse(): T[]; /** * Removes the first element from an array and returns it. */ - shift(): T; - /** + shift(): T | undefined; + /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. * @param end The end of the specified portion of the array. */ slice(start?: number, end?: number): T[]; - /** * Sorts an array. * @param compareFn The name of the function used to determine the order of the elements. If omitted, the elements are sorted in ascending, ASCII character order. */ - sort(compareFn?: (a: T, b: T) => number): T[]; - + sort(compareFn?: (a: T, b: T) => number): this; /** * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements. * @param start The zero-based location in the array from which to start removing elements. */ splice(start: number): T[]; - /** * Removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements. * @param start The zero-based location in the array from which to start removing elements. @@ -2406,62 +1175,53 @@ interface Array { * @param items Elements to insert into the array in place of the deleted elements. */ splice(start: number, deleteCount: number, ...items: T[]): T[]; - /** * Inserts new elements at the start of an array. * @param items Elements to insert at the start of the Array. */ unshift(...items: T[]): number; - /** * Returns the index of the first occurrence of a value in an array. * @param searchElement The value to locate in the array. * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0. */ indexOf(searchElement: T, fromIndex?: number): number; - /** * Returns the index of the last occurrence of a specified value in an array. * @param searchElement The value to locate in the array. * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at the last index in the array. */ lastIndexOf(searchElement: T, fromIndex?: number): number; - /** * Determines whether all the members of an array satisfy the specified test. * @param callbackfn A function that accepts up to three arguments. The every method calls the callbackfn function for each element in array1 until the callbackfn returns false, or until the end of the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. */ every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; - /** * Determines whether the specified callback function returns true for any element of an array. * @param callbackfn A function that accepts up to three arguments. The some method calls the callbackfn function for each element in array1 until the callbackfn returns true, or until the end of the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. */ some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; - /** * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. + * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. */ forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; - /** * Calls a defined callback function on each element of an array, and returns an array that contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array. + * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. */ map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; - /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array. + * Returns the elements of an array that meet the condition specified in a callback function. + * @param callbackfn A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): T[]; - + filter(callbackfn: (value: T, index: number, array: T[]) => any, thisArg?: any): T[]; /** * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array. @@ -2474,16 +1234,15 @@ interface Array { * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. */ reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; - - /** + /** * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. + * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. */ reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; - /** + /** * Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. + * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array. * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value. */ reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; @@ -2499,10 +1258,10 @@ interface ArrayConstructor { (arrayLength: number): T[]; (...items: T[]): T[]; isArray(arg: any): arg is Array; - prototype: Array; + readonly prototype: Array; } -declare var Array: ArrayConstructor; +declare const Array: ArrayConstructor; interface TypedPropertyDescriptor { enumerable?: boolean; @@ -2532,22 +1291,21 @@ interface PromiseLike { } interface ArrayLike { - length: number; - [n: number]: T; + readonly length: number; + readonly [n: number]: T; } - /** - * Represents a raw buffer of binary data, which is used to store data for the - * different typed arrays. ArrayBuffers cannot be read from or written to directly, - * but can be passed to a typed array or DataView Object to interpret the raw - * buffer as needed. + * Represents a raw buffer of binary data, which is used to store data for the + * different typed arrays. ArrayBuffers cannot be read from or written to directly, + * but can be passed to a typed array or DataView Object to interpret the raw + * buffer as needed. */ interface ArrayBuffer { /** * Read-only. The length of the ArrayBuffer (in bytes). */ - byteLength: number; + readonly byteLength: number; /** * Returns a section of an ArrayBuffer. @@ -2556,15 +1314,15 @@ interface ArrayBuffer { } interface ArrayBufferConstructor { - prototype: ArrayBuffer; + readonly prototype: ArrayBuffer; new (byteLength: number): ArrayBuffer; isView(arg: any): arg is ArrayBufferView; } -declare var ArrayBuffer: ArrayBufferConstructor; +declare const ArrayBuffer: ArrayBufferConstructor; interface ArrayBufferView { /** - * The ArrayBuffer instance referenced by the array. + * The ArrayBuffer instance referenced by the array. */ buffer: ArrayBuffer; @@ -2580,128 +1338,128 @@ interface ArrayBufferView { } interface DataView { - buffer: ArrayBuffer; - byteLength: number; - byteOffset: number; + readonly buffer: ArrayBuffer; + readonly byteLength: number; + readonly byteOffset: number; /** - * Gets the Float32 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. + * Gets the Float32 value at the specified byte offset from the start of the view. There is + * no alignment constraint; multi-byte values may be fetched from any offset. * @param byteOffset The place in the buffer at which the value should be retrieved. */ getFloat32(byteOffset: number, littleEndian?: boolean): number; /** * Gets the Float64 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. + * no alignment constraint; multi-byte values may be fetched from any offset. * @param byteOffset The place in the buffer at which the value should be retrieved. */ getFloat64(byteOffset: number, littleEndian?: boolean): number; /** - * Gets the Int8 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. + * Gets the Int8 value at the specified byte offset from the start of the view. There is + * no alignment constraint; multi-byte values may be fetched from any offset. * @param byteOffset The place in the buffer at which the value should be retrieved. */ getInt8(byteOffset: number): number; /** - * Gets the Int16 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. + * Gets the Int16 value at the specified byte offset from the start of the view. There is + * no alignment constraint; multi-byte values may be fetched from any offset. * @param byteOffset The place in the buffer at which the value should be retrieved. */ getInt16(byteOffset: number, littleEndian?: boolean): number; /** - * Gets the Int32 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. + * Gets the Int32 value at the specified byte offset from the start of the view. There is + * no alignment constraint; multi-byte values may be fetched from any offset. * @param byteOffset The place in the buffer at which the value should be retrieved. */ getInt32(byteOffset: number, littleEndian?: boolean): number; /** - * Gets the Uint8 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. + * Gets the Uint8 value at the specified byte offset from the start of the view. There is + * no alignment constraint; multi-byte values may be fetched from any offset. * @param byteOffset The place in the buffer at which the value should be retrieved. */ getUint8(byteOffset: number): number; /** - * Gets the Uint16 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. + * Gets the Uint16 value at the specified byte offset from the start of the view. There is + * no alignment constraint; multi-byte values may be fetched from any offset. * @param byteOffset The place in the buffer at which the value should be retrieved. */ getUint16(byteOffset: number, littleEndian?: boolean): number; /** - * Gets the Uint32 value at the specified byte offset from the start of the view. There is - * no alignment constraint; multi-byte values may be fetched from any offset. + * Gets the Uint32 value at the specified byte offset from the start of the view. There is + * no alignment constraint; multi-byte values may be fetched from any offset. * @param byteOffset The place in the buffer at which the value should be retrieved. */ getUint32(byteOffset: number, littleEndian?: boolean): number; /** - * Stores an Float32 value at the specified byte offset from the start of the view. + * Stores an Float32 value at the specified byte offset from the start of the view. * @param byteOffset The place in the buffer at which the value should be set. * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, + * @param littleEndian If false or undefined, a big-endian value should be written, * otherwise a little-endian value should be written. */ setFloat32(byteOffset: number, value: number, littleEndian?: boolean): void; /** - * Stores an Float64 value at the specified byte offset from the start of the view. + * Stores an Float64 value at the specified byte offset from the start of the view. * @param byteOffset The place in the buffer at which the value should be set. * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, + * @param littleEndian If false or undefined, a big-endian value should be written, * otherwise a little-endian value should be written. */ setFloat64(byteOffset: number, value: number, littleEndian?: boolean): void; /** - * Stores an Int8 value at the specified byte offset from the start of the view. + * Stores an Int8 value at the specified byte offset from the start of the view. * @param byteOffset The place in the buffer at which the value should be set. * @param value The value to set. */ setInt8(byteOffset: number, value: number): void; /** - * Stores an Int16 value at the specified byte offset from the start of the view. + * Stores an Int16 value at the specified byte offset from the start of the view. * @param byteOffset The place in the buffer at which the value should be set. * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, + * @param littleEndian If false or undefined, a big-endian value should be written, * otherwise a little-endian value should be written. */ setInt16(byteOffset: number, value: number, littleEndian?: boolean): void; /** - * Stores an Int32 value at the specified byte offset from the start of the view. + * Stores an Int32 value at the specified byte offset from the start of the view. * @param byteOffset The place in the buffer at which the value should be set. * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, + * @param littleEndian If false or undefined, a big-endian value should be written, * otherwise a little-endian value should be written. */ setInt32(byteOffset: number, value: number, littleEndian?: boolean): void; /** - * Stores an Uint8 value at the specified byte offset from the start of the view. + * Stores an Uint8 value at the specified byte offset from the start of the view. * @param byteOffset The place in the buffer at which the value should be set. * @param value The value to set. */ setUint8(byteOffset: number, value: number): void; /** - * Stores an Uint16 value at the specified byte offset from the start of the view. + * Stores an Uint16 value at the specified byte offset from the start of the view. * @param byteOffset The place in the buffer at which the value should be set. * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, + * @param littleEndian If false or undefined, a big-endian value should be written, * otherwise a little-endian value should be written. */ setUint16(byteOffset: number, value: number, littleEndian?: boolean): void; /** - * Stores an Uint32 value at the specified byte offset from the start of the view. + * Stores an Uint32 value at the specified byte offset from the start of the view. * @param byteOffset The place in the buffer at which the value should be set. * @param value The value to set. - * @param littleEndian If false or undefined, a big-endian value should be written, + * @param littleEndian If false or undefined, a big-endian value should be written, * otherwise a little-endian value should be written. */ setUint32(byteOffset: number, value: number, littleEndian?: boolean): void; @@ -2710,48 +1468,48 @@ interface DataView { interface DataViewConstructor { new (buffer: ArrayBuffer, byteOffset?: number, byteLength?: number): DataView; } -declare var DataView: DataViewConstructor; +declare const DataView: DataViewConstructor; /** - * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested + * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested * number of bytes could not be allocated an exception is raised. */ interface Int8Array { /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** - * The ArrayBuffer instance referenced by the array. + * The ArrayBuffer instance referenced by the array. */ - buffer: ArrayBuffer; + readonly buffer: ArrayBuffer; /** * The length in bytes of the array. */ - byteLength: number; + readonly byteLength: number; /** * The offset in bytes of the array. */ - byteOffset: number; + readonly byteOffset: number; - /** + /** * 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 + * @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. + * @param end If not specified, length of the this object is used as its default value. */ - copyWithin(target: number, start: number, end?: number): Int8Array; + copyWithin(target: number, start: number, end?: number): this; /** * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, + * @param callbackfn A function that accepts up to three arguments. The every method calls + * the callbackfn function for each element in array1 until the callbackfn returns false, * or until the end of the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. @@ -2761,49 +1519,49 @@ interface Int8Array { /** * Returns the this object after filling the section identified by start and end with value * @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 + * @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: number, start?: number, end?: number): Int8Array; + fill(value: number, start?: number, end?: number): this; /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * Returns the elements of an array that meet the condition specified in a callback function. + * @param callbackfn A function that accepts up to three arguments. The filter method calls + * the callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): Int8Array; + filter(callbackfn: (value: number, index: number, array: Int8Array) => any, thisArg?: any): Int8Array; - /** - * Returns the value of the first element in the array where predicate is true, and undefined + /** + * 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 + * @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 + * @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(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; - /** - * Returns the index of the first element in the array where predicate is true, and undefined + /** + * Returns the index 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 + * @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: number) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. forEach calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ forEach(callbackfn: (value: number, index: number, array: Int8Array) => void, thisArg?: any): void; @@ -2818,7 +1576,7 @@ interface Int8Array { /** * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the + * @param separator A string used to separate one element of an array from the next in the * resulting String. If omitted, the array elements are separated with a comma. */ join(separator?: string): string; @@ -2826,7 +1584,7 @@ interface Int8Array { /** * Returns the index of the last occurrence of a value in an array. * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the + * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the * search starts at index 0. */ lastIndexOf(searchElement: number, fromIndex?: number): number; @@ -2834,68 +1592,68 @@ interface Int8Array { /** * The length of the array. */ - length: number; + readonly length: number; /** - * Calls a defined callback function on each element of an array, and returns an array that + * Calls a defined callback function on each element of an array, and returns an array that * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. The map method calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ map(callbackfn: (value: number, index: number, array: Int8Array) => number, thisArg?: any): Int8Array; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number, initialValue?: number): number; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int8Array) => U, initialValue: U): U; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an + * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an * argument instead of an array value. */ reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int8Array) => number, initialValue?: number): number; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int8Array) => U, initialValue: U): U; /** - * Reverses the elements in an Array. + * Reverses the elements in an Array. */ reverse(): Int8Array; @@ -2913,7 +1671,7 @@ interface Int8Array { */ set(array: ArrayLike, offset?: number): void; - /** + /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. * @param end The end of the specified portion of the array. @@ -2922,31 +1680,31 @@ interface Int8Array { /** * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until + * @param callbackfn A function that accepts up to three arguments. The some method calls the + * callbackfn function for each element in array1 until the callbackfn returns true, or until * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ some(callbackfn: (value: number, index: number, array: Int8Array) => boolean, thisArg?: any): boolean; /** * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If + * @param compareFn The name of the function used to determine the order of the elements. If * omitted, the elements are sorted in ascending, ASCII character order. */ - sort(compareFn?: (a: number, b: number) => number): Int8Array; + sort(compareFn?: (a: number, b: number) => number): this; /** * Gets a new Int8Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. + * at begin, inclusive, up to end, exclusive. * @param begin The index of the beginning of the array. * @param end The index of the end of the array. */ subarray(begin: number, end?: number): Int8Array; /** - * Converts a number to a string by using the current locale. + * Converts a number to a string by using the current locale. */ toLocaleString(): string; @@ -2958,22 +1716,22 @@ interface Int8Array { [index: number]: number; } interface Int8ArrayConstructor { - prototype: Int8Array; + readonly prototype: Int8Array; new (length: number): Int8Array; new (array: ArrayLike): Int8Array; new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int8Array; /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** * Returns a new array from a set of elements. * @param items A set of elements to include in the new array object. */ of(...items: number[]): Int8Array; - + /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. @@ -2983,48 +1741,48 @@ interface Int8ArrayConstructor { from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Int8Array; } -declare var Int8Array: Int8ArrayConstructor; +declare const Int8Array: Int8ArrayConstructor; /** - * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the + * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the * requested number of bytes could not be allocated an exception is raised. */ interface Uint8Array { /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** - * The ArrayBuffer instance referenced by the array. + * The ArrayBuffer instance referenced by the array. */ - buffer: ArrayBuffer; + readonly buffer: ArrayBuffer; /** * The length in bytes of the array. */ - byteLength: number; + readonly byteLength: number; /** * The offset in bytes of the array. */ - byteOffset: number; + readonly byteOffset: number; - /** + /** * 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 + * @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. + * @param end If not specified, length of the this object is used as its default value. */ - copyWithin(target: number, start: number, end?: number): Uint8Array; + copyWithin(target: number, start: number, end?: number): this; /** * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, + * @param callbackfn A function that accepts up to three arguments. The every method calls + * the callbackfn function for each element in array1 until the callbackfn returns false, * or until the end of the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. @@ -3034,49 +1792,49 @@ interface Uint8Array { /** * Returns the this object after filling the section identified by start and end with value * @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 + * @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: number, start?: number, end?: number): Uint8Array; + fill(value: number, start?: number, end?: number): this; /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * Returns the elements of an array that meet the condition specified in a callback function. + * @param callbackfn A function that accepts up to three arguments. The filter method calls + * the callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): Uint8Array; + filter(callbackfn: (value: number, index: number, array: Uint8Array) => any, thisArg?: any): Uint8Array; - /** - * Returns the value of the first element in the array where predicate is true, and undefined + /** + * 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 + * @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 + * @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(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; - /** - * Returns the index of the first element in the array where predicate is true, and undefined + /** + * Returns the index 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 + * @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: number) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. forEach calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ forEach(callbackfn: (value: number, index: number, array: Uint8Array) => void, thisArg?: any): void; @@ -3091,7 +1849,7 @@ interface Uint8Array { /** * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the + * @param separator A string used to separate one element of an array from the next in the * resulting String. If omitted, the array elements are separated with a comma. */ join(separator?: string): string; @@ -3099,7 +1857,7 @@ interface Uint8Array { /** * Returns the index of the last occurrence of a value in an array. * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the + * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the * search starts at index 0. */ lastIndexOf(searchElement: number, fromIndex?: number): number; @@ -3107,68 +1865,68 @@ interface Uint8Array { /** * The length of the array. */ - length: number; + readonly length: number; /** - * Calls a defined callback function on each element of an array, and returns an array that + * Calls a defined callback function on each element of an array, and returns an array that * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. The map method calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ map(callbackfn: (value: number, index: number, array: Uint8Array) => number, thisArg?: any): Uint8Array; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number, initialValue?: number): number; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U, initialValue: U): U; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an + * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an * argument instead of an array value. */ reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8Array) => number, initialValue?: number): number; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8Array) => U, initialValue: U): U; /** - * Reverses the elements in an Array. + * Reverses the elements in an Array. */ reverse(): Uint8Array; @@ -3186,7 +1944,7 @@ interface Uint8Array { */ set(array: ArrayLike, offset?: number): void; - /** + /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. * @param end The end of the specified portion of the array. @@ -3195,31 +1953,31 @@ interface Uint8Array { /** * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until + * @param callbackfn A function that accepts up to three arguments. The some method calls the + * callbackfn function for each element in array1 until the callbackfn returns true, or until * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ some(callbackfn: (value: number, index: number, array: Uint8Array) => boolean, thisArg?: any): boolean; /** * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If + * @param compareFn The name of the function used to determine the order of the elements. If * omitted, the elements are sorted in ascending, ASCII character order. */ - sort(compareFn?: (a: number, b: number) => number): Uint8Array; + sort(compareFn?: (a: number, b: number) => number): this; /** * Gets a new Uint8Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. + * at begin, inclusive, up to end, exclusive. * @param begin The index of the beginning of the array. * @param end The index of the end of the array. */ subarray(begin: number, end?: number): Uint8Array; /** - * Converts a number to a string by using the current locale. + * Converts a number to a string by using the current locale. */ toLocaleString(): string; @@ -3232,22 +1990,22 @@ interface Uint8Array { } interface Uint8ArrayConstructor { - prototype: Uint8Array; + readonly prototype: Uint8Array; new (length: number): Uint8Array; new (array: ArrayLike): Uint8Array; new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint8Array; /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** * Returns a new array from a set of elements. * @param items A set of elements to include in the new array object. */ of(...items: number[]): Uint8Array; - + /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. @@ -3257,48 +2015,48 @@ interface Uint8ArrayConstructor { from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8Array; } -declare var Uint8Array: Uint8ArrayConstructor; +declare const Uint8Array: Uint8ArrayConstructor; /** - * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. + * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. * If the requested number of bytes could not be allocated an exception is raised. */ interface Uint8ClampedArray { /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** - * The ArrayBuffer instance referenced by the array. + * The ArrayBuffer instance referenced by the array. */ - buffer: ArrayBuffer; + readonly buffer: ArrayBuffer; /** * The length in bytes of the array. */ - byteLength: number; + readonly byteLength: number; /** * The offset in bytes of the array. */ - byteOffset: number; + readonly byteOffset: number; - /** + /** * 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 + * @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. + * @param end If not specified, length of the this object is used as its default value. */ - copyWithin(target: number, start: number, end?: number): Uint8ClampedArray; + copyWithin(target: number, start: number, end?: number): this; /** * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, + * @param callbackfn A function that accepts up to three arguments. The every method calls + * the callbackfn function for each element in array1 until the callbackfn returns false, * or until the end of the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. @@ -3308,49 +2066,49 @@ interface Uint8ClampedArray { /** * Returns the this object after filling the section identified by start and end with value * @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 + * @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: number, start?: number, end?: number): Uint8ClampedArray; + fill(value: number, start?: number, end?: number): this; /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * Returns the elements of an array that meet the condition specified in a callback function. + * @param callbackfn A function that accepts up to three arguments. The filter method calls + * the callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): Uint8ClampedArray; + filter(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => any, thisArg?: any): Uint8ClampedArray; - /** - * Returns the value of the first element in the array where predicate is true, and undefined + /** + * 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 + * @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 + * @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(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; - /** - * Returns the index of the first element in the array where predicate is true, and undefined + /** + * Returns the index 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 + * @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: number) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. forEach calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ forEach(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => void, thisArg?: any): void; @@ -3365,7 +2123,7 @@ interface Uint8ClampedArray { /** * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the + * @param separator A string used to separate one element of an array from the next in the * resulting String. If omitted, the array elements are separated with a comma. */ join(separator?: string): string; @@ -3373,7 +2131,7 @@ interface Uint8ClampedArray { /** * Returns the index of the last occurrence of a value in an array. * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the + * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the * search starts at index 0. */ lastIndexOf(searchElement: number, fromIndex?: number): number; @@ -3381,68 +2139,68 @@ interface Uint8ClampedArray { /** * The length of the array. */ - length: number; + readonly length: number; /** - * Calls a defined callback function on each element of an array, and returns an array that + * Calls a defined callback function on each element of an array, and returns an array that * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. The map method calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ map(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => number, thisArg?: any): Uint8ClampedArray; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => number, initialValue?: number): number; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => U, initialValue: U): U; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an + * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an * argument instead of an array value. */ reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => number, initialValue?: number): number; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint8ClampedArray) => U, initialValue: U): U; /** - * Reverses the elements in an Array. + * Reverses the elements in an Array. */ reverse(): Uint8ClampedArray; @@ -3460,7 +2218,7 @@ interface Uint8ClampedArray { */ set(array: Uint8ClampedArray, offset?: number): void; - /** + /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. * @param end The end of the specified portion of the array. @@ -3469,31 +2227,31 @@ interface Uint8ClampedArray { /** * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until + * @param callbackfn A function that accepts up to three arguments. The some method calls the + * callbackfn function for each element in array1 until the callbackfn returns true, or until * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ some(callbackfn: (value: number, index: number, array: Uint8ClampedArray) => boolean, thisArg?: any): boolean; /** * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If + * @param compareFn The name of the function used to determine the order of the elements. If * omitted, the elements are sorted in ascending, ASCII character order. */ - sort(compareFn?: (a: number, b: number) => number): Uint8ClampedArray; + sort(compareFn?: (a: number, b: number) => number): this; /** * Gets a new Uint8ClampedArray view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. + * at begin, inclusive, up to end, exclusive. * @param begin The index of the beginning of the array. * @param end The index of the end of the array. */ subarray(begin: number, end?: number): Uint8ClampedArray; /** - * Converts a number to a string by using the current locale. + * Converts a number to a string by using the current locale. */ toLocaleString(): string; @@ -3506,15 +2264,15 @@ interface Uint8ClampedArray { } interface Uint8ClampedArrayConstructor { - prototype: Uint8ClampedArray; + readonly prototype: Uint8ClampedArray; new (length: number): Uint8ClampedArray; new (array: ArrayLike): Uint8ClampedArray; new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint8ClampedArray; /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** * Returns a new array from a set of elements. @@ -3530,48 +2288,48 @@ interface Uint8ClampedArrayConstructor { */ from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint8ClampedArray; } -declare var Uint8ClampedArray: Uint8ClampedArrayConstructor; +declare const Uint8ClampedArray: Uint8ClampedArrayConstructor; /** - * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the + * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the * requested number of bytes could not be allocated an exception is raised. */ interface Int16Array { /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** - * The ArrayBuffer instance referenced by the array. + * The ArrayBuffer instance referenced by the array. */ - buffer: ArrayBuffer; + readonly buffer: ArrayBuffer; /** * The length in bytes of the array. */ - byteLength: number; + readonly byteLength: number; /** * The offset in bytes of the array. */ - byteOffset: number; + readonly byteOffset: number; - /** + /** * 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 + * @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. + * @param end If not specified, length of the this object is used as its default value. */ - copyWithin(target: number, start: number, end?: number): Int16Array; + copyWithin(target: number, start: number, end?: number): this; /** * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, + * @param callbackfn A function that accepts up to three arguments. The every method calls + * the callbackfn function for each element in array1 until the callbackfn returns false, * or until the end of the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. @@ -3581,49 +2339,49 @@ interface Int16Array { /** * Returns the this object after filling the section identified by start and end with value * @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 + * @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: number, start?: number, end?: number): Int16Array; + fill(value: number, start?: number, end?: number): this; /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * Returns the elements of an array that meet the condition specified in a callback function. + * @param callbackfn A function that accepts up to three arguments. The filter method calls + * the callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): Int16Array; + filter(callbackfn: (value: number, index: number, array: Int16Array) => any, thisArg?: any): Int16Array; - /** - * Returns the value of the first element in the array where predicate is true, and undefined + /** + * 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 + * @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 + * @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(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; - /** - * Returns the index of the first element in the array where predicate is true, and undefined + /** + * Returns the index 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 + * @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: number) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. forEach calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ forEach(callbackfn: (value: number, index: number, array: Int16Array) => void, thisArg?: any): void; @@ -3638,7 +2396,7 @@ interface Int16Array { /** * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the + * @param separator A string used to separate one element of an array from the next in the * resulting String. If omitted, the array elements are separated with a comma. */ join(separator?: string): string; @@ -3646,7 +2404,7 @@ interface Int16Array { /** * Returns the index of the last occurrence of a value in an array. * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the + * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the * search starts at index 0. */ lastIndexOf(searchElement: number, fromIndex?: number): number; @@ -3654,68 +2412,68 @@ interface Int16Array { /** * The length of the array. */ - length: number; + readonly length: number; /** - * Calls a defined callback function on each element of an array, and returns an array that + * Calls a defined callback function on each element of an array, and returns an array that * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. The map method calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ map(callbackfn: (value: number, index: number, array: Int16Array) => number, thisArg?: any): Int16Array; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number, initialValue?: number): number; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int16Array) => U, initialValue: U): U; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an + * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an * argument instead of an array value. */ reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int16Array) => number, initialValue?: number): number; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int16Array) => U, initialValue: U): U; /** - * Reverses the elements in an Array. + * Reverses the elements in an Array. */ reverse(): Int16Array; @@ -3733,7 +2491,7 @@ interface Int16Array { */ set(array: ArrayLike, offset?: number): void; - /** + /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. * @param end The end of the specified portion of the array. @@ -3742,31 +2500,31 @@ interface Int16Array { /** * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until + * @param callbackfn A function that accepts up to three arguments. The some method calls the + * callbackfn function for each element in array1 until the callbackfn returns true, or until * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ some(callbackfn: (value: number, index: number, array: Int16Array) => boolean, thisArg?: any): boolean; /** * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If + * @param compareFn The name of the function used to determine the order of the elements. If * omitted, the elements are sorted in ascending, ASCII character order. */ - sort(compareFn?: (a: number, b: number) => number): Int16Array; + sort(compareFn?: (a: number, b: number) => number): this; /** * Gets a new Int16Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. + * at begin, inclusive, up to end, exclusive. * @param begin The index of the beginning of the array. * @param end The index of the end of the array. */ subarray(begin: number, end?: number): Int16Array; /** - * Converts a number to a string by using the current locale. + * Converts a number to a string by using the current locale. */ toLocaleString(): string; @@ -3779,22 +2537,22 @@ interface Int16Array { } interface Int16ArrayConstructor { - prototype: Int16Array; + readonly prototype: Int16Array; new (length: number): Int16Array; new (array: ArrayLike): Int16Array; new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int16Array; /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** * Returns a new array from a set of elements. * @param items A set of elements to include in the new array object. */ of(...items: number[]): Int16Array; - + /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. @@ -3804,48 +2562,48 @@ interface Int16ArrayConstructor { from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Int16Array; } -declare var Int16Array: Int16ArrayConstructor; +declare const Int16Array: Int16ArrayConstructor; /** - * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the + * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the * requested number of bytes could not be allocated an exception is raised. */ interface Uint16Array { /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** - * The ArrayBuffer instance referenced by the array. + * The ArrayBuffer instance referenced by the array. */ - buffer: ArrayBuffer; + readonly buffer: ArrayBuffer; /** * The length in bytes of the array. */ - byteLength: number; + readonly byteLength: number; /** * The offset in bytes of the array. */ - byteOffset: number; + readonly byteOffset: number; - /** + /** * 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 + * @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. + * @param end If not specified, length of the this object is used as its default value. */ - copyWithin(target: number, start: number, end?: number): Uint16Array; + copyWithin(target: number, start: number, end?: number): this; /** * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, + * @param callbackfn A function that accepts up to three arguments. The every method calls + * the callbackfn function for each element in array1 until the callbackfn returns false, * or until the end of the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. @@ -3855,49 +2613,49 @@ interface Uint16Array { /** * Returns the this object after filling the section identified by start and end with value * @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 + * @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: number, start?: number, end?: number): Uint16Array; + fill(value: number, start?: number, end?: number): this; /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * Returns the elements of an array that meet the condition specified in a callback function. + * @param callbackfn A function that accepts up to three arguments. The filter method calls + * the callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): Uint16Array; + filter(callbackfn: (value: number, index: number, array: Uint16Array) => any, thisArg?: any): Uint16Array; - /** - * Returns the value of the first element in the array where predicate is true, and undefined + /** + * 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 + * @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 + * @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(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; - /** - * Returns the index of the first element in the array where predicate is true, and undefined + /** + * Returns the index 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 + * @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: number) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. forEach calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ forEach(callbackfn: (value: number, index: number, array: Uint16Array) => void, thisArg?: any): void; @@ -3912,7 +2670,7 @@ interface Uint16Array { /** * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the + * @param separator A string used to separate one element of an array from the next in the * resulting String. If omitted, the array elements are separated with a comma. */ join(separator?: string): string; @@ -3920,7 +2678,7 @@ interface Uint16Array { /** * Returns the index of the last occurrence of a value in an array. * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the + * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the * search starts at index 0. */ lastIndexOf(searchElement: number, fromIndex?: number): number; @@ -3928,68 +2686,68 @@ interface Uint16Array { /** * The length of the array. */ - length: number; + readonly length: number; /** - * Calls a defined callback function on each element of an array, and returns an array that + * Calls a defined callback function on each element of an array, and returns an array that * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. The map method calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ map(callbackfn: (value: number, index: number, array: Uint16Array) => number, thisArg?: any): Uint16Array; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number, initialValue?: number): number; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint16Array) => U, initialValue: U): U; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an + * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an * argument instead of an array value. */ reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint16Array) => number, initialValue?: number): number; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint16Array) => U, initialValue: U): U; /** - * Reverses the elements in an Array. + * Reverses the elements in an Array. */ reverse(): Uint16Array; @@ -4007,7 +2765,7 @@ interface Uint16Array { */ set(array: ArrayLike, offset?: number): void; - /** + /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. * @param end The end of the specified portion of the array. @@ -4016,31 +2774,31 @@ interface Uint16Array { /** * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until + * @param callbackfn A function that accepts up to three arguments. The some method calls the + * callbackfn function for each element in array1 until the callbackfn returns true, or until * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ some(callbackfn: (value: number, index: number, array: Uint16Array) => boolean, thisArg?: any): boolean; /** * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If + * @param compareFn The name of the function used to determine the order of the elements. If * omitted, the elements are sorted in ascending, ASCII character order. */ - sort(compareFn?: (a: number, b: number) => number): Uint16Array; + sort(compareFn?: (a: number, b: number) => number): this; /** * Gets a new Uint16Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. + * at begin, inclusive, up to end, exclusive. * @param begin The index of the beginning of the array. * @param end The index of the end of the array. */ subarray(begin: number, end?: number): Uint16Array; /** - * Converts a number to a string by using the current locale. + * Converts a number to a string by using the current locale. */ toLocaleString(): string; @@ -4053,22 +2811,22 @@ interface Uint16Array { } interface Uint16ArrayConstructor { - prototype: Uint16Array; + readonly prototype: Uint16Array; new (length: number): Uint16Array; new (array: ArrayLike): Uint16Array; new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint16Array; /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** * Returns a new array from a set of elements. * @param items A set of elements to include in the new array object. */ of(...items: number[]): Uint16Array; - + /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. @@ -4078,47 +2836,47 @@ interface Uint16ArrayConstructor { from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint16Array; } -declare var Uint16Array: Uint16ArrayConstructor; +declare const Uint16Array: Uint16ArrayConstructor; /** - * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the + * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the * requested number of bytes could not be allocated an exception is raised. */ interface Int32Array { /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** - * The ArrayBuffer instance referenced by the array. + * The ArrayBuffer instance referenced by the array. */ - buffer: ArrayBuffer; + readonly buffer: ArrayBuffer; /** * The length in bytes of the array. */ - byteLength: number; + readonly byteLength: number; /** * The offset in bytes of the array. */ - byteOffset: number; + readonly byteOffset: number; - /** + /** * 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 + * @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. + * @param end If not specified, length of the this object is used as its default value. */ - copyWithin(target: number, start: number, end?: number): Int32Array; + copyWithin(target: number, start: number, end?: number): this; /** * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, + * @param callbackfn A function that accepts up to three arguments. The every method calls + * the callbackfn function for each element in array1 until the callbackfn returns false, * or until the end of the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. @@ -4128,49 +2886,49 @@ interface Int32Array { /** * Returns the this object after filling the section identified by start and end with value * @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 + * @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: number, start?: number, end?: number): Int32Array; + fill(value: number, start?: number, end?: number): this; /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * Returns the elements of an array that meet the condition specified in a callback function. + * @param callbackfn A function that accepts up to three arguments. The filter method calls + * the callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): Int32Array; + filter(callbackfn: (value: number, index: number, array: Int32Array) => any, thisArg?: any): Int32Array; - /** - * Returns the value of the first element in the array where predicate is true, and undefined + /** + * 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 + * @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 + * @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(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; - /** - * Returns the index of the first element in the array where predicate is true, and undefined + /** + * Returns the index 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 + * @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: number) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. forEach calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ forEach(callbackfn: (value: number, index: number, array: Int32Array) => void, thisArg?: any): void; @@ -4185,7 +2943,7 @@ interface Int32Array { /** * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the + * @param separator A string used to separate one element of an array from the next in the * resulting String. If omitted, the array elements are separated with a comma. */ join(separator?: string): string; @@ -4193,7 +2951,7 @@ interface Int32Array { /** * Returns the index of the last occurrence of a value in an array. * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the + * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the * search starts at index 0. */ lastIndexOf(searchElement: number, fromIndex?: number): number; @@ -4201,68 +2959,68 @@ interface Int32Array { /** * The length of the array. */ - length: number; + readonly length: number; /** - * Calls a defined callback function on each element of an array, and returns an array that + * Calls a defined callback function on each element of an array, and returns an array that * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. The map method calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ map(callbackfn: (value: number, index: number, array: Int32Array) => number, thisArg?: any): Int32Array; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number, initialValue?: number): number; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int32Array) => U, initialValue: U): U; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an + * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an * argument instead of an array value. */ reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Int32Array) => number, initialValue?: number): number; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Int32Array) => U, initialValue: U): U; /** - * Reverses the elements in an Array. + * Reverses the elements in an Array. */ reverse(): Int32Array; @@ -4280,7 +3038,7 @@ interface Int32Array { */ set(array: ArrayLike, offset?: number): void; - /** + /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. * @param end The end of the specified portion of the array. @@ -4289,31 +3047,31 @@ interface Int32Array { /** * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until + * @param callbackfn A function that accepts up to three arguments. The some method calls the + * callbackfn function for each element in array1 until the callbackfn returns true, or until * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ some(callbackfn: (value: number, index: number, array: Int32Array) => boolean, thisArg?: any): boolean; /** * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If + * @param compareFn The name of the function used to determine the order of the elements. If * omitted, the elements are sorted in ascending, ASCII character order. */ - sort(compareFn?: (a: number, b: number) => number): Int32Array; + sort(compareFn?: (a: number, b: number) => number): this; /** * Gets a new Int32Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. + * at begin, inclusive, up to end, exclusive. * @param begin The index of the beginning of the array. * @param end The index of the end of the array. */ subarray(begin: number, end?: number): Int32Array; /** - * Converts a number to a string by using the current locale. + * Converts a number to a string by using the current locale. */ toLocaleString(): string; @@ -4326,22 +3084,22 @@ interface Int32Array { } interface Int32ArrayConstructor { - prototype: Int32Array; + readonly prototype: Int32Array; new (length: number): Int32Array; new (array: ArrayLike): Int32Array; new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int32Array; /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** * Returns a new array from a set of elements. * @param items A set of elements to include in the new array object. */ of(...items: number[]): Int32Array; - + /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. @@ -4350,48 +3108,48 @@ interface Int32ArrayConstructor { */ from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Int32Array; } -declare var Int32Array: Int32ArrayConstructor; +declare const Int32Array: Int32ArrayConstructor; /** - * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the + * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the * requested number of bytes could not be allocated an exception is raised. */ interface Uint32Array { /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** - * The ArrayBuffer instance referenced by the array. + * The ArrayBuffer instance referenced by the array. */ - buffer: ArrayBuffer; + readonly buffer: ArrayBuffer; /** * The length in bytes of the array. */ - byteLength: number; + readonly byteLength: number; /** * The offset in bytes of the array. */ - byteOffset: number; + readonly byteOffset: number; - /** + /** * 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 + * @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. + * @param end If not specified, length of the this object is used as its default value. */ - copyWithin(target: number, start: number, end?: number): Uint32Array; + copyWithin(target: number, start: number, end?: number): this; /** * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, + * @param callbackfn A function that accepts up to three arguments. The every method calls + * the callbackfn function for each element in array1 until the callbackfn returns false, * or until the end of the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. @@ -4401,49 +3159,49 @@ interface Uint32Array { /** * Returns the this object after filling the section identified by start and end with value * @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 + * @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: number, start?: number, end?: number): Uint32Array; + fill(value: number, start?: number, end?: number): this; /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * Returns the elements of an array that meet the condition specified in a callback function. + * @param callbackfn A function that accepts up to three arguments. The filter method calls + * the callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): Uint32Array; + filter(callbackfn: (value: number, index: number, array: Uint32Array) => any, thisArg?: any): Uint32Array; - /** - * Returns the value of the first element in the array where predicate is true, and undefined + /** + * 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 + * @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 + * @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(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; - /** - * Returns the index of the first element in the array where predicate is true, and undefined + /** + * Returns the index 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 + * @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: number) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. forEach calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ forEach(callbackfn: (value: number, index: number, array: Uint32Array) => void, thisArg?: any): void; @@ -4458,7 +3216,7 @@ interface Uint32Array { /** * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the + * @param separator A string used to separate one element of an array from the next in the * resulting String. If omitted, the array elements are separated with a comma. */ join(separator?: string): string; @@ -4466,7 +3224,7 @@ interface Uint32Array { /** * Returns the index of the last occurrence of a value in an array. * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the + * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the * search starts at index 0. */ lastIndexOf(searchElement: number, fromIndex?: number): number; @@ -4474,68 +3232,68 @@ interface Uint32Array { /** * The length of the array. */ - length: number; + readonly length: number; /** - * Calls a defined callback function on each element of an array, and returns an array that + * Calls a defined callback function on each element of an array, and returns an array that * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. The map method calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ map(callbackfn: (value: number, index: number, array: Uint32Array) => number, thisArg?: any): Uint32Array; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number, initialValue?: number): number; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint32Array) => U, initialValue: U): U; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an + * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an * argument instead of an array value. */ reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Uint32Array) => number, initialValue?: number): number; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Uint32Array) => U, initialValue: U): U; /** - * Reverses the elements in an Array. + * Reverses the elements in an Array. */ reverse(): Uint32Array; @@ -4553,7 +3311,7 @@ interface Uint32Array { */ set(array: ArrayLike, offset?: number): void; - /** + /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. * @param end The end of the specified portion of the array. @@ -4562,31 +3320,31 @@ interface Uint32Array { /** * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until + * @param callbackfn A function that accepts up to three arguments. The some method calls the + * callbackfn function for each element in array1 until the callbackfn returns true, or until * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ some(callbackfn: (value: number, index: number, array: Uint32Array) => boolean, thisArg?: any): boolean; /** * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If + * @param compareFn The name of the function used to determine the order of the elements. If * omitted, the elements are sorted in ascending, ASCII character order. */ - sort(compareFn?: (a: number, b: number) => number): Uint32Array; + sort(compareFn?: (a: number, b: number) => number): this; /** * Gets a new Uint32Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. + * at begin, inclusive, up to end, exclusive. * @param begin The index of the beginning of the array. * @param end The index of the end of the array. */ subarray(begin: number, end?: number): Uint32Array; /** - * Converts a number to a string by using the current locale. + * Converts a number to a string by using the current locale. */ toLocaleString(): string; @@ -4599,22 +3357,22 @@ interface Uint32Array { } interface Uint32ArrayConstructor { - prototype: Uint32Array; + readonly prototype: Uint32Array; new (length: number): Uint32Array; new (array: ArrayLike): Uint32Array; new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint32Array; /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** * Returns a new array from a set of elements. * @param items A set of elements to include in the new array object. */ of(...items: number[]): Uint32Array; - + /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. @@ -4623,7 +3381,7 @@ interface Uint32ArrayConstructor { */ from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Uint32Array; } -declare var Uint32Array: Uint32ArrayConstructor; +declare const Uint32Array: Uint32ArrayConstructor; /** * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number @@ -4631,40 +3389,40 @@ declare var Uint32Array: Uint32ArrayConstructor; */ interface Float32Array { /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** - * The ArrayBuffer instance referenced by the array. + * The ArrayBuffer instance referenced by the array. */ - buffer: ArrayBuffer; + readonly buffer: ArrayBuffer; /** * The length in bytes of the array. */ - byteLength: number; + readonly byteLength: number; /** * The offset in bytes of the array. */ - byteOffset: number; + readonly byteOffset: number; - /** + /** * 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 + * @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. + * @param end If not specified, length of the this object is used as its default value. */ - copyWithin(target: number, start: number, end?: number): Float32Array; + copyWithin(target: number, start: number, end?: number): this; /** * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, + * @param callbackfn A function that accepts up to three arguments. The every method calls + * the callbackfn function for each element in array1 until the callbackfn returns false, * or until the end of the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. @@ -4674,49 +3432,49 @@ interface Float32Array { /** * Returns the this object after filling the section identified by start and end with value * @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 + * @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: number, start?: number, end?: number): Float32Array; + fill(value: number, start?: number, end?: number): this; /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * Returns the elements of an array that meet the condition specified in a callback function. + * @param callbackfn A function that accepts up to three arguments. The filter method calls + * the callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): Float32Array; + filter(callbackfn: (value: number, index: number, array: Float32Array) => any, thisArg?: any): Float32Array; - /** - * Returns the value of the first element in the array where predicate is true, and undefined + /** + * 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 + * @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 + * @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(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; - /** - * Returns the index of the first element in the array where predicate is true, and undefined + /** + * Returns the index 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 + * @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: number) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. forEach calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ forEach(callbackfn: (value: number, index: number, array: Float32Array) => void, thisArg?: any): void; @@ -4731,7 +3489,7 @@ interface Float32Array { /** * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the + * @param separator A string used to separate one element of an array from the next in the * resulting String. If omitted, the array elements are separated with a comma. */ join(separator?: string): string; @@ -4739,7 +3497,7 @@ interface Float32Array { /** * Returns the index of the last occurrence of a value in an array. * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the + * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the * search starts at index 0. */ lastIndexOf(searchElement: number, fromIndex?: number): number; @@ -4747,68 +3505,68 @@ interface Float32Array { /** * The length of the array. */ - length: number; + readonly length: number; /** - * Calls a defined callback function on each element of an array, and returns an array that + * Calls a defined callback function on each element of an array, and returns an array that * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. The map method calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ map(callbackfn: (value: number, index: number, array: Float32Array) => number, thisArg?: any): Float32Array; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number, initialValue?: number): number; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float32Array) => U, initialValue: U): U; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an + * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an * argument instead of an array value. */ reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float32Array) => number, initialValue?: number): number; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float32Array) => U, initialValue: U): U; /** - * Reverses the elements in an Array. + * Reverses the elements in an Array. */ reverse(): Float32Array; @@ -4826,7 +3584,7 @@ interface Float32Array { */ set(array: ArrayLike, offset?: number): void; - /** + /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. * @param end The end of the specified portion of the array. @@ -4835,31 +3593,31 @@ interface Float32Array { /** * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until + * @param callbackfn A function that accepts up to three arguments. The some method calls the + * callbackfn function for each element in array1 until the callbackfn returns true, or until * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ some(callbackfn: (value: number, index: number, array: Float32Array) => boolean, thisArg?: any): boolean; /** * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If + * @param compareFn The name of the function used to determine the order of the elements. If * omitted, the elements are sorted in ascending, ASCII character order. */ - sort(compareFn?: (a: number, b: number) => number): Float32Array; + sort(compareFn?: (a: number, b: number) => number): this; /** * Gets a new Float32Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. + * at begin, inclusive, up to end, exclusive. * @param begin The index of the beginning of the array. * @param end The index of the end of the array. */ subarray(begin: number, end?: number): Float32Array; /** - * Converts a number to a string by using the current locale. + * Converts a number to a string by using the current locale. */ toLocaleString(): string; @@ -4872,22 +3630,22 @@ interface Float32Array { } interface Float32ArrayConstructor { - prototype: Float32Array; + readonly prototype: Float32Array; new (length: number): Float32Array; new (array: ArrayLike): Float32Array; new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Float32Array; /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** * Returns a new array from a set of elements. * @param items A set of elements to include in the new array object. */ of(...items: number[]): Float32Array; - + /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. @@ -4897,48 +3655,48 @@ interface Float32ArrayConstructor { from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Float32Array; } -declare var Float32Array: Float32ArrayConstructor; +declare const Float32Array: Float32ArrayConstructor; /** - * A typed array of 64-bit float values. The contents are initialized to 0. If the requested + * A typed array of 64-bit float values. The contents are initialized to 0. If the requested * number of bytes could not be allocated an exception is raised. */ interface Float64Array { /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** - * The ArrayBuffer instance referenced by the array. + * The ArrayBuffer instance referenced by the array. */ - buffer: ArrayBuffer; + readonly buffer: ArrayBuffer; /** * The length in bytes of the array. */ - byteLength: number; + readonly byteLength: number; /** * The offset in bytes of the array. */ - byteOffset: number; + readonly byteOffset: number; - /** + /** * 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 + * @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. + * @param end If not specified, length of the this object is used as its default value. */ - copyWithin(target: number, start: number, end?: number): Float64Array; + copyWithin(target: number, start: number, end?: number): this; /** * Determines whether all the members of an array satisfy the specified test. - * @param callbackfn A function that accepts up to three arguments. The every method calls - * the callbackfn function for each element in array1 until the callbackfn returns false, + * @param callbackfn A function that accepts up to three arguments. The every method calls + * the callbackfn function for each element in array1 until the callbackfn returns false, * or until the end of the array. * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. @@ -4948,49 +3706,49 @@ interface Float64Array { /** * Returns the this object after filling the section identified by start and end with value * @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 + * @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: number, start?: number, end?: number): Float64Array; + fill(value: number, start?: number, end?: number): this; /** - * Returns the elements of an array that meet the condition specified in a callback function. - * @param callbackfn A function that accepts up to three arguments. The filter method calls - * the callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * Returns the elements of an array that meet the condition specified in a callback function. + * @param callbackfn A function that accepts up to three arguments. The filter method calls + * the callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ - filter(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): Float64Array; + filter(callbackfn: (value: number, index: number, array: Float64Array) => any, thisArg?: any): Float64Array; - /** - * Returns the value of the first element in the array where predicate is true, and undefined + /** + * 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 + * @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 + * @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(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number; + find(predicate: (value: number, index: number, obj: Array) => boolean, thisArg?: any): number | undefined; - /** - * Returns the index of the first element in the array where predicate is true, and undefined + /** + * Returns the index 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 + * @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: number) => boolean, thisArg?: any): number; /** * Performs the specified action for each element in an array. - * @param callbackfn A function that accepts up to three arguments. forEach calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. forEach calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ forEach(callbackfn: (value: number, index: number, array: Float64Array) => void, thisArg?: any): void; @@ -5005,7 +3763,7 @@ interface Float64Array { /** * Adds all the elements of an array separated by the specified separator string. - * @param separator A string used to separate one element of an array from the next in the + * @param separator A string used to separate one element of an array from the next in the * resulting String. If omitted, the array elements are separated with a comma. */ join(separator?: string): string; @@ -5013,7 +3771,7 @@ interface Float64Array { /** * Returns the index of the last occurrence of a value in an array. * @param searchElement The value to locate in the array. - * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the + * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the * search starts at index 0. */ lastIndexOf(searchElement: number, fromIndex?: number): number; @@ -5021,68 +3779,68 @@ interface Float64Array { /** * The length of the array. */ - length: number; + readonly length: number; /** - * Calls a defined callback function on each element of an array, and returns an array that + * Calls a defined callback function on each element of an array, and returns an array that * contains the results. - * @param callbackfn A function that accepts up to three arguments. The map method calls the - * callbackfn function one time for each element in the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param callbackfn A function that accepts up to three arguments. The map method calls the + * callbackfn function one time for each element in the array. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ map(callbackfn: (value: number, index: number, array: Float64Array) => number, thisArg?: any): Float64Array; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number, initialValue?: number): number; /** - * Calls the specified callback function for all the elements in an array. The return value of - * the callback function is the accumulated result, and is provided as an argument in the next + * Calls the specified callback function for all the elements in an array. The return value of + * the callback function is the accumulated result, and is provided as an argument in the next * call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduce method calls the + * @param callbackfn A function that accepts up to four arguments. The reduce method calls the * callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an argument + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduce(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array) => U, initialValue: U): U; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. - * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start - * the accumulation. The first call to the callbackfn function provides this value as an + * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start + * the accumulation. The first call to the callbackfn function provides this value as an * argument instead of an array value. */ reduceRight(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: Float64Array) => number, initialValue?: number): number; - /** - * Calls the specified callback function for all the elements in an array, in descending order. - * The return value of the callback function is the accumulated result, and is provided as an + /** + * Calls the specified callback function for all the elements in an array, in descending order. + * The return value of the callback function is the accumulated result, and is provided as an * argument in the next call to the callback function. * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls - * the callbackfn function one time for each element in the array. - * @param initialValue If initialValue is specified, it is used as the initial value to start + * the callbackfn function one time for each element in the array. + * @param initialValue If initialValue is specified, it is used as the initial value to start * the accumulation. The first call to the callbackfn function provides this value as an argument * instead of an array value. */ reduceRight(callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: Float64Array) => U, initialValue: U): U; /** - * Reverses the elements in an Array. + * Reverses the elements in an Array. */ reverse(): Float64Array; @@ -5100,7 +3858,7 @@ interface Float64Array { */ set(array: ArrayLike, offset?: number): void; - /** + /** * Returns a section of an array. * @param start The beginning of the specified portion of the array. * @param end The end of the specified portion of the array. @@ -5109,31 +3867,31 @@ interface Float64Array { /** * Determines whether the specified callback function returns true for any element of an array. - * @param callbackfn A function that accepts up to three arguments. The some method calls the - * callbackfn function for each element in array1 until the callbackfn returns true, or until + * @param callbackfn A function that accepts up to three arguments. The some method calls the + * callbackfn function for each element in array1 until the callbackfn returns true, or until * the end of the array. - * @param thisArg An object to which the this keyword can refer in the callbackfn function. + * @param thisArg An object to which the this keyword can refer in the callbackfn function. * If thisArg is omitted, undefined is used as the this value. */ some(callbackfn: (value: number, index: number, array: Float64Array) => boolean, thisArg?: any): boolean; /** * Sorts an array. - * @param compareFn The name of the function used to determine the order of the elements. If + * @param compareFn The name of the function used to determine the order of the elements. If * omitted, the elements are sorted in ascending, ASCII character order. */ - sort(compareFn?: (a: number, b: number) => number): Float64Array; + sort(compareFn?: (a: number, b: number) => number): this; /** * Gets a new Float64Array view of the ArrayBuffer store for this array, referencing the elements - * at begin, inclusive, up to end, exclusive. + * at begin, inclusive, up to end, exclusive. * @param begin The index of the beginning of the array. * @param end The index of the end of the array. */ subarray(begin: number, end?: number): Float64Array; /** - * Converts a number to a string by using the current locale. + * Converts a number to a string by using the current locale. */ toLocaleString(): string; @@ -5146,22 +3904,22 @@ interface Float64Array { } interface Float64ArrayConstructor { - prototype: Float64Array; + readonly prototype: Float64Array; new (length: number): Float64Array; new (array: ArrayLike): Float64Array; new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Float64Array; /** - * The size in bytes of each element in the array. + * The size in bytes of each element in the array. */ - BYTES_PER_ELEMENT: number; + readonly BYTES_PER_ELEMENT: number; /** * Returns a new array from a set of elements. * @param items A set of elements to include in the new array object. */ of(...items: number[]): Float64Array; - + /** * Creates an array from an array-like or iterable object. * @param arrayLike An array-like or iterable object to convert to an array. @@ -5170,9 +3928,10 @@ interface Float64ArrayConstructor { */ from(arrayLike: ArrayLike, mapfn?: (v: number, k: number) => number, thisArg?: any): Float64Array; } -declare var Float64Array: Float64ArrayConstructor; +declare const Float64Array: Float64ArrayConstructor; + ///////////////////////////// -/// ECMAScript Internationalization API +/// ECMAScript Internationalization API ///////////////////////////// declare module Intl { @@ -5315,14 +4074,14 @@ interface String { interface Number { /** - * Converts a number to a string by using the current or specified locale. + * Converts a number to a string by using the current or specified locale. * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ toLocaleString(locales?: string[], options?: Intl.NumberFormatOptions): string; /** - * Converts a number to a string by using the current or specified locale. + * Converts a number to a string by using the current or specified locale. * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ @@ -5331,54 +4090,1661 @@ interface Number { interface Date { /** - * Converts a date and time to a string by using the current or specified locale. + * Converts a date and time to a string by using the current or specified locale. * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ toLocaleString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; /** - * Converts a date to a string by using the current or specified locale. + * Converts a date to a string by using the current or specified locale. * @param locales An array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ toLocaleDateString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; /** - * Converts a time to a string by using the current or specified locale. + * Converts a time to a string by using the current or specified locale. * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ toLocaleTimeString(locale?: string[], options?: Intl.DateTimeFormatOptions): string; - + /** - * Converts a date and time to a string by using the current or specified locale. + * Converts a date and time to a string by using the current or specified locale. * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; - + /** - * Converts a date to a string by using the current or specified locale. + * Converts a date to a string by using the current or specified locale. * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ toLocaleDateString(locale?: string, options?: Intl.DateTimeFormatOptions): string; /** - * Converts a time to a string by using the current or specified locale. + * Converts a time to a string by using the current or specified locale. * @param locale Locale tag. If you omit this parameter, the default locale of the JavaScript runtime is used. * @param options An object that contains one or more properties that specify comparison options. */ toLocaleTimeString(locale?: string, options?: Intl.DateTimeFormatOptions): string; } +declare type PropertyKey = string | number | symbol; + +interface Array { + /** + * 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(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): T | undefined; + + /** + * Returns the index 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, + * 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) => boolean, thisArg?: any): number; + + /** + * Returns the this object after filling the section identified by start and end with value + * @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. + * @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: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): Array; + /** + * Creates an array from an array-like object. + * @param arrayLike An array-like object to convert to an array. + */ + from(arrayLike: ArrayLike): Array; + + /** + * Returns a new array from a set of elements. + * @param items A set of elements to include in the new array object. + */ + of(...items: T[]): Array; +} + +interface DateConstructor { + new (value: 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) 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 isFininte, 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: number): boolean; + + /** + * Returns true if the value passed is an integer, false otherwise. + * @param number A numeric value. + */ + isInteger(number: number): 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: number): boolean; + + /** + * Returns true if the value passed is a safe integer. + * @param number A numeric value. + */ + isSafeInteger(number: number): 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 s A string to convert into a number. + * @param radix A value between 2 and 36 that specifies the base of the number in numString. + * 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 Object { + /** + * Determines whether an object has a property with the specified name. + * @param v A property name. + */ + hasOwnProperty(v: PropertyKey): boolean + + /** + * Determines whether a specified property is enumerable. + * @param v A property name. + */ + propertyIsEnumerable(v: PropertyKey): boolean; +} + +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(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(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(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: any, ...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 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: any): any; + + /** + * Gets the own property descriptor of the specified object. + * An own property descriptor is one that is defined directly on the object and is not + * inherited from the object's prototype. + * @param o Object that contains the property. + * @param p Name of the property. + */ + getOwnPropertyDescriptor(o: any, propertyKey: PropertyKey): PropertyDescriptor; + + /** + * Adds a property to an object, or modifies attributes of an existing property. + * @param o Object on which to add or modify the property. This can be a native JavaScript + * object (that is, a user-defined object or a built in object) or a DOM object. + * @param p The property name. + * @param attributes Descriptor for the property. It can be for a data property or an accessor + * property. + */ + defineProperty(o: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): any; +} + +interface ReadonlyArray { + /** + * 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(predicate: (value: T, index: number, obj: ReadonlyArray) => boolean, thisArg?: any): T | undefined; + + /** + * Returns the index 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, + * 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) => boolean, 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, flags?: string): RegExp; + (pattern: RegExp, 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, + * T is 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 HTML anchor element and sets the name attribute to the text value + * @param name + */ + anchor(name: string): string; + + /** Returns a HTML element */ + big(): string; + + /** Returns a HTML element */ + blink(): string; + + /** Returns a HTML element */ + bold(): string; + + /** Returns a HTML element */ + fixed(): string + + /** Returns a HTML element and sets the color attribute value */ + fontcolor(color: string): string + + /** Returns a HTML element and sets the size attribute value */ + fontsize(size: number): string; + + /** Returns a HTML element and sets the size attribute value */ + fontsize(size: string): string; + + /** Returns an HTML element */ + italics(): string; + + /** Returns an HTML element and sets the href attribute value */ + link(url: string): string; + + /** Returns a HTML element */ + small(): string; + + /** Returns a HTML element */ + strike(): string; + + /** Returns a HTML element */ + sub(): string; + + /** Returns a HTML element */ + 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 intended for use 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. + * @param template A well-formed template string call site representation. + * @param substitutions A set of substitution values. + */ + raw(template: TemplateStringsArray, ...substitutions: any[]): string; +} +interface Map { + clear(): void; + delete(key: K): boolean; + forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; + get(key: K): V | undefined; + has(key: K): boolean; + set(key: K, value?: V): this; + readonly size: number; +} + +interface MapConstructor { + new (): Map; + new (entries?: [K, V][]): Map; + readonly prototype: Map; +} +declare var Map: MapConstructor; + +interface WeakMap { + clear(): void; + delete(key: K): boolean; + get(key: K): V | undefined; + has(key: K): boolean; + set(key: K, value?: V): this; +} + +interface WeakMapConstructor { + new (): WeakMap; + new (entries?: [K, V][]): WeakMap; + readonly prototype: WeakMap; +} +declare var WeakMap: WeakMapConstructor; + +interface Set { + add(value: T): this; + clear(): void; + delete(value: T): boolean; + forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; + has(value: T): boolean; + readonly size: number; +} + +interface SetConstructor { + new (): Set; + new (values?: T[]): Set; + readonly prototype: Set; +} +declare var Set: SetConstructor; + +interface WeakSet { + add(value: T): this; + clear(): void; + delete(value: T): boolean; + has(value: T): boolean; +} + +interface WeakSetConstructor { + new (): WeakSet; + new (values?: T[]): WeakSet; + readonly prototype: WeakSet; +} +declare var WeakSet: WeakSetConstructor; +interface GeneratorFunction extends Function { } + +interface GeneratorFunctionConstructor { + /** + * Creates a new Generator function. + * @param args A list of arguments the function accepts. + */ + new (...args: string[]): GeneratorFunction; + (...args: string[]): GeneratorFunction; + readonly prototype: GeneratorFunction; +} +declare var GeneratorFunction: GeneratorFunctionConstructor; +/// + +interface SymbolConstructor { + /** + * A method that returns the default iterator for an object. Called by the semantics of the + * for-of statement. + */ + readonly iterator: symbol; +} + +interface IteratorResult { + done: boolean; + value: T; +} + +interface Iterator { + next(value?: any): IteratorResult; + return?(value?: any): 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 array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, T]>; + + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + + /** + * Returns an list 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. + * @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, mapfn: (v: T, k: number) => U, thisArg?: any): Array; + + /** + * Creates an array from an iterable object. + * @param iterable An iterable object to convert to an array. + */ + from(iterable: Iterable): Array; +} + +interface ReadonlyArray { + /** Iterator */ + [Symbol.iterator](): IterableIterator; + + /** + * Returns an array of key, value pairs for every entry in the array + */ + entries(): IterableIterator<[number, T]>; + + /** + * Returns an list of keys in the array + */ + keys(): IterableIterator; + + /** + * Returns an list of values in the array + */ + values(): IterableIterator; +} + +interface IArguments { + /** Iterator */ + [Symbol.iterator](): IterableIterator; +} + +interface Map { + [Symbol.iterator](): IterableIterator<[K,V]>; + entries(): IterableIterator<[K, V]>; + keys(): IterableIterator; + values(): IterableIterator; +} + +interface MapConstructor { + new (iterable: Iterable<[K, V]>): Map; +} + +interface WeakMap { } + +interface WeakMapConstructor { + new (iterable: Iterable<[K, V]>): WeakMap; +} + +interface Set { + [Symbol.iterator](): IterableIterator; + entries(): IterableIterator<[T, T]>; + keys(): IterableIterator; + values(): IterableIterator; +} + +interface SetConstructor { + new (iterable: Iterable): 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 array 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 array of Promises. + * @returns A new Promise. + */ + race(values: Iterable>): Promise; +} + +declare namespace Reflect { + function enumerate(target: any): IterableIterator; +} + +interface String { + /** Iterator */ + [Symbol.iterator](): IterableIterator; +} + +/** + * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +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; +} + +/** + * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +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; +} + +/** + * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. + * If the requested number of bytes could not be allocated an exception is raised. + */ +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; +} + +/** + * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +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; +} + +/** + * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +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; +} + +/** + * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +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; +} + +/** + * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +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; +} + +/** + * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number + * of bytes could not be allocated an exception is raised. + */ +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; +} + +/** + * A typed array of 64-bit float values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +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; +}/** + * Represents the completion of an asynchronous operation + */ +interface Promise { + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled: (value: T) => TResult1 | PromiseLike, onrejected: (reason: any) => TResult2 | PromiseLike): Promise; + + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled: (value: T) => TResult | PromiseLike, onrejected: (reason: any) => TResult | PromiseLike): Promise; + + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled: (value: T) => TResult | PromiseLike): Promise; + + /** + * Creates a new Promise with the same internal state of this Promise. + * @returns A Promise. + */ + then(): Promise; + + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected: (reason: any) => TResult | PromiseLike): Promise; + + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected: (reason: any) => T | PromiseLike): Promise; +} + +interface PromiseConstructor { + /** + * A reference to the prototype. + */ + readonly prototype: Promise; + + /** + * Creates a new Promise. + * @param executor A callback used to initialize the promise. This callback is passed two arguments: + * a resolve callback used 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 (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void): Promise; + + /** + * 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(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; + + /** + * 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(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; + + /** + * 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(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; + + /** + * 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(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; + + /** + * 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(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; + + /** + * 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(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; + + /** + * 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(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; + + /** + * 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(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; + + /** + * 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(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; + + /** + * 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(values: (T | PromiseLike)[]): Promise; + + /** + * Creates a new rejected promise for the provided reason. + * @param reason The reason the promise was rejected. + * @returns A new rejected Promise. + */ + reject(reason: any): Promise; + + /** + * Creates a new rejected promise for the provided reason. + * @param reason The reason the promise was rejected. + * @returns A new rejected Promise. + */ + reject(reason: any): Promise; + + /** + * Creates a new resolved promise for the provided value. + * @param value A promise. + * @returns A promise whose internal state matches the provided promise. + */ + resolve(value: T | PromiseLike): Promise; + + /** + * Creates a new resolved promise . + * @returns A resolved promise. + */ + resolve(): Promise; +} + +declare var Promise: PromiseConstructor;interface ProxyHandler { + getPrototypeOf? (target: T): any; + setPrototypeOf? (target: T, v: any): boolean; + isExtensible? (target: T): boolean; + preventExtensions? (target: T): boolean; + getOwnPropertyDescriptor? (target: T, p: PropertyKey): PropertyDescriptor; + has? (target: T, p: PropertyKey): boolean; + get? (target: T, p: PropertyKey, receiver: any): any; + set? (target: T, p: PropertyKey, value: any, receiver: any): boolean; + deleteProperty? (target: T, p: PropertyKey): boolean; + defineProperty? (target: T, p: PropertyKey, attributes: PropertyDescriptor): boolean; + enumerate? (target: T): PropertyKey[]; + ownKeys? (target: T): PropertyKey[]; + apply? (target: T, thisArg: any, argArray?: any): any; + construct? (target: T, thisArg: any, argArray?: any): any; +} + +interface ProxyConstructor { + revocable(target: T, handler: ProxyHandler): { proxy: T; revoke: () => void; }; + new (target: T, handler: ProxyHandler): T +} +declare var Proxy: ProxyConstructor;declare namespace Reflect { + function apply(target: Function, thisArgument: any, argumentsList: ArrayLike): any; + function construct(target: Function, argumentsList: ArrayLike, newTarget?: any): any; + function defineProperty(target: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): boolean; + function deleteProperty(target: any, propertyKey: PropertyKey): boolean; + function get(target: any, propertyKey: PropertyKey, receiver?: any): any; + function getOwnPropertyDescriptor(target: any, propertyKey: PropertyKey): PropertyDescriptor; + function getPrototypeOf(target: any): any; + function has(target: any, propertyKey: string): boolean; + function has(target: any, propertyKey: symbol): boolean; + function isExtensible(target: any): boolean; + function ownKeys(target: any): Array; + function preventExtensions(target: any): boolean; + function set(target: any, propertyKey: PropertyKey, value: any, receiver?: any): boolean; + function setPrototypeOf(target: any, proto: any): boolean; +}interface Symbol { + /** Returns a string representation of an object. */ + toString(): string; + + /** Returns the primitive value of the specified object. */ + valueOf(): Object; +} + +interface SymbolConstructor { + /** + * A reference to the prototype. + */ + readonly prototype: Symbol; + + /** + * Returns a new unique Symbol value. + * @param description Description of the new Symbol object. + */ + (description?: string|number): symbol; + + /** + * Returns a Symbol object from the global symbol registry matching the given key if found. + * Otherwise, returns a new symbol with this key. + * @param key key to search for. + */ + for(key: string): symbol; + + /** + * Returns a key from the global symbol registry matching the given Symbol if found. + * Otherwise, returns a undefined. + * @param sym Symbol to find the key for. + */ + keyFor(sym: symbol): string | undefined; +} + +declare var Symbol: SymbolConstructor;/// + +interface SymbolConstructor { + /** + * A method that determines if a constructor object recognizes an object as one of the + * constructor’s instances. Called by the semantics of the instanceof operator. + */ + readonly hasInstance: symbol; + + /** + * A Boolean value that if true indicates that an object should flatten to its array elements + * by Array.prototype.concat. + */ + readonly isConcatSpreadable: symbol; + + /** + * A regular expression method that matches the regular expression against a string. Called + * by the String.prototype.match method. + */ + readonly match: symbol; + + /** + * A regular expression method that replaces matched substrings of a string. Called by the + * String.prototype.replace method. + */ + readonly replace: symbol; + + /** + * A regular expression method that returns the index within a string that matches the + * regular expression. Called by the String.prototype.search method. + */ + readonly search: symbol; + + /** + * A function valued property that is the constructor function that is used to create + * derived objects. + */ + readonly species: symbol; + + /** + * A regular expression method that splits a string at the indices that match the regular + * expression. Called by the String.prototype.split method. + */ + readonly split: symbol; + + /** + * A method that converts an object to a corresponding primitive value. + * Called by the ToPrimitive abstract operation. + */ + readonly toPrimitive: symbol; + + /** + * A String value that is used in the creation of the default string description of an object. + * Called by the built-in method Object.prototype.toString. + */ + readonly toStringTag: symbol; + + /** + * An Object whose own property names are property names that are excluded from the 'with' + * environment bindings of the associated objects. + */ + readonly unscopables: symbol; +} + +interface Symbol { + readonly [Symbol.toStringTag]: "Symbol"; +} + +interface Array { + /** + * Returns an object whose properties have the value 'true' + * when they will be absent when used in a 'with' statement. + */ + [Symbol.unscopables](): { + copyWithin: boolean; + entries: boolean; + fill: boolean; + find: boolean; + findIndex: boolean; + keys: boolean; + values: boolean; + }; +} + +interface Date { + /** + * Converts a Date object to a string. + */ + [Symbol.toPrimitive](hint: "default"): string; + /** + * Converts a Date object to a string. + */ + [Symbol.toPrimitive](hint: "string"): string; + /** + * Converts a Date object to a number. + */ + [Symbol.toPrimitive](hint: "number"): number; + /** + * Converts a Date object to a string or number. + * + * @param hint The strings "number", "string", or "default" to specify what primitive to return. + * + * @throws {TypeError} If 'hint' was given something other than "number", "string", or "default". + * @returns A number if 'hint' was "number", a string if 'hint' was "string" or "default". + */ + [Symbol.toPrimitive](hint: string): string | number; +} + +interface Map { + readonly [Symbol.toStringTag]: "Map"; +} + +interface WeakMap{ + readonly [Symbol.toStringTag]: "WeakMap"; +} + +interface Set { + readonly [Symbol.toStringTag]: "Set"; +} + +interface WeakSet { + readonly [Symbol.toStringTag]: "WeakSet"; +} + +interface JSON { + readonly [Symbol.toStringTag]: "JSON"; +} + +interface Function { + /** + * Determines whether the given value inherits from this function if this function was used + * as a constructor function. + * + * A constructor function can control which objects are recognized as its instances by + * 'instanceof' by overriding this method. + */ + [Symbol.hasInstance](value: any): boolean; +} + +interface GeneratorFunction extends Function { + readonly [Symbol.toStringTag]: "GeneratorFunction"; +} + +interface Math { + readonly [Symbol.toStringTag]: "Math"; +} + +interface Promise { + readonly [Symbol.toStringTag]: "Promise"; +} + +interface PromiseConstructor { + readonly [Symbol.species]: Function; +} + +interface RegExp { + /** + * Matches a string with this regular expression, and returns an array containing the results of + * that search. + * @param string A string to search within. + */ + [Symbol.match](string: string): RegExpMatchArray | null; + + /** + * Replaces text in a string, using this regular expression. + * @param string A String object or string literal whose contents matching against + * this regular expression will be replaced + * @param replaceValue A String object or string literal containing the text to replace for every + * successful match of this regular expression. + */ + [Symbol.replace](string: string, replaceValue: string): string; + + /** + * Replaces text in a string, using this regular expression. + * @param string A String object or string literal whose contents matching against + * this regular expression will be replaced + * @param replacer A function that returns the replacement text. + */ + [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; + + /** + * Finds the position beginning first substring match in a regular expression search + * using this regular expression. + * + * @param string The string to search within. + */ + [Symbol.search](string: string): number; + + /** + * Returns an array of substrings that were delimited by strings in the original input that + * match against this regular expression. + * + * If the regular expression contains capturing parentheses, then each time this + * regular expression matches, the results (including any undefined results) of the + * capturing parentheses are spliced. + * + * @param string string value to split + * @param limit if not undefined, the output array is truncated so that it contains no more + * than 'limit' elements. + */ + [Symbol.split](string: string, limit?: number): string[]; +} + +interface RegExpConstructor { + [Symbol.species](): RegExpConstructor; +} + +interface String { + /** + * Matches a string an object that supports being matched against, and returns an array containing the results of that search. + * @param matcher An object that supports being matched against. + */ + match(matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; + + /** + * Replaces text in a string, using an object that supports replacement within a string. + * @param searchValue A object can search for and replace matches within a string. + * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string. + */ + replace(searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; + + /** + * Replaces text in a string, using an object that supports replacement within a string. + * @param searchValue A object can search for and replace matches within a string. + * @param replacer A function that returns the replacement text. + */ + replace(searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; + + /** + * Finds the first substring match in a regular expression search. + * @param searcher An object which supports searching within a string. + */ + search(searcher: { [Symbol.search](string: string): number; }): number; + + /** + * Split a string into substrings using the specified separator and return them as an array. + * @param splitter An object that can split a string. + * @param limit A value used to limit the number of elements returned in the array. + */ + split(splitter: { [Symbol.split](string: string, limit?: number): string[]; }, limit?: number): string[]; +} + +/** + * Represents a raw buffer of binary data, which is used to store data for the + * different typed arrays. ArrayBuffers cannot be read from or written to directly, + * but can be passed to a typed array or DataView Object to interpret the raw + * buffer as needed. + */ +interface ArrayBuffer { + readonly [Symbol.toStringTag]: "ArrayBuffer"; +} + +interface DataView { + readonly [Symbol.toStringTag]: "DataView"; +} + +/** + * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +interface Int8Array { + readonly [Symbol.toStringTag]: "Int8Array"; +} + +/** + * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint8Array { + readonly [Symbol.toStringTag]: "UInt8Array"; +} + +/** + * A typed array of 8-bit unsigned integer (clamped) values. The contents are initialized to 0. + * If the requested number of bytes could not be allocated an exception is raised. + */ +interface Uint8ClampedArray { + readonly [Symbol.toStringTag]: "Uint8ClampedArray"; +} + +/** + * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Int16Array { + readonly [Symbol.toStringTag]: "Int16Array"; +} + +/** + * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint16Array { + readonly [Symbol.toStringTag]: "Uint16Array"; +} + +/** + * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Int32Array { + readonly [Symbol.toStringTag]: "Int32Array"; +} + +/** + * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the + * requested number of bytes could not be allocated an exception is raised. + */ +interface Uint32Array { + readonly [Symbol.toStringTag]: "Uint32Array"; +} + +/** + * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number + * of bytes could not be allocated an exception is raised. + */ +interface Float32Array { + readonly [Symbol.toStringTag]: "Float32Array"; +} + +/** + * A typed array of 64-bit float values. The contents are initialized to 0. If the requested + * number of bytes could not be allocated an exception is raised. + */ +interface Float64Array { + readonly [Symbol.toStringTag]: "Float64Array"; +} ///////////////////////////// /// IE DOM APIs ///////////////////////////// interface Algorithm { - name?: string; + name: string; } interface AriaRequestEventInit extends EventInit { @@ -5386,11 +5752,6 @@ interface AriaRequestEventInit extends EventInit { attributeValue?: string; } -interface ClipboardEventInit extends EventInit { - data?: string; - dataType?: string; -} - interface CommandEventInit extends EventInit { commandName?: string; detail?: string; @@ -5404,6 +5765,31 @@ interface ConfirmSiteSpecificExceptionsInformation extends ExceptionInformation arrayOfDomainStrings?: string[]; } +interface ConstrainBooleanParameters { + exact?: boolean; + ideal?: boolean; +} + +interface ConstrainDOMStringParameters { + exact?: string | string[]; + ideal?: string | string[]; +} + +interface ConstrainDoubleRange extends DoubleRange { + exact?: number; + ideal?: number; +} + +interface ConstrainLongRange extends LongRange { + exact?: number; + ideal?: number; +} + +interface ConstrainVideoFacingModeParameters { + exact?: string | string[]; + ideal?: string | string[]; +} + interface CustomEventInit extends EventInit { detail?: any; } @@ -5414,17 +5800,44 @@ interface DeviceAccelerationDict { z?: number; } +interface DeviceLightEventInit extends EventInit { + value?: number; +} + interface DeviceRotationRateDict { alpha?: number; beta?: number; gamma?: number; } +interface DoubleRange { + max?: number; + min?: number; +} + interface EventInit { bubbles?: boolean; cancelable?: boolean; } +interface EventModifierInit extends UIEventInit { + ctrlKey?: boolean; + shiftKey?: boolean; + altKey?: boolean; + metaKey?: boolean; + modifierAltGraph?: boolean; + modifierCapsLock?: boolean; + modifierFn?: boolean; + modifierFnLock?: boolean; + modifierHyper?: boolean; + modifierNumLock?: boolean; + modifierOS?: boolean; + modifierScrollLock?: boolean; + modifierSuper?: boolean; + modifierSymbol?: boolean; + modifierSymbolLock?: boolean; +} + interface ExceptionInformation { domain?: string; } @@ -5438,17 +5851,416 @@ interface HashChangeEventInit extends EventInit { oldURL?: string; } +interface IDBIndexParameters { + multiEntry?: boolean; + unique?: boolean; +} + +interface IDBObjectStoreParameters { + autoIncrement?: boolean; + keyPath?: IDBKeyPath; +} + interface KeyAlgorithm { name?: string; } -interface KeyboardEventInit extends SharedKeyboardAndMouseEventInit { +interface KeyboardEventInit extends EventModifierInit { + code?: string; key?: string; location?: number; repeat?: boolean; } -interface MouseEventInit extends SharedKeyboardAndMouseEventInit { +interface LongRange { + max?: number; + min?: number; +} + +interface MSAccountInfo { + rpDisplayName?: string; + userDisplayName?: string; + accountName?: string; + userId?: string; + accountImageUri?: string; +} + +interface MSAudioLocalClientEvent extends MSLocalClientEventBase { + networkSendQualityEventRatio?: number; + networkDelayEventRatio?: number; + cpuInsufficientEventRatio?: number; + deviceHalfDuplexAECEventRatio?: number; + deviceRenderNotFunctioningEventRatio?: number; + deviceCaptureNotFunctioningEventRatio?: number; + deviceGlitchesEventRatio?: number; + deviceLowSNREventRatio?: number; + deviceLowSpeechLevelEventRatio?: number; + deviceClippingEventRatio?: number; + deviceEchoEventRatio?: number; + deviceNearEndToEchoRatioEventRatio?: number; + deviceRenderZeroVolumeEventRatio?: number; + deviceRenderMuteEventRatio?: number; + deviceMultipleEndpointsEventCount?: number; + deviceHowlingEventCount?: number; +} + +interface MSAudioRecvPayload extends MSPayloadBase { + samplingRate?: number; + signal?: MSAudioRecvSignal; + packetReorderRatio?: number; + packetReorderDepthAvg?: number; + packetReorderDepthMax?: number; + burstLossLength1?: number; + burstLossLength2?: number; + burstLossLength3?: number; + burstLossLength4?: number; + burstLossLength5?: number; + burstLossLength6?: number; + burstLossLength7?: number; + burstLossLength8OrHigher?: number; + fecRecvDistance1?: number; + fecRecvDistance2?: number; + fecRecvDistance3?: number; + ratioConcealedSamplesAvg?: number; + ratioStretchedSamplesAvg?: number; + ratioCompressedSamplesAvg?: number; +} + +interface MSAudioRecvSignal { + initialSignalLevelRMS?: number; + recvSignalLevelCh1?: number; + recvNoiseLevelCh1?: number; + renderSignalLevel?: number; + renderNoiseLevel?: number; + renderLoopbackSignalLevel?: number; +} + +interface MSAudioSendPayload extends MSPayloadBase { + samplingRate?: number; + signal?: MSAudioSendSignal; + audioFECUsed?: boolean; + sendMutePercent?: number; +} + +interface MSAudioSendSignal { + noiseLevel?: number; + sendSignalLevelCh1?: number; + sendNoiseLevelCh1?: number; +} + +interface MSConnectivity { + iceType?: string; + iceWarningFlags?: MSIceWarningFlags; + relayAddress?: MSRelayAddress; +} + +interface MSCredentialFilter { + accept?: MSCredentialSpec[]; +} + +interface MSCredentialParameters { + type?: string; +} + +interface MSCredentialSpec { + type?: string; + id?: string; +} + +interface MSDelay { + roundTrip?: number; + roundTripMax?: number; +} + +interface MSDescription extends RTCStats { + connectivity?: MSConnectivity; + transport?: string; + networkconnectivity?: MSNetworkConnectivityInfo; + localAddr?: MSIPAddressInfo; + remoteAddr?: MSIPAddressInfo; + deviceDevName?: string; + reflexiveLocalIPAddr?: MSIPAddressInfo; +} + +interface MSFIDOCredentialParameters extends MSCredentialParameters { + algorithm?: string | Algorithm; + authenticators?: AAGUID[]; +} + +interface MSIPAddressInfo { + ipAddr?: string; + port?: number; + manufacturerMacAddrMask?: string; +} + +interface MSIceWarningFlags { + turnTcpTimedOut?: boolean; + turnUdpAllocateFailed?: boolean; + turnUdpSendFailed?: boolean; + turnTcpAllocateFailed?: boolean; + turnTcpSendFailed?: boolean; + udpLocalConnectivityFailed?: boolean; + udpNatConnectivityFailed?: boolean; + udpRelayConnectivityFailed?: boolean; + tcpNatConnectivityFailed?: boolean; + tcpRelayConnectivityFailed?: boolean; + connCheckMessageIntegrityFailed?: boolean; + allocationMessageIntegrityFailed?: boolean; + connCheckOtherError?: boolean; + turnAuthUnknownUsernameError?: boolean; + noRelayServersConfigured?: boolean; + multipleRelayServersAttempted?: boolean; + portRangeExhausted?: boolean; + alternateServerReceived?: boolean; + pseudoTLSFailure?: boolean; + turnTurnTcpConnectivityFailed?: boolean; + useCandidateChecksFailed?: boolean; + fipsAllocationFailure?: boolean; +} + +interface MSJitter { + interArrival?: number; + interArrivalMax?: number; + interArrivalSD?: number; +} + +interface MSLocalClientEventBase extends RTCStats { + networkReceiveQualityEventRatio?: number; + networkBandwidthLowEventRatio?: number; +} + +interface MSNetwork extends RTCStats { + jitter?: MSJitter; + delay?: MSDelay; + packetLoss?: MSPacketLoss; + utilization?: MSUtilization; +} + +interface MSNetworkConnectivityInfo { + vpn?: boolean; + linkspeed?: number; + networkConnectionDetails?: string; +} + +interface MSNetworkInterfaceType { + interfaceTypeEthernet?: boolean; + interfaceTypeWireless?: boolean; + interfaceTypePPP?: boolean; + interfaceTypeTunnel?: boolean; + interfaceTypeWWAN?: boolean; +} + +interface MSOutboundNetwork extends MSNetwork { + appliedBandwidthLimit?: number; +} + +interface MSPacketLoss { + lossRate?: number; + lossRateMax?: number; +} + +interface MSPayloadBase extends RTCStats { + payloadDescription?: string; +} + +interface MSRelayAddress { + relayAddress?: string; + port?: number; +} + +interface MSSignatureParameters { + userPrompt?: string; +} + +interface MSTransportDiagnosticsStats extends RTCStats { + baseAddress?: string; + localAddress?: string; + localSite?: string; + networkName?: string; + remoteAddress?: string; + remoteSite?: string; + localMR?: string; + remoteMR?: string; + iceWarningFlags?: MSIceWarningFlags; + portRangeMin?: number; + portRangeMax?: number; + localMRTCPPort?: number; + remoteMRTCPPort?: number; + stunVer?: number; + numConsentReqSent?: number; + numConsentReqReceived?: number; + numConsentRespSent?: number; + numConsentRespReceived?: number; + interfaces?: MSNetworkInterfaceType; + baseInterface?: MSNetworkInterfaceType; + protocol?: string; + localInterface?: MSNetworkInterfaceType; + localAddrType?: string; + remoteAddrType?: string; + iceRole?: string; + rtpRtcpMux?: boolean; + allocationTimeInMs?: number; + msRtcEngineVersion?: string; +} + +interface MSUtilization { + packets?: number; + bandwidthEstimation?: number; + bandwidthEstimationMin?: number; + bandwidthEstimationMax?: number; + bandwidthEstimationStdDev?: number; + bandwidthEstimationAvg?: number; +} + +interface MSVideoPayload extends MSPayloadBase { + resoluton?: string; + videoBitRateAvg?: number; + videoBitRateMax?: number; + videoFrameRateAvg?: number; + videoPacketLossRate?: number; + durationSeconds?: number; +} + +interface MSVideoRecvPayload extends MSVideoPayload { + videoFrameLossRate?: number; + recvCodecType?: string; + recvResolutionWidth?: number; + recvResolutionHeight?: number; + videoResolutions?: MSVideoResolutionDistribution; + recvFrameRateAverage?: number; + recvBitRateMaximum?: number; + recvBitRateAverage?: number; + recvVideoStreamsMax?: number; + recvVideoStreamsMin?: number; + recvVideoStreamsMode?: number; + videoPostFECPLR?: number; + lowBitRateCallPercent?: number; + lowFrameRateCallPercent?: number; + reorderBufferTotalPackets?: number; + recvReorderBufferReorderedPackets?: number; + recvReorderBufferPacketsDroppedDueToBufferExhaustion?: number; + recvReorderBufferMaxSuccessfullyOrderedExtent?: number; + recvReorderBufferMaxSuccessfullyOrderedLateTime?: number; + recvReorderBufferPacketsDroppedDueToTimeout?: number; + recvFpsHarmonicAverage?: number; + recvNumResSwitches?: number; +} + +interface MSVideoResolutionDistribution { + cifQuality?: number; + vgaQuality?: number; + h720Quality?: number; + h1080Quality?: number; + h1440Quality?: number; + h2160Quality?: number; +} + +interface MSVideoSendPayload extends MSVideoPayload { + sendFrameRateAverage?: number; + sendBitRateMaximum?: number; + sendBitRateAverage?: number; + sendVideoStreamsMax?: number; + sendResolutionWidth?: number; + sendResolutionHeight?: number; +} + +interface MediaEncryptedEventInit extends EventInit { + initDataType?: string; + initData?: ArrayBuffer; +} + +interface MediaKeyMessageEventInit extends EventInit { + messageType?: string; + message?: ArrayBuffer; +} + +interface MediaKeySystemConfiguration { + initDataTypes?: string[]; + audioCapabilities?: MediaKeySystemMediaCapability[]; + videoCapabilities?: MediaKeySystemMediaCapability[]; + distinctiveIdentifier?: string; + persistentState?: string; +} + +interface MediaKeySystemMediaCapability { + contentType?: string; + robustness?: string; +} + +interface MediaStreamConstraints { + video?: boolean | MediaTrackConstraints; + audio?: boolean | MediaTrackConstraints; +} + +interface MediaStreamErrorEventInit extends EventInit { + error?: MediaStreamError; +} + +interface MediaStreamTrackEventInit extends EventInit { + track?: MediaStreamTrack; +} + +interface MediaTrackCapabilities { + width?: number | LongRange; + height?: number | LongRange; + aspectRatio?: number | DoubleRange; + frameRate?: number | DoubleRange; + facingMode?: string; + volume?: number | DoubleRange; + sampleRate?: number | LongRange; + sampleSize?: number | LongRange; + echoCancellation?: boolean[]; + deviceId?: string; + groupId?: string; +} + +interface MediaTrackConstraintSet { + width?: number | ConstrainLongRange; + height?: number | ConstrainLongRange; + aspectRatio?: number | ConstrainDoubleRange; + frameRate?: number | ConstrainDoubleRange; + facingMode?: string | string[] | ConstrainDOMStringParameters; + volume?: number | ConstrainDoubleRange; + sampleRate?: number | ConstrainLongRange; + sampleSize?: number | ConstrainLongRange; + echoCancelation?: boolean | ConstrainBooleanParameters; + deviceId?: string | string[] | ConstrainDOMStringParameters; + groupId?: string | string[] | ConstrainDOMStringParameters; +} + +interface MediaTrackConstraints extends MediaTrackConstraintSet { + advanced?: MediaTrackConstraintSet[]; +} + +interface MediaTrackSettings { + width?: number; + height?: number; + aspectRatio?: number; + frameRate?: number; + facingMode?: string; + volume?: number; + sampleRate?: number; + sampleSize?: number; + echoCancellation?: boolean; + deviceId?: string; + groupId?: string; +} + +interface MediaTrackSupportedConstraints { + width?: boolean; + height?: boolean; + aspectRatio?: boolean; + frameRate?: boolean; + facingMode?: boolean; + volume?: boolean; + sampleRate?: boolean; + sampleSize?: boolean; + echoCancellation?: boolean; + deviceId?: boolean; + groupId?: boolean; +} + +interface MouseEventInit extends EventModifierInit { screenX?: number; screenY?: number; clientX?: number; @@ -5481,6 +6293,10 @@ interface ObjectURLOptions { oneTimeOnly?: boolean; } +interface PeriodicWaveConstraints { + disableNormalization?: boolean; +} + interface PointerEventInit extends MouseEventInit { pointerId?: number; width?: number; @@ -5498,22 +6314,266 @@ interface PositionOptions { maximumAge?: number; } -interface SharedKeyboardAndMouseEventInit extends UIEventInit { - ctrlKey?: boolean; - shiftKey?: boolean; - altKey?: boolean; - metaKey?: boolean; - keyModifierStateAltGraph?: boolean; - keyModifierStateCapsLock?: boolean; - keyModifierStateFn?: boolean; - keyModifierStateFnLock?: boolean; - keyModifierStateHyper?: boolean; - keyModifierStateNumLock?: boolean; - keyModifierStateOS?: boolean; - keyModifierStateScrollLock?: boolean; - keyModifierStateSuper?: boolean; - keyModifierStateSymbol?: boolean; - keyModifierStateSymbolLock?: boolean; +interface RTCDTMFToneChangeEventInit extends EventInit { + tone?: string; +} + +interface RTCDtlsFingerprint { + algorithm?: string; + value?: string; +} + +interface RTCDtlsParameters { + role?: string; + fingerprints?: RTCDtlsFingerprint[]; +} + +interface RTCIceCandidate { + foundation?: string; + priority?: number; + ip?: string; + protocol?: string; + port?: number; + type?: string; + tcpType?: string; + relatedAddress?: string; + relatedPort?: number; +} + +interface RTCIceCandidateAttributes extends RTCStats { + ipAddress?: string; + portNumber?: number; + transport?: string; + candidateType?: string; + priority?: number; + addressSourceUrl?: string; +} + +interface RTCIceCandidateComplete { +} + +interface RTCIceCandidatePair { + local?: RTCIceCandidate; + remote?: RTCIceCandidate; +} + +interface RTCIceCandidatePairStats extends RTCStats { + transportId?: string; + localCandidateId?: string; + remoteCandidateId?: string; + state?: string; + priority?: number; + nominated?: boolean; + writable?: boolean; + readable?: boolean; + bytesSent?: number; + bytesReceived?: number; + roundTripTime?: number; + availableOutgoingBitrate?: number; + availableIncomingBitrate?: number; +} + +interface RTCIceGatherOptions { + gatherPolicy?: string; + iceservers?: RTCIceServer[]; +} + +interface RTCIceParameters { + usernameFragment?: string; + password?: string; +} + +interface RTCIceServer { + urls?: any; + username?: string; + credential?: string; +} + +interface RTCInboundRTPStreamStats extends RTCRTPStreamStats { + packetsReceived?: number; + bytesReceived?: number; + packetsLost?: number; + jitter?: number; + fractionLost?: number; +} + +interface RTCMediaStreamTrackStats extends RTCStats { + trackIdentifier?: string; + remoteSource?: boolean; + ssrcIds?: string[]; + frameWidth?: number; + frameHeight?: number; + framesPerSecond?: number; + framesSent?: number; + framesReceived?: number; + framesDecoded?: number; + framesDropped?: number; + framesCorrupted?: number; + audioLevel?: number; + echoReturnLoss?: number; + echoReturnLossEnhancement?: number; +} + +interface RTCOutboundRTPStreamStats extends RTCRTPStreamStats { + packetsSent?: number; + bytesSent?: number; + targetBitrate?: number; + roundTripTime?: number; +} + +interface RTCRTPStreamStats extends RTCStats { + ssrc?: string; + associateStatsId?: string; + isRemote?: boolean; + mediaTrackId?: string; + transportId?: string; + codecId?: string; + firCount?: number; + pliCount?: number; + nackCount?: number; + sliCount?: number; +} + +interface RTCRtcpFeedback { + type?: string; + parameter?: string; +} + +interface RTCRtcpParameters { + ssrc?: number; + cname?: string; + reducedSize?: boolean; + mux?: boolean; +} + +interface RTCRtpCapabilities { + codecs?: RTCRtpCodecCapability[]; + headerExtensions?: RTCRtpHeaderExtension[]; + fecMechanisms?: string[]; +} + +interface RTCRtpCodecCapability { + name?: string; + kind?: string; + clockRate?: number; + preferredPayloadType?: number; + maxptime?: number; + numChannels?: number; + rtcpFeedback?: RTCRtcpFeedback[]; + parameters?: any; + options?: any; + maxTemporalLayers?: number; + maxSpatialLayers?: number; + svcMultiStreamSupport?: boolean; +} + +interface RTCRtpCodecParameters { + name?: string; + payloadType?: any; + clockRate?: number; + maxptime?: number; + numChannels?: number; + rtcpFeedback?: RTCRtcpFeedback[]; + parameters?: any; +} + +interface RTCRtpContributingSource { + timestamp?: number; + csrc?: number; + audioLevel?: number; +} + +interface RTCRtpEncodingParameters { + ssrc?: number; + codecPayloadType?: number; + fec?: RTCRtpFecParameters; + rtx?: RTCRtpRtxParameters; + priority?: number; + maxBitrate?: number; + minQuality?: number; + framerateBias?: number; + resolutionScale?: number; + framerateScale?: number; + active?: boolean; + encodingId?: string; + dependencyEncodingIds?: string[]; + ssrcRange?: RTCSsrcRange; +} + +interface RTCRtpFecParameters { + ssrc?: number; + mechanism?: string; +} + +interface RTCRtpHeaderExtension { + kind?: string; + uri?: string; + preferredId?: number; + preferredEncrypt?: boolean; +} + +interface RTCRtpHeaderExtensionParameters { + uri?: string; + id?: number; + encrypt?: boolean; +} + +interface RTCRtpParameters { + muxId?: string; + codecs?: RTCRtpCodecParameters[]; + headerExtensions?: RTCRtpHeaderExtensionParameters[]; + encodings?: RTCRtpEncodingParameters[]; + rtcp?: RTCRtcpParameters; +} + +interface RTCRtpRtxParameters { + ssrc?: number; +} + +interface RTCRtpUnhandled { + ssrc?: number; + payloadType?: number; + muxId?: string; +} + +interface RTCSrtpKeyParam { + keyMethod?: string; + keySalt?: string; + lifetime?: string; + mkiValue?: number; + mkiLength?: number; +} + +interface RTCSrtpSdesParameters { + tag?: number; + cryptoSuite?: string; + keyParams?: RTCSrtpKeyParam[]; + sessionParams?: string[]; +} + +interface RTCSsrcRange { + min?: number; + max?: number; +} + +interface RTCStats { + timestamp?: number; + type?: string; + id?: string; + msType?: string; +} + +interface RTCStatsReport { +} + +interface RTCTransportStats extends RTCStats { + bytesSent?: number; + bytesReceived?: number; + rtcpTransportStatsId?: string; + activeConnection?: boolean; + selectedCandidatePairId?: string; + localCertificateId?: string; + remoteCertificateId?: string; } interface StoreExceptionsInformation extends ExceptionInformation { @@ -5532,6 +6592,7 @@ interface UIEventInit extends EventInit { } interface WebGLContextAttributes { + failIfMajorPerformanceCaveat?: boolean; alpha?: boolean; depth?: boolean; stencil?: boolean; @@ -5559,18 +6620,18 @@ interface ANGLE_instanced_arrays { drawArraysInstancedANGLE(mode: number, first: number, count: number, primcount: number): void; drawElementsInstancedANGLE(mode: number, count: number, type: number, offset: number, primcount: number): void; vertexAttribDivisorANGLE(index: number, divisor: number): void; - VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; } declare var ANGLE_instanced_arrays: { prototype: ANGLE_instanced_arrays; new(): ANGLE_instanced_arrays; - VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; + readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: number; } interface AnalyserNode extends AudioNode { fftSize: number; - frequencyBinCount: number; + readonly frequencyBinCount: number; maxDecibels: number; minDecibels: number; smoothingTimeConstant: number; @@ -5586,8 +6647,8 @@ declare var AnalyserNode: { } interface AnimationEvent extends Event { - animationName: string; - elapsedTime: number; + readonly animationName: string; + readonly elapsedTime: number; initAnimationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, animationNameArg: string, elapsedTimeArg: number): void; } @@ -5597,49 +6658,49 @@ declare var AnimationEvent: { } interface ApplicationCache extends EventTarget { - oncached: (ev: Event) => any; - onchecking: (ev: Event) => any; - ondownloading: (ev: Event) => any; - onerror: (ev: Event) => any; - onnoupdate: (ev: Event) => any; - onobsolete: (ev: Event) => any; - onprogress: (ev: ProgressEvent) => any; - onupdateready: (ev: Event) => any; - status: number; + oncached: (this: this, ev: Event) => any; + onchecking: (this: this, ev: Event) => any; + ondownloading: (this: this, ev: Event) => any; + onerror: (this: this, ev: ErrorEvent) => any; + onnoupdate: (this: this, ev: Event) => any; + onobsolete: (this: this, ev: Event) => any; + onprogress: (this: this, ev: ProgressEvent) => any; + onupdateready: (this: this, ev: Event) => any; + readonly status: number; abort(): void; swapCache(): void; update(): void; - CHECKING: number; - DOWNLOADING: number; - IDLE: number; - OBSOLETE: number; - UNCACHED: number; - UPDATEREADY: number; - addEventListener(type: "cached", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "checking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "downloading", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "noupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "obsolete", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "updateready", listener: (ev: Event) => any, useCapture?: boolean): void; + readonly CHECKING: number; + readonly DOWNLOADING: number; + readonly IDLE: number; + readonly OBSOLETE: number; + readonly UNCACHED: number; + readonly UPDATEREADY: number; + addEventListener(type: "cached", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "checking", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "downloading", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "noupdate", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "obsolete", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "updateready", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var ApplicationCache: { prototype: ApplicationCache; new(): ApplicationCache; - CHECKING: number; - DOWNLOADING: number; - IDLE: number; - OBSOLETE: number; - UNCACHED: number; - UPDATEREADY: number; + readonly CHECKING: number; + readonly DOWNLOADING: number; + readonly IDLE: number; + readonly OBSOLETE: number; + readonly UNCACHED: number; + readonly UPDATEREADY: number; } interface AriaRequestEvent extends Event { - attributeName: string; - attributeValue: string; + readonly attributeName: string; + attributeValue: string | null; } declare var AriaRequestEvent: { @@ -5648,9 +6709,10 @@ declare var AriaRequestEvent: { } interface Attr extends Node { - name: string; - ownerElement: Element; - specified: boolean; + readonly name: string; + readonly ownerElement: Element; + readonly prefix: string | null; + readonly specified: boolean; value: string; } @@ -5660,10 +6722,12 @@ declare var Attr: { } interface AudioBuffer { - duration: number; - length: number; - numberOfChannels: number; - sampleRate: number; + readonly duration: number; + readonly length: number; + readonly numberOfChannels: number; + readonly sampleRate: number; + copyFromChannel(destination: Float32Array, channelNumber: number, startInChannel?: number): void; + copyToChannel(source: Float32Array, channelNumber: number, startInChannel?: number): void; getChannelData(channel: number): Float32Array; } @@ -5673,15 +6737,16 @@ declare var AudioBuffer: { } interface AudioBufferSourceNode extends AudioNode { - buffer: AudioBuffer; + buffer: AudioBuffer | null; + readonly detune: AudioParam; loop: boolean; loopEnd: number; loopStart: number; - onended: (ev: Event) => any; - playbackRate: AudioParam; + onended: (this: this, ev: MediaStreamErrorEvent) => any; + readonly playbackRate: AudioParam; start(when?: number, offset?: number, duration?: number): void; stop(when?: number): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (this: this, ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -5691,10 +6756,10 @@ declare var AudioBufferSourceNode: { } interface AudioContext extends EventTarget { - currentTime: number; - destination: AudioDestinationNode; - listener: AudioListener; - sampleRate: number; + readonly currentTime: number; + readonly destination: AudioDestinationNode; + readonly listener: AudioListener; + readonly sampleRate: number; state: string; createAnalyser(): AnalyserNode; createBiquadFilter(): BiquadFilterNode; @@ -5707,13 +6772,14 @@ interface AudioContext extends EventTarget { createDynamicsCompressor(): DynamicsCompressorNode; createGain(): GainNode; createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode; + createMediaStreamSource(mediaStream: MediaStream): MediaStreamAudioSourceNode; createOscillator(): OscillatorNode; createPanner(): PannerNode; - createPeriodicWave(real: Float32Array, imag: Float32Array): PeriodicWave; + createPeriodicWave(real: Float32Array, imag: Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave; createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode; createStereoPanner(): StereoPannerNode; createWaveShaper(): WaveShaperNode; - decodeAudioData(audioData: ArrayBuffer, successCallback: DecodeSuccessCallback, errorCallback?: DecodeErrorCallback): void; + decodeAudioData(audioData: ArrayBuffer, successCallback?: DecodeSuccessCallback, errorCallback?: DecodeErrorCallback): PromiseLike; } declare var AudioContext: { @@ -5722,7 +6788,7 @@ declare var AudioContext: { } interface AudioDestinationNode extends AudioNode { - maxChannelCount: number; + readonly maxChannelCount: number; } declare var AudioDestinationNode: { @@ -5747,11 +6813,13 @@ interface AudioNode extends EventTarget { channelCount: number; channelCountMode: string; channelInterpretation: string; - context: AudioContext; - numberOfInputs: number; - numberOfOutputs: number; + readonly context: AudioContext; + readonly numberOfInputs: number; + readonly numberOfOutputs: number; connect(destination: AudioNode, output?: number, input?: number): void; disconnect(output?: number): void; + disconnect(destination: AudioNode, output?: number, input?: number): void; + disconnect(destination: AudioParam, output?: number): void; } declare var AudioNode: { @@ -5760,7 +6828,7 @@ declare var AudioNode: { } interface AudioParam { - defaultValue: number; + readonly defaultValue: number; value: number; cancelScheduledValues(startTime: number): void; exponentialRampToValueAtTime(value: number, endTime: number): void; @@ -5776,9 +6844,9 @@ declare var AudioParam: { } interface AudioProcessingEvent extends Event { - inputBuffer: AudioBuffer; - outputBuffer: AudioBuffer; - playbackTime: number; + readonly inputBuffer: AudioBuffer; + readonly outputBuffer: AudioBuffer; + readonly playbackTime: number; } declare var AudioProcessingEvent: { @@ -5788,11 +6856,11 @@ declare var AudioProcessingEvent: { interface AudioTrack { enabled: boolean; - id: string; + readonly id: string; kind: string; - label: string; + readonly label: string; language: string; - sourceBuffer: SourceBuffer; + readonly sourceBuffer: SourceBuffer; } declare var AudioTrack: { @@ -5801,15 +6869,15 @@ declare var AudioTrack: { } interface AudioTrackList extends EventTarget { - length: number; - onaddtrack: (ev: TrackEvent) => any; - onchange: (ev: Event) => any; - onremovetrack: (ev: TrackEvent) => any; - getTrackById(id: string): AudioTrack; + readonly length: number; + onaddtrack: (this: this, ev: TrackEvent) => any; + onchange: (this: this, ev: Event) => any; + onremovetrack: (this: this, ev: TrackEvent) => any; + getTrackById(id: string): AudioTrack | null; item(index: number): AudioTrack; - addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "removetrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; + addEventListener(type: "addtrack", listener: (this: this, ev: TrackEvent) => any, useCapture?: boolean): void; + addEventListener(type: "change", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "removetrack", listener: (this: this, ev: TrackEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; [index: number]: AudioTrack; } @@ -5820,7 +6888,7 @@ declare var AudioTrackList: { } interface BarProp { - visible: boolean; + readonly visible: boolean; } declare var BarProp: { @@ -5838,10 +6906,10 @@ declare var BeforeUnloadEvent: { } interface BiquadFilterNode extends AudioNode { - Q: AudioParam; - detune: AudioParam; - frequency: AudioParam; - gain: AudioParam; + readonly Q: AudioParam; + readonly detune: AudioParam; + readonly frequency: AudioParam; + readonly gain: AudioParam; type: string; getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void; } @@ -5852,8 +6920,8 @@ declare var BiquadFilterNode: { } interface Blob { - size: number; - type: string; + readonly size: number; + readonly type: string; msClose(): void; msDetachStream(): any; slice(start?: number, end?: number, contentType?: string): Blob; @@ -5887,7 +6955,7 @@ declare var CSSConditionRule: { } interface CSSFontFaceRule extends CSSRule { - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSFontFaceRule: { @@ -5896,9 +6964,9 @@ declare var CSSFontFaceRule: { } interface CSSGroupingRule extends CSSRule { - cssRules: CSSRuleList; - deleteRule(index?: number): void; - insertRule(rule: string, index?: number): number; + readonly cssRules: CSSRuleList; + deleteRule(index: number): void; + insertRule(rule: string, index: number): number; } declare var CSSGroupingRule: { @@ -5907,9 +6975,9 @@ declare var CSSGroupingRule: { } interface CSSImportRule extends CSSRule { - href: string; - media: MediaList; - styleSheet: CSSStyleSheet; + readonly href: string; + readonly media: MediaList; + readonly styleSheet: CSSStyleSheet; } declare var CSSImportRule: { @@ -5919,7 +6987,7 @@ declare var CSSImportRule: { interface CSSKeyframeRule extends CSSRule { keyText: string; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSKeyframeRule: { @@ -5928,7 +6996,7 @@ declare var CSSKeyframeRule: { } interface CSSKeyframesRule extends CSSRule { - cssRules: CSSRuleList; + readonly cssRules: CSSRuleList; name: string; appendRule(rule: string): void; deleteRule(rule: string): void; @@ -5941,7 +7009,7 @@ declare var CSSKeyframesRule: { } interface CSSMediaRule extends CSSConditionRule { - media: MediaList; + readonly media: MediaList; } declare var CSSMediaRule: { @@ -5950,8 +7018,8 @@ declare var CSSMediaRule: { } interface CSSNamespaceRule extends CSSRule { - namespaceURI: string; - prefix: string; + readonly namespaceURI: string; + readonly prefix: string; } declare var CSSNamespaceRule: { @@ -5960,10 +7028,10 @@ declare var CSSNamespaceRule: { } interface CSSPageRule extends CSSRule { - pseudoClass: string; - selector: string; + readonly pseudoClass: string; + readonly selector: string; selectorText: string; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSPageRule: { @@ -5973,42 +7041,42 @@ declare var CSSPageRule: { interface CSSRule { cssText: string; - parentRule: CSSRule; - parentStyleSheet: CSSStyleSheet; - type: number; - CHARSET_RULE: number; - FONT_FACE_RULE: number; - IMPORT_RULE: number; - KEYFRAMES_RULE: number; - KEYFRAME_RULE: number; - MEDIA_RULE: number; - NAMESPACE_RULE: number; - PAGE_RULE: number; - STYLE_RULE: number; - SUPPORTS_RULE: number; - UNKNOWN_RULE: number; - VIEWPORT_RULE: number; + readonly parentRule: CSSRule; + readonly parentStyleSheet: CSSStyleSheet; + readonly type: number; + readonly CHARSET_RULE: number; + readonly FONT_FACE_RULE: number; + readonly IMPORT_RULE: number; + readonly KEYFRAMES_RULE: number; + readonly KEYFRAME_RULE: number; + readonly MEDIA_RULE: number; + readonly NAMESPACE_RULE: number; + readonly PAGE_RULE: number; + readonly STYLE_RULE: number; + readonly SUPPORTS_RULE: number; + readonly UNKNOWN_RULE: number; + readonly VIEWPORT_RULE: number; } declare var CSSRule: { prototype: CSSRule; new(): CSSRule; - CHARSET_RULE: number; - FONT_FACE_RULE: number; - IMPORT_RULE: number; - KEYFRAMES_RULE: number; - KEYFRAME_RULE: number; - MEDIA_RULE: number; - NAMESPACE_RULE: number; - PAGE_RULE: number; - STYLE_RULE: number; - SUPPORTS_RULE: number; - UNKNOWN_RULE: number; - VIEWPORT_RULE: number; + readonly CHARSET_RULE: number; + readonly FONT_FACE_RULE: number; + readonly IMPORT_RULE: number; + readonly KEYFRAMES_RULE: number; + readonly KEYFRAME_RULE: number; + readonly MEDIA_RULE: number; + readonly NAMESPACE_RULE: number; + readonly PAGE_RULE: number; + readonly STYLE_RULE: number; + readonly SUPPORTS_RULE: number; + readonly UNKNOWN_RULE: number; + readonly VIEWPORT_RULE: number; } interface CSSRuleList { - length: number; + readonly length: number; item(index: number): CSSRule; [index: number]: CSSRule; } @@ -6019,356 +7087,343 @@ declare var CSSRuleList: { } interface CSSStyleDeclaration { - alignContent: string; - alignItems: string; - alignSelf: string; - alignmentBaseline: string; - animation: string; - animationDelay: string; - animationDirection: string; - animationDuration: string; - animationFillMode: string; - animationIterationCount: string; - animationName: string; - animationPlayState: string; - animationTimingFunction: string; - backfaceVisibility: string; - background: string; - backgroundAttachment: string; - backgroundClip: string; - backgroundColor: string; - backgroundImage: string; - backgroundOrigin: string; - backgroundPosition: string; - backgroundPositionX: string; - backgroundPositionY: string; - backgroundRepeat: string; - backgroundSize: string; - baselineShift: string; - border: string; - borderBottom: string; - borderBottomColor: string; - borderBottomLeftRadius: string; - borderBottomRightRadius: string; - borderBottomStyle: string; - borderBottomWidth: string; - borderCollapse: string; - borderColor: string; - borderImage: string; - borderImageOutset: string; - borderImageRepeat: string; - borderImageSlice: string; - borderImageSource: string; - borderImageWidth: string; - borderLeft: string; - borderLeftColor: string; - borderLeftStyle: string; - borderLeftWidth: string; - borderRadius: string; - borderRight: string; - borderRightColor: string; - borderRightStyle: string; - borderRightWidth: string; - borderSpacing: string; - borderStyle: string; - borderTop: string; - borderTopColor: string; - borderTopLeftRadius: string; - borderTopRightRadius: string; - borderTopStyle: string; - borderTopWidth: string; - borderWidth: string; - bottom: string; - boxShadow: string; - boxSizing: string; - breakAfter: string; - breakBefore: string; - breakInside: string; - captionSide: string; - clear: string; - clip: string; - clipPath: string; - clipRule: string; - color: string; - colorInterpolationFilters: string; + alignContent: string | null; + alignItems: string | null; + alignSelf: string | null; + alignmentBaseline: string | null; + animation: string | null; + animationDelay: string | null; + animationDirection: string | null; + animationDuration: string | null; + animationFillMode: string | null; + animationIterationCount: string | null; + animationName: string | null; + animationPlayState: string | null; + animationTimingFunction: string | null; + backfaceVisibility: string | null; + background: string | null; + backgroundAttachment: string | null; + backgroundClip: string | null; + backgroundColor: string | null; + backgroundImage: string | null; + backgroundOrigin: string | null; + backgroundPosition: string | null; + backgroundPositionX: string | null; + backgroundPositionY: string | null; + backgroundRepeat: string | null; + backgroundSize: string | null; + baselineShift: string | null; + border: string | null; + borderBottom: string | null; + borderBottomColor: string | null; + borderBottomLeftRadius: string | null; + borderBottomRightRadius: string | null; + borderBottomStyle: string | null; + borderBottomWidth: string | null; + borderCollapse: string | null; + borderColor: string | null; + borderImage: string | null; + borderImageOutset: string | null; + borderImageRepeat: string | null; + borderImageSlice: string | null; + borderImageSource: string | null; + borderImageWidth: string | null; + borderLeft: string | null; + borderLeftColor: string | null; + borderLeftStyle: string | null; + borderLeftWidth: string | null; + borderRadius: string | null; + borderRight: string | null; + borderRightColor: string | null; + borderRightStyle: string | null; + borderRightWidth: string | null; + borderSpacing: string | null; + borderStyle: string | null; + borderTop: string | null; + borderTopColor: string | null; + borderTopLeftRadius: string | null; + borderTopRightRadius: string | null; + borderTopStyle: string | null; + borderTopWidth: string | null; + borderWidth: string | null; + bottom: string | null; + boxShadow: string | null; + boxSizing: string | null; + breakAfter: string | null; + breakBefore: string | null; + breakInside: string | null; + captionSide: string | null; + clear: string | null; + clip: string | null; + clipPath: string | null; + clipRule: string | null; + color: string | null; + colorInterpolationFilters: string | null; columnCount: any; - columnFill: string; + columnFill: string | null; columnGap: any; - columnRule: string; + columnRule: string | null; columnRuleColor: any; - columnRuleStyle: string; + columnRuleStyle: string | null; columnRuleWidth: any; - columnSpan: string; + columnSpan: string | null; columnWidth: any; - columns: string; - content: string; - counterIncrement: string; - counterReset: string; - cssFloat: string; + columns: string | null; + content: string | null; + counterIncrement: string | null; + counterReset: string | null; + cssFloat: string | null; cssText: string; - cursor: string; - direction: string; - display: string; - dominantBaseline: string; - emptyCells: string; - enableBackground: string; - fill: string; - fillOpacity: string; - fillRule: string; - filter: string; - flex: string; - flexBasis: string; - flexDirection: string; - flexFlow: string; - flexGrow: string; - flexShrink: string; - flexWrap: string; - floodColor: string; - floodOpacity: string; - font: string; - fontFamily: string; - fontFeatureSettings: string; - fontSize: string; - fontSizeAdjust: string; - fontStretch: string; - fontStyle: string; - fontVariant: string; - fontWeight: string; - glyphOrientationHorizontal: string; - glyphOrientationVertical: string; - height: string; - imeMode: string; - justifyContent: string; - kerning: string; - left: string; - length: number; - letterSpacing: string; - lightingColor: string; - lineHeight: string; - listStyle: string; - listStyleImage: string; - listStylePosition: string; - listStyleType: string; - margin: string; - marginBottom: string; - marginLeft: string; - marginRight: string; - marginTop: string; - marker: string; - markerEnd: string; - markerMid: string; - markerStart: string; - mask: string; - maxHeight: string; - maxWidth: string; - minHeight: string; - minWidth: string; - msContentZoomChaining: string; - msContentZoomLimit: string; + cursor: string | null; + direction: string | null; + display: string | null; + dominantBaseline: string | null; + emptyCells: string | null; + enableBackground: string | null; + fill: string | null; + fillOpacity: string | null; + fillRule: string | null; + filter: string | null; + flex: string | null; + flexBasis: string | null; + flexDirection: string | null; + flexFlow: string | null; + flexGrow: string | null; + flexShrink: string | null; + flexWrap: string | null; + floodColor: string | null; + floodOpacity: string | null; + font: string | null; + fontFamily: string | null; + fontFeatureSettings: string | null; + fontSize: string | null; + fontSizeAdjust: string | null; + fontStretch: string | null; + fontStyle: string | null; + fontVariant: string | null; + fontWeight: string | null; + glyphOrientationHorizontal: string | null; + glyphOrientationVertical: string | null; + height: string | null; + imeMode: string | null; + justifyContent: string | null; + kerning: string | null; + left: string | null; + readonly length: number; + letterSpacing: string | null; + lightingColor: string | null; + lineHeight: string | null; + listStyle: string | null; + listStyleImage: string | null; + listStylePosition: string | null; + listStyleType: string | null; + margin: string | null; + marginBottom: string | null; + marginLeft: string | null; + marginRight: string | null; + marginTop: string | null; + marker: string | null; + markerEnd: string | null; + markerMid: string | null; + markerStart: string | null; + mask: string | null; + maxHeight: string | null; + maxWidth: string | null; + minHeight: string | null; + minWidth: string | null; + msContentZoomChaining: string | null; + msContentZoomLimit: string | null; msContentZoomLimitMax: any; msContentZoomLimitMin: any; - msContentZoomSnap: string; - msContentZoomSnapPoints: string; - msContentZoomSnapType: string; - msContentZooming: string; - msFlowFrom: string; - msFlowInto: string; - msFontFeatureSettings: string; + msContentZoomSnap: string | null; + msContentZoomSnapPoints: string | null; + msContentZoomSnapType: string | null; + msContentZooming: string | null; + msFlowFrom: string | null; + msFlowInto: string | null; + msFontFeatureSettings: string | null; msGridColumn: any; - msGridColumnAlign: string; + msGridColumnAlign: string | null; msGridColumnSpan: any; - msGridColumns: string; + msGridColumns: string | null; msGridRow: any; - msGridRowAlign: string; + msGridRowAlign: string | null; msGridRowSpan: any; - msGridRows: string; - msHighContrastAdjust: string; - msHyphenateLimitChars: string; + msGridRows: string | null; + msHighContrastAdjust: string | null; + msHyphenateLimitChars: string | null; msHyphenateLimitLines: any; msHyphenateLimitZone: any; - msHyphens: string; - msImeAlign: string; - msOverflowStyle: string; - msScrollChaining: string; - msScrollLimit: string; + msHyphens: string | null; + msImeAlign: string | null; + msOverflowStyle: string | null; + msScrollChaining: string | null; + msScrollLimit: string | null; msScrollLimitXMax: any; msScrollLimitXMin: any; msScrollLimitYMax: any; msScrollLimitYMin: any; - msScrollRails: string; - msScrollSnapPointsX: string; - msScrollSnapPointsY: string; - msScrollSnapType: string; - msScrollSnapX: string; - msScrollSnapY: string; - msScrollTranslation: string; - msTextCombineHorizontal: string; + msScrollRails: string | null; + msScrollSnapPointsX: string | null; + msScrollSnapPointsY: string | null; + msScrollSnapType: string | null; + msScrollSnapX: string | null; + msScrollSnapY: string | null; + msScrollTranslation: string | null; + msTextCombineHorizontal: string | null; msTextSizeAdjust: any; - msTouchAction: string; - msTouchSelect: string; - msUserSelect: string; + msTouchAction: string | null; + msTouchSelect: string | null; + msUserSelect: string | null; msWrapFlow: string; msWrapMargin: any; msWrapThrough: string; - opacity: string; - order: string; - orphans: string; - outline: string; - outlineColor: string; - outlineStyle: string; - outlineWidth: string; - overflow: string; - overflowX: string; - overflowY: string; - padding: string; - paddingBottom: string; - paddingLeft: string; - paddingRight: string; - paddingTop: string; - pageBreakAfter: string; - pageBreakBefore: string; - pageBreakInside: string; - parentRule: CSSRule; - perspective: string; - perspectiveOrigin: string; - pointerEvents: string; - position: string; - quotes: string; - right: string; - rubyAlign: string; - rubyOverhang: string; - rubyPosition: string; - stopColor: string; - stopOpacity: string; - stroke: string; - strokeDasharray: string; - strokeDashoffset: string; - strokeLinecap: string; - strokeLinejoin: string; - strokeMiterlimit: string; - strokeOpacity: string; - strokeWidth: string; - tableLayout: string; - textAlign: string; - textAlignLast: string; - textAnchor: string; - textDecoration: string; - textFillColor: string; - textIndent: string; - textJustify: string; - textKashida: string; - textKashidaSpace: string; - textOverflow: string; - textShadow: string; - textTransform: string; - textUnderlinePosition: string; - top: string; - touchAction: string; - transform: string; - transformOrigin: string; - transformStyle: string; - transition: string; - transitionDelay: string; - transitionDuration: string; - transitionProperty: string; - transitionTimingFunction: string; - unicodeBidi: string; - verticalAlign: string; - visibility: string; - webkitAlignContent: string; - webkitAlignItems: string; - webkitAlignSelf: string; - webkitAnimation: string; - webkitAnimationDelay: string; - webkitAnimationDirection: string; - webkitAnimationDuration: string; - webkitAnimationFillMode: string; - webkitAnimationIterationCount: string; - webkitAnimationName: string; - webkitAnimationPlayState: string; - webkitAnimationTimingFunction: string; - webkitAppearance: string; - webkitBackfaceVisibility: string; - webkitBackground: string; - webkitBackgroundAttachment: string; - webkitBackgroundClip: string; - webkitBackgroundColor: string; - webkitBackgroundImage: string; - webkitBackgroundOrigin: string; - webkitBackgroundPosition: string; - webkitBackgroundPositionX: string; - webkitBackgroundPositionY: string; - webkitBackgroundRepeat: string; - webkitBackgroundSize: string; - webkitBorderBottomLeftRadius: string; - webkitBorderBottomRightRadius: string; - webkitBorderImage: string; - webkitBorderImageOutset: string; - webkitBorderImageRepeat: string; - webkitBorderImageSlice: string; - webkitBorderImageSource: string; - webkitBorderImageWidth: string; - webkitBorderRadius: string; - webkitBorderTopLeftRadius: string; - webkitBorderTopRightRadius: string; - webkitBoxAlign: string; - webkitBoxDirection: string; - webkitBoxFlex: string; - webkitBoxOrdinalGroup: string; - webkitBoxOrient: string; - webkitBoxPack: string; - webkitBoxSizing: string; - webkitColumnBreakAfter: string; - webkitColumnBreakBefore: string; - webkitColumnBreakInside: string; + opacity: string | null; + order: string | null; + orphans: string | null; + outline: string | null; + outlineColor: string | null; + outlineStyle: string | null; + outlineWidth: string | null; + overflow: string | null; + overflowX: string | null; + overflowY: string | null; + padding: string | null; + paddingBottom: string | null; + paddingLeft: string | null; + paddingRight: string | null; + paddingTop: string | null; + pageBreakAfter: string | null; + pageBreakBefore: string | null; + pageBreakInside: string | null; + readonly parentRule: CSSRule; + perspective: string | null; + perspectiveOrigin: string | null; + pointerEvents: string | null; + position: string | null; + quotes: string | null; + right: string | null; + rubyAlign: string | null; + rubyOverhang: string | null; + rubyPosition: string | null; + stopColor: string | null; + stopOpacity: string | null; + stroke: string | null; + strokeDasharray: string | null; + strokeDashoffset: string | null; + strokeLinecap: string | null; + strokeLinejoin: string | null; + strokeMiterlimit: string | null; + strokeOpacity: string | null; + strokeWidth: string | null; + tableLayout: string | null; + textAlign: string | null; + textAlignLast: string | null; + textAnchor: string | null; + textDecoration: string | null; + textIndent: string | null; + textJustify: string | null; + textKashida: string | null; + textKashidaSpace: string | null; + textOverflow: string | null; + textShadow: string | null; + textTransform: string | null; + textUnderlinePosition: string | null; + top: string | null; + touchAction: string | null; + transform: string | null; + transformOrigin: string | null; + transformStyle: string | null; + transition: string | null; + transitionDelay: string | null; + transitionDuration: string | null; + transitionProperty: string | null; + transitionTimingFunction: string | null; + unicodeBidi: string | null; + verticalAlign: string | null; + visibility: string | null; + webkitAlignContent: string | null; + webkitAlignItems: string | null; + webkitAlignSelf: string | null; + webkitAnimation: string | null; + webkitAnimationDelay: string | null; + webkitAnimationDirection: string | null; + webkitAnimationDuration: string | null; + webkitAnimationFillMode: string | null; + webkitAnimationIterationCount: string | null; + webkitAnimationName: string | null; + webkitAnimationPlayState: string | null; + webkitAnimationTimingFunction: string | null; + webkitAppearance: string | null; + webkitBackfaceVisibility: string | null; + webkitBackgroundClip: string | null; + webkitBackgroundOrigin: string | null; + webkitBackgroundSize: string | null; + webkitBorderBottomLeftRadius: string | null; + webkitBorderBottomRightRadius: string | null; + webkitBorderImage: string | null; + webkitBorderRadius: string | null; + webkitBorderTopLeftRadius: string | null; + webkitBorderTopRightRadius: string | null; + webkitBoxAlign: string | null; + webkitBoxDirection: string | null; + webkitBoxFlex: string | null; + webkitBoxOrdinalGroup: string | null; + webkitBoxOrient: string | null; + webkitBoxPack: string | null; + webkitBoxSizing: string | null; + webkitColumnBreakAfter: string | null; + webkitColumnBreakBefore: string | null; + webkitColumnBreakInside: string | null; webkitColumnCount: any; webkitColumnGap: any; - webkitColumnRule: string; + webkitColumnRule: string | null; webkitColumnRuleColor: any; - webkitColumnRuleStyle: string; + webkitColumnRuleStyle: string | null; webkitColumnRuleWidth: any; - webkitColumnSpan: string; + webkitColumnSpan: string | null; webkitColumnWidth: any; - webkitColumns: string; - webkitFilter: string; - webkitFlex: string; - webkitFlexBasis: string; - webkitFlexDirection: string; - webkitFlexFlow: string; - webkitFlexGrow: string; - webkitFlexShrink: string; - webkitFlexWrap: string; - webkitJustifyContent: string; - webkitOrder: string; - webkitPerspective: string; - webkitPerspectiveOrigin: string; - webkitTapHighlightColor: string; - webkitTextFillColor: string; + webkitColumns: string | null; + webkitFilter: string | null; + webkitFlex: string | null; + webkitFlexBasis: string | null; + webkitFlexDirection: string | null; + webkitFlexFlow: string | null; + webkitFlexGrow: string | null; + webkitFlexShrink: string | null; + webkitFlexWrap: string | null; + webkitJustifyContent: string | null; + webkitOrder: string | null; + webkitPerspective: string | null; + webkitPerspectiveOrigin: string | null; + webkitTapHighlightColor: string | null; + webkitTextFillColor: string | null; webkitTextSizeAdjust: any; - webkitTransform: string; - webkitTransformOrigin: string; - webkitTransformStyle: string; - webkitTransition: string; - webkitTransitionDelay: string; - webkitTransitionDuration: string; - webkitTransitionProperty: string; - webkitTransitionTimingFunction: string; - webkitUserSelect: string; - webkitWritingMode: string; - whiteSpace: string; - widows: string; - width: string; - wordBreak: string; - wordSpacing: string; - wordWrap: string; - writingMode: string; - zIndex: string; - zoom: string; + webkitTransform: string | null; + webkitTransformOrigin: string | null; + webkitTransformStyle: string | null; + webkitTransition: string | null; + webkitTransitionDelay: string | null; + webkitTransitionDuration: string | null; + webkitTransitionProperty: string | null; + webkitTransitionTimingFunction: string | null; + webkitUserModify: string | null; + webkitUserSelect: string | null; + webkitWritingMode: string | null; + whiteSpace: string | null; + widows: string | null; + width: string | null; + wordBreak: string | null; + wordSpacing: string | null; + wordWrap: string | null; + writingMode: string | null; + zIndex: string | null; + zoom: string | null; getPropertyPriority(propertyName: string): string; getPropertyValue(propertyName: string): string; item(index: number): string; removeProperty(propertyName: string): string; - setProperty(propertyName: string, value: string, priority?: string): void; + setProperty(propertyName: string, value: string | null, priority?: string): void; [index: number]: string; } @@ -6378,9 +7433,9 @@ declare var CSSStyleDeclaration: { } interface CSSStyleRule extends CSSRule { - readOnly: boolean; + readonly readOnly: boolean; selectorText: string; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } declare var CSSStyleRule: { @@ -6389,18 +7444,18 @@ declare var CSSStyleRule: { } interface CSSStyleSheet extends StyleSheet { - cssRules: CSSRuleList; + readonly cssRules: CSSRuleList; cssText: string; - href: string; - id: string; - imports: StyleSheetList; - isAlternate: boolean; - isPrefAlternate: boolean; - ownerRule: CSSRule; - owningElement: Element; - pages: StyleSheetPageList; - readOnly: boolean; - rules: CSSRuleList; + readonly href: string; + readonly id: string; + readonly imports: StyleSheetList; + readonly isAlternate: boolean; + readonly isPrefAlternate: boolean; + readonly ownerRule: CSSRule; + readonly owningElement: Element; + readonly pages: StyleSheetPageList; + readonly readOnly: boolean; + readonly rules: CSSRuleList; addImport(bstrURL: string, lIndex?: number): number; addPageRule(bstrSelector: string, bstrStyle: string, lIndex?: number): number; addRule(bstrSelector: string, bstrStyle?: string, lIndex?: number): number; @@ -6440,8 +7495,8 @@ declare var CanvasPattern: { new(): CanvasPattern; } -interface CanvasRenderingContext2D { - canvas: HTMLCanvasElement; +interface CanvasRenderingContext2D extends Object, CanvasPathMethods { + readonly canvas: HTMLCanvasElement; fillStyle: string | CanvasGradient | CanvasPattern; font: string; globalAlpha: number; @@ -6460,13 +7515,12 @@ interface CanvasRenderingContext2D { strokeStyle: string | CanvasGradient | CanvasPattern; textAlign: string; textBaseline: string; - arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; - arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; + mozImageSmoothingEnabled: boolean; + webkitImageSmoothingEnabled: boolean; + oImageSmoothingEnabled: boolean; beginPath(): void; - bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; clearRect(x: number, y: number, w: number, h: number): void; clip(fillRule?: string): void; - closePath(): void; createImageData(imageDataOrSw: number | ImageData, sh?: number): ImageData; createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient; createPattern(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, repetition: string): CanvasPattern; @@ -6478,12 +7532,8 @@ interface CanvasRenderingContext2D { getImageData(sx: number, sy: number, sw: number, sh: number): ImageData; getLineDash(): number[]; isPointInPath(x: number, y: number, fillRule?: string): boolean; - lineTo(x: number, y: number): void; measureText(text: string): TextMetrics; - moveTo(x: number, y: number): void; putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX?: number, dirtyY?: number, dirtyWidth?: number, dirtyHeight?: number): void; - quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; - rect(x: number, y: number, w: number, h: number): void; restore(): void; rotate(angle: number): void; save(): void; @@ -6520,7 +7570,7 @@ declare var ChannelSplitterNode: { interface CharacterData extends Node, ChildNode { data: string; - length: number; + readonly length: number; appendData(arg: string): void; deleteData(offset: number, count: number): void; insertData(offset: number, arg: string): void; @@ -6536,11 +7586,11 @@ declare var CharacterData: { interface ClientRect { bottom: number; - height: number; + readonly height: number; left: number; right: number; top: number; - width: number; + readonly width: number; } declare var ClientRect: { @@ -6549,7 +7599,7 @@ declare var ClientRect: { } interface ClientRectList { - length: number; + readonly length: number; item(index: number): ClientRect; [index: number]: ClientRect; } @@ -6560,7 +7610,7 @@ declare var ClientRectList: { } interface ClipboardEvent extends Event { - clipboardData: DataTransfer; + readonly clipboardData: DataTransfer; } declare var ClipboardEvent: { @@ -6569,9 +7619,9 @@ declare var ClipboardEvent: { } interface CloseEvent extends Event { - code: number; - reason: string; - wasClean: boolean; + readonly code: number; + readonly reason: string; + readonly wasClean: boolean; initCloseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, wasCleanArg: boolean, codeArg: number, reasonArg: string): void; } @@ -6581,8 +7631,8 @@ declare var CloseEvent: { } interface CommandEvent extends Event { - commandName: string; - detail: string; + readonly commandName: string; + readonly detail: string | null; } declare var CommandEvent: { @@ -6600,8 +7650,8 @@ declare var Comment: { } interface CompositionEvent extends UIEvent { - data: string; - locale: string; + readonly data: string; + readonly locale: string; initCompositionEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, dataArg: string, locale: string): void; } @@ -6618,6 +7668,7 @@ interface Console { dir(value?: any, ...optionalParams: any[]): void; dirxml(value: any): void; error(message?: any, ...optionalParams: any[]): void; + exception(message?: string, ...optionalParams: any[]): void; group(groupTitle?: string): void; groupCollapsed(groupTitle?: string): void; groupEnd(): void; @@ -6627,9 +7678,10 @@ interface Console { profile(reportName?: string): void; profileEnd(): void; select(element: Element): void; + table(...data: any[]): void; time(timerName?: string): void; timeEnd(timerName?: string): void; - trace(): void; + trace(message?: any, ...optionalParams: any[]): void; warn(message?: any, ...optionalParams: any[]): void; } @@ -6639,7 +7691,7 @@ declare var Console: { } interface ConvolverNode extends AudioNode { - buffer: AudioBuffer; + buffer: AudioBuffer | null; normalize: boolean; } @@ -6649,13 +7701,13 @@ declare var ConvolverNode: { } interface Coordinates { - accuracy: number; - altitude: number; - altitudeAccuracy: number; - heading: number; - latitude: number; - longitude: number; - speed: number; + readonly accuracy: number; + readonly altitude: number | null; + readonly altitudeAccuracy: number | null; + readonly heading: number | null; + readonly latitude: number; + readonly longitude: number; + readonly speed: number | null; } declare var Coordinates: { @@ -6664,7 +7716,7 @@ declare var Coordinates: { } interface Crypto extends Object, RandomSource { - subtle: SubtleCrypto; + readonly subtle: SubtleCrypto; } declare var Crypto: { @@ -6673,10 +7725,10 @@ declare var Crypto: { } interface CryptoKey { - algorithm: KeyAlgorithm; - extractable: boolean; - type: string; - usages: string[]; + readonly algorithm: KeyAlgorithm; + readonly extractable: boolean; + readonly type: string; + readonly usages: string[]; } declare var CryptoKey: { @@ -6695,7 +7747,7 @@ declare var CryptoKeyPair: { } interface CustomEvent extends Event { - detail: any; + readonly detail: any; initCustomEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, detailArg: any): void; } @@ -6705,7 +7757,7 @@ declare var CustomEvent: { } interface DOMError { - name: string; + readonly name: string; toString(): string; } @@ -6715,76 +7767,76 @@ declare var DOMError: { } interface DOMException { - code: number; - message: string; - name: string; + readonly code: number; + readonly message: string; + readonly name: string; toString(): string; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; + readonly ABORT_ERR: number; + readonly DATA_CLONE_ERR: number; + readonly DOMSTRING_SIZE_ERR: number; + readonly HIERARCHY_REQUEST_ERR: number; + readonly INDEX_SIZE_ERR: number; + readonly INUSE_ATTRIBUTE_ERR: number; + readonly INVALID_ACCESS_ERR: number; + readonly INVALID_CHARACTER_ERR: number; + readonly INVALID_MODIFICATION_ERR: number; + readonly INVALID_NODE_TYPE_ERR: number; + readonly INVALID_STATE_ERR: number; + readonly NAMESPACE_ERR: number; + readonly NETWORK_ERR: number; + readonly NOT_FOUND_ERR: number; + readonly NOT_SUPPORTED_ERR: number; + readonly NO_DATA_ALLOWED_ERR: number; + readonly NO_MODIFICATION_ALLOWED_ERR: number; + readonly PARSE_ERR: number; + readonly QUOTA_EXCEEDED_ERR: number; + readonly SECURITY_ERR: number; + readonly SERIALIZE_ERR: number; + readonly SYNTAX_ERR: number; + readonly TIMEOUT_ERR: number; + readonly TYPE_MISMATCH_ERR: number; + readonly URL_MISMATCH_ERR: number; + readonly VALIDATION_ERR: number; + readonly WRONG_DOCUMENT_ERR: number; } declare var DOMException: { prototype: DOMException; new(): DOMException; - ABORT_ERR: number; - DATA_CLONE_ERR: number; - DOMSTRING_SIZE_ERR: number; - HIERARCHY_REQUEST_ERR: number; - INDEX_SIZE_ERR: number; - INUSE_ATTRIBUTE_ERR: number; - INVALID_ACCESS_ERR: number; - INVALID_CHARACTER_ERR: number; - INVALID_MODIFICATION_ERR: number; - INVALID_NODE_TYPE_ERR: number; - INVALID_STATE_ERR: number; - NAMESPACE_ERR: number; - NETWORK_ERR: number; - NOT_FOUND_ERR: number; - NOT_SUPPORTED_ERR: number; - NO_DATA_ALLOWED_ERR: number; - NO_MODIFICATION_ALLOWED_ERR: number; - PARSE_ERR: number; - QUOTA_EXCEEDED_ERR: number; - SECURITY_ERR: number; - SERIALIZE_ERR: number; - SYNTAX_ERR: number; - TIMEOUT_ERR: number; - TYPE_MISMATCH_ERR: number; - URL_MISMATCH_ERR: number; - VALIDATION_ERR: number; - WRONG_DOCUMENT_ERR: number; + readonly ABORT_ERR: number; + readonly DATA_CLONE_ERR: number; + readonly DOMSTRING_SIZE_ERR: number; + readonly HIERARCHY_REQUEST_ERR: number; + readonly INDEX_SIZE_ERR: number; + readonly INUSE_ATTRIBUTE_ERR: number; + readonly INVALID_ACCESS_ERR: number; + readonly INVALID_CHARACTER_ERR: number; + readonly INVALID_MODIFICATION_ERR: number; + readonly INVALID_NODE_TYPE_ERR: number; + readonly INVALID_STATE_ERR: number; + readonly NAMESPACE_ERR: number; + readonly NETWORK_ERR: number; + readonly NOT_FOUND_ERR: number; + readonly NOT_SUPPORTED_ERR: number; + readonly NO_DATA_ALLOWED_ERR: number; + readonly NO_MODIFICATION_ALLOWED_ERR: number; + readonly PARSE_ERR: number; + readonly QUOTA_EXCEEDED_ERR: number; + readonly SECURITY_ERR: number; + readonly SERIALIZE_ERR: number; + readonly SYNTAX_ERR: number; + readonly TIMEOUT_ERR: number; + readonly TYPE_MISMATCH_ERR: number; + readonly URL_MISMATCH_ERR: number; + readonly VALIDATION_ERR: number; + readonly WRONG_DOCUMENT_ERR: number; } interface DOMImplementation { - createDocument(namespaceURI: string, qualifiedName: string, doctype: DocumentType): Document; - createDocumentType(qualifiedName: string, publicId: string, systemId: string): DocumentType; + createDocument(namespaceURI: string | null, qualifiedName: string | null, doctype: DocumentType): Document; + createDocumentType(qualifiedName: string, publicId: string | null, systemId: string | null): DocumentType; createHTMLDocument(title: string): Document; - hasFeature(feature: string, version: string): boolean; + hasFeature(feature: string | null, version: string | null): boolean; } declare var DOMImplementation: { @@ -6811,9 +7863,9 @@ declare var DOMSettableTokenList: { } interface DOMStringList { - length: number; + readonly length: number; contains(str: string): boolean; - item(index: number): string; + item(index: number): string | null; [index: number]: string; } @@ -6832,7 +7884,7 @@ declare var DOMStringMap: { } interface DOMTokenList { - length: number; + readonly length: number; add(...token: string[]): void; contains(token: string): boolean; item(index: number): string; @@ -6859,9 +7911,9 @@ declare var DataCue: { interface DataTransfer { dropEffect: string; effectAllowed: string; - files: FileList; - items: DataTransferItemList; - types: DOMStringList; + readonly files: FileList; + readonly items: DataTransferItemList; + readonly types: DOMStringList; clearData(format?: string): boolean; getData(format: string): string; setData(format: string, data: string): boolean; @@ -6873,10 +7925,10 @@ declare var DataTransfer: { } interface DataTransferItem { - kind: string; - type: string; - getAsFile(): File; - getAsString(_callback: FunctionStringCallback): void; + readonly kind: string; + readonly type: string; + getAsFile(): File | null; + getAsString(_callback: FunctionStringCallback | null): void; } declare var DataTransferItem: { @@ -6885,12 +7937,12 @@ declare var DataTransferItem: { } interface DataTransferItemList { - length: number; - add(data: File): DataTransferItem; + readonly length: number; + add(data: File): DataTransferItem | null; clear(): void; - item(index: number): File; + item(index: number): DataTransferItem; remove(index: number): void; - [index: number]: File; + [index: number]: DataTransferItem; } declare var DataTransferItemList: { @@ -6899,9 +7951,9 @@ declare var DataTransferItemList: { } interface DeferredPermissionRequest { - id: number; - type: string; - uri: string; + readonly id: number; + readonly type: string; + readonly uri: string; allow(): void; deny(): void; } @@ -6912,7 +7964,7 @@ declare var DeferredPermissionRequest: { } interface DelayNode extends AudioNode { - delayTime: AudioParam; + readonly delayTime: AudioParam; } declare var DelayNode: { @@ -6921,9 +7973,9 @@ declare var DelayNode: { } interface DeviceAcceleration { - x: number; - y: number; - z: number; + readonly x: number | null; + readonly y: number | null; + readonly z: number | null; } declare var DeviceAcceleration: { @@ -6931,12 +7983,21 @@ declare var DeviceAcceleration: { new(): DeviceAcceleration; } +interface DeviceLightEvent extends Event { + readonly value: number; +} + +declare var DeviceLightEvent: { + prototype: DeviceLightEvent; + new(type: string, eventInitDict?: DeviceLightEventInit): DeviceLightEvent; +} + interface DeviceMotionEvent extends Event { - acceleration: DeviceAcceleration; - accelerationIncludingGravity: DeviceAcceleration; - interval: number; - rotationRate: DeviceRotationRate; - initDeviceMotionEvent(type: string, bubbles: boolean, cancelable: boolean, acceleration: DeviceAccelerationDict, accelerationIncludingGravity: DeviceAccelerationDict, rotationRate: DeviceRotationRateDict, interval: number): void; + readonly acceleration: DeviceAcceleration | null; + readonly accelerationIncludingGravity: DeviceAcceleration | null; + readonly interval: number | null; + readonly rotationRate: DeviceRotationRate | null; + initDeviceMotionEvent(type: string, bubbles: boolean, cancelable: boolean, acceleration: DeviceAccelerationDict | null, accelerationIncludingGravity: DeviceAccelerationDict | null, rotationRate: DeviceRotationRateDict | null, interval: number | null): void; } declare var DeviceMotionEvent: { @@ -6945,11 +8006,11 @@ declare var DeviceMotionEvent: { } interface DeviceOrientationEvent extends Event { - absolute: boolean; - alpha: number; - beta: number; - gamma: number; - initDeviceOrientationEvent(type: string, bubbles: boolean, cancelable: boolean, alpha: number, beta: number, gamma: number, absolute: boolean): void; + readonly absolute: boolean; + readonly alpha: number | null; + readonly beta: number | null; + readonly gamma: number | null; + initDeviceOrientationEvent(type: string, bubbles: boolean, cancelable: boolean, alpha: number | null, beta: number | null, gamma: number | null, absolute: boolean): void; } declare var DeviceOrientationEvent: { @@ -6958,9 +8019,9 @@ declare var DeviceOrientationEvent: { } interface DeviceRotationRate { - alpha: number; - beta: number; - gamma: number; + readonly alpha: number | null; + readonly beta: number | null; + readonly gamma: number | null; } declare var DeviceRotationRate: { @@ -6968,19 +8029,19 @@ declare var DeviceRotationRate: { new(): DeviceRotationRate; } -interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEvent { +interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEvent, ParentNode { /** * Sets or gets the URL for the current document. */ - URL: string; + readonly URL: string; /** * Gets the URL for the document, stripped of any character encoding. */ - URLUnencoded: string; + readonly URLUnencoded: string; /** * Gets the object that has the focus when the parent document has focus. */ - activeElement: Element; + readonly activeElement: Element; /** * Sets or gets the color of all active links in the document. */ @@ -6988,15 +8049,15 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Returns a reference to the collection of elements contained by the object. */ - all: HTMLCollection; + readonly all: HTMLAllCollection; /** * Retrieves a collection of all a objects that have a name and/or id property. Objects in this collection are in HTML source order. */ - anchors: HTMLCollection; + anchors: HTMLCollectionOf; /** * Retrieves a collection of all applet objects in the document. */ - applets: HTMLCollection; + applets: HTMLCollectionOf; /** * Deprecated. Sets or retrieves a value that indicates the background color behind the object. */ @@ -7005,7 +8066,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Specifies the beginning and end of the document body. */ body: HTMLElement; - characterSet: string; + readonly characterSet: string; /** * Gets or sets the character set used to encode the object. */ @@ -7013,13 +8074,14 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Gets a value that indicates whether standards-compliant mode is switched on for the object. */ - compatMode: string; + readonly compatMode: string; cookie: string; + readonly currentScript: HTMLScriptElement | SVGScriptElement; /** * Gets the default character set from the current regional language settings. */ - defaultCharset: string; - defaultView: Window; + readonly defaultCharset: string; + readonly defaultView: Window; /** * Sets or gets a value that indicates whether the document can be edited. */ @@ -7031,7 +8093,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Gets an object representing the document type declaration associated with the current document. */ - doctype: DocumentType; + readonly doctype: DocumentType; /** * Gets a reference to the root node of the document. */ @@ -7043,7 +8105,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Retrieves a collection of all embed objects in the document. */ - embeds: HTMLCollection; + embeds: HTMLCollectionOf; /** * Sets or gets the foreground (text) color of the document. */ @@ -7051,27 +8113,27 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Retrieves a collection, in source order, of all form objects in the document. */ - forms: HTMLCollection; - fullscreenElement: Element; - fullscreenEnabled: boolean; - head: HTMLHeadElement; - hidden: boolean; + forms: HTMLCollectionOf; + readonly fullscreenElement: Element | null; + readonly fullscreenEnabled: boolean; + readonly head: HTMLHeadElement; + readonly hidden: boolean; /** * Retrieves a collection, in source order, of img objects in the document. */ - images: HTMLCollection; + images: HTMLCollectionOf; /** * Gets the implementation object of the current document. */ - implementation: DOMImplementation; + readonly implementation: DOMImplementation; /** * Returns the character encoding used to create the webpage that is loaded into the document object. */ - inputEncoding: string; + readonly inputEncoding: string | null; /** * Gets the date that the page was last modified, if the page supplies one. */ - lastModified: string; + readonly lastModified: string; /** * Sets or gets the color of the document links. */ @@ -7079,302 +8141,305 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven /** * Retrieves a collection of all a objects that specify the href property and all area objects in the document. */ - links: HTMLCollection; + links: HTMLCollectionOf; /** * Contains information about the current URL. */ - location: Location; - media: string; + readonly location: Location; msCSSOMElementFloatMetrics: boolean; msCapsLockWarningOff: boolean; - msHidden: boolean; - msVisibilityState: string; /** * Fires when the user aborts the download. * @param ev The event. */ - onabort: (ev: Event) => any; + onabort: (this: this, ev: UIEvent) => any; /** * Fires when the object is set as the active element. * @param ev The event. */ - onactivate: (ev: UIEvent) => any; + onactivate: (this: this, ev: UIEvent) => any; /** * Fires immediately before the object is set as the active element. * @param ev The event. */ - onbeforeactivate: (ev: UIEvent) => any; + onbeforeactivate: (this: this, ev: UIEvent) => any; /** * Fires immediately before the activeElement is changed from the current object to another object in the parent document. * @param ev The event. */ - onbeforedeactivate: (ev: UIEvent) => any; + onbeforedeactivate: (this: this, ev: UIEvent) => any; /** * Fires when the object loses the input focus. * @param ev The focus event. */ - onblur: (ev: FocusEvent) => any; + onblur: (this: this, ev: FocusEvent) => any; /** * Occurs when playback is possible, but would require further buffering. * @param ev The event. */ - oncanplay: (ev: Event) => any; - oncanplaythrough: (ev: Event) => any; + oncanplay: (this: this, ev: Event) => any; + oncanplaythrough: (this: this, ev: Event) => any; /** * Fires when the contents of the object or selection have changed. * @param ev The event. */ - onchange: (ev: Event) => any; + onchange: (this: this, ev: Event) => any; /** * Fires when the user clicks the left mouse button on the object * @param ev The mouse event. */ - onclick: (ev: MouseEvent) => any; + onclick: (this: this, ev: MouseEvent) => any; /** * Fires when the user clicks the right mouse button in the client area, opening the context menu. * @param ev The mouse event. */ - oncontextmenu: (ev: PointerEvent) => any; + oncontextmenu: (this: this, ev: PointerEvent) => any; /** * Fires when the user double-clicks the object. * @param ev The mouse event. */ - ondblclick: (ev: MouseEvent) => any; + ondblclick: (this: this, ev: MouseEvent) => any; /** * Fires when the activeElement is changed from the current object to another object in the parent document. * @param ev The UI Event */ - ondeactivate: (ev: UIEvent) => any; + ondeactivate: (this: this, ev: UIEvent) => any; /** * Fires on the source object continuously during a drag operation. * @param ev The event. */ - ondrag: (ev: DragEvent) => any; + ondrag: (this: this, ev: DragEvent) => any; /** * Fires on the source object when the user releases the mouse at the close of a drag operation. * @param ev The event. */ - ondragend: (ev: DragEvent) => any; + ondragend: (this: this, ev: DragEvent) => any; /** * Fires on the target element when the user drags the object to a valid drop target. * @param ev The drag event. */ - ondragenter: (ev: DragEvent) => any; + ondragenter: (this: this, ev: DragEvent) => any; /** * Fires on the target object when the user moves the mouse out of a valid drop target during a drag operation. * @param ev The drag event. */ - ondragleave: (ev: DragEvent) => any; + ondragleave: (this: this, ev: DragEvent) => any; /** * Fires on the target element continuously while the user drags the object over a valid drop target. * @param ev The event. */ - ondragover: (ev: DragEvent) => any; + ondragover: (this: this, ev: DragEvent) => any; /** * Fires on the source object when the user starts to drag a text selection or selected object. * @param ev The event. */ - ondragstart: (ev: DragEvent) => any; - ondrop: (ev: DragEvent) => any; + ondragstart: (this: this, ev: DragEvent) => any; + ondrop: (this: this, ev: DragEvent) => any; /** * Occurs when the duration attribute is updated. * @param ev The event. */ - ondurationchange: (ev: Event) => any; + ondurationchange: (this: this, ev: Event) => any; /** * Occurs when the media element is reset to its initial state. * @param ev The event. */ - onemptied: (ev: Event) => any; + onemptied: (this: this, ev: Event) => any; /** * Occurs when the end of playback is reached. * @param ev The event */ - onended: (ev: Event) => any; + onended: (this: this, ev: MediaStreamErrorEvent) => any; /** * Fires when an error occurs during object loading. * @param ev The event. */ - onerror: (ev: Event) => any; + onerror: (this: this, ev: ErrorEvent) => any; /** * Fires when the object receives focus. * @param ev The event. */ - onfocus: (ev: FocusEvent) => any; - onfullscreenchange: (ev: Event) => any; - onfullscreenerror: (ev: Event) => any; - oninput: (ev: Event) => any; + onfocus: (this: this, ev: FocusEvent) => any; + onfullscreenchange: (this: this, ev: Event) => any; + onfullscreenerror: (this: this, ev: Event) => any; + oninput: (this: this, ev: Event) => any; + oninvalid: (this: this, ev: Event) => any; /** * Fires when the user presses a key. * @param ev The keyboard event */ - onkeydown: (ev: KeyboardEvent) => any; + onkeydown: (this: this, ev: KeyboardEvent) => any; /** * Fires when the user presses an alphanumeric key. * @param ev The event. */ - onkeypress: (ev: KeyboardEvent) => any; + onkeypress: (this: this, ev: KeyboardEvent) => any; /** * Fires when the user releases a key. * @param ev The keyboard event */ - onkeyup: (ev: KeyboardEvent) => any; + onkeyup: (this: this, ev: KeyboardEvent) => any; /** * Fires immediately after the browser loads the object. * @param ev The event. */ - onload: (ev: Event) => any; + onload: (this: this, ev: Event) => any; /** * Occurs when media data is loaded at the current playback position. * @param ev The event. */ - onloadeddata: (ev: Event) => any; + onloadeddata: (this: this, ev: Event) => any; /** * Occurs when the duration and dimensions of the media have been determined. * @param ev The event. */ - onloadedmetadata: (ev: Event) => any; + onloadedmetadata: (this: this, ev: Event) => any; /** * Occurs when Internet Explorer begins looking for media data. * @param ev The event. */ - onloadstart: (ev: Event) => any; + onloadstart: (this: this, ev: Event) => any; /** * Fires when the user clicks the object with either mouse button. * @param ev The mouse event. */ - onmousedown: (ev: MouseEvent) => any; + onmousedown: (this: this, ev: MouseEvent) => any; /** * Fires when the user moves the mouse over the object. * @param ev The mouse event. */ - onmousemove: (ev: MouseEvent) => any; + onmousemove: (this: this, ev: MouseEvent) => any; /** * Fires when the user moves the mouse pointer outside the boundaries of the object. * @param ev The mouse event. */ - onmouseout: (ev: MouseEvent) => any; + onmouseout: (this: this, ev: MouseEvent) => any; /** * Fires when the user moves the mouse pointer into the object. * @param ev The mouse event. */ - onmouseover: (ev: MouseEvent) => any; + onmouseover: (this: this, ev: MouseEvent) => any; /** * Fires when the user releases a mouse button while the mouse is over the object. * @param ev The mouse event. */ - onmouseup: (ev: MouseEvent) => any; + onmouseup: (this: this, ev: MouseEvent) => any; /** * Fires when the wheel button is rotated. * @param ev The mouse event */ - onmousewheel: (ev: MouseWheelEvent) => any; - onmscontentzoom: (ev: UIEvent) => any; - onmsgesturechange: (ev: MSGestureEvent) => any; - onmsgesturedoubletap: (ev: MSGestureEvent) => any; - onmsgestureend: (ev: MSGestureEvent) => any; - onmsgesturehold: (ev: MSGestureEvent) => any; - onmsgesturestart: (ev: MSGestureEvent) => any; - onmsgesturetap: (ev: MSGestureEvent) => any; - onmsinertiastart: (ev: MSGestureEvent) => any; - onmsmanipulationstatechanged: (ev: MSManipulationEvent) => any; - onmspointercancel: (ev: MSPointerEvent) => any; - onmspointerdown: (ev: MSPointerEvent) => any; - onmspointerenter: (ev: MSPointerEvent) => any; - onmspointerleave: (ev: MSPointerEvent) => any; - onmspointermove: (ev: MSPointerEvent) => any; - onmspointerout: (ev: MSPointerEvent) => any; - onmspointerover: (ev: MSPointerEvent) => any; - onmspointerup: (ev: MSPointerEvent) => any; + onmousewheel: (this: this, ev: WheelEvent) => any; + onmscontentzoom: (this: this, ev: UIEvent) => any; + onmsgesturechange: (this: this, ev: MSGestureEvent) => any; + onmsgesturedoubletap: (this: this, ev: MSGestureEvent) => any; + onmsgestureend: (this: this, ev: MSGestureEvent) => any; + onmsgesturehold: (this: this, ev: MSGestureEvent) => any; + onmsgesturestart: (this: this, ev: MSGestureEvent) => any; + onmsgesturetap: (this: this, ev: MSGestureEvent) => any; + onmsinertiastart: (this: this, ev: MSGestureEvent) => any; + onmsmanipulationstatechanged: (this: this, ev: MSManipulationEvent) => any; + onmspointercancel: (this: this, ev: MSPointerEvent) => any; + onmspointerdown: (this: this, ev: MSPointerEvent) => any; + onmspointerenter: (this: this, ev: MSPointerEvent) => any; + onmspointerleave: (this: this, ev: MSPointerEvent) => any; + onmspointermove: (this: this, ev: MSPointerEvent) => any; + onmspointerout: (this: this, ev: MSPointerEvent) => any; + onmspointerover: (this: this, ev: MSPointerEvent) => any; + onmspointerup: (this: this, ev: MSPointerEvent) => any; /** * Occurs when an item is removed from a Jump List of a webpage running in Site Mode. * @param ev The event. */ - onmssitemodejumplistitemremoved: (ev: MSSiteModeEvent) => any; + onmssitemodejumplistitemremoved: (this: this, ev: MSSiteModeEvent) => any; /** * Occurs when a user clicks a button in a Thumbnail Toolbar of a webpage running in Site Mode. * @param ev The event. */ - onmsthumbnailclick: (ev: MSSiteModeEvent) => any; + onmsthumbnailclick: (this: this, ev: MSSiteModeEvent) => any; /** * Occurs when playback is paused. * @param ev The event. */ - onpause: (ev: Event) => any; + onpause: (this: this, ev: Event) => any; /** * Occurs when the play method is requested. * @param ev The event. */ - onplay: (ev: Event) => any; + onplay: (this: this, ev: Event) => any; /** * Occurs when the audio or video has started playing. * @param ev The event. */ - onplaying: (ev: Event) => any; - onpointerlockchange: (ev: Event) => any; - onpointerlockerror: (ev: Event) => any; + onplaying: (this: this, ev: Event) => any; + onpointerlockchange: (this: this, ev: Event) => any; + onpointerlockerror: (this: this, ev: Event) => any; /** * Occurs to indicate progress while downloading media data. * @param ev The event. */ - onprogress: (ev: ProgressEvent) => any; + onprogress: (this: this, ev: ProgressEvent) => any; /** * Occurs when the playback rate is increased or decreased. * @param ev The event. */ - onratechange: (ev: Event) => any; + onratechange: (this: this, ev: Event) => any; /** * Fires when the state of the object has changed. * @param ev The event */ - onreadystatechange: (ev: ProgressEvent) => any; + onreadystatechange: (this: this, ev: ProgressEvent) => any; /** * Fires when the user resets a form. * @param ev The event. */ - onreset: (ev: Event) => any; + onreset: (this: this, ev: Event) => any; /** * Fires when the user repositions the scroll box in the scroll bar on the object. * @param ev The event. */ - onscroll: (ev: UIEvent) => any; + onscroll: (this: this, ev: UIEvent) => any; /** * Occurs when the seek operation ends. * @param ev The event. */ - onseeked: (ev: Event) => any; + onseeked: (this: this, ev: Event) => any; /** * Occurs when the current playback position is moved. * @param ev The event. */ - onseeking: (ev: Event) => any; + onseeking: (this: this, ev: Event) => any; /** * Fires when the current selection changes. * @param ev The event. */ - onselect: (ev: UIEvent) => any; - onselectstart: (ev: Event) => any; + onselect: (this: this, ev: UIEvent) => any; + /** + * Fires when the selection state of a document changes. + * @param ev The event. + */ + onselectionchange: (this: this, ev: Event) => any; + onselectstart: (this: this, ev: Event) => any; /** * Occurs when the download has stopped. * @param ev The event. */ - onstalled: (ev: Event) => any; + onstalled: (this: this, ev: Event) => any; /** * Fires when the user clicks the Stop button or leaves the Web page. * @param ev The event. */ - onstop: (ev: Event) => any; - onsubmit: (ev: Event) => any; + onstop: (this: this, ev: Event) => any; + onsubmit: (this: this, ev: Event) => any; /** * Occurs if the load operation has been intentionally halted. * @param ev The event. */ - onsuspend: (ev: Event) => any; + onsuspend: (this: this, ev: Event) => any; /** * Occurs to indicate the current playback position. * @param ev The event. */ - ontimeupdate: (ev: Event) => any; + ontimeupdate: (this: this, ev: Event) => any; ontouchcancel: (ev: TouchEvent) => any; ontouchend: (ev: TouchEvent) => any; ontouchmove: (ev: TouchEvent) => any; @@ -7383,59 +8448,59 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Occurs when the volume is changed, or playback is muted or unmuted. * @param ev The event. */ - onvolumechange: (ev: Event) => any; + onvolumechange: (this: this, ev: Event) => any; /** * Occurs when playback stops because the next frame of a video resource is not available. * @param ev The event. */ - onwaiting: (ev: Event) => any; - onwebkitfullscreenchange: (ev: Event) => any; - onwebkitfullscreenerror: (ev: Event) => any; - plugins: HTMLCollection; - pointerLockElement: Element; + onwaiting: (this: this, ev: Event) => any; + onwebkitfullscreenchange: (this: this, ev: Event) => any; + onwebkitfullscreenerror: (this: this, ev: Event) => any; + plugins: HTMLCollectionOf; + readonly pointerLockElement: Element; /** * Retrieves a value that indicates the current state of the object. */ - readyState: string; + readonly readyState: string; /** * Gets the URL of the location that referred the user to the current page. */ - referrer: string; + readonly referrer: string; /** * Gets the root svg element in the document hierarchy. */ - rootElement: SVGSVGElement; + readonly rootElement: SVGSVGElement; /** * Retrieves a collection of all script objects in the document. */ - scripts: HTMLCollection; - security: string; + scripts: HTMLCollectionOf; + readonly scrollingElement: Element | null; /** * Retrieves a collection of styleSheet objects representing the style sheets that correspond to each instance of a link or style object in the document. */ - styleSheets: StyleSheetList; + readonly styleSheets: StyleSheetList; /** * Contains the title of the document. */ title: string; - visibilityState: string; + readonly visibilityState: string; /** * Sets or gets the color of the links that the user has visited. */ vlinkColor: string; - webkitCurrentFullScreenElement: Element; - webkitFullscreenElement: Element; - webkitFullscreenEnabled: boolean; - webkitIsFullScreen: boolean; - xmlEncoding: string; + readonly webkitCurrentFullScreenElement: Element | null; + readonly webkitFullscreenElement: Element | null; + readonly webkitFullscreenEnabled: boolean; + readonly webkitIsFullScreen: boolean; + readonly xmlEncoding: string | null; xmlStandalone: boolean; /** * Gets or sets the version attribute specified in the declaration of an XML document. */ - xmlVersion: string; - currentScript: HTMLScriptElement; + xmlVersion: string | null; adoptNode(source: Node): Node; captureEvents(): void; + caretRangeFromPoint(x: number, y: number): Range; clear(): void; /** * Closes an output stream and forces the sent data to display. @@ -7446,7 +8511,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param name String that sets the attribute object's name. */ createAttribute(name: string): Attr; - createAttributeNS(namespaceURI: string, qualifiedName: string): Attr; + createAttributeNS(namespaceURI: string | null, qualifiedName: string): Attr; createCDATASection(data: string): CDATASection; /** * Creates a comment object with the specified data. @@ -7462,37 +8527,24 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param tagName The name of an element. */ createElement(tagName: "a"): HTMLAnchorElement; - createElement(tagName: "abbr"): HTMLPhraseElement; - createElement(tagName: "acronym"): HTMLPhraseElement; - createElement(tagName: "address"): HTMLBlockElement; createElement(tagName: "applet"): HTMLAppletElement; createElement(tagName: "area"): HTMLAreaElement; createElement(tagName: "audio"): HTMLAudioElement; - createElement(tagName: "b"): HTMLPhraseElement; createElement(tagName: "base"): HTMLBaseElement; createElement(tagName: "basefont"): HTMLBaseFontElement; - createElement(tagName: "bdo"): HTMLPhraseElement; - createElement(tagName: "big"): HTMLPhraseElement; - createElement(tagName: "blockquote"): HTMLBlockElement; + createElement(tagName: "blockquote"): HTMLQuoteElement; createElement(tagName: "body"): HTMLBodyElement; createElement(tagName: "br"): HTMLBRElement; createElement(tagName: "button"): HTMLButtonElement; createElement(tagName: "canvas"): HTMLCanvasElement; createElement(tagName: "caption"): HTMLTableCaptionElement; - createElement(tagName: "center"): HTMLBlockElement; - createElement(tagName: "cite"): HTMLPhraseElement; - createElement(tagName: "code"): HTMLPhraseElement; createElement(tagName: "col"): HTMLTableColElement; createElement(tagName: "colgroup"): HTMLTableColElement; createElement(tagName: "datalist"): HTMLDataListElement; - createElement(tagName: "dd"): HTMLDDElement; createElement(tagName: "del"): HTMLModElement; - createElement(tagName: "dfn"): HTMLPhraseElement; createElement(tagName: "dir"): HTMLDirectoryElement; createElement(tagName: "div"): HTMLDivElement; createElement(tagName: "dl"): HTMLDListElement; - createElement(tagName: "dt"): HTMLDTElement; - createElement(tagName: "em"): HTMLPhraseElement; createElement(tagName: "embed"): HTMLEmbedElement; createElement(tagName: "fieldset"): HTMLFieldSetElement; createElement(tagName: "font"): HTMLFontElement; @@ -7508,52 +8560,41 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven createElement(tagName: "head"): HTMLHeadElement; createElement(tagName: "hr"): HTMLHRElement; createElement(tagName: "html"): HTMLHtmlElement; - createElement(tagName: "i"): HTMLPhraseElement; createElement(tagName: "iframe"): HTMLIFrameElement; createElement(tagName: "img"): HTMLImageElement; createElement(tagName: "input"): HTMLInputElement; createElement(tagName: "ins"): HTMLModElement; - createElement(tagName: "isindex"): HTMLIsIndexElement; - createElement(tagName: "kbd"): HTMLPhraseElement; - createElement(tagName: "keygen"): HTMLBlockElement; + createElement(tagName: "isindex"): HTMLUnknownElement; createElement(tagName: "label"): HTMLLabelElement; createElement(tagName: "legend"): HTMLLegendElement; createElement(tagName: "li"): HTMLLIElement; createElement(tagName: "link"): HTMLLinkElement; - createElement(tagName: "listing"): HTMLBlockElement; + createElement(tagName: "listing"): HTMLPreElement; createElement(tagName: "map"): HTMLMapElement; createElement(tagName: "marquee"): HTMLMarqueeElement; createElement(tagName: "menu"): HTMLMenuElement; createElement(tagName: "meta"): HTMLMetaElement; - createElement(tagName: "nextid"): HTMLNextIdElement; - createElement(tagName: "nobr"): HTMLPhraseElement; + createElement(tagName: "meter"): HTMLMeterElement; + createElement(tagName: "nextid"): HTMLUnknownElement; createElement(tagName: "object"): HTMLObjectElement; createElement(tagName: "ol"): HTMLOListElement; createElement(tagName: "optgroup"): HTMLOptGroupElement; createElement(tagName: "option"): HTMLOptionElement; createElement(tagName: "p"): HTMLParagraphElement; createElement(tagName: "param"): HTMLParamElement; - createElement(tagName: "plaintext"): HTMLBlockElement; + createElement(tagName: "picture"): HTMLPictureElement; createElement(tagName: "pre"): HTMLPreElement; createElement(tagName: "progress"): HTMLProgressElement; createElement(tagName: "q"): HTMLQuoteElement; - createElement(tagName: "rt"): HTMLPhraseElement; - createElement(tagName: "ruby"): HTMLPhraseElement; - createElement(tagName: "s"): HTMLPhraseElement; - createElement(tagName: "samp"): HTMLPhraseElement; createElement(tagName: "script"): HTMLScriptElement; createElement(tagName: "select"): HTMLSelectElement; - createElement(tagName: "small"): HTMLPhraseElement; createElement(tagName: "source"): HTMLSourceElement; createElement(tagName: "span"): HTMLSpanElement; - createElement(tagName: "strike"): HTMLPhraseElement; - createElement(tagName: "strong"): HTMLPhraseElement; createElement(tagName: "style"): HTMLStyleElement; - createElement(tagName: "sub"): HTMLPhraseElement; - createElement(tagName: "sup"): HTMLPhraseElement; createElement(tagName: "table"): HTMLTableElement; createElement(tagName: "tbody"): HTMLTableSectionElement; createElement(tagName: "td"): HTMLTableDataCellElement; + createElement(tagName: "template"): HTMLTemplateElement; createElement(tagName: "textarea"): HTMLTextAreaElement; createElement(tagName: "tfoot"): HTMLTableSectionElement; createElement(tagName: "th"): HTMLTableHeaderCellElement; @@ -7561,14 +8602,12 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven createElement(tagName: "title"): HTMLTitleElement; createElement(tagName: "tr"): HTMLTableRowElement; createElement(tagName: "track"): HTMLTrackElement; - createElement(tagName: "tt"): HTMLPhraseElement; - createElement(tagName: "u"): HTMLPhraseElement; createElement(tagName: "ul"): HTMLUListElement; - createElement(tagName: "var"): HTMLPhraseElement; createElement(tagName: "video"): HTMLVideoElement; createElement(tagName: "x-ms-webview"): MSHTMLWebViewElement; - createElement(tagName: "xmp"): HTMLBlockElement; + createElement(tagName: "xmp"): HTMLPreElement; createElement(tagName: string): HTMLElement; + createElementNS(namespaceURI: "http://www.w3.org/1999/xhtml", qualifiedName: string): HTMLElement createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "a"): SVGAElement createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "circle"): SVGCircleElement createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "clipPath"): SVGClipPathElement @@ -7631,7 +8670,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "use"): SVGUseElement createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: "view"): SVGViewElement createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: string): SVGElement - createElementNS(namespaceURI: string, qualifiedName: string): Element; + createElementNS(namespaceURI: string | null, qualifiedName: string): Element; createExpression(expression: string, resolver: XPathNSResolver): XPathExpression; createNSResolver(nodeResolver: Node): XPathNSResolver; /** @@ -7652,7 +8691,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param data String that specifies the nodeValue property of the text node. */ createTextNode(data: string): Text; - createTouch(view: any, target: EventTarget, identifier: number, pageX: number, pageY: number, screenX: number, screenY: number): Touch; + createTouch(view: Window, target: EventTarget, identifier: number, pageX: number, pageY: number, screenX: number, screenY: number): Touch; createTouchList(...touches: Touch[]): TouchList; /** * Creates a TreeWalker object that you can use to traverse filtered lists of nodes or elements in a document. @@ -7691,56 +8730,56 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Returns a reference to the first object with the specified value of the ID or NAME attribute. * @param elementId String that specifies the ID value. Case-insensitive. */ - getElementById(elementId: string): HTMLElement; - getElementsByClassName(classNames: string): NodeListOf; + getElementById(elementId: string): HTMLElement | null; + getElementsByClassName(classNames: string): HTMLCollectionOf; /** * Gets a collection of objects based on the value of the NAME or ID attribute. * @param elementName Gets a collection of objects based on the value of the NAME or ID attribute. */ - getElementsByName(elementName: string): NodeListOf; + getElementsByName(elementName: string): NodeListOf; /** * Retrieves a collection of objects based on the specified element name. * @param name Specifies the name of an element. */ getElementsByTagName(tagname: "a"): NodeListOf; - getElementsByTagName(tagname: "abbr"): NodeListOf; - getElementsByTagName(tagname: "acronym"): NodeListOf; - getElementsByTagName(tagname: "address"): NodeListOf; + getElementsByTagName(tagname: "abbr"): NodeListOf; + getElementsByTagName(tagname: "acronym"): NodeListOf; + getElementsByTagName(tagname: "address"): NodeListOf; getElementsByTagName(tagname: "applet"): NodeListOf; getElementsByTagName(tagname: "area"): NodeListOf; getElementsByTagName(tagname: "article"): NodeListOf; getElementsByTagName(tagname: "aside"): NodeListOf; getElementsByTagName(tagname: "audio"): NodeListOf; - getElementsByTagName(tagname: "b"): NodeListOf; + getElementsByTagName(tagname: "b"): NodeListOf; getElementsByTagName(tagname: "base"): NodeListOf; getElementsByTagName(tagname: "basefont"): NodeListOf; - getElementsByTagName(tagname: "bdo"): NodeListOf; - getElementsByTagName(tagname: "big"): NodeListOf; - getElementsByTagName(tagname: "blockquote"): NodeListOf; + getElementsByTagName(tagname: "bdo"): NodeListOf; + getElementsByTagName(tagname: "big"): NodeListOf; + getElementsByTagName(tagname: "blockquote"): NodeListOf; getElementsByTagName(tagname: "body"): NodeListOf; getElementsByTagName(tagname: "br"): NodeListOf; getElementsByTagName(tagname: "button"): NodeListOf; getElementsByTagName(tagname: "canvas"): NodeListOf; getElementsByTagName(tagname: "caption"): NodeListOf; - getElementsByTagName(tagname: "center"): NodeListOf; + getElementsByTagName(tagname: "center"): NodeListOf; getElementsByTagName(tagname: "circle"): NodeListOf; - getElementsByTagName(tagname: "cite"): NodeListOf; + getElementsByTagName(tagname: "cite"): NodeListOf; getElementsByTagName(tagname: "clippath"): NodeListOf; - getElementsByTagName(tagname: "code"): NodeListOf; + getElementsByTagName(tagname: "code"): NodeListOf; getElementsByTagName(tagname: "col"): NodeListOf; getElementsByTagName(tagname: "colgroup"): NodeListOf; getElementsByTagName(tagname: "datalist"): NodeListOf; - getElementsByTagName(tagname: "dd"): NodeListOf; + getElementsByTagName(tagname: "dd"): NodeListOf; getElementsByTagName(tagname: "defs"): NodeListOf; getElementsByTagName(tagname: "del"): NodeListOf; getElementsByTagName(tagname: "desc"): NodeListOf; - getElementsByTagName(tagname: "dfn"): NodeListOf; + getElementsByTagName(tagname: "dfn"): NodeListOf; getElementsByTagName(tagname: "dir"): NodeListOf; getElementsByTagName(tagname: "div"): NodeListOf; getElementsByTagName(tagname: "dl"): NodeListOf; - getElementsByTagName(tagname: "dt"): NodeListOf; + getElementsByTagName(tagname: "dt"): NodeListOf; getElementsByTagName(tagname: "ellipse"): NodeListOf; - getElementsByTagName(tagname: "em"): NodeListOf; + getElementsByTagName(tagname: "em"): NodeListOf; getElementsByTagName(tagname: "embed"): NodeListOf; getElementsByTagName(tagname: "feblend"): NodeListOf; getElementsByTagName(tagname: "fecolormatrix"): NodeListOf; @@ -7788,22 +8827,22 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "hgroup"): NodeListOf; getElementsByTagName(tagname: "hr"): NodeListOf; getElementsByTagName(tagname: "html"): NodeListOf; - getElementsByTagName(tagname: "i"): NodeListOf; + getElementsByTagName(tagname: "i"): NodeListOf; getElementsByTagName(tagname: "iframe"): NodeListOf; getElementsByTagName(tagname: "image"): NodeListOf; getElementsByTagName(tagname: "img"): NodeListOf; getElementsByTagName(tagname: "input"): NodeListOf; getElementsByTagName(tagname: "ins"): NodeListOf; - getElementsByTagName(tagname: "isindex"): NodeListOf; - getElementsByTagName(tagname: "kbd"): NodeListOf; - getElementsByTagName(tagname: "keygen"): NodeListOf; + getElementsByTagName(tagname: "isindex"): NodeListOf; + getElementsByTagName(tagname: "kbd"): NodeListOf; + getElementsByTagName(tagname: "keygen"): NodeListOf; getElementsByTagName(tagname: "label"): NodeListOf; getElementsByTagName(tagname: "legend"): NodeListOf; getElementsByTagName(tagname: "li"): NodeListOf; getElementsByTagName(tagname: "line"): NodeListOf; getElementsByTagName(tagname: "lineargradient"): NodeListOf; getElementsByTagName(tagname: "link"): NodeListOf; - getElementsByTagName(tagname: "listing"): NodeListOf; + getElementsByTagName(tagname: "listing"): NodeListOf; getElementsByTagName(tagname: "map"): NodeListOf; getElementsByTagName(tagname: "mark"): NodeListOf; getElementsByTagName(tagname: "marker"): NodeListOf; @@ -7812,9 +8851,10 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "menu"): NodeListOf; getElementsByTagName(tagname: "meta"): NodeListOf; getElementsByTagName(tagname: "metadata"): NodeListOf; + getElementsByTagName(tagname: "meter"): NodeListOf; getElementsByTagName(tagname: "nav"): NodeListOf; - getElementsByTagName(tagname: "nextid"): NodeListOf; - getElementsByTagName(tagname: "nobr"): NodeListOf; + getElementsByTagName(tagname: "nextid"): NodeListOf; + getElementsByTagName(tagname: "nobr"): NodeListOf; getElementsByTagName(tagname: "noframes"): NodeListOf; getElementsByTagName(tagname: "noscript"): NodeListOf; getElementsByTagName(tagname: "object"): NodeListOf; @@ -7825,7 +8865,8 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "param"): NodeListOf; getElementsByTagName(tagname: "path"): NodeListOf; getElementsByTagName(tagname: "pattern"): NodeListOf; - getElementsByTagName(tagname: "plaintext"): NodeListOf; + getElementsByTagName(tagname: "picture"): NodeListOf; + getElementsByTagName(tagname: "plaintext"): NodeListOf; getElementsByTagName(tagname: "polygon"): NodeListOf; getElementsByTagName(tagname: "polyline"): NodeListOf; getElementsByTagName(tagname: "pre"): NodeListOf; @@ -7833,28 +8874,29 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "q"): NodeListOf; getElementsByTagName(tagname: "radialgradient"): NodeListOf; getElementsByTagName(tagname: "rect"): NodeListOf; - getElementsByTagName(tagname: "rt"): NodeListOf; - getElementsByTagName(tagname: "ruby"): NodeListOf; - getElementsByTagName(tagname: "s"): NodeListOf; - getElementsByTagName(tagname: "samp"): NodeListOf; + getElementsByTagName(tagname: "rt"): NodeListOf; + getElementsByTagName(tagname: "ruby"): NodeListOf; + getElementsByTagName(tagname: "s"): NodeListOf; + getElementsByTagName(tagname: "samp"): NodeListOf; getElementsByTagName(tagname: "script"): NodeListOf; getElementsByTagName(tagname: "section"): NodeListOf; getElementsByTagName(tagname: "select"): NodeListOf; - getElementsByTagName(tagname: "small"): NodeListOf; + getElementsByTagName(tagname: "small"): NodeListOf; getElementsByTagName(tagname: "source"): NodeListOf; getElementsByTagName(tagname: "span"): NodeListOf; getElementsByTagName(tagname: "stop"): NodeListOf; - getElementsByTagName(tagname: "strike"): NodeListOf; - getElementsByTagName(tagname: "strong"): NodeListOf; + getElementsByTagName(tagname: "strike"): NodeListOf; + getElementsByTagName(tagname: "strong"): NodeListOf; getElementsByTagName(tagname: "style"): NodeListOf; - getElementsByTagName(tagname: "sub"): NodeListOf; - getElementsByTagName(tagname: "sup"): NodeListOf; + getElementsByTagName(tagname: "sub"): NodeListOf; + getElementsByTagName(tagname: "sup"): NodeListOf; getElementsByTagName(tagname: "svg"): NodeListOf; getElementsByTagName(tagname: "switch"): NodeListOf; getElementsByTagName(tagname: "symbol"): NodeListOf; getElementsByTagName(tagname: "table"): NodeListOf; getElementsByTagName(tagname: "tbody"): NodeListOf; getElementsByTagName(tagname: "td"): NodeListOf; + getElementsByTagName(tagname: "template"): NodeListOf; getElementsByTagName(tagname: "text"): NodeListOf; getElementsByTagName(tagname: "textpath"): NodeListOf; getElementsByTagName(tagname: "textarea"): NodeListOf; @@ -7865,18 +8907,20 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven getElementsByTagName(tagname: "tr"): NodeListOf; getElementsByTagName(tagname: "track"): NodeListOf; getElementsByTagName(tagname: "tspan"): NodeListOf; - getElementsByTagName(tagname: "tt"): NodeListOf; - getElementsByTagName(tagname: "u"): NodeListOf; + getElementsByTagName(tagname: "tt"): NodeListOf; + getElementsByTagName(tagname: "u"): NodeListOf; getElementsByTagName(tagname: "ul"): NodeListOf; getElementsByTagName(tagname: "use"): NodeListOf; - getElementsByTagName(tagname: "var"): NodeListOf; + getElementsByTagName(tagname: "var"): NodeListOf; getElementsByTagName(tagname: "video"): NodeListOf; getElementsByTagName(tagname: "view"): NodeListOf; getElementsByTagName(tagname: "wbr"): NodeListOf; getElementsByTagName(tagname: "x-ms-webview"): NodeListOf; - getElementsByTagName(tagname: "xmp"): NodeListOf; + getElementsByTagName(tagname: "xmp"): NodeListOf; getElementsByTagName(tagname: string): NodeListOf; - getElementsByTagNameNS(namespaceURI: string, localName: string): NodeListOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: string, localName: string): HTMLCollectionOf; /** * Returns an object representing the current selection of the document that is loaded into the object displaying a webpage. */ @@ -7886,8 +8930,8 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven */ hasFocus(): boolean; importNode(importedNode: Node, deep: boolean): Node; - msElementsFromPoint(x: number, y: number): NodeList; - msElementsFromRect(left: number, top: number, width: number, height: number): NodeList; + msElementsFromPoint(x: number, y: number): NodeListOf; + msElementsFromRect(left: number, top: number, width: number, height: number): NodeListOf; /** * Opens a new window and loads a document specified by a given URL. Also, opens a new window that uses the url parameter and the name parameter to collect the output of the write method and the writeln method. * @param url Specifies a MIME type for the document. @@ -7943,101 +8987,103 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * @param content The text and HTML tags to write. */ writeln(...content: string[]): void; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "fullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "fullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mssitemodejumplistitemremoved", listener: (ev: MSSiteModeEvent) => any, useCapture?: boolean): void; - addEventListener(type: "msthumbnailclick", listener: (ev: MSSiteModeEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerlockchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointerlockerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "readystatechange", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stop", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSContentZoom", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureChange", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureDoubleTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureEnd", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureHold", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSInertiaStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSManipulationStateChanged", listener: (this: this, ev: MSManipulationEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerCancel", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerDown", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerEnter", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerLeave", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerMove", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOut", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOver", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerUp", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "abort", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "activate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforedeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "blur", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "canplay", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "canplaythrough", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "change", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "click", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "contextmenu", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dblclick", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "deactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drag", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragend", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragenter", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragleave", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragover", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragstart", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drop", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "durationchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "emptied", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (this: this, ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "focus", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "fullscreenchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "fullscreenerror", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "input", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "keydown", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keypress", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keyup", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadeddata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadedmetadata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "mousedown", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousemove", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseout", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseover", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseup", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mssitemodejumplistitemremoved", listener: (this: this, ev: MSSiteModeEvent) => any, useCapture?: boolean): void; + addEventListener(type: "msthumbnailclick", listener: (this: this, ev: MSSiteModeEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pause", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "play", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "playing", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "pointercancel", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerdown", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerenter", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerleave", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerlockchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "pointerlockerror", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "pointermove", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerout", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerover", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerup", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ratechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "readystatechange", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "reset", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "scroll", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "seeked", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "seeking", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "select", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "selectionchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "selectstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "stalled", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "stop", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "submit", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "suspend", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "timeupdate", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "touchcancel", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchend", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchmove", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchstart", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "volumechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "waiting", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenerror", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "wheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8046,7 +9092,7 @@ declare var Document: { new(): Document; } -interface DocumentFragment extends Node, NodeSelector { +interface DocumentFragment extends Node, NodeSelector, ParentNode { addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8056,12 +9102,12 @@ declare var DocumentFragment: { } interface DocumentType extends Node, ChildNode { - entities: NamedNodeMap; - internalSubset: string; - name: string; - notations: NamedNodeMap; - publicId: string; - systemId: string; + readonly entities: NamedNodeMap; + readonly internalSubset: string | null; + readonly name: string; + readonly notations: NamedNodeMap; + readonly publicId: string | null; + readonly systemId: string | null; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8071,7 +9117,7 @@ declare var DocumentType: { } interface DragEvent extends MouseEvent { - dataTransfer: DataTransfer; + readonly dataTransfer: DataTransfer; initDragEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, dataTransferArg: DataTransfer): void; msConvertURL(file: File, targetType: string, targetURL?: string): void; } @@ -8082,12 +9128,12 @@ declare var DragEvent: { } interface DynamicsCompressorNode extends AudioNode { - attack: AudioParam; - knee: AudioParam; - ratio: AudioParam; - reduction: AudioParam; - release: AudioParam; - threshold: AudioParam; + readonly attack: AudioParam; + readonly knee: AudioParam; + readonly ratio: AudioParam; + readonly reduction: AudioParam; + readonly release: AudioParam; + readonly threshold: AudioParam; } declare var DynamicsCompressorNode: { @@ -8095,106 +9141,115 @@ declare var DynamicsCompressorNode: { new(): DynamicsCompressorNode; } +interface EXT_frag_depth { +} + +declare var EXT_frag_depth: { + prototype: EXT_frag_depth; + new(): EXT_frag_depth; +} + interface EXT_texture_filter_anisotropic { - MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; - TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly TEXTURE_MAX_ANISOTROPY_EXT: number; } declare var EXT_texture_filter_anisotropic: { prototype: EXT_texture_filter_anisotropic; new(): EXT_texture_filter_anisotropic; - MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; - TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: number; + readonly TEXTURE_MAX_ANISOTROPY_EXT: number; } -interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelector, ChildNode { - classList: DOMTokenList; - clientHeight: number; - clientLeft: number; - clientTop: number; - clientWidth: number; +interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelector, ChildNode, ParentNode { + readonly classList: DOMTokenList; + className: string; + readonly clientHeight: number; + readonly clientLeft: number; + readonly clientTop: number; + readonly clientWidth: number; + id: string; msContentZoomFactor: number; - msRegionOverflow: string; - onariarequest: (ev: AriaRequestEvent) => any; - oncommand: (ev: CommandEvent) => any; - ongotpointercapture: (ev: PointerEvent) => any; - onlostpointercapture: (ev: PointerEvent) => any; - onmsgesturechange: (ev: MSGestureEvent) => any; - onmsgesturedoubletap: (ev: MSGestureEvent) => any; - onmsgestureend: (ev: MSGestureEvent) => any; - onmsgesturehold: (ev: MSGestureEvent) => any; - onmsgesturestart: (ev: MSGestureEvent) => any; - onmsgesturetap: (ev: MSGestureEvent) => any; - onmsgotpointercapture: (ev: MSPointerEvent) => any; - onmsinertiastart: (ev: MSGestureEvent) => any; - onmslostpointercapture: (ev: MSPointerEvent) => any; - onmspointercancel: (ev: MSPointerEvent) => any; - onmspointerdown: (ev: MSPointerEvent) => any; - onmspointerenter: (ev: MSPointerEvent) => any; - onmspointerleave: (ev: MSPointerEvent) => any; - onmspointermove: (ev: MSPointerEvent) => any; - onmspointerout: (ev: MSPointerEvent) => any; - onmspointerover: (ev: MSPointerEvent) => any; - onmspointerup: (ev: MSPointerEvent) => any; + readonly msRegionOverflow: string; + onariarequest: (this: this, ev: AriaRequestEvent) => any; + oncommand: (this: this, ev: CommandEvent) => any; + ongotpointercapture: (this: this, ev: PointerEvent) => any; + onlostpointercapture: (this: this, ev: PointerEvent) => any; + onmsgesturechange: (this: this, ev: MSGestureEvent) => any; + onmsgesturedoubletap: (this: this, ev: MSGestureEvent) => any; + onmsgestureend: (this: this, ev: MSGestureEvent) => any; + onmsgesturehold: (this: this, ev: MSGestureEvent) => any; + onmsgesturestart: (this: this, ev: MSGestureEvent) => any; + onmsgesturetap: (this: this, ev: MSGestureEvent) => any; + onmsgotpointercapture: (this: this, ev: MSPointerEvent) => any; + onmsinertiastart: (this: this, ev: MSGestureEvent) => any; + onmslostpointercapture: (this: this, ev: MSPointerEvent) => any; + onmspointercancel: (this: this, ev: MSPointerEvent) => any; + onmspointerdown: (this: this, ev: MSPointerEvent) => any; + onmspointerenter: (this: this, ev: MSPointerEvent) => any; + onmspointerleave: (this: this, ev: MSPointerEvent) => any; + onmspointermove: (this: this, ev: MSPointerEvent) => any; + onmspointerout: (this: this, ev: MSPointerEvent) => any; + onmspointerover: (this: this, ev: MSPointerEvent) => any; + onmspointerup: (this: this, ev: MSPointerEvent) => any; ontouchcancel: (ev: TouchEvent) => any; ontouchend: (ev: TouchEvent) => any; ontouchmove: (ev: TouchEvent) => any; ontouchstart: (ev: TouchEvent) => any; - onwebkitfullscreenchange: (ev: Event) => any; - onwebkitfullscreenerror: (ev: Event) => any; - scrollHeight: number; + onwebkitfullscreenchange: (this: this, ev: Event) => any; + onwebkitfullscreenerror: (this: this, ev: Event) => any; + readonly prefix: string | null; + readonly scrollHeight: number; scrollLeft: number; scrollTop: number; - scrollWidth: number; - tagName: string; - id: string; - className: string; + readonly scrollWidth: number; + readonly tagName: string; innerHTML: string; - getAttribute(name?: string): string; + getAttribute(name: string): string | null; getAttributeNS(namespaceURI: string, localName: string): string; getAttributeNode(name: string): Attr; getAttributeNodeNS(namespaceURI: string, localName: string): Attr; getBoundingClientRect(): ClientRect; getClientRects(): ClientRectList; getElementsByTagName(name: "a"): NodeListOf; - getElementsByTagName(name: "abbr"): NodeListOf; - getElementsByTagName(name: "acronym"): NodeListOf; - getElementsByTagName(name: "address"): NodeListOf; + getElementsByTagName(name: "abbr"): NodeListOf; + getElementsByTagName(name: "acronym"): NodeListOf; + getElementsByTagName(name: "address"): NodeListOf; getElementsByTagName(name: "applet"): NodeListOf; getElementsByTagName(name: "area"): NodeListOf; getElementsByTagName(name: "article"): NodeListOf; getElementsByTagName(name: "aside"): NodeListOf; getElementsByTagName(name: "audio"): NodeListOf; - getElementsByTagName(name: "b"): NodeListOf; + getElementsByTagName(name: "b"): NodeListOf; getElementsByTagName(name: "base"): NodeListOf; getElementsByTagName(name: "basefont"): NodeListOf; - getElementsByTagName(name: "bdo"): NodeListOf; - getElementsByTagName(name: "big"): NodeListOf; - getElementsByTagName(name: "blockquote"): NodeListOf; + getElementsByTagName(name: "bdo"): NodeListOf; + getElementsByTagName(name: "big"): NodeListOf; + getElementsByTagName(name: "blockquote"): NodeListOf; getElementsByTagName(name: "body"): NodeListOf; getElementsByTagName(name: "br"): NodeListOf; getElementsByTagName(name: "button"): NodeListOf; getElementsByTagName(name: "canvas"): NodeListOf; getElementsByTagName(name: "caption"): NodeListOf; - getElementsByTagName(name: "center"): NodeListOf; + getElementsByTagName(name: "center"): NodeListOf; getElementsByTagName(name: "circle"): NodeListOf; - getElementsByTagName(name: "cite"): NodeListOf; + getElementsByTagName(name: "cite"): NodeListOf; getElementsByTagName(name: "clippath"): NodeListOf; - getElementsByTagName(name: "code"): NodeListOf; + getElementsByTagName(name: "code"): NodeListOf; getElementsByTagName(name: "col"): NodeListOf; getElementsByTagName(name: "colgroup"): NodeListOf; getElementsByTagName(name: "datalist"): NodeListOf; - getElementsByTagName(name: "dd"): NodeListOf; + getElementsByTagName(name: "dd"): NodeListOf; getElementsByTagName(name: "defs"): NodeListOf; getElementsByTagName(name: "del"): NodeListOf; getElementsByTagName(name: "desc"): NodeListOf; - getElementsByTagName(name: "dfn"): NodeListOf; + getElementsByTagName(name: "dfn"): NodeListOf; getElementsByTagName(name: "dir"): NodeListOf; getElementsByTagName(name: "div"): NodeListOf; getElementsByTagName(name: "dl"): NodeListOf; - getElementsByTagName(name: "dt"): NodeListOf; + getElementsByTagName(name: "dt"): NodeListOf; getElementsByTagName(name: "ellipse"): NodeListOf; - getElementsByTagName(name: "em"): NodeListOf; + getElementsByTagName(name: "em"): NodeListOf; getElementsByTagName(name: "embed"): NodeListOf; getElementsByTagName(name: "feblend"): NodeListOf; getElementsByTagName(name: "fecolormatrix"): NodeListOf; @@ -8242,22 +9297,22 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "hgroup"): NodeListOf; getElementsByTagName(name: "hr"): NodeListOf; getElementsByTagName(name: "html"): NodeListOf; - getElementsByTagName(name: "i"): NodeListOf; + getElementsByTagName(name: "i"): NodeListOf; getElementsByTagName(name: "iframe"): NodeListOf; getElementsByTagName(name: "image"): NodeListOf; getElementsByTagName(name: "img"): NodeListOf; getElementsByTagName(name: "input"): NodeListOf; getElementsByTagName(name: "ins"): NodeListOf; - getElementsByTagName(name: "isindex"): NodeListOf; - getElementsByTagName(name: "kbd"): NodeListOf; - getElementsByTagName(name: "keygen"): NodeListOf; + getElementsByTagName(name: "isindex"): NodeListOf; + getElementsByTagName(name: "kbd"): NodeListOf; + getElementsByTagName(name: "keygen"): NodeListOf; getElementsByTagName(name: "label"): NodeListOf; getElementsByTagName(name: "legend"): NodeListOf; getElementsByTagName(name: "li"): NodeListOf; getElementsByTagName(name: "line"): NodeListOf; getElementsByTagName(name: "lineargradient"): NodeListOf; getElementsByTagName(name: "link"): NodeListOf; - getElementsByTagName(name: "listing"): NodeListOf; + getElementsByTagName(name: "listing"): NodeListOf; getElementsByTagName(name: "map"): NodeListOf; getElementsByTagName(name: "mark"): NodeListOf; getElementsByTagName(name: "marker"): NodeListOf; @@ -8266,9 +9321,10 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "menu"): NodeListOf; getElementsByTagName(name: "meta"): NodeListOf; getElementsByTagName(name: "metadata"): NodeListOf; + getElementsByTagName(name: "meter"): NodeListOf; getElementsByTagName(name: "nav"): NodeListOf; - getElementsByTagName(name: "nextid"): NodeListOf; - getElementsByTagName(name: "nobr"): NodeListOf; + getElementsByTagName(name: "nextid"): NodeListOf; + getElementsByTagName(name: "nobr"): NodeListOf; getElementsByTagName(name: "noframes"): NodeListOf; getElementsByTagName(name: "noscript"): NodeListOf; getElementsByTagName(name: "object"): NodeListOf; @@ -8279,7 +9335,8 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "param"): NodeListOf; getElementsByTagName(name: "path"): NodeListOf; getElementsByTagName(name: "pattern"): NodeListOf; - getElementsByTagName(name: "plaintext"): NodeListOf; + getElementsByTagName(name: "picture"): NodeListOf; + getElementsByTagName(name: "plaintext"): NodeListOf; getElementsByTagName(name: "polygon"): NodeListOf; getElementsByTagName(name: "polyline"): NodeListOf; getElementsByTagName(name: "pre"): NodeListOf; @@ -8287,28 +9344,29 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "q"): NodeListOf; getElementsByTagName(name: "radialgradient"): NodeListOf; getElementsByTagName(name: "rect"): NodeListOf; - getElementsByTagName(name: "rt"): NodeListOf; - getElementsByTagName(name: "ruby"): NodeListOf; - getElementsByTagName(name: "s"): NodeListOf; - getElementsByTagName(name: "samp"): NodeListOf; + getElementsByTagName(name: "rt"): NodeListOf; + getElementsByTagName(name: "ruby"): NodeListOf; + getElementsByTagName(name: "s"): NodeListOf; + getElementsByTagName(name: "samp"): NodeListOf; getElementsByTagName(name: "script"): NodeListOf; getElementsByTagName(name: "section"): NodeListOf; getElementsByTagName(name: "select"): NodeListOf; - getElementsByTagName(name: "small"): NodeListOf; + getElementsByTagName(name: "small"): NodeListOf; getElementsByTagName(name: "source"): NodeListOf; getElementsByTagName(name: "span"): NodeListOf; getElementsByTagName(name: "stop"): NodeListOf; - getElementsByTagName(name: "strike"): NodeListOf; - getElementsByTagName(name: "strong"): NodeListOf; + getElementsByTagName(name: "strike"): NodeListOf; + getElementsByTagName(name: "strong"): NodeListOf; getElementsByTagName(name: "style"): NodeListOf; - getElementsByTagName(name: "sub"): NodeListOf; - getElementsByTagName(name: "sup"): NodeListOf; + getElementsByTagName(name: "sub"): NodeListOf; + getElementsByTagName(name: "sup"): NodeListOf; getElementsByTagName(name: "svg"): NodeListOf; getElementsByTagName(name: "switch"): NodeListOf; getElementsByTagName(name: "symbol"): NodeListOf; getElementsByTagName(name: "table"): NodeListOf; getElementsByTagName(name: "tbody"): NodeListOf; getElementsByTagName(name: "td"): NodeListOf; + getElementsByTagName(name: "template"): NodeListOf; getElementsByTagName(name: "text"): NodeListOf; getElementsByTagName(name: "textpath"): NodeListOf; getElementsByTagName(name: "textarea"): NodeListOf; @@ -8319,18 +9377,20 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getElementsByTagName(name: "tr"): NodeListOf; getElementsByTagName(name: "track"): NodeListOf; getElementsByTagName(name: "tspan"): NodeListOf; - getElementsByTagName(name: "tt"): NodeListOf; - getElementsByTagName(name: "u"): NodeListOf; + getElementsByTagName(name: "tt"): NodeListOf; + getElementsByTagName(name: "u"): NodeListOf; getElementsByTagName(name: "ul"): NodeListOf; getElementsByTagName(name: "use"): NodeListOf; - getElementsByTagName(name: "var"): NodeListOf; + getElementsByTagName(name: "var"): NodeListOf; getElementsByTagName(name: "video"): NodeListOf; getElementsByTagName(name: "view"): NodeListOf; getElementsByTagName(name: "wbr"): NodeListOf; getElementsByTagName(name: "x-ms-webview"): NodeListOf; - getElementsByTagName(name: "xmp"): NodeListOf; + getElementsByTagName(name: "xmp"): NodeListOf; getElementsByTagName(name: string): NodeListOf; - getElementsByTagNameNS(namespaceURI: string, localName: string): NodeListOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: string, localName: string): HTMLCollectionOf; hasAttribute(name: string): boolean; hasAttributeNS(namespaceURI: string, localName: string): boolean; msGetRegionContent(): MSRangeCollection; @@ -8355,42 +9415,53 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec webkitRequestFullscreen(): void; getElementsByClassName(classNames: string): NodeListOf; matches(selector: string): boolean; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + closest(selector: string): Element | null; + scrollIntoView(arg?: boolean | ScrollIntoViewOptions): void; + scroll(options?: ScrollToOptions): void; + scroll(x: number, y: number): void; + scrollTo(options?: ScrollToOptions): void; + scrollTo(x: number, y: number): void; + scrollBy(options?: ScrollToOptions): void; + scrollBy(x: number, y: number): void; + insertAdjacentElement(position: string, insertedElement: Element): Element | null; + insertAdjacentHTML(where: string, html: string): void; + insertAdjacentText(where: string, text: string): void; + addEventListener(type: "MSGestureChange", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureDoubleTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureEnd", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureHold", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGotPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSInertiaStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSLostPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerCancel", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerDown", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerEnter", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerLeave", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerMove", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOut", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOver", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerUp", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ariarequest", listener: (this: this, ev: AriaRequestEvent) => any, useCapture?: boolean): void; + addEventListener(type: "command", listener: (this: this, ev: CommandEvent) => any, useCapture?: boolean): void; + addEventListener(type: "gotpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "lostpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointercancel", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerdown", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerenter", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerleave", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointermove", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerout", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerover", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerup", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchcancel", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchend", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchmove", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchstart", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenerror", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "wheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8400,11 +9471,11 @@ declare var Element: { } interface ErrorEvent extends Event { - colno: number; - error: any; - filename: string; - lineno: number; - message: string; + readonly colno: number; + readonly error: any; + readonly filename: string; + readonly lineno: number; + readonly message: string; initErrorEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, messageArg: string, filenameArg: string, linenoArg: number): void; } @@ -8414,39 +9485,39 @@ declare var ErrorEvent: { } interface Event { - bubbles: boolean; + readonly bubbles: boolean; cancelBubble: boolean; - cancelable: boolean; - currentTarget: EventTarget; - defaultPrevented: boolean; - eventPhase: number; - isTrusted: boolean; + readonly cancelable: boolean; + readonly currentTarget: EventTarget; + readonly defaultPrevented: boolean; + readonly eventPhase: number; + readonly isTrusted: boolean; returnValue: boolean; - srcElement: Element; - target: EventTarget; - timeStamp: number; - type: string; + readonly srcElement: Element | null; + readonly target: EventTarget; + readonly timeStamp: number; + readonly type: string; initEvent(eventTypeArg: string, canBubbleArg: boolean, cancelableArg: boolean): void; preventDefault(): void; stopImmediatePropagation(): void; stopPropagation(): void; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; + readonly AT_TARGET: number; + readonly BUBBLING_PHASE: number; + readonly CAPTURING_PHASE: number; } declare var Event: { prototype: Event; new(type: string, eventInitDict?: EventInit): Event; - AT_TARGET: number; - BUBBLING_PHASE: number; - CAPTURING_PHASE: number; + readonly AT_TARGET: number; + readonly BUBBLING_PHASE: number; + readonly CAPTURING_PHASE: number; } interface EventTarget { - addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; + addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; dispatchEvent(evt: Event): boolean; - removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; + removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var EventTarget: { @@ -8463,8 +9534,9 @@ declare var External: { } interface File extends Blob { - lastModifiedDate: any; - name: string; + readonly lastModifiedDate: any; + readonly name: string; + readonly webkitRelativePath: string; } declare var File: { @@ -8473,7 +9545,7 @@ declare var File: { } interface FileList { - length: number; + readonly length: number; item(index: number): File; [index: number]: File; } @@ -8484,7 +9556,7 @@ declare var FileList: { } interface FileReader extends EventTarget, MSBaseReader { - error: DOMError; + readonly error: DOMError; readAsArrayBuffer(blob: Blob): void; readAsBinaryString(blob: Blob): void; readAsDataURL(blob: Blob): void; @@ -8498,7 +9570,7 @@ declare var FileReader: { } interface FocusEvent extends UIEvent { - relatedTarget: EventTarget; + readonly relatedTarget: EventTarget; initFocusEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, relatedTargetArg: EventTarget): void; } @@ -8517,7 +9589,7 @@ declare var FormData: { } interface GainNode extends AudioNode { - gain: AudioParam; + readonly gain: AudioParam; } declare var GainNode: { @@ -8526,13 +9598,13 @@ declare var GainNode: { } interface Gamepad { - axes: number[]; - buttons: GamepadButton[]; - connected: boolean; - id: string; - index: number; - mapping: string; - timestamp: number; + readonly axes: number[]; + readonly buttons: GamepadButton[]; + readonly connected: boolean; + readonly id: string; + readonly index: number; + readonly mapping: string; + readonly timestamp: number; } declare var Gamepad: { @@ -8541,8 +9613,8 @@ declare var Gamepad: { } interface GamepadButton { - pressed: boolean; - value: number; + readonly pressed: boolean; + readonly value: number; } declare var GamepadButton: { @@ -8551,7 +9623,7 @@ declare var GamepadButton: { } interface GamepadEvent extends Event { - gamepad: Gamepad; + readonly gamepad: Gamepad; } declare var GamepadEvent: { @@ -8589,6 +9661,7 @@ interface HTMLAnchorElement extends HTMLElement { * Sets or retrieves the coordinates of the object. */ coords: string; + download: string; /** * Contains the anchor portion of the URL including the hash sign (#). */ @@ -8609,12 +9682,12 @@ interface HTMLAnchorElement extends HTMLElement { * Sets or retrieves the language code of the object. */ hreflang: string; - mimeType: string; + readonly mimeType: string; /** * Sets or retrieves the shape of the object. */ name: string; - nameProp: string; + readonly nameProp: string; /** * Contains the pathname of the URL. */ @@ -8627,7 +9700,7 @@ interface HTMLAnchorElement extends HTMLElement { * Contains the protocol of the URL. */ protocol: string; - protocolLong: string; + readonly protocolLong: string; /** * Sets or retrieves the relationship between the object and the destination of the link. */ @@ -8669,7 +9742,7 @@ interface HTMLAppletElement extends HTMLElement { /** * Retrieves a string of the URL where the object tag can be found. This is often the href of the document that the object is in, or the value set by a base element. */ - BaseHref: string; + readonly BaseHref: string; align: string; /** * Sets or retrieves a text alternative to the graphic. @@ -8696,7 +9769,7 @@ interface HTMLAppletElement extends HTMLElement { /** * Address of a pointer to the document this page or frame contains. If there is no document, then null will be returned. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Sets or retrieves the URL that references the data of the object. */ @@ -8705,7 +9778,7 @@ interface HTMLAppletElement extends HTMLElement { * Sets or retrieves a character string that can be used to implement your own declare functionality for the object. */ declare: boolean; - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the height of the object. */ @@ -8715,7 +9788,7 @@ interface HTMLAppletElement extends HTMLElement { * Sets or retrieves the shape of the object. */ name: string; - object: string; + object: string | null; /** * Sets or retrieves a message to be displayed while an object is loading. */ @@ -8746,6 +9819,7 @@ interface HTMLAreaElement extends HTMLElement { * Sets or retrieves the coordinates of the object. */ coords: string; + download: string; /** * Sets or retrieves the subsection of the href property that follows the number sign (#). */ @@ -8871,23 +9945,6 @@ declare var HTMLBaseFontElement: { new(): HTMLBaseFontElement; } -interface HTMLBlockElement extends HTMLElement { - /** - * Sets or retrieves reference information about the object. - */ - cite: string; - clear: string; - /** - * Sets or retrieves the width of the object. - */ - width: number; -} - -declare var HTMLBlockElement: { - prototype: HTMLBlockElement; - new(): HTMLBlockElement; -} - interface HTMLBodyElement extends HTMLElement { aLink: any; background: string; @@ -8895,147 +9952,147 @@ interface HTMLBodyElement extends HTMLElement { bgProperties: string; link: any; noWrap: boolean; - onafterprint: (ev: Event) => any; - onbeforeprint: (ev: Event) => any; - onbeforeunload: (ev: BeforeUnloadEvent) => any; - onblur: (ev: FocusEvent) => any; - onerror: (ev: Event) => any; - onfocus: (ev: FocusEvent) => any; - onhashchange: (ev: HashChangeEvent) => any; - onload: (ev: Event) => any; - onmessage: (ev: MessageEvent) => any; - onoffline: (ev: Event) => any; - ononline: (ev: Event) => any; - onorientationchange: (ev: Event) => any; - onpagehide: (ev: PageTransitionEvent) => any; - onpageshow: (ev: PageTransitionEvent) => any; - onpopstate: (ev: PopStateEvent) => any; - onresize: (ev: UIEvent) => any; - onstorage: (ev: StorageEvent) => any; - onunload: (ev: Event) => any; + onafterprint: (this: this, ev: Event) => any; + onbeforeprint: (this: this, ev: Event) => any; + onbeforeunload: (this: this, ev: BeforeUnloadEvent) => any; + onblur: (this: this, ev: FocusEvent) => any; + onerror: (this: this, ev: ErrorEvent) => any; + onfocus: (this: this, ev: FocusEvent) => any; + onhashchange: (this: this, ev: HashChangeEvent) => any; + onload: (this: this, ev: Event) => any; + onmessage: (this: this, ev: MessageEvent) => any; + onoffline: (this: this, ev: Event) => any; + ononline: (this: this, ev: Event) => any; + onorientationchange: (this: this, ev: Event) => any; + onpagehide: (this: this, ev: PageTransitionEvent) => any; + onpageshow: (this: this, ev: PageTransitionEvent) => any; + onpopstate: (this: this, ev: PopStateEvent) => any; + onresize: (this: this, ev: UIEvent) => any; + onstorage: (this: this, ev: StorageEvent) => any; + onunload: (this: this, ev: Event) => any; text: any; vLink: any; - createTextRange(): TextRange; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "afterprint", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "popstate", listener: (ev: PopStateEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "resize", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "storage", listener: (ev: StorageEvent) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "unload", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSContentZoom", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureChange", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureDoubleTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureEnd", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureHold", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGotPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSInertiaStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSLostPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSManipulationStateChanged", listener: (this: this, ev: MSManipulationEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerCancel", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerDown", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerEnter", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerLeave", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerMove", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOut", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOver", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerUp", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "abort", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "activate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "afterprint", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ariarequest", listener: (this: this, ev: AriaRequestEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforedeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforeprint", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "beforeunload", listener: (this: this, ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; + addEventListener(type: "blur", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "blur", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "canplay", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "canplaythrough", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "change", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "click", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "command", listener: (this: this, ev: CommandEvent) => any, useCapture?: boolean): void; + addEventListener(type: "contextmenu", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cuechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dblclick", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "deactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drag", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragend", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragenter", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragleave", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragover", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragstart", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drop", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "durationchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "emptied", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (this: this, ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "focus", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "focus", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "gotpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "hashchange", listener: (this: this, ev: HashChangeEvent) => any, useCapture?: boolean): void; + addEventListener(type: "input", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "keydown", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keypress", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keyup", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadeddata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadedmetadata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "lostpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "message", listener: (this: this, ev: MessageEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousedown", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseenter", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseleave", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousemove", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseout", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseover", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseup", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "offline", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "online", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "orientationchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "pagehide", listener: (this: this, ev: PageTransitionEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pageshow", listener: (this: this, ev: PageTransitionEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pause", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "play", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "playing", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "pointercancel", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerdown", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerenter", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerleave", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointermove", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerout", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerover", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerup", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "popstate", listener: (this: this, ev: PopStateEvent) => any, useCapture?: boolean): void; + addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ratechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "reset", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "resize", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "scroll", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "seeked", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "seeking", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "select", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "selectstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "stalled", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "storage", listener: (this: this, ev: StorageEvent) => any, useCapture?: boolean): void; + addEventListener(type: "submit", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "suspend", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "timeupdate", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "touchcancel", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchend", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchmove", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchstart", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "unload", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "volumechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "waiting", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenerror", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "wheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9053,7 +10110,7 @@ interface HTMLButtonElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Overrides the action attribute (where the data on a form is sent) on the parent form element. */ @@ -9086,11 +10143,11 @@ interface HTMLButtonElement extends HTMLElement { /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Sets or retrieves the default or selected value of the control. */ @@ -9098,15 +10155,11 @@ interface HTMLButtonElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; /** * Sets a custom error message that is displayed when a form is submitted. * @param error Sets a custom error message that is displayed when a form is submitted. @@ -9132,9 +10185,9 @@ interface HTMLCanvasElement extends HTMLElement { * Returns an object that provides methods and properties for drawing and manipulating images and graphics on a canvas element in a document. A context object includes information about colors, line widths, fonts, and other graphic parameters that can be drawn on a canvas. * @param contextId The identifier (ID) of the type of canvas to create. Internet Explorer 9 and Internet Explorer 10 support only a 2-D context using canvas.getContext("2d"); IE11 Preview also supports 3-D or WebGL context using canvas.getContext("experimental-webgl"); */ - getContext(contextId: "2d"): CanvasRenderingContext2D; - getContext(contextId: "experimental-webgl"): WebGLRenderingContext; - getContext(contextId: string, ...args: any[]): CanvasRenderingContext2D | WebGLRenderingContext; + getContext(contextId: "2d", contextAttributes?: Canvas2DContextAttributes): CanvasRenderingContext2D | null; + getContext(contextId: "webgl" | "experimental-webgl", contextAttributes?: WebGLContextAttributes): WebGLRenderingContext | null; + getContext(contextId: string, contextAttributes?: {}): CanvasRenderingContext2D | WebGLRenderingContext | null; /** * Returns a blob object encoded as a Portable Network Graphics (PNG) format from a canvas image or drawing. */ @@ -9144,6 +10197,7 @@ interface HTMLCanvasElement extends HTMLElement { * @param type The standard MIME type for the image format to return. If you do not specify this parameter, the default value is a PNG format image. */ toDataURL(type?: string, ...args: any[]): string; + toBlob(callback: (result: Blob | null) => void, type?: string, ...arguments: any[]): void; } declare var HTMLCanvasElement: { @@ -9155,11 +10209,11 @@ interface HTMLCollection { /** * Sets or retrieves the number of objects in a collection. */ - length: number; + readonly length: number; /** * Retrieves an object from various collections. */ - item(nameOrIndex?: any, optionalIndex?: any): Element; + item(index: number): Element; /** * Retrieves a select object or an object from an options collection. */ @@ -9172,18 +10226,6 @@ declare var HTMLCollection: { new(): HTMLCollection; } -interface HTMLDDElement extends HTMLElement { - /** - * Sets or retrieves whether the browser automatically performs wordwrap. - */ - noWrap: boolean; -} - -declare var HTMLDDElement: { - prototype: HTMLDDElement; - new(): HTMLDDElement; -} - interface HTMLDListElement extends HTMLElement { compact: boolean; } @@ -9193,20 +10235,8 @@ declare var HTMLDListElement: { new(): HTMLDListElement; } -interface HTMLDTElement extends HTMLElement { - /** - * Sets or retrieves whether the browser automatically performs wordwrap. - */ - noWrap: boolean; -} - -declare var HTMLDTElement: { - prototype: HTMLDTElement; - new(): HTMLDTElement; -} - interface HTMLDataListElement extends HTMLElement { - options: HTMLCollection; + options: HTMLCollectionOf; } declare var HTMLDataListElement: { @@ -9249,206 +10279,204 @@ declare var HTMLDocument: { interface HTMLElement extends Element { accessKey: string; - children: HTMLCollection; + readonly children: HTMLCollection; contentEditable: string; - dataset: DOMStringMap; + readonly dataset: DOMStringMap; dir: string; draggable: boolean; hidden: boolean; hideFocus: boolean; innerHTML: string; innerText: string; - isContentEditable: boolean; + readonly isContentEditable: boolean; lang: string; - offsetHeight: number; - offsetLeft: number; - offsetParent: Element; - offsetTop: number; - offsetWidth: number; - onabort: (ev: Event) => any; - onactivate: (ev: UIEvent) => any; - onbeforeactivate: (ev: UIEvent) => any; - onbeforecopy: (ev: DragEvent) => any; - onbeforecut: (ev: DragEvent) => any; - onbeforedeactivate: (ev: UIEvent) => any; - onbeforepaste: (ev: DragEvent) => any; - onblur: (ev: FocusEvent) => any; - oncanplay: (ev: Event) => any; - oncanplaythrough: (ev: Event) => any; - onchange: (ev: Event) => any; - onclick: (ev: MouseEvent) => any; - oncontextmenu: (ev: PointerEvent) => any; - oncopy: (ev: DragEvent) => any; - oncuechange: (ev: Event) => any; - oncut: (ev: DragEvent) => any; - ondblclick: (ev: MouseEvent) => any; - ondeactivate: (ev: UIEvent) => any; - ondrag: (ev: DragEvent) => any; - ondragend: (ev: DragEvent) => any; - ondragenter: (ev: DragEvent) => any; - ondragleave: (ev: DragEvent) => any; - ondragover: (ev: DragEvent) => any; - ondragstart: (ev: DragEvent) => any; - ondrop: (ev: DragEvent) => any; - ondurationchange: (ev: Event) => any; - onemptied: (ev: Event) => any; - onended: (ev: Event) => any; - onerror: (ev: Event) => any; - onfocus: (ev: FocusEvent) => any; - oninput: (ev: Event) => any; - onkeydown: (ev: KeyboardEvent) => any; - onkeypress: (ev: KeyboardEvent) => any; - onkeyup: (ev: KeyboardEvent) => any; - onload: (ev: Event) => any; - onloadeddata: (ev: Event) => any; - onloadedmetadata: (ev: Event) => any; - onloadstart: (ev: Event) => any; - onmousedown: (ev: MouseEvent) => any; - onmouseenter: (ev: MouseEvent) => any; - onmouseleave: (ev: MouseEvent) => any; - onmousemove: (ev: MouseEvent) => any; - onmouseout: (ev: MouseEvent) => any; - onmouseover: (ev: MouseEvent) => any; - onmouseup: (ev: MouseEvent) => any; - onmousewheel: (ev: MouseWheelEvent) => any; - onmscontentzoom: (ev: UIEvent) => any; - onmsmanipulationstatechanged: (ev: MSManipulationEvent) => any; - onpaste: (ev: DragEvent) => any; - onpause: (ev: Event) => any; - onplay: (ev: Event) => any; - onplaying: (ev: Event) => any; - onprogress: (ev: ProgressEvent) => any; - onratechange: (ev: Event) => any; - onreset: (ev: Event) => any; - onscroll: (ev: UIEvent) => any; - onseeked: (ev: Event) => any; - onseeking: (ev: Event) => any; - onselect: (ev: UIEvent) => any; - onselectstart: (ev: Event) => any; - onstalled: (ev: Event) => any; - onsubmit: (ev: Event) => any; - onsuspend: (ev: Event) => any; - ontimeupdate: (ev: Event) => any; - onvolumechange: (ev: Event) => any; - onwaiting: (ev: Event) => any; + readonly offsetHeight: number; + readonly offsetLeft: number; + readonly offsetParent: Element; + readonly offsetTop: number; + readonly offsetWidth: number; + onabort: (this: this, ev: UIEvent) => any; + onactivate: (this: this, ev: UIEvent) => any; + onbeforeactivate: (this: this, ev: UIEvent) => any; + onbeforecopy: (this: this, ev: ClipboardEvent) => any; + onbeforecut: (this: this, ev: ClipboardEvent) => any; + onbeforedeactivate: (this: this, ev: UIEvent) => any; + onbeforepaste: (this: this, ev: ClipboardEvent) => any; + onblur: (this: this, ev: FocusEvent) => any; + oncanplay: (this: this, ev: Event) => any; + oncanplaythrough: (this: this, ev: Event) => any; + onchange: (this: this, ev: Event) => any; + onclick: (this: this, ev: MouseEvent) => any; + oncontextmenu: (this: this, ev: PointerEvent) => any; + oncopy: (this: this, ev: ClipboardEvent) => any; + oncuechange: (this: this, ev: Event) => any; + oncut: (this: this, ev: ClipboardEvent) => any; + ondblclick: (this: this, ev: MouseEvent) => any; + ondeactivate: (this: this, ev: UIEvent) => any; + ondrag: (this: this, ev: DragEvent) => any; + ondragend: (this: this, ev: DragEvent) => any; + ondragenter: (this: this, ev: DragEvent) => any; + ondragleave: (this: this, ev: DragEvent) => any; + ondragover: (this: this, ev: DragEvent) => any; + ondragstart: (this: this, ev: DragEvent) => any; + ondrop: (this: this, ev: DragEvent) => any; + ondurationchange: (this: this, ev: Event) => any; + onemptied: (this: this, ev: Event) => any; + onended: (this: this, ev: MediaStreamErrorEvent) => any; + onerror: (this: this, ev: ErrorEvent) => any; + onfocus: (this: this, ev: FocusEvent) => any; + oninput: (this: this, ev: Event) => any; + oninvalid: (this: this, ev: Event) => any; + onkeydown: (this: this, ev: KeyboardEvent) => any; + onkeypress: (this: this, ev: KeyboardEvent) => any; + onkeyup: (this: this, ev: KeyboardEvent) => any; + onload: (this: this, ev: Event) => any; + onloadeddata: (this: this, ev: Event) => any; + onloadedmetadata: (this: this, ev: Event) => any; + onloadstart: (this: this, ev: Event) => any; + onmousedown: (this: this, ev: MouseEvent) => any; + onmouseenter: (this: this, ev: MouseEvent) => any; + onmouseleave: (this: this, ev: MouseEvent) => any; + onmousemove: (this: this, ev: MouseEvent) => any; + onmouseout: (this: this, ev: MouseEvent) => any; + onmouseover: (this: this, ev: MouseEvent) => any; + onmouseup: (this: this, ev: MouseEvent) => any; + onmousewheel: (this: this, ev: WheelEvent) => any; + onmscontentzoom: (this: this, ev: UIEvent) => any; + onmsmanipulationstatechanged: (this: this, ev: MSManipulationEvent) => any; + onpaste: (this: this, ev: ClipboardEvent) => any; + onpause: (this: this, ev: Event) => any; + onplay: (this: this, ev: Event) => any; + onplaying: (this: this, ev: Event) => any; + onprogress: (this: this, ev: ProgressEvent) => any; + onratechange: (this: this, ev: Event) => any; + onreset: (this: this, ev: Event) => any; + onscroll: (this: this, ev: UIEvent) => any; + onseeked: (this: this, ev: Event) => any; + onseeking: (this: this, ev: Event) => any; + onselect: (this: this, ev: UIEvent) => any; + onselectstart: (this: this, ev: Event) => any; + onstalled: (this: this, ev: Event) => any; + onsubmit: (this: this, ev: Event) => any; + onsuspend: (this: this, ev: Event) => any; + ontimeupdate: (this: this, ev: Event) => any; + onvolumechange: (this: this, ev: Event) => any; + onwaiting: (this: this, ev: Event) => any; outerHTML: string; outerText: string; spellcheck: boolean; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; tabIndex: number; title: string; blur(): void; click(): void; dragDrop(): boolean; focus(): void; - insertAdjacentElement(position: string, insertedElement: Element): Element; - insertAdjacentHTML(where: string, html: string): void; - insertAdjacentText(where: string, text: string): void; msGetInputContext(): MSInputMethodContext; - scrollIntoView(top?: boolean): void; setActive(): void; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSContentZoom", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureChange", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureDoubleTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureEnd", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureHold", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGotPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSInertiaStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSLostPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSManipulationStateChanged", listener: (this: this, ev: MSManipulationEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerCancel", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerDown", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerEnter", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerLeave", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerMove", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOut", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOver", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerUp", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "abort", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "activate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ariarequest", listener: (this: this, ev: AriaRequestEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforedeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "blur", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "canplay", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "canplaythrough", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "change", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "click", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "command", listener: (this: this, ev: CommandEvent) => any, useCapture?: boolean): void; + addEventListener(type: "contextmenu", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cuechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dblclick", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "deactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drag", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragend", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragenter", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragleave", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragover", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragstart", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drop", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "durationchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "emptied", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (this: this, ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "focus", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "gotpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "input", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "keydown", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keypress", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keyup", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadeddata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadedmetadata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "lostpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousedown", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseenter", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseleave", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousemove", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseout", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseover", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseup", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pause", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "play", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "playing", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "pointercancel", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerdown", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerenter", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerleave", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointermove", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerout", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerover", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerup", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ratechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "reset", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "scroll", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "seeked", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "seeking", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "select", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "selectstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "stalled", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "submit", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "suspend", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "timeupdate", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "touchcancel", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchend", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchmove", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchstart", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "volumechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "waiting", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenerror", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "wheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9478,7 +10506,7 @@ interface HTMLEmbedElement extends HTMLElement, GetSVGDocument { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Sets or retrieves the name of the object. */ @@ -9486,12 +10514,12 @@ interface HTMLEmbedElement extends HTMLElement, GetSVGDocument { /** * Retrieves the palette used for the embedded document. */ - palette: string; + readonly palette: string; /** * Retrieves the URL of the plug-in used to view an embedded document. */ - pluginspage: string; - readyState: string; + readonly pluginspage: string; + readonly readyState: string; /** * Sets or retrieves a URL to be loaded by the object. */ @@ -9521,19 +10549,19 @@ interface HTMLFieldSetElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ @@ -9579,7 +10607,7 @@ interface HTMLFormElement extends HTMLElement { /** * Retrieves a collection, in source order, of all controls in a given form. */ - elements: HTMLCollection; + readonly elements: HTMLCollection; /** * Sets or retrieves the MIME encoding for the form. */ @@ -9591,7 +10619,7 @@ interface HTMLFormElement extends HTMLElement { /** * Sets or retrieves the number of objects in a collection. */ - length: number; + readonly length: number; /** * Sets or retrieves how to send the form data to the server. */ @@ -9650,11 +10678,11 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { /** * Retrieves the document object of the page or frame. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Retrieves the object of the specified. */ - contentWindow: Window; + readonly contentWindow: Window; /** * Sets or retrieves whether to display a border for the frame. */ @@ -9690,15 +10718,11 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { /** * Raised when the object has been completely received from the server. */ - onload: (ev: Event) => any; + onload: (this: this, ev: Event) => any; /** * Sets or retrieves whether the frame can be scrolled. */ scrolling: string; - /** - * Sets the value indicating whether the source file of a frame or iframe has specific security restrictions applied. - */ - security: any; /** * Sets or retrieves a URL to be loaded by the object. */ @@ -9707,109 +10731,110 @@ interface HTMLFrameElement extends HTMLElement, GetSVGDocument { * Sets or retrieves the width of the object. */ width: string | number; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSContentZoom", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureChange", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureDoubleTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureEnd", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureHold", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGotPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSInertiaStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSLostPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSManipulationStateChanged", listener: (this: this, ev: MSManipulationEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerCancel", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerDown", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerEnter", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerLeave", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerMove", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOut", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOver", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerUp", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "abort", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "activate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ariarequest", listener: (this: this, ev: AriaRequestEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforedeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "blur", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "canplay", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "canplaythrough", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "change", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "click", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "command", listener: (this: this, ev: CommandEvent) => any, useCapture?: boolean): void; + addEventListener(type: "contextmenu", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cuechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dblclick", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "deactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drag", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragend", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragenter", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragleave", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragover", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragstart", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drop", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "durationchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "emptied", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (this: this, ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "focus", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "gotpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "input", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "keydown", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keypress", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keyup", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadeddata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadedmetadata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "lostpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousedown", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseenter", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseleave", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousemove", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseout", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseover", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseup", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pause", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "play", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "playing", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "pointercancel", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerdown", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerenter", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerleave", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointermove", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerout", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerover", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerup", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ratechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "reset", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "scroll", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "seeked", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "seeking", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "select", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "selectstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "stalled", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "submit", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "suspend", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "timeupdate", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "touchcancel", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchend", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchmove", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchstart", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "volumechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "waiting", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenerror", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "wheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -9837,151 +10862,152 @@ interface HTMLFrameSetElement extends HTMLElement { */ frameSpacing: any; name: string; - onafterprint: (ev: Event) => any; - onbeforeprint: (ev: Event) => any; - onbeforeunload: (ev: BeforeUnloadEvent) => any; + onafterprint: (this: this, ev: Event) => any; + onbeforeprint: (this: this, ev: Event) => any; + onbeforeunload: (this: this, ev: BeforeUnloadEvent) => any; /** * Fires when the object loses the input focus. */ - onblur: (ev: FocusEvent) => any; - onerror: (ev: Event) => any; + onblur: (this: this, ev: FocusEvent) => any; + onerror: (this: this, ev: ErrorEvent) => any; /** * Fires when the object receives focus. */ - onfocus: (ev: FocusEvent) => any; - onhashchange: (ev: HashChangeEvent) => any; - onload: (ev: Event) => any; - onmessage: (ev: MessageEvent) => any; - onoffline: (ev: Event) => any; - ononline: (ev: Event) => any; - onorientationchange: (ev: Event) => any; - onpagehide: (ev: PageTransitionEvent) => any; - onpageshow: (ev: PageTransitionEvent) => any; - onresize: (ev: UIEvent) => any; - onstorage: (ev: StorageEvent) => any; - onunload: (ev: Event) => any; + onfocus: (this: this, ev: FocusEvent) => any; + onhashchange: (this: this, ev: HashChangeEvent) => any; + onload: (this: this, ev: Event) => any; + onmessage: (this: this, ev: MessageEvent) => any; + onoffline: (this: this, ev: Event) => any; + ononline: (this: this, ev: Event) => any; + onorientationchange: (this: this, ev: Event) => any; + onpagehide: (this: this, ev: PageTransitionEvent) => any; + onpageshow: (this: this, ev: PageTransitionEvent) => any; + onresize: (this: this, ev: UIEvent) => any; + onstorage: (this: this, ev: StorageEvent) => any; + onunload: (this: this, ev: Event) => any; /** * Sets or retrieves the frame heights of the object. */ rows: string; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "resize", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "storage", listener: (ev: StorageEvent) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "unload", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSContentZoom", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureChange", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureDoubleTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureEnd", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureHold", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGotPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSInertiaStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSLostPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSManipulationStateChanged", listener: (this: this, ev: MSManipulationEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerCancel", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerDown", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerEnter", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerLeave", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerMove", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOut", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOver", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerUp", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "abort", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "activate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ariarequest", listener: (this: this, ev: AriaRequestEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforedeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforeprint", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "beforeunload", listener: (this: this, ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; + addEventListener(type: "blur", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "blur", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "canplay", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "canplaythrough", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "change", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "click", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "command", listener: (this: this, ev: CommandEvent) => any, useCapture?: boolean): void; + addEventListener(type: "contextmenu", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cuechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dblclick", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "deactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drag", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragend", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragenter", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragleave", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragover", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragstart", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drop", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "durationchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "emptied", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (this: this, ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "focus", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "focus", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "gotpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "hashchange", listener: (this: this, ev: HashChangeEvent) => any, useCapture?: boolean): void; + addEventListener(type: "input", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "keydown", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keypress", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keyup", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadeddata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadedmetadata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "lostpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "message", listener: (this: this, ev: MessageEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousedown", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseenter", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseleave", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousemove", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseout", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseover", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseup", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "offline", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "online", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "orientationchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "pagehide", listener: (this: this, ev: PageTransitionEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pageshow", listener: (this: this, ev: PageTransitionEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pause", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "play", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "playing", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "pointercancel", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerdown", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerenter", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerleave", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointermove", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerout", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerover", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerup", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ratechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "reset", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "resize", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "scroll", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "seeked", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "seeking", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "select", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "selectstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "stalled", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "storage", listener: (this: this, ev: StorageEvent) => any, useCapture?: boolean): void; + addEventListener(type: "submit", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "suspend", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "timeupdate", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "touchcancel", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchend", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchmove", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchstart", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "unload", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "volumechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "waiting", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenerror", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "wheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -10025,7 +11051,6 @@ interface HTMLHeadingElement extends HTMLElement { * Sets or retrieves a value that indicates the table alignment. */ align: string; - clear: string; } declare var HTMLHeadingElement: { @@ -10058,11 +11083,11 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { /** * Retrieves the document object of the page or frame. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Retrieves the object of the specified. */ - contentWindow: Window; + readonly contentWindow: Window; /** * Sets or retrieves whether to display a border for the frame. */ @@ -10102,16 +11127,12 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { /** * Raised when the object has been completely received from the server. */ - onload: (ev: Event) => any; - sandbox: DOMSettableTokenList; + onload: (this: this, ev: Event) => any; + readonly sandbox: DOMSettableTokenList; /** * Sets or retrieves whether the frame can be scrolled. */ scrolling: string; - /** - * Sets the value indicating whether the source file of a frame or iframe has specific security restrictions applied. - */ - security: any; /** * Sets or retrieves a URL to be loaded by the object. */ @@ -10124,109 +11145,110 @@ interface HTMLIFrameElement extends HTMLElement, GetSVGDocument { * Sets or retrieves the width of the object. */ width: string; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSContentZoom", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureChange", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureDoubleTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureEnd", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureHold", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGotPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSInertiaStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSLostPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSManipulationStateChanged", listener: (this: this, ev: MSManipulationEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerCancel", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerDown", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerEnter", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerLeave", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerMove", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOut", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOver", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerUp", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "abort", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "activate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ariarequest", listener: (this: this, ev: AriaRequestEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforedeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "blur", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "canplay", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "canplaythrough", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "change", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "click", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "command", listener: (this: this, ev: CommandEvent) => any, useCapture?: boolean): void; + addEventListener(type: "contextmenu", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cuechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dblclick", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "deactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drag", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragend", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragenter", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragleave", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragover", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragstart", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drop", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "durationchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "emptied", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (this: this, ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "focus", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "gotpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "input", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "keydown", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keypress", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keyup", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadeddata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadedmetadata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "lostpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousedown", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseenter", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseleave", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousemove", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseout", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseover", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseup", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pause", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "play", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "playing", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "pointercancel", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerdown", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerenter", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerleave", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointermove", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerout", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerover", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerup", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ratechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "reset", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "scroll", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "seeked", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "seeking", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "select", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "selectstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "stalled", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "submit", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "suspend", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "timeupdate", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "touchcancel", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchend", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchmove", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchstart", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "volumechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "waiting", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenerror", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "wheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -10251,9 +11273,9 @@ interface HTMLImageElement extends HTMLElement { /** * Retrieves whether the object is fully loaded. */ - complete: boolean; + readonly complete: boolean; crossOrigin: string; - currentSrc: string; + readonly currentSrc: string; /** * Sets or retrieves the height of the object. */ @@ -10270,6 +11292,7 @@ interface HTMLImageElement extends HTMLElement { * Sets or retrieves a Uniform Resource Identifier (URI) to a long description of the object. */ longDesc: string; + lowsrc: string; /** * Gets or sets whether the DLNA PlayTo device is available. */ @@ -10282,7 +11305,7 @@ interface HTMLImageElement extends HTMLElement { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Sets or retrieves the name of the object. */ @@ -10290,11 +11313,12 @@ interface HTMLImageElement extends HTMLElement { /** * The original height of the image resource before sizing. */ - naturalHeight: number; + readonly naturalHeight: number; /** * The original width of the image resource before sizing. */ - naturalWidth: number; + readonly naturalWidth: number; + sizes: string; /** * The address or URL of the a media resource that is to be considered. */ @@ -10312,8 +11336,8 @@ interface HTMLImageElement extends HTMLElement { * Sets or retrieves the width of the object. */ width: number; - x: number; - y: number; + readonly x: number; + readonly y: number; msGetAsCastingSource(): any; } @@ -10355,7 +11379,7 @@ interface HTMLInputElement extends HTMLElement { /** * Retrieves whether the object is fully loaded. */ - complete: boolean; + readonly complete: boolean; /** * Sets or retrieves the state of the check box or radio button. */ @@ -10368,11 +11392,11 @@ interface HTMLInputElement extends HTMLElement { /** * Returns a FileList object on a file type input object. */ - files: FileList; + readonly files: FileList | null; /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Overrides the action attribute (where the data on a form is sent) on the parent form element. */ @@ -10405,7 +11429,7 @@ interface HTMLInputElement extends HTMLElement { /** * Specifies the ID of a pre-defined datalist of options for an input element. */ - list: HTMLElement; + readonly list: HTMLElement; /** * Defines the maximum acceptable value for an input element with type="number".When used with the min and step attributes, lets you control the range and increment (such as only even numbers) that the user can enter into an input field. */ @@ -10439,6 +11463,7 @@ interface HTMLInputElement extends HTMLElement { * When present, marks an element that can't be submitted without a value. */ required: boolean; + selectionDirection: string; /** * Gets or sets the end position or offset of a text selection. */ @@ -10468,11 +11493,11 @@ interface HTMLInputElement extends HTMLElement { /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Returns the value of the data at the cursor's current position. */ @@ -10486,6 +11511,7 @@ interface HTMLInputElement extends HTMLElement { * Sets or retrieves the vertical margin for the object. */ vspace: number; + webkitdirectory: boolean; /** * Sets or retrieves the width of the object. */ @@ -10493,15 +11519,12 @@ interface HTMLInputElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; + minLength: number; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; /** * Makes the selection equal to the current object. */ @@ -10516,7 +11539,7 @@ interface HTMLInputElement extends HTMLElement { * @param start The offset into the text field for the start of the selection. * @param end The offset into the text field for the end of the selection. */ - setSelectionRange(start: number, end: number): void; + setSelectionRange(start?: number, end?: number, direction?: string): void; /** * Decrements a range input control's value by the value given by the Step attribute. If the optional parameter is used, it will decrement the input control's step value multiplied by the parameter's value. * @param n Value to decrement the value by. @@ -10534,23 +11557,6 @@ declare var HTMLInputElement: { new(): HTMLInputElement; } -interface HTMLIsIndexElement extends HTMLElement { - /** - * Sets or retrieves the URL to which the form content is sent for processing. - */ - action: string; - /** - * Retrieves a reference to the form that the object is embedded in. - */ - form: HTMLFormElement; - prompt: string; -} - -declare var HTMLIsIndexElement: { - prototype: HTMLIsIndexElement; - new(): HTMLIsIndexElement; -} - interface HTMLLIElement extends HTMLElement { type: string; /** @@ -10568,7 +11574,7 @@ interface HTMLLabelElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the object to which the given label object is assigned. */ @@ -10588,7 +11594,7 @@ interface HTMLLegendElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; } declare var HTMLLegendElement: { @@ -10630,6 +11636,8 @@ interface HTMLLinkElement extends HTMLElement, LinkStyle { * Sets or retrieves the MIME type of the object. */ type: string; + import?: Document; + integrity: string; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -10642,7 +11650,7 @@ interface HTMLMapElement extends HTMLElement { /** * Retrieves a collection of the area objects defined for the given map object. */ - areas: HTMLAreasCollection; + readonly areas: HTMLAreasCollection; /** * Sets or retrieves the name of the object. */ @@ -10661,9 +11669,9 @@ interface HTMLMarqueeElement extends HTMLElement { height: string; hspace: number; loop: number; - onbounce: (ev: Event) => any; - onfinish: (ev: Event) => any; - onstart: (ev: Event) => any; + onbounce: (this: this, ev: Event) => any; + onfinish: (this: this, ev: Event) => any; + onstart: (this: this, ev: Event) => any; scrollAmount: number; scrollDelay: number; trueSpeed: boolean; @@ -10671,111 +11679,112 @@ interface HTMLMarqueeElement extends HTMLElement { width: string; start(): void; stop(): void; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "bounce", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "finish", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "start", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSContentZoom", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureChange", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureDoubleTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureEnd", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureHold", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGotPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSInertiaStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSLostPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSManipulationStateChanged", listener: (this: this, ev: MSManipulationEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerCancel", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerDown", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerEnter", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerLeave", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerMove", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOut", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOver", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerUp", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "abort", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "activate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ariarequest", listener: (this: this, ev: AriaRequestEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforedeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "blur", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "bounce", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "canplay", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "canplaythrough", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "change", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "click", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "command", listener: (this: this, ev: CommandEvent) => any, useCapture?: boolean): void; + addEventListener(type: "contextmenu", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cuechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dblclick", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "deactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drag", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragend", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragenter", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragleave", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragover", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragstart", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drop", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "durationchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "emptied", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (this: this, ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "finish", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "focus", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "gotpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "input", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "keydown", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keypress", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keyup", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadeddata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadedmetadata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "lostpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousedown", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseenter", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseleave", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousemove", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseout", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseover", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseup", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pause", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "play", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "playing", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "pointercancel", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerdown", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerenter", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerleave", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointermove", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerout", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerover", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerup", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ratechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "reset", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "scroll", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "seeked", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "seeking", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "select", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "selectstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "stalled", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "start", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "submit", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "suspend", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "timeupdate", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "touchcancel", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchend", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchmove", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchstart", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "volumechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "waiting", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenerror", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "wheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -10788,7 +11797,7 @@ interface HTMLMediaElement extends HTMLElement { /** * Returns an AudioTrackList object with the audio tracks for a given video element. */ - audioTracks: AudioTrackList; + readonly audioTracks: AudioTrackList; /** * Gets or sets a value that indicates whether to start playing the media automatically. */ @@ -10796,15 +11805,16 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets a collection of buffered time ranges. */ - buffered: TimeRanges; + readonly buffered: TimeRanges; /** * Gets or sets a flag that indicates whether the client provides a set of controls for the media (in case the developer does not include controls for the player). */ controls: boolean; + crossOrigin: string; /** * Gets the address or URL of the current media resource that is selected by IHTMLMediaElement. */ - currentSrc: string; + readonly currentSrc: string; /** * Gets or sets the current playback position, in seconds. */ @@ -10817,19 +11827,20 @@ interface HTMLMediaElement extends HTMLElement { /** * Returns the duration in seconds of the current media resource. A NaN value is returned if duration is not available, or Infinity if the media resource is streaming. */ - duration: number; + readonly duration: number; /** * Gets information about whether the playback has ended or not. */ - ended: boolean; + readonly ended: boolean; /** * Returns an object representing the current error state of the audio or video element. */ - error: MediaError; + readonly error: MediaError; /** * Gets or sets a flag to specify whether playback should restart after it completes. */ loop: boolean; + readonly mediaKeys: MediaKeys | null; /** * Specifies the purpose of the audio or video media, such as background audio or alerts. */ @@ -10838,11 +11849,11 @@ interface HTMLMediaElement extends HTMLElement { * Specifies the output device id that the audio will be sent to. */ msAudioDeviceType: string; - msGraphicsTrustStatus: MSGraphicsTrust; + readonly msGraphicsTrustStatus: MSGraphicsTrust; /** * Gets the MSMediaKeys object, which is used for decrypting media data, that is associated with this media element. */ - msKeys: MSMediaKeys; + readonly msKeys: MSMediaKeys; /** * Gets or sets whether the DLNA PlayTo device is available. */ @@ -10858,7 +11869,7 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Specifies whether or not to enable low-latency playback on the media element. */ @@ -10870,12 +11881,13 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets the current network activity for the element. */ - networkState: number; - onmsneedkey: (ev: MSMediaKeyNeededEvent) => any; + readonly networkState: number; + onencrypted: (this: this, ev: MediaEncryptedEvent) => any; + onmsneedkey: (this: this, ev: MSMediaKeyNeededEvent) => any; /** * Gets a flag that specifies whether playback is paused. */ - paused: boolean; + readonly paused: boolean; /** * Gets or sets the current rate of speed for the media resource to play. This speed is expressed as a multiple of the normal speed of the media resource. */ @@ -10883,7 +11895,7 @@ interface HTMLMediaElement extends HTMLElement { /** * Gets TimeRanges for the current media resource that has been played. */ - played: TimeRanges; + readonly played: TimeRanges; /** * Gets or sets the current playback position, in seconds. */ @@ -10892,17 +11904,18 @@ interface HTMLMediaElement extends HTMLElement { /** * Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked. */ - seekable: TimeRanges; + readonly seekable: TimeRanges; /** * Gets a flag that indicates whether the the client is currently moving to a new playback position in the media resource. */ - seeking: boolean; + readonly seeking: boolean; /** * The address or URL of the a media resource that is to be considered. */ src: string; - textTracks: TextTrackList; - videoTracks: VideoTrackList; + srcObject: MediaStream | null; + readonly textTracks: TextTrackList; + readonly videoTracks: VideoTrackList; /** * Gets or sets the volume level for audio portions of the media element. */ @@ -10913,7 +11926,7 @@ interface HTMLMediaElement extends HTMLElement { */ canPlayType(type: string): string; /** - * Fires immediately after the client loads the object. + * Resets the audio or video object and loads a new media resource. */ load(): void; /** @@ -10938,133 +11951,136 @@ interface HTMLMediaElement extends HTMLElement { * Loads and starts playback of a media resource. */ play(): void; - HAVE_CURRENT_DATA: number; - HAVE_ENOUGH_DATA: number; - HAVE_FUTURE_DATA: number; - HAVE_METADATA: number; - HAVE_NOTHING: number; - NETWORK_EMPTY: number; - NETWORK_IDLE: number; - NETWORK_LOADING: number; - NETWORK_NO_SOURCE: number; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "msneedkey", listener: (ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + setMediaKeys(mediaKeys: MediaKeys | null): PromiseLike; + readonly HAVE_CURRENT_DATA: number; + readonly HAVE_ENOUGH_DATA: number; + readonly HAVE_FUTURE_DATA: number; + readonly HAVE_METADATA: number; + readonly HAVE_NOTHING: number; + readonly NETWORK_EMPTY: number; + readonly NETWORK_IDLE: number; + readonly NETWORK_LOADING: number; + readonly NETWORK_NO_SOURCE: number; + addEventListener(type: "MSContentZoom", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureChange", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureDoubleTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureEnd", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureHold", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGotPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSInertiaStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSLostPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSManipulationStateChanged", listener: (this: this, ev: MSManipulationEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerCancel", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerDown", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerEnter", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerLeave", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerMove", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOut", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOver", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerUp", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "abort", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "activate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ariarequest", listener: (this: this, ev: AriaRequestEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforedeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "blur", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "canplay", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "canplaythrough", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "change", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "click", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "command", listener: (this: this, ev: CommandEvent) => any, useCapture?: boolean): void; + addEventListener(type: "contextmenu", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cuechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dblclick", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "deactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drag", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragend", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragenter", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragleave", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragover", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragstart", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drop", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "durationchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "emptied", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "encrypted", listener: (this: this, ev: MediaEncryptedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (this: this, ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "focus", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "gotpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "input", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "keydown", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keypress", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keyup", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadeddata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadedmetadata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "lostpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousedown", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseenter", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseleave", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousemove", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseout", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseover", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseup", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "msneedkey", listener: (this: this, ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pause", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "play", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "playing", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "pointercancel", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerdown", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerenter", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerleave", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointermove", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerout", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerover", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerup", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ratechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "reset", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "scroll", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "seeked", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "seeking", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "select", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "selectstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "stalled", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "submit", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "suspend", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "timeupdate", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "touchcancel", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchend", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchmove", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchstart", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "volumechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "waiting", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenerror", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "wheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var HTMLMediaElement: { prototype: HTMLMediaElement; new(): HTMLMediaElement; - HAVE_CURRENT_DATA: number; - HAVE_ENOUGH_DATA: number; - HAVE_FUTURE_DATA: number; - HAVE_METADATA: number; - HAVE_NOTHING: number; - NETWORK_EMPTY: number; - NETWORK_IDLE: number; - NETWORK_LOADING: number; - NETWORK_NO_SOURCE: number; + readonly HAVE_CURRENT_DATA: number; + readonly HAVE_ENOUGH_DATA: number; + readonly HAVE_FUTURE_DATA: number; + readonly HAVE_METADATA: number; + readonly HAVE_NOTHING: number; + readonly NETWORK_EMPTY: number; + readonly NETWORK_IDLE: number; + readonly NETWORK_LOADING: number; + readonly NETWORK_NO_SOURCE: number; } interface HTMLMenuElement extends HTMLElement { @@ -11109,6 +12125,20 @@ declare var HTMLMetaElement: { new(): HTMLMetaElement; } +interface HTMLMeterElement extends HTMLElement { + high: number; + low: number; + max: number; + min: number; + optimum: number; + value: number; +} + +declare var HTMLMeterElement: { + prototype: HTMLMeterElement; + new(): HTMLMeterElement; +} + interface HTMLModElement extends HTMLElement { /** * Sets or retrieves reference information about the object. @@ -11125,15 +12155,6 @@ declare var HTMLModElement: { new(): HTMLModElement; } -interface HTMLNextIdElement extends HTMLElement { - n: string; -} - -declare var HTMLNextIdElement: { - prototype: HTMLNextIdElement; - new(): HTMLNextIdElement; -} - interface HTMLOListElement extends HTMLElement { compact: boolean; /** @@ -11152,7 +12173,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves a string of the URL where the object tag can be found. This is often the href of the document that the object is in, or the value set by a base element. */ - BaseHref: string; + readonly BaseHref: string; align: string; /** * Sets or retrieves a text alternative to the graphic. @@ -11182,7 +12203,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves the document object of the page or frame. */ - contentDocument: Document; + readonly contentDocument: Document; /** * Sets or retrieves the URL that references the data of the object. */ @@ -11191,7 +12212,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the height of the object. */ @@ -11212,7 +12233,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Gets the source associated with the media element for use by the PlayToManager. */ - msPlayToSource: any; + readonly msPlayToSource: any; /** * Sets or retrieves the name of the object. */ @@ -11220,8 +12241,8 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Retrieves the contained object. */ - object: any; - readyState: number; + readonly object: any; + readonly readyState: number; /** * Sets or retrieves a message to be displayed while an object is loading. */ @@ -11237,11 +12258,11 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; vspace: number; /** * Sets or retrieves the width of the object. @@ -11250,7 +12271,7 @@ interface HTMLObjectElement extends HTMLElement, GetSVGDocument { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ @@ -11277,11 +12298,11 @@ interface HTMLOptGroupElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the ordinal position of an option in a list box. */ - index: number; + readonly index: number; /** * Sets or retrieves a value that you can use to implement your own label functionality for the object. */ @@ -11293,7 +12314,7 @@ interface HTMLOptGroupElement extends HTMLElement { /** * Sets or retrieves the text string specified by the option tag. */ - text: string; + readonly text: string; /** * Sets or retrieves the value which is returned to the server when the form control is submitted. */ @@ -11314,11 +12335,11 @@ interface HTMLOptionElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the ordinal position of an option in a list box. */ - index: number; + readonly index: number; /** * Sets or retrieves a value that you can use to implement your own label functionality for the object. */ @@ -11343,6 +12364,18 @@ declare var HTMLOptionElement: { create(): HTMLOptionElement; } +interface HTMLOptionsCollection extends HTMLCollectionOf { + length: number; + selectedIndex: number; + add(element: HTMLOptionElement | HTMLOptGroupElement, before?: HTMLElement | number): void; + remove(index: number): void; +} + +declare var HTMLOptionsCollection: { + prototype: HTMLOptionsCollection; + new(): HTMLOptionsCollection; +} + interface HTMLParagraphElement extends HTMLElement { /** * Sets or retrieves how the object is aligned with adjacent text. @@ -11380,28 +12413,15 @@ declare var HTMLParamElement: { new(): HTMLParamElement; } -interface HTMLPhraseElement extends HTMLElement { - /** - * Sets or retrieves reference information about the object. - */ - cite: string; - /** - * Sets or retrieves the date and time of a modification to the object. - */ - dateTime: string; +interface HTMLPictureElement extends HTMLElement { } -declare var HTMLPhraseElement: { - prototype: HTMLPhraseElement; - new(): HTMLPhraseElement; +declare var HTMLPictureElement: { + prototype: HTMLPictureElement; + new(): HTMLPictureElement; } interface HTMLPreElement extends HTMLElement { - /** - * Indicates a citation by rendering text in italic type. - */ - cite: string; - clear: string; /** * Sets or gets a value that you can use to implement your own width functionality for the object. */ @@ -11417,7 +12437,7 @@ interface HTMLProgressElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Defines the maximum, or "done" value for a progress element. */ @@ -11425,7 +12445,7 @@ interface HTMLProgressElement extends HTMLElement { /** * Returns the quotient of value/max when the value attribute is set (determinate progress bar), or -1 when the value attribute is missing (indeterminate progress bar). */ - position: number; + readonly position: number; /** * Sets or gets the current value of a progress element. The value must be a non-negative number between 0 and the max value. */ @@ -11442,10 +12462,6 @@ interface HTMLQuoteElement extends HTMLElement { * Sets or retrieves reference information about the object. */ cite: string; - /** - * Sets or retrieves the date and time of a modification to the object. - */ - dateTime: string; } declare var HTMLQuoteElement: { @@ -11483,6 +12499,7 @@ interface HTMLScriptElement extends HTMLElement { * Sets or retrieves the MIME type for the associated scripting engine. */ type: string; + integrity: string; } declare var HTMLScriptElement: { @@ -11499,7 +12516,7 @@ interface HTMLSelectElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the number of objects in a collection. */ @@ -11512,7 +12529,7 @@ interface HTMLSelectElement extends HTMLElement { * Sets or retrieves the name of the object. */ name: string; - options: HTMLCollection; + readonly options: HTMLOptionsCollection; /** * When present, marks an element that can't be submitted without a value. */ @@ -11521,6 +12538,7 @@ interface HTMLSelectElement extends HTMLElement { * Sets or retrieves the index of the selected option in a select object. */ selectedIndex: number; + selectedOptions: HTMLCollectionOf; /** * Sets or retrieves the number of rows in the list box. */ @@ -11528,15 +12546,15 @@ interface HTMLSelectElement extends HTMLElement { /** * Retrieves the type of select control based on the value of the MULTIPLE attribute. */ - type: string; + readonly type: string; /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Sets or retrieves the value which is returned to the server when the form control is submitted. */ @@ -11544,8 +12562,7 @@ interface HTMLSelectElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; - selectedOptions: HTMLCollection; + readonly willValidate: boolean; /** * Adds an element to the areas, controlRange, or options collection. * @param element Variant of type Number that specifies the index position in the collection where the element is placed. If no value is given, the method places the element at the end of the collection. @@ -11591,10 +12608,12 @@ interface HTMLSourceElement extends HTMLElement { */ media: string; msKeySystem: string; + sizes: string; /** * The address or URL of the a media resource that is to be considered. */ src: string; + srcset: string; /** * Gets or sets the MIME type of a media resource. */ @@ -11615,6 +12634,7 @@ declare var HTMLSpanElement: { } interface HTMLStyleElement extends HTMLElement, LinkStyle { + disabled: boolean; /** * Sets or retrieves the media type. */ @@ -11664,7 +12684,7 @@ interface HTMLTableCellElement extends HTMLElement, HTMLTableAlignment { /** * Retrieves the position of the object in the cells collection of a row. */ - cellIndex: number; + readonly cellIndex: number; /** * Sets or retrieves the number columns in the table that the object should span. */ @@ -11771,7 +12791,7 @@ interface HTMLTableElement extends HTMLElement { /** * Sets or retrieves the number of horizontal rows contained in the object. */ - rows: HTMLCollection; + rows: HTMLCollectionOf; /** * Sets or retrieves which dividing lines (inner borders) are displayed. */ @@ -11783,7 +12803,7 @@ interface HTMLTableElement extends HTMLElement { /** * Retrieves a collection of all tBody objects in the table. Objects in this collection are in source order. */ - tBodies: HTMLCollection; + tBodies: HTMLCollectionOf; /** * Retrieves the tFoot object of the table. */ @@ -11862,7 +12882,7 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { /** * Retrieves a collection of all cells in the table row. */ - cells: HTMLCollection; + cells: HTMLCollectionOf; /** * Sets or retrieves the height of the object. */ @@ -11870,11 +12890,11 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { /** * Retrieves the position of the object in the rows collection for the table. */ - rowIndex: number; + readonly rowIndex: number; /** * Retrieves the position of the object in the collection. */ - sectionRowIndex: number; + readonly sectionRowIndex: number; /** * Removes the specified cell from the table row, as well as from the cells collection. * @param index Number that specifies the zero-based position of the cell to remove from the table row. If no value is provided, the last cell in the cells collection is deleted. @@ -11884,7 +12904,7 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { * Creates a new cell in the table row, and adds the cell to the cells collection. * @param index Number that specifies where to insert the cell in the tr. The default value is -1, which appends the new cell to the end of the cells collection. */ - insertCell(index?: number): HTMLTableCellElement; + insertCell(index?: number): HTMLTableDataCellElement; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -11901,7 +12921,7 @@ interface HTMLTableSectionElement extends HTMLElement, HTMLTableAlignment { /** * Sets or retrieves the number of horizontal rows contained in the object. */ - rows: HTMLCollection; + rows: HTMLCollectionOf; /** * Removes the specified row (tr) from the element and from the rows collection. * @param index Number that specifies the zero-based position in the rows collection of the row to remove. @@ -11920,6 +12940,15 @@ declare var HTMLTableSectionElement: { new(): HTMLTableSectionElement; } +interface HTMLTemplateElement extends HTMLElement { + readonly content: DocumentFragment; +} + +declare var HTMLTemplateElement: { + prototype: HTMLTemplateElement; + new(): HTMLTemplateElement; +} + interface HTMLTextAreaElement extends HTMLElement { /** * Provides a way to direct a user to a specific field when a document loads. This can provide both direction and convenience for a user, reducing the need to click or tab to a field when a page opens. This attribute is true when present on an element, and false when missing. @@ -11937,7 +12966,7 @@ interface HTMLTextAreaElement extends HTMLElement { /** * Retrieves a reference to the form that the object is embedded in. */ - form: HTMLFormElement; + readonly form: HTMLFormElement; /** * Sets or retrieves the maximum number of characters that the user can enter in a text control. */ @@ -11977,15 +13006,15 @@ interface HTMLTextAreaElement extends HTMLElement { /** * Retrieves the type of control. */ - type: string; + readonly type: string; /** * Returns the error message that would be displayed if the user submits the form, or an empty string if no error message. It also triggers the standard error message, such as "this is a required field". The result is that the user sees validation messages without actually submitting. */ - validationMessage: string; + readonly validationMessage: string; /** * Returns a ValidityState object that represents the validity states of an element. */ - validity: ValidityState; + readonly validity: ValidityState; /** * Retrieves or sets the text in the entry field of the textArea element. */ @@ -11993,19 +13022,16 @@ interface HTMLTextAreaElement extends HTMLElement { /** * Returns whether an element will successfully validate based on forms validation rules and constraints. */ - willValidate: boolean; + readonly willValidate: boolean; /** * Sets or retrieves how to handle wordwrapping in the object. */ wrap: string; + minLength: number; /** * Returns whether a form will validate when it is submitted, without having to submit it. */ checkValidity(): boolean; - /** - * Creates a TextRange object for the element. - */ - createTextRange(): TextRange; /** * Highlights the input area of a form element. */ @@ -12044,23 +13070,23 @@ interface HTMLTrackElement extends HTMLElement { default: boolean; kind: string; label: string; - readyState: number; + readonly readyState: number; src: string; srclang: string; - track: TextTrack; - ERROR: number; - LOADED: number; - LOADING: number; - NONE: number; + readonly track: TextTrack; + readonly ERROR: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; } declare var HTMLTrackElement: { prototype: HTMLTrackElement; new(): HTMLTrackElement; - ERROR: number; - LOADED: number; - LOADING: number; - NONE: number; + readonly ERROR: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; } interface HTMLUListElement extends HTMLElement { @@ -12087,14 +13113,14 @@ interface HTMLVideoElement extends HTMLMediaElement { */ height: number; msHorizontalMirror: boolean; - msIsLayoutOptimalForPlayback: boolean; - msIsStereo3D: boolean; + readonly msIsLayoutOptimalForPlayback: boolean; + readonly msIsStereo3D: boolean; msStereo3DPackingMode: string; msStereo3DRenderMode: string; msZoom: boolean; - onMSVideoFormatChanged: (ev: Event) => any; - onMSVideoFrameStepCompleted: (ev: Event) => any; - onMSVideoOptimalLayoutChanged: (ev: Event) => any; + onMSVideoFormatChanged: (this: this, ev: Event) => any; + onMSVideoFrameStepCompleted: (this: this, ev: Event) => any; + onMSVideoOptimalLayoutChanged: (this: this, ev: Event) => any; /** * Gets or sets a URL of an image to display, for example, like a movie poster. This can be a still frame from the video, or another image if no video data is available. */ @@ -12102,13 +13128,13 @@ interface HTMLVideoElement extends HTMLMediaElement { /** * Gets the intrinsic height of a video in CSS pixels, or zero if the dimensions are not known. */ - videoHeight: number; + readonly videoHeight: number; /** * Gets the intrinsic width of a video in CSS pixels, or zero if the dimensions are not known. */ - videoWidth: number; - webkitDisplayingFullscreen: boolean; - webkitSupportsFullscreen: boolean; + readonly videoWidth: number; + readonly webkitDisplayingFullscreen: boolean; + readonly webkitSupportsFullscreen: boolean; /** * Gets or sets the width of the video element. */ @@ -12121,112 +13147,114 @@ interface HTMLVideoElement extends HTMLMediaElement { webkitEnterFullscreen(): void; webkitExitFullScreen(): void; webkitExitFullscreen(): void; - addEventListener(type: "MSContentZoom", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSManipulationStateChanged", listener: (ev: MSManipulationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSVideoFormatChanged", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "MSVideoFrameStepCompleted", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "MSVideoOptimalLayoutChanged", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "activate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecopy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforecut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforedeactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "beforepaste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "copy", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "cut", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deactivate", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "msneedkey", listener: (ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void; - addEventListener(type: "paste", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "selectstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSContentZoom", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureChange", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureDoubleTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureEnd", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureHold", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGotPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSInertiaStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSLostPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSManipulationStateChanged", listener: (this: this, ev: MSManipulationEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerCancel", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerDown", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerEnter", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerLeave", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerMove", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOut", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOver", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerUp", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSVideoFormatChanged", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "MSVideoFrameStepCompleted", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "MSVideoOptimalLayoutChanged", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "abort", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "activate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ariarequest", listener: (this: this, ev: AriaRequestEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecopy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforecut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforedeactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "beforepaste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "blur", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "canplay", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "canplaythrough", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "change", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "click", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "command", listener: (this: this, ev: CommandEvent) => any, useCapture?: boolean): void; + addEventListener(type: "contextmenu", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "copy", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "cuechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "cut", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dblclick", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "deactivate", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drag", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragend", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragenter", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragleave", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragover", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragstart", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drop", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "durationchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "emptied", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "encrypted", listener: (this: this, ev: MediaEncryptedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (this: this, ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "focus", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "gotpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "input", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "keydown", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keypress", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keyup", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadeddata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadedmetadata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "lostpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousedown", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseenter", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseleave", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousemove", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseout", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseover", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseup", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "msneedkey", listener: (this: this, ev: MSMediaKeyNeededEvent) => any, useCapture?: boolean): void; + addEventListener(type: "paste", listener: (this: this, ev: ClipboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pause", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "play", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "playing", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "pointercancel", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerdown", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerenter", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerleave", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointermove", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerout", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerover", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerup", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ratechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "reset", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "scroll", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "seeked", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "seeking", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "select", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "selectstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "stalled", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "submit", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "suspend", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "timeupdate", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "touchcancel", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchend", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchmove", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchstart", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "volumechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "waiting", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenerror", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "wheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -12236,8 +13264,8 @@ declare var HTMLVideoElement: { } interface HashChangeEvent extends Event { - newURL: string; - oldURL: string; + readonly newURL: string | null; + readonly oldURL: string | null; } declare var HashChangeEvent: { @@ -12246,8 +13274,8 @@ declare var HashChangeEvent: { } interface History { - length: number; - state: any; + readonly length: number; + readonly state: any; back(distance?: any): void; forward(distance?: any): void; go(delta?: any): void; @@ -12261,31 +13289,31 @@ declare var History: { } interface IDBCursor { - direction: string; - key: any; - primaryKey: any; - source: any; + readonly direction: string; + key: IDBKeyRange | IDBValidKey; + readonly primaryKey: any; + source: IDBObjectStore | IDBIndex; advance(count: number): void; - continue(key?: any): void; + continue(key?: IDBKeyRange | IDBValidKey): void; delete(): IDBRequest; update(value: any): IDBRequest; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; + readonly NEXT: string; + readonly NEXT_NO_DUPLICATE: string; + readonly PREV: string; + readonly PREV_NO_DUPLICATE: string; } declare var IDBCursor: { prototype: IDBCursor; new(): IDBCursor; - NEXT: string; - NEXT_NO_DUPLICATE: string; - PREV: string; - PREV_NO_DUPLICATE: string; + readonly NEXT: string; + readonly NEXT_NO_DUPLICATE: string; + readonly PREV: string; + readonly PREV_NO_DUPLICATE: string; } interface IDBCursorWithValue extends IDBCursor { - value: any; + readonly value: any; } declare var IDBCursorWithValue: { @@ -12294,17 +13322,19 @@ declare var IDBCursorWithValue: { } interface IDBDatabase extends EventTarget { - name: string; - objectStoreNames: DOMStringList; - onabort: (ev: Event) => any; - onerror: (ev: Event) => any; - version: string; + readonly name: string; + readonly objectStoreNames: DOMStringList; + onabort: (this: this, ev: Event) => any; + onerror: (this: this, ev: ErrorEvent) => any; + version: number; + onversionchange: (ev: IDBVersionChangeEvent) => any; close(): void; createObjectStore(name: string, optionalParameters?: IDBObjectStoreParameters): IDBObjectStore; deleteObjectStore(name: string): void; - transaction(storeNames: any, mode?: string): IDBTransaction; - addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + transaction(storeNames: string | string[], mode?: string): IDBTransaction; + addEventListener(type: "versionchange", listener: (ev: IDBVersionChangeEvent) => any, useCapture?: boolean): void; + addEventListener(type: "abort", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -12326,15 +13356,15 @@ declare var IDBFactory: { interface IDBIndex { keyPath: string | string[]; - name: string; - objectStore: IDBObjectStore; - unique: boolean; + readonly name: string; + readonly objectStore: IDBObjectStore; + readonly unique: boolean; multiEntry: boolean; - count(key?: any): IDBRequest; - get(key: any): IDBRequest; - getKey(key: any): IDBRequest; - openCursor(range?: IDBKeyRange, direction?: string): IDBRequest; - openKeyCursor(range?: IDBKeyRange, direction?: string): IDBRequest; + count(key?: IDBKeyRange | IDBValidKey): IDBRequest; + get(key: IDBKeyRange | IDBValidKey): IDBRequest; + getKey(key: IDBKeyRange | IDBValidKey): IDBRequest; + openCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; + openKeyCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; } declare var IDBIndex: { @@ -12343,36 +13373,37 @@ declare var IDBIndex: { } interface IDBKeyRange { - lower: any; - lowerOpen: boolean; - upper: any; - upperOpen: boolean; + readonly lower: any; + readonly lowerOpen: boolean; + readonly upper: any; + readonly upperOpen: boolean; } declare var IDBKeyRange: { prototype: IDBKeyRange; new(): IDBKeyRange; bound(lower: any, upper: any, lowerOpen?: boolean, upperOpen?: boolean): IDBKeyRange; - lowerBound(bound: any, open?: boolean): IDBKeyRange; + lowerBound(lower: any, open?: boolean): IDBKeyRange; only(value: any): IDBKeyRange; - upperBound(bound: any, open?: boolean): IDBKeyRange; + upperBound(upper: any, open?: boolean): IDBKeyRange; } interface IDBObjectStore { - indexNames: DOMStringList; - keyPath: string; - name: string; - transaction: IDBTransaction; - add(value: any, key?: any): IDBRequest; + readonly indexNames: DOMStringList; + keyPath: string | string[]; + readonly name: string; + readonly transaction: IDBTransaction; + autoIncrement: boolean; + add(value: any, key?: IDBKeyRange | IDBValidKey): IDBRequest; clear(): IDBRequest; - count(key?: any): IDBRequest; + count(key?: IDBKeyRange | IDBValidKey): IDBRequest; createIndex(name: string, keyPath: string | string[], optionalParameters?: IDBIndexParameters): IDBIndex; - delete(key: any): IDBRequest; + delete(key: IDBKeyRange | IDBValidKey): IDBRequest; deleteIndex(indexName: string): void; get(key: any): IDBRequest; index(name: string): IDBIndex; - openCursor(range?: any, direction?: string): IDBRequest; - put(value: any, key?: any): IDBRequest; + openCursor(range?: IDBKeyRange | IDBValidKey, direction?: string): IDBRequest; + put(value: any, key?: IDBKeyRange | IDBValidKey): IDBRequest; } declare var IDBObjectStore: { @@ -12381,12 +13412,12 @@ declare var IDBObjectStore: { } interface IDBOpenDBRequest extends IDBRequest { - onblocked: (ev: Event) => any; - onupgradeneeded: (ev: IDBVersionChangeEvent) => any; - addEventListener(type: "blocked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "success", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "upgradeneeded", listener: (ev: IDBVersionChangeEvent) => any, useCapture?: boolean): void; + onblocked: (this: this, ev: Event) => any; + onupgradeneeded: (this: this, ev: IDBVersionChangeEvent) => any; + addEventListener(type: "blocked", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "success", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "upgradeneeded", listener: (this: this, ev: IDBVersionChangeEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -12396,15 +13427,15 @@ declare var IDBOpenDBRequest: { } interface IDBRequest extends EventTarget { - error: DOMError; - onerror: (ev: Event) => any; - onsuccess: (ev: Event) => any; - readyState: string; - result: any; - source: any; - transaction: IDBTransaction; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "success", listener: (ev: Event) => any, useCapture?: boolean): void; + readonly error: DOMError; + onerror: (this: this, ev: ErrorEvent) => any; + onsuccess: (this: this, ev: Event) => any; + readonly readyState: string; + readonly result: any; + source: IDBObjectStore | IDBIndex | IDBCursor; + readonly transaction: IDBTransaction; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "success", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -12414,34 +13445,34 @@ declare var IDBRequest: { } interface IDBTransaction extends EventTarget { - db: IDBDatabase; - error: DOMError; - mode: string; - onabort: (ev: Event) => any; - oncomplete: (ev: Event) => any; - onerror: (ev: Event) => any; + readonly db: IDBDatabase; + readonly error: DOMError; + readonly mode: string; + onabort: (this: this, ev: Event) => any; + oncomplete: (this: this, ev: Event) => any; + onerror: (this: this, ev: ErrorEvent) => any; abort(): void; objectStore(name: string): IDBObjectStore; - READ_ONLY: string; - READ_WRITE: string; - VERSION_CHANGE: string; - addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + readonly READ_ONLY: string; + readonly READ_WRITE: string; + readonly VERSION_CHANGE: string; + addEventListener(type: "abort", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "complete", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var IDBTransaction: { prototype: IDBTransaction; new(): IDBTransaction; - READ_ONLY: string; - READ_WRITE: string; - VERSION_CHANGE: string; + readonly READ_ONLY: string; + readonly READ_WRITE: string; + readonly VERSION_CHANGE: string; } interface IDBVersionChangeEvent extends Event { - newVersion: number; - oldVersion: number; + readonly newVersion: number | null; + readonly oldVersion: number; } declare var IDBVersionChangeEvent: { @@ -12451,8 +13482,8 @@ declare var IDBVersionChangeEvent: { interface ImageData { data: Uint8ClampedArray; - height: number; - width: number; + readonly height: number; + readonly width: number; } declare var ImageData: { @@ -12462,37 +13493,48 @@ declare var ImageData: { } interface KeyboardEvent extends UIEvent { - altKey: boolean; - char: string; - charCode: number; - ctrlKey: boolean; - key: string; - keyCode: number; - locale: string; - location: number; - metaKey: boolean; - repeat: boolean; - shiftKey: boolean; - which: number; + readonly altKey: boolean; + readonly char: string | null; + readonly charCode: number; + readonly ctrlKey: boolean; + readonly key: string; + readonly keyCode: number; + readonly locale: string; + readonly location: number; + readonly metaKey: boolean; + readonly repeat: boolean; + readonly shiftKey: boolean; + readonly which: number; + readonly code: string; getModifierState(keyArg: string): boolean; initKeyboardEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, keyArg: string, locationArg: number, modifiersListArg: string, repeat: boolean, locale: string): void; - DOM_KEY_LOCATION_JOYSTICK: number; - DOM_KEY_LOCATION_LEFT: number; - DOM_KEY_LOCATION_MOBILE: number; - DOM_KEY_LOCATION_NUMPAD: number; - DOM_KEY_LOCATION_RIGHT: number; - DOM_KEY_LOCATION_STANDARD: number; + readonly DOM_KEY_LOCATION_JOYSTICK: number; + readonly DOM_KEY_LOCATION_LEFT: number; + readonly DOM_KEY_LOCATION_MOBILE: number; + readonly DOM_KEY_LOCATION_NUMPAD: number; + readonly DOM_KEY_LOCATION_RIGHT: number; + readonly DOM_KEY_LOCATION_STANDARD: number; } declare var KeyboardEvent: { prototype: KeyboardEvent; new(typeArg: string, eventInitDict?: KeyboardEventInit): KeyboardEvent; - DOM_KEY_LOCATION_JOYSTICK: number; - DOM_KEY_LOCATION_LEFT: number; - DOM_KEY_LOCATION_MOBILE: number; - DOM_KEY_LOCATION_NUMPAD: number; - DOM_KEY_LOCATION_RIGHT: number; - DOM_KEY_LOCATION_STANDARD: number; + readonly DOM_KEY_LOCATION_JOYSTICK: number; + readonly DOM_KEY_LOCATION_LEFT: number; + readonly DOM_KEY_LOCATION_MOBILE: number; + readonly DOM_KEY_LOCATION_NUMPAD: number; + readonly DOM_KEY_LOCATION_RIGHT: number; + readonly DOM_KEY_LOCATION_STANDARD: number; +} + +interface ListeningStateChangedEvent extends Event { + readonly label: string; + readonly state: string; +} + +declare var ListeningStateChangedEvent: { + prototype: ListeningStateChangedEvent; + new(): ListeningStateChangedEvent; } interface Location { @@ -12500,7 +13542,7 @@ interface Location { host: string; hostname: string; href: string; - origin: string; + readonly origin: string; pathname: string; port: string; protocol: string; @@ -12517,7 +13559,7 @@ declare var Location: { } interface LongRunningScriptDetectedEvent extends Event { - executionTime: number; + readonly executionTime: number; stopPageScriptExecution: boolean; } @@ -12536,40 +13578,50 @@ interface MSApp { execAsyncAtPriority(asynchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): void; execAtPriority(synchronousCallback: MSExecAtPriorityFunctionCallback, priority: string, ...args: any[]): any; getCurrentPriority(): string; - getHtmlPrintDocumentSourceAsync(htmlDoc: any): any; + getHtmlPrintDocumentSourceAsync(htmlDoc: any): PromiseLike; getViewId(view: any): any; isTaskScheduledAtPriorityOrHigher(priority: string): boolean; pageHandlesAllApplicationActivations(enabled: boolean): void; suppressSubdownloadCredentialPrompts(suppress: boolean): void; terminateApp(exceptionObject: any): void; - CURRENT: string; - HIGH: string; - IDLE: string; - NORMAL: string; + readonly CURRENT: string; + readonly HIGH: string; + readonly IDLE: string; + readonly NORMAL: string; } declare var MSApp: MSApp; interface MSAppAsyncOperation extends EventTarget { - error: DOMError; - oncomplete: (ev: Event) => any; - onerror: (ev: Event) => any; - readyState: number; - result: any; + readonly error: DOMError; + oncomplete: (this: this, ev: Event) => any; + onerror: (this: this, ev: ErrorEvent) => any; + readonly readyState: number; + readonly result: any; start(): void; - COMPLETED: number; - ERROR: number; - STARTED: number; - addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; + addEventListener(type: "complete", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var MSAppAsyncOperation: { prototype: MSAppAsyncOperation; new(): MSAppAsyncOperation; - COMPLETED: number; - ERROR: number; - STARTED: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; +} + +interface MSAssertion { + readonly id: string; + readonly type: string; +} + +declare var MSAssertion: { + prototype: MSAssertion; + new(): MSAssertion; } interface MSBlobBuilder { @@ -12582,44 +13634,46 @@ declare var MSBlobBuilder: { new(): MSBlobBuilder; } -interface MSCSSMatrix { - a: number; - b: number; - c: number; - d: number; - e: number; - f: number; - m11: number; - m12: number; - m13: number; - m14: number; - m21: number; - m22: number; - m23: number; - m24: number; - m31: number; - m32: number; - m33: number; - m34: number; - m41: number; - m42: number; - m43: number; - m44: number; - inverse(): MSCSSMatrix; - multiply(secondMatrix: MSCSSMatrix): MSCSSMatrix; - rotate(angleX: number, angleY?: number, angleZ?: number): MSCSSMatrix; - rotateAxisAngle(x: number, y: number, z: number, angle: number): MSCSSMatrix; - scale(scaleX: number, scaleY?: number, scaleZ?: number): MSCSSMatrix; - setMatrixValue(value: string): void; - skewX(angle: number): MSCSSMatrix; - skewY(angle: number): MSCSSMatrix; - toString(): string; - translate(x: number, y: number, z?: number): MSCSSMatrix; +interface MSCredentials { + getAssertion(challenge: string, filter?: MSCredentialFilter, params?: MSSignatureParameters): PromiseLike; + makeCredential(accountInfo: MSAccountInfo, params: MSCredentialParameters[], challenge?: string): PromiseLike; } -declare var MSCSSMatrix: { - prototype: MSCSSMatrix; - new(text?: string): MSCSSMatrix; +declare var MSCredentials: { + prototype: MSCredentials; + new(): MSCredentials; +} + +interface MSFIDOCredentialAssertion extends MSAssertion { + readonly algorithm: string | Algorithm; + readonly attestation: any; + readonly publicKey: string; + readonly transportHints: string[]; +} + +declare var MSFIDOCredentialAssertion: { + prototype: MSFIDOCredentialAssertion; + new(): MSFIDOCredentialAssertion; +} + +interface MSFIDOSignature { + readonly authnrData: string; + readonly clientData: string; + readonly signature: string; +} + +declare var MSFIDOSignature: { + prototype: MSFIDOSignature; + new(): MSFIDOSignature; +} + +interface MSFIDOSignatureAssertion extends MSAssertion { + readonly signature: MSFIDOSignature; +} + +declare var MSFIDOSignatureAssertion: { + prototype: MSFIDOSignatureAssertion; + new(): MSFIDOSignatureAssertion; } interface MSGesture { @@ -12634,44 +13688,44 @@ declare var MSGesture: { } interface MSGestureEvent extends UIEvent { - clientX: number; - clientY: number; - expansion: number; - gestureObject: any; - hwTimestamp: number; - offsetX: number; - offsetY: number; - rotation: number; - scale: number; - screenX: number; - screenY: number; - translationX: number; - translationY: number; - velocityAngular: number; - velocityExpansion: number; - velocityX: number; - velocityY: number; + readonly clientX: number; + readonly clientY: number; + readonly expansion: number; + readonly gestureObject: any; + readonly hwTimestamp: number; + readonly offsetX: number; + readonly offsetY: number; + readonly rotation: number; + readonly scale: number; + readonly screenX: number; + readonly screenY: number; + readonly translationX: number; + readonly translationY: number; + readonly velocityAngular: number; + readonly velocityExpansion: number; + readonly velocityX: number; + readonly velocityY: number; initGestureEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, offsetXArg: number, offsetYArg: number, translationXArg: number, translationYArg: number, scaleArg: number, expansionArg: number, rotationArg: number, velocityXArg: number, velocityYArg: number, velocityExpansionArg: number, velocityAngularArg: number, hwTimestampArg: number): void; - MSGESTURE_FLAG_BEGIN: number; - MSGESTURE_FLAG_CANCEL: number; - MSGESTURE_FLAG_END: number; - MSGESTURE_FLAG_INERTIA: number; - MSGESTURE_FLAG_NONE: number; + readonly MSGESTURE_FLAG_BEGIN: number; + readonly MSGESTURE_FLAG_CANCEL: number; + readonly MSGESTURE_FLAG_END: number; + readonly MSGESTURE_FLAG_INERTIA: number; + readonly MSGESTURE_FLAG_NONE: number; } declare var MSGestureEvent: { prototype: MSGestureEvent; new(): MSGestureEvent; - MSGESTURE_FLAG_BEGIN: number; - MSGESTURE_FLAG_CANCEL: number; - MSGESTURE_FLAG_END: number; - MSGESTURE_FLAG_INERTIA: number; - MSGESTURE_FLAG_NONE: number; + readonly MSGESTURE_FLAG_BEGIN: number; + readonly MSGESTURE_FLAG_CANCEL: number; + readonly MSGESTURE_FLAG_END: number; + readonly MSGESTURE_FLAG_INERTIA: number; + readonly MSGESTURE_FLAG_NONE: number; } interface MSGraphicsTrust { - constrictionActive: boolean; - status: string; + readonly constrictionActive: boolean; + readonly status: string; } declare var MSGraphicsTrust: { @@ -12680,12 +13734,12 @@ declare var MSGraphicsTrust: { } interface MSHTMLWebViewElement extends HTMLElement { - canGoBack: boolean; - canGoForward: boolean; - containsFullScreenElement: boolean; - documentTitle: string; + readonly canGoBack: boolean; + readonly canGoForward: boolean; + readonly containsFullScreenElement: boolean; + readonly documentTitle: string; height: number; - settings: MSWebViewSettings; + readonly settings: MSWebViewSettings; src: string; width: number; addWebAllowedObject(name: string, applicationObject: any): void; @@ -12711,19 +13765,19 @@ declare var MSHTMLWebViewElement: { } interface MSInputMethodContext extends EventTarget { - compositionEndOffset: number; - compositionStartOffset: number; - oncandidatewindowhide: (ev: Event) => any; - oncandidatewindowshow: (ev: Event) => any; - oncandidatewindowupdate: (ev: Event) => any; - target: HTMLElement; + readonly compositionEndOffset: number; + readonly compositionStartOffset: number; + oncandidatewindowhide: (this: this, ev: Event) => any; + oncandidatewindowshow: (this: this, ev: Event) => any; + oncandidatewindowupdate: (this: this, ev: Event) => any; + readonly target: HTMLElement; getCandidateWindowClientRect(): ClientRect; getCompositionAlternatives(): string[]; hasComposition(): boolean; isCandidateWindowVisible(): boolean; - addEventListener(type: "MSCandidateWindowHide", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "MSCandidateWindowShow", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "MSCandidateWindowUpdate", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "MSCandidateWindowHide", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "MSCandidateWindowShow", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "MSCandidateWindowUpdate", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -12733,59 +13787,59 @@ declare var MSInputMethodContext: { } interface MSManipulationEvent extends UIEvent { - currentState: number; - inertiaDestinationX: number; - inertiaDestinationY: number; - lastState: number; + readonly currentState: number; + readonly inertiaDestinationX: number; + readonly inertiaDestinationY: number; + readonly lastState: number; initMSManipulationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, lastState: number, currentState: number): void; - MS_MANIPULATION_STATE_ACTIVE: number; - MS_MANIPULATION_STATE_CANCELLED: number; - MS_MANIPULATION_STATE_COMMITTED: number; - MS_MANIPULATION_STATE_DRAGGING: number; - MS_MANIPULATION_STATE_INERTIA: number; - MS_MANIPULATION_STATE_PRESELECT: number; - MS_MANIPULATION_STATE_SELECTING: number; - MS_MANIPULATION_STATE_STOPPED: number; + readonly MS_MANIPULATION_STATE_ACTIVE: number; + readonly MS_MANIPULATION_STATE_CANCELLED: number; + readonly MS_MANIPULATION_STATE_COMMITTED: number; + readonly MS_MANIPULATION_STATE_DRAGGING: number; + readonly MS_MANIPULATION_STATE_INERTIA: number; + readonly MS_MANIPULATION_STATE_PRESELECT: number; + readonly MS_MANIPULATION_STATE_SELECTING: number; + readonly MS_MANIPULATION_STATE_STOPPED: number; } declare var MSManipulationEvent: { prototype: MSManipulationEvent; new(): MSManipulationEvent; - MS_MANIPULATION_STATE_ACTIVE: number; - MS_MANIPULATION_STATE_CANCELLED: number; - MS_MANIPULATION_STATE_COMMITTED: number; - MS_MANIPULATION_STATE_DRAGGING: number; - MS_MANIPULATION_STATE_INERTIA: number; - MS_MANIPULATION_STATE_PRESELECT: number; - MS_MANIPULATION_STATE_SELECTING: number; - MS_MANIPULATION_STATE_STOPPED: number; + readonly MS_MANIPULATION_STATE_ACTIVE: number; + readonly MS_MANIPULATION_STATE_CANCELLED: number; + readonly MS_MANIPULATION_STATE_COMMITTED: number; + readonly MS_MANIPULATION_STATE_DRAGGING: number; + readonly MS_MANIPULATION_STATE_INERTIA: number; + readonly MS_MANIPULATION_STATE_PRESELECT: number; + readonly MS_MANIPULATION_STATE_SELECTING: number; + readonly MS_MANIPULATION_STATE_STOPPED: number; } interface MSMediaKeyError { - code: number; - systemCode: number; - MS_MEDIA_KEYERR_CLIENT: number; - MS_MEDIA_KEYERR_DOMAIN: number; - MS_MEDIA_KEYERR_HARDWARECHANGE: number; - MS_MEDIA_KEYERR_OUTPUT: number; - MS_MEDIA_KEYERR_SERVICE: number; - MS_MEDIA_KEYERR_UNKNOWN: number; + readonly code: number; + readonly systemCode: number; + readonly MS_MEDIA_KEYERR_CLIENT: number; + readonly MS_MEDIA_KEYERR_DOMAIN: number; + readonly MS_MEDIA_KEYERR_HARDWARECHANGE: number; + readonly MS_MEDIA_KEYERR_OUTPUT: number; + readonly MS_MEDIA_KEYERR_SERVICE: number; + readonly MS_MEDIA_KEYERR_UNKNOWN: number; } declare var MSMediaKeyError: { prototype: MSMediaKeyError; new(): MSMediaKeyError; - MS_MEDIA_KEYERR_CLIENT: number; - MS_MEDIA_KEYERR_DOMAIN: number; - MS_MEDIA_KEYERR_HARDWARECHANGE: number; - MS_MEDIA_KEYERR_OUTPUT: number; - MS_MEDIA_KEYERR_SERVICE: number; - MS_MEDIA_KEYERR_UNKNOWN: number; + readonly MS_MEDIA_KEYERR_CLIENT: number; + readonly MS_MEDIA_KEYERR_DOMAIN: number; + readonly MS_MEDIA_KEYERR_HARDWARECHANGE: number; + readonly MS_MEDIA_KEYERR_OUTPUT: number; + readonly MS_MEDIA_KEYERR_SERVICE: number; + readonly MS_MEDIA_KEYERR_UNKNOWN: number; } interface MSMediaKeyMessageEvent extends Event { - destinationURL: string; - message: Uint8Array; + readonly destinationURL: string | null; + readonly message: Uint8Array; } declare var MSMediaKeyMessageEvent: { @@ -12794,7 +13848,7 @@ declare var MSMediaKeyMessageEvent: { } interface MSMediaKeyNeededEvent extends Event { - initData: Uint8Array; + readonly initData: Uint8Array | null; } declare var MSMediaKeyNeededEvent: { @@ -12803,9 +13857,9 @@ declare var MSMediaKeyNeededEvent: { } interface MSMediaKeySession extends EventTarget { - error: MSMediaKeyError; - keySystem: string; - sessionId: string; + readonly error: MSMediaKeyError | null; + readonly keySystem: string; + readonly sessionId: string; close(): void; update(key: Uint8Array): void; } @@ -12816,7 +13870,7 @@ declare var MSMediaKeySession: { } interface MSMediaKeys { - keySystem: string; + readonly keySystem: string; createSession(type: string, initData: Uint8Array, cdmData?: Uint8Array): MSMediaKeySession; } @@ -12824,40 +13878,22 @@ declare var MSMediaKeys: { prototype: MSMediaKeys; new(keySystem: string): MSMediaKeys; isTypeSupported(keySystem: string, type?: string): boolean; -} - -interface MSMimeTypesCollection { - length: number; -} - -declare var MSMimeTypesCollection: { - prototype: MSMimeTypesCollection; - new(): MSMimeTypesCollection; -} - -interface MSPluginsCollection { - length: number; - refresh(reload?: boolean): void; -} - -declare var MSPluginsCollection: { - prototype: MSPluginsCollection; - new(): MSPluginsCollection; + isTypeSupportedWithFeatures(keySystem: string, type?: string): string; } interface MSPointerEvent extends MouseEvent { - currentPoint: any; - height: number; - hwTimestamp: number; - intermediatePoints: any; - isPrimary: boolean; - pointerId: number; - pointerType: any; - pressure: number; - rotation: number; - tiltX: number; - tiltY: number; - width: number; + readonly currentPoint: any; + readonly height: number; + readonly hwTimestamp: number; + readonly intermediatePoints: any; + readonly isPrimary: boolean; + readonly pointerId: number; + readonly pointerType: any; + readonly pressure: number; + readonly rotation: number; + readonly tiltX: number; + readonly tiltY: number; + readonly width: number; getCurrentPoint(element: Element): void; getIntermediatePoints(element: Element): void; initPointerEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, offsetXArg: number, offsetYArg: number, widthArg: number, heightArg: number, pressure: number, rotation: number, tiltX: number, tiltY: number, pointerIdArg: number, pointerType: any, hwTimestampArg: number, isPrimary: boolean): void; @@ -12869,7 +13905,7 @@ declare var MSPointerEvent: { } interface MSRangeCollection { - length: number; + readonly length: number; item(index: number): Range; [index: number]: Range; } @@ -12880,8 +13916,8 @@ declare var MSRangeCollection: { } interface MSSiteModeEvent extends Event { - actionURL: string; - buttonID: number; + readonly actionURL: string; + readonly buttonID: number; } declare var MSSiteModeEvent: { @@ -12890,7 +13926,7 @@ declare var MSSiteModeEvent: { } interface MSStream { - type: string; + readonly type: string; msClose(): void; msDetachStream(): any; } @@ -12901,7 +13937,7 @@ declare var MSStream: { } interface MSStreamReader extends EventTarget, MSBaseReader { - error: DOMError; + readonly error: DOMError; readAsArrayBuffer(stream: MSStream, size?: number): void; readAsBinaryString(stream: MSStream, size?: number): void; readAsBlob(stream: MSStream, size?: number): void; @@ -12916,34 +13952,34 @@ declare var MSStreamReader: { } interface MSWebViewAsyncOperation extends EventTarget { - error: DOMError; - oncomplete: (ev: Event) => any; - onerror: (ev: Event) => any; - readyState: number; - result: any; - target: MSHTMLWebViewElement; - type: number; + readonly error: DOMError; + oncomplete: (this: this, ev: Event) => any; + onerror: (this: this, ev: ErrorEvent) => any; + readonly readyState: number; + readonly result: any; + readonly target: MSHTMLWebViewElement; + readonly type: number; start(): void; - COMPLETED: number; - ERROR: number; - STARTED: number; - TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; - TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; - TYPE_INVOKE_SCRIPT: number; - addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; + readonly TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; + readonly TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; + readonly TYPE_INVOKE_SCRIPT: number; + addEventListener(type: "complete", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var MSWebViewAsyncOperation: { prototype: MSWebViewAsyncOperation; new(): MSWebViewAsyncOperation; - COMPLETED: number; - ERROR: number; - STARTED: number; - TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; - TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; - TYPE_INVOKE_SCRIPT: number; + readonly COMPLETED: number; + readonly ERROR: number; + readonly STARTED: number; + readonly TYPE_CAPTURE_PREVIEW_TO_RANDOM_ACCESS_STREAM: number; + readonly TYPE_CREATE_DATA_PACKAGE_FROM_SELECTION: number; + readonly TYPE_INVOKE_SCRIPT: number; } interface MSWebViewSettings { @@ -12956,6 +13992,32 @@ declare var MSWebViewSettings: { new(): MSWebViewSettings; } +interface MediaDeviceInfo { + readonly deviceId: string; + readonly groupId: string; + readonly kind: string; + readonly label: string; +} + +declare var MediaDeviceInfo: { + prototype: MediaDeviceInfo; + new(): MediaDeviceInfo; +} + +interface MediaDevices extends EventTarget { + ondevicechange: (this: this, ev: Event) => any; + enumerateDevices(): any; + getSupportedConstraints(): MediaTrackSupportedConstraints; + getUserMedia(constraints: MediaStreamConstraints): PromiseLike; + addEventListener(type: "devicechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var MediaDevices: { + prototype: MediaDevices; + new(): MediaDevices; +} + interface MediaElementAudioSourceNode extends AudioNode { } @@ -12964,28 +14026,98 @@ declare var MediaElementAudioSourceNode: { new(): MediaElementAudioSourceNode; } +interface MediaEncryptedEvent extends Event { + readonly initData: ArrayBuffer | null; + readonly initDataType: string; +} + +declare var MediaEncryptedEvent: { + prototype: MediaEncryptedEvent; + new(type: string, eventInitDict?: MediaEncryptedEventInit): MediaEncryptedEvent; +} + interface MediaError { - code: number; - msExtendedCode: number; - MEDIA_ERR_ABORTED: number; - MEDIA_ERR_DECODE: number; - MEDIA_ERR_NETWORK: number; - MEDIA_ERR_SRC_NOT_SUPPORTED: number; - MS_MEDIA_ERR_ENCRYPTED: number; + readonly code: number; + readonly msExtendedCode: number; + readonly MEDIA_ERR_ABORTED: number; + readonly MEDIA_ERR_DECODE: number; + readonly MEDIA_ERR_NETWORK: number; + readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number; + readonly MS_MEDIA_ERR_ENCRYPTED: number; } declare var MediaError: { prototype: MediaError; new(): MediaError; - MEDIA_ERR_ABORTED: number; - MEDIA_ERR_DECODE: number; - MEDIA_ERR_NETWORK: number; - MEDIA_ERR_SRC_NOT_SUPPORTED: number; - MS_MEDIA_ERR_ENCRYPTED: number; + readonly MEDIA_ERR_ABORTED: number; + readonly MEDIA_ERR_DECODE: number; + readonly MEDIA_ERR_NETWORK: number; + readonly MEDIA_ERR_SRC_NOT_SUPPORTED: number; + readonly MS_MEDIA_ERR_ENCRYPTED: number; +} + +interface MediaKeyMessageEvent extends Event { + readonly message: ArrayBuffer; + readonly messageType: string; +} + +declare var MediaKeyMessageEvent: { + prototype: MediaKeyMessageEvent; + new(type: string, eventInitDict?: MediaKeyMessageEventInit): MediaKeyMessageEvent; +} + +interface MediaKeySession extends EventTarget { + readonly closed: PromiseLike; + readonly expiration: number; + readonly keyStatuses: MediaKeyStatusMap; + readonly sessionId: string; + close(): PromiseLike; + generateRequest(initDataType: string, initData: any): PromiseLike; + load(sessionId: string): PromiseLike; + remove(): PromiseLike; + update(response: any): PromiseLike; +} + +declare var MediaKeySession: { + prototype: MediaKeySession; + new(): MediaKeySession; +} + +interface MediaKeyStatusMap { + readonly size: number; + forEach(callback: ForEachCallback): void; + get(keyId: any): string; + has(keyId: any): boolean; +} + +declare var MediaKeyStatusMap: { + prototype: MediaKeyStatusMap; + new(): MediaKeyStatusMap; +} + +interface MediaKeySystemAccess { + readonly keySystem: string; + createMediaKeys(): PromiseLike; + getConfiguration(): MediaKeySystemConfiguration; +} + +declare var MediaKeySystemAccess: { + prototype: MediaKeySystemAccess; + new(): MediaKeySystemAccess; +} + +interface MediaKeys { + createSession(sessionType?: string): MediaKeySession; + setServerCertificate(serverCertificate: any): PromiseLike; +} + +declare var MediaKeys: { + prototype: MediaKeys; + new(): MediaKeys; } interface MediaList { - length: number; + readonly length: number; mediaText: string; appendMedium(newMedium: string): void; deleteMedium(oldMedium: string): void; @@ -13000,8 +14132,8 @@ declare var MediaList: { } interface MediaQueryList { - matches: boolean; - media: string; + readonly matches: boolean; + readonly media: string; addListener(listener: MediaQueryListListener): void; removeListener(listener: MediaQueryListListener): void; } @@ -13012,10 +14144,10 @@ declare var MediaQueryList: { } interface MediaSource extends EventTarget { - activeSourceBuffers: SourceBufferList; + readonly activeSourceBuffers: SourceBufferList; duration: number; - readyState: number; - sourceBuffers: SourceBufferList; + readonly readyState: string; + readonly sourceBuffers: SourceBufferList; addSourceBuffer(type: string): SourceBuffer; endOfStream(error?: number): void; removeSourceBuffer(sourceBuffer: SourceBuffer): void; @@ -13027,9 +14159,104 @@ declare var MediaSource: { isTypeSupported(type: string): boolean; } +interface MediaStream extends EventTarget { + readonly active: boolean; + readonly id: string; + onactive: (this: this, ev: Event) => any; + onaddtrack: (this: this, ev: TrackEvent) => any; + oninactive: (this: this, ev: Event) => any; + onremovetrack: (this: this, ev: TrackEvent) => any; + addTrack(track: MediaStreamTrack): void; + clone(): MediaStream; + getAudioTracks(): MediaStreamTrack[]; + getTrackById(trackId: string): MediaStreamTrack | null; + getTracks(): MediaStreamTrack[]; + getVideoTracks(): MediaStreamTrack[]; + removeTrack(track: MediaStreamTrack): void; + stop(): void; + addEventListener(type: "active", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "addtrack", listener: (this: this, ev: TrackEvent) => any, useCapture?: boolean): void; + addEventListener(type: "inactive", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "removetrack", listener: (this: this, ev: TrackEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var MediaStream: { + prototype: MediaStream; + new(streamOrTracks?: MediaStream | MediaStreamTrack[]): MediaStream; +} + +interface MediaStreamAudioSourceNode extends AudioNode { +} + +declare var MediaStreamAudioSourceNode: { + prototype: MediaStreamAudioSourceNode; + new(): MediaStreamAudioSourceNode; +} + +interface MediaStreamError { + readonly constraintName: string | null; + readonly message: string | null; + readonly name: string; +} + +declare var MediaStreamError: { + prototype: MediaStreamError; + new(): MediaStreamError; +} + +interface MediaStreamErrorEvent extends Event { + readonly error: MediaStreamError | null; +} + +declare var MediaStreamErrorEvent: { + prototype: MediaStreamErrorEvent; + new(type: string, eventInitDict?: MediaStreamErrorEventInit): MediaStreamErrorEvent; +} + +interface MediaStreamTrack extends EventTarget { + enabled: boolean; + readonly id: string; + readonly kind: string; + readonly label: string; + readonly muted: boolean; + onended: (this: this, ev: MediaStreamErrorEvent) => any; + onmute: (this: this, ev: Event) => any; + onoverconstrained: (this: this, ev: MediaStreamErrorEvent) => any; + onunmute: (this: this, ev: Event) => any; + readonly readonly: boolean; + readonly readyState: string; + readonly remote: boolean; + applyConstraints(constraints: MediaTrackConstraints): PromiseLike; + clone(): MediaStreamTrack; + getCapabilities(): MediaTrackCapabilities; + getConstraints(): MediaTrackConstraints; + getSettings(): MediaTrackSettings; + stop(): void; + addEventListener(type: "ended", listener: (this: this, ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mute", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "overconstrained", listener: (this: this, ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "unmute", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var MediaStreamTrack: { + prototype: MediaStreamTrack; + new(): MediaStreamTrack; +} + +interface MediaStreamTrackEvent extends Event { + readonly track: MediaStreamTrack; +} + +declare var MediaStreamTrackEvent: { + prototype: MediaStreamTrackEvent; + new(type: string, eventInitDict?: MediaStreamTrackEventInit): MediaStreamTrackEvent; +} + interface MessageChannel { - port1: MessagePort; - port2: MessagePort; + readonly port1: MessagePort; + readonly port2: MessagePort; } declare var MessageChannel: { @@ -13038,10 +14265,10 @@ declare var MessageChannel: { } interface MessageEvent extends Event { - data: any; - origin: string; - ports: any; - source: Window; + readonly data: any; + readonly origin: string; + readonly ports: any; + readonly source: Window; initMessageEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, dataArg: any, originArg: string, lastEventIdArg: string, sourceArg: Window): void; } @@ -13051,11 +14278,11 @@ declare var MessageEvent: { } interface MessagePort extends EventTarget { - onmessage: (ev: MessageEvent) => any; + onmessage: (this: this, ev: MessageEvent) => any; close(): void; postMessage(message?: any, ports?: any): void; start(): void; - addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void; + addEventListener(type: "message", listener: (this: this, ev: MessageEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13065,10 +14292,10 @@ declare var MessagePort: { } interface MimeType { - description: string; - enabledPlugin: Plugin; - suffixes: string; - type: string; + readonly description: string; + readonly enabledPlugin: Plugin; + readonly suffixes: string; + readonly type: string; } declare var MimeType: { @@ -13077,7 +14304,7 @@ declare var MimeType: { } interface MimeTypeArray { - length: number; + readonly length: number; item(index: number): Plugin; namedItem(type: string): Plugin; [index: number]: Plugin; @@ -13089,30 +14316,30 @@ declare var MimeTypeArray: { } interface MouseEvent extends UIEvent { - altKey: boolean; - button: number; - buttons: number; - clientX: number; - clientY: number; - ctrlKey: boolean; - fromElement: Element; - layerX: number; - layerY: number; - metaKey: boolean; - movementX: number; - movementY: number; - offsetX: number; - offsetY: number; - pageX: number; - pageY: number; - relatedTarget: EventTarget; - screenX: number; - screenY: number; - shiftKey: boolean; - toElement: Element; - which: number; - x: number; - y: number; + readonly altKey: boolean; + readonly button: number; + readonly buttons: number; + readonly clientX: number; + readonly clientY: number; + readonly ctrlKey: boolean; + readonly fromElement: Element; + readonly layerX: number; + readonly layerY: number; + readonly metaKey: boolean; + readonly movementX: number; + readonly movementY: number; + readonly offsetX: number; + readonly offsetY: number; + readonly pageX: number; + readonly pageY: number; + readonly relatedTarget: EventTarget; + readonly screenX: number; + readonly screenY: number; + readonly shiftKey: boolean; + readonly toElement: Element; + readonly which: number; + readonly x: number; + readonly y: number; getModifierState(keyArg: string): boolean; initMouseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget): void; } @@ -13122,36 +14349,24 @@ declare var MouseEvent: { new(typeArg: string, eventInitDict?: MouseEventInit): MouseEvent; } -interface MouseWheelEvent extends MouseEvent { - wheelDelta: number; - wheelDeltaX: number; - wheelDeltaY: number; - initMouseWheelEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, buttonArg: number, relatedTargetArg: EventTarget, modifiersListArg: string, wheelDeltaArg: number): void; -} - -declare var MouseWheelEvent: { - prototype: MouseWheelEvent; - new(): MouseWheelEvent; -} - interface MutationEvent extends Event { - attrChange: number; - attrName: string; - newValue: string; - prevValue: string; - relatedNode: Node; + readonly attrChange: number; + readonly attrName: string; + readonly newValue: string; + readonly prevValue: string; + readonly relatedNode: Node; initMutationEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, relatedNodeArg: Node, prevValueArg: string, newValueArg: string, attrNameArg: string, attrChangeArg: number): void; - ADDITION: number; - MODIFICATION: number; - REMOVAL: number; + readonly ADDITION: number; + readonly MODIFICATION: number; + readonly REMOVAL: number; } declare var MutationEvent: { prototype: MutationEvent; new(): MutationEvent; - ADDITION: number; - MODIFICATION: number; - REMOVAL: number; + readonly ADDITION: number; + readonly MODIFICATION: number; + readonly REMOVAL: number; } interface MutationObserver { @@ -13166,15 +14381,15 @@ declare var MutationObserver: { } interface MutationRecord { - addedNodes: NodeList; - attributeName: string; - attributeNamespace: string; - nextSibling: Node; - oldValue: string; - previousSibling: Node; - removedNodes: NodeList; - target: Node; - type: string; + readonly addedNodes: NodeList; + readonly attributeName: string | null; + readonly attributeNamespace: string | null; + readonly nextSibling: Node | null; + readonly oldValue: string | null; + readonly previousSibling: Node | null; + readonly removedNodes: NodeList; + readonly target: Node; + readonly type: string; } declare var MutationRecord: { @@ -13183,12 +14398,12 @@ declare var MutationRecord: { } interface NamedNodeMap { - length: number; + readonly length: number; getNamedItem(name: string): Attr; - getNamedItemNS(namespaceURI: string, localName: string): Attr; + getNamedItemNS(namespaceURI: string | null, localName: string | null): Attr; item(index: number): Attr; removeNamedItem(name: string): Attr; - removeNamedItemNS(namespaceURI: string, localName: string): Attr; + removeNamedItemNS(namespaceURI: string | null, localName: string | null): Attr; setNamedItem(arg: Attr): Attr; setNamedItemNS(arg: Attr): Attr; [index: number]: Attr; @@ -13200,8 +14415,8 @@ declare var NamedNodeMap: { } interface NavigationCompletedEvent extends NavigationEvent { - isSuccess: boolean; - webErrorStatus: number; + readonly isSuccess: boolean; + readonly webErrorStatus: number; } declare var NavigationCompletedEvent: { @@ -13210,7 +14425,7 @@ declare var NavigationCompletedEvent: { } interface NavigationEvent extends Event { - uri: string; + readonly uri: string; } declare var NavigationEvent: { @@ -13219,7 +14434,7 @@ declare var NavigationEvent: { } interface NavigationEventWithReferrer extends NavigationEvent { - referer: string; + readonly referer: string; } declare var NavigationEventWithReferrer: { @@ -13227,27 +14442,22 @@ declare var NavigationEventWithReferrer: { new(): NavigationEventWithReferrer; } -interface Navigator extends Object, NavigatorID, NavigatorOnLine, NavigatorContentUtils, NavigatorStorageUtils, NavigatorGeolocation, MSNavigatorDoNotTrack, MSFileSaver { - appCodeName: string; - appMinorVersion: string; - browserLanguage: string; - connectionSpeed: number; - cookieEnabled: boolean; - cpuClass: string; - language: string; - maxTouchPoints: number; - mimeTypes: MSMimeTypesCollection; - msManipulationViewsEnabled: boolean; - msMaxTouchPoints: number; - msPointerEnabled: boolean; - plugins: MSPluginsCollection; - pointerEnabled: boolean; - systemLanguage: string; - userLanguage: string; - webdriver: boolean; +interface Navigator extends Object, NavigatorID, NavigatorOnLine, NavigatorContentUtils, NavigatorStorageUtils, NavigatorGeolocation, MSNavigatorDoNotTrack, MSFileSaver, NavigatorUserMedia { + readonly appCodeName: string; + readonly cookieEnabled: boolean; + readonly language: string; + readonly maxTouchPoints: number; + readonly mimeTypes: MimeTypeArray; + readonly msManipulationViewsEnabled: boolean; + readonly msMaxTouchPoints: number; + readonly msPointerEnabled: boolean; + readonly plugins: PluginArray; + readonly pointerEnabled: boolean; + readonly webdriver: boolean; getGamepads(): Gamepad[]; javaEnabled(): boolean; msLaunchUri(uri: string, successCallback?: MSLaunchUriCallback, noHandlerCallback?: MSLaunchUriCallback): void; + requestMediaKeySystemAccess(keySystem: string, supportedConfigurations: MediaKeySystemConfiguration[]): PromiseLike; vibrate(pattern: number | number[]): boolean; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13258,79 +14468,78 @@ declare var Navigator: { } interface Node extends EventTarget { - attributes: NamedNodeMap; - baseURI: string; - childNodes: NodeList; - firstChild: Node; - lastChild: Node; - localName: string; - namespaceURI: string; - nextSibling: Node; - nodeName: string; - nodeType: number; - nodeValue: string; - ownerDocument: Document; - parentElement: HTMLElement; - parentNode: Node; - prefix: string; - previousSibling: Node; - textContent: string; + readonly attributes: NamedNodeMap; + readonly baseURI: string | null; + readonly childNodes: NodeList; + readonly firstChild: Node; + readonly lastChild: Node; + readonly localName: string | null; + readonly namespaceURI: string | null; + readonly nextSibling: Node; + readonly nodeName: string; + readonly nodeType: number; + nodeValue: string | null; + readonly ownerDocument: Document; + readonly parentElement: HTMLElement; + readonly parentNode: Node; + readonly previousSibling: Node; + textContent: string | null; appendChild(newChild: Node): Node; cloneNode(deep?: boolean): Node; compareDocumentPosition(other: Node): number; + contains(child: Node): boolean; hasAttributes(): boolean; hasChildNodes(): boolean; - insertBefore(newChild: Node, refChild?: Node): Node; - isDefaultNamespace(namespaceURI: string): boolean; + insertBefore(newChild: Node, refChild: Node | null): Node; + isDefaultNamespace(namespaceURI: string | null): boolean; isEqualNode(arg: Node): boolean; isSameNode(other: Node): boolean; - lookupNamespaceURI(prefix: string): string; - lookupPrefix(namespaceURI: string): string; + lookupNamespaceURI(prefix: string | null): string | null; + lookupPrefix(namespaceURI: string | null): string | null; normalize(): void; removeChild(oldChild: Node): Node; replaceChild(newChild: Node, oldChild: Node): Node; - contains(node: Node): boolean; - ATTRIBUTE_NODE: number; - CDATA_SECTION_NODE: number; - COMMENT_NODE: number; - DOCUMENT_FRAGMENT_NODE: number; - DOCUMENT_NODE: number; - DOCUMENT_POSITION_CONTAINED_BY: number; - DOCUMENT_POSITION_CONTAINS: number; - DOCUMENT_POSITION_DISCONNECTED: number; - DOCUMENT_POSITION_FOLLOWING: number; - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; - DOCUMENT_POSITION_PRECEDING: number; - DOCUMENT_TYPE_NODE: number; - ELEMENT_NODE: number; - ENTITY_NODE: number; - ENTITY_REFERENCE_NODE: number; - NOTATION_NODE: number; - PROCESSING_INSTRUCTION_NODE: number; - TEXT_NODE: number; + readonly ATTRIBUTE_NODE: number; + readonly CDATA_SECTION_NODE: number; + readonly COMMENT_NODE: number; + readonly DOCUMENT_FRAGMENT_NODE: number; + readonly DOCUMENT_NODE: number; + readonly DOCUMENT_POSITION_CONTAINED_BY: number; + readonly DOCUMENT_POSITION_CONTAINS: number; + readonly DOCUMENT_POSITION_DISCONNECTED: number; + readonly DOCUMENT_POSITION_FOLLOWING: number; + readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; + readonly DOCUMENT_POSITION_PRECEDING: number; + readonly DOCUMENT_TYPE_NODE: number; + readonly ELEMENT_NODE: number; + readonly ENTITY_NODE: number; + readonly ENTITY_REFERENCE_NODE: number; + readonly NOTATION_NODE: number; + readonly PROCESSING_INSTRUCTION_NODE: number; + readonly TEXT_NODE: number; } declare var Node: { prototype: Node; new(): Node; - ATTRIBUTE_NODE: number; - CDATA_SECTION_NODE: number; - COMMENT_NODE: number; - DOCUMENT_FRAGMENT_NODE: number; - DOCUMENT_NODE: number; - DOCUMENT_POSITION_CONTAINED_BY: number; - DOCUMENT_POSITION_CONTAINS: number; - DOCUMENT_POSITION_DISCONNECTED: number; - DOCUMENT_POSITION_FOLLOWING: number; - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; - DOCUMENT_POSITION_PRECEDING: number; - DOCUMENT_TYPE_NODE: number; - ELEMENT_NODE: number; - ENTITY_NODE: number; - ENTITY_REFERENCE_NODE: number; - NOTATION_NODE: number; - PROCESSING_INSTRUCTION_NODE: number; - TEXT_NODE: number; + readonly ATTRIBUTE_NODE: number; + readonly CDATA_SECTION_NODE: number; + readonly COMMENT_NODE: number; + readonly DOCUMENT_FRAGMENT_NODE: number; + readonly DOCUMENT_NODE: number; + readonly DOCUMENT_POSITION_CONTAINED_BY: number; + readonly DOCUMENT_POSITION_CONTAINS: number; + readonly DOCUMENT_POSITION_DISCONNECTED: number; + readonly DOCUMENT_POSITION_FOLLOWING: number; + readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number; + readonly DOCUMENT_POSITION_PRECEDING: number; + readonly DOCUMENT_TYPE_NODE: number; + readonly ELEMENT_NODE: number; + readonly ENTITY_NODE: number; + readonly ENTITY_REFERENCE_NODE: number; + readonly NOTATION_NODE: number; + readonly PROCESSING_INSTRUCTION_NODE: number; + readonly TEXT_NODE: number; } interface NodeFilter { @@ -13338,29 +14547,29 @@ interface NodeFilter { } declare var NodeFilter: { - FILTER_ACCEPT: number; - FILTER_REJECT: number; - FILTER_SKIP: number; - SHOW_ALL: number; - SHOW_ATTRIBUTE: number; - SHOW_CDATA_SECTION: number; - SHOW_COMMENT: number; - SHOW_DOCUMENT: number; - SHOW_DOCUMENT_FRAGMENT: number; - SHOW_DOCUMENT_TYPE: number; - SHOW_ELEMENT: number; - SHOW_ENTITY: number; - SHOW_ENTITY_REFERENCE: number; - SHOW_NOTATION: number; - SHOW_PROCESSING_INSTRUCTION: number; - SHOW_TEXT: number; + readonly FILTER_ACCEPT: number; + readonly FILTER_REJECT: number; + readonly FILTER_SKIP: number; + readonly SHOW_ALL: number; + readonly SHOW_ATTRIBUTE: number; + readonly SHOW_CDATA_SECTION: number; + readonly SHOW_COMMENT: number; + readonly SHOW_DOCUMENT: number; + readonly SHOW_DOCUMENT_FRAGMENT: number; + readonly SHOW_DOCUMENT_TYPE: number; + readonly SHOW_ELEMENT: number; + readonly SHOW_ENTITY: number; + readonly SHOW_ENTITY_REFERENCE: number; + readonly SHOW_NOTATION: number; + readonly SHOW_PROCESSING_INSTRUCTION: number; + readonly SHOW_TEXT: number; } interface NodeIterator { - expandEntityReferences: boolean; - filter: NodeFilter; - root: Node; - whatToShow: number; + readonly expandEntityReferences: boolean; + readonly filter: NodeFilter; + readonly root: Node; + readonly whatToShow: number; detach(): void; nextNode(): Node; previousNode(): Node; @@ -13372,7 +14581,7 @@ declare var NodeIterator: { } interface NodeList { - length: number; + readonly length: number; item(index: number): Node; [index: number]: Node; } @@ -13391,13 +14600,13 @@ declare var OES_element_index_uint: { } interface OES_standard_derivatives { - FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; } declare var OES_standard_derivatives: { prototype: OES_standard_derivatives; new(): OES_standard_derivatives; - FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; + readonly FRAGMENT_SHADER_DERIVATIVE_HINT_OES: number; } interface OES_texture_float { @@ -13417,7 +14626,7 @@ declare var OES_texture_float_linear: { } interface OfflineAudioCompletionEvent extends Event { - renderedBuffer: AudioBuffer; + readonly renderedBuffer: AudioBuffer; } declare var OfflineAudioCompletionEvent: { @@ -13426,9 +14635,9 @@ declare var OfflineAudioCompletionEvent: { } interface OfflineAudioContext extends AudioContext { - oncomplete: (ev: Event) => any; - startRendering(): void; - addEventListener(type: "complete", listener: (ev: Event) => any, useCapture?: boolean): void; + oncomplete: (this: this, ev: Event) => any; + startRendering(): PromiseLike; + addEventListener(type: "complete", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13438,14 +14647,14 @@ declare var OfflineAudioContext: { } interface OscillatorNode extends AudioNode { - detune: AudioParam; - frequency: AudioParam; - onended: (ev: Event) => any; + readonly detune: AudioParam; + readonly frequency: AudioParam; + onended: (this: this, ev: MediaStreamErrorEvent) => any; type: string; setPeriodicWave(periodicWave: PeriodicWave): void; start(when?: number): void; stop(when?: number): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (this: this, ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13454,8 +14663,25 @@ declare var OscillatorNode: { new(): OscillatorNode; } +interface OverflowEvent extends UIEvent { + readonly horizontalOverflow: boolean; + readonly orient: number; + readonly verticalOverflow: boolean; + readonly BOTH: number; + readonly HORIZONTAL: number; + readonly VERTICAL: number; +} + +declare var OverflowEvent: { + prototype: OverflowEvent; + new(): OverflowEvent; + readonly BOTH: number; + readonly HORIZONTAL: number; + readonly VERTICAL: number; +} + interface PageTransitionEvent extends Event { - persisted: boolean; + readonly persisted: boolean; } declare var PageTransitionEvent: { @@ -13483,24 +14709,24 @@ declare var PannerNode: { } interface PerfWidgetExternal { - activeNetworkRequestCount: number; - averageFrameTime: number; - averagePaintTime: number; - extraInformationEnabled: boolean; - independentRenderingEnabled: boolean; - irDisablingContentString: string; - irStatusAvailable: boolean; - maxCpuSpeed: number; - paintRequestsPerSecond: number; - performanceCounter: number; - performanceCounterFrequency: number; + readonly activeNetworkRequestCount: number; + readonly averageFrameTime: number; + readonly averagePaintTime: number; + readonly extraInformationEnabled: boolean; + readonly independentRenderingEnabled: boolean; + readonly irDisablingContentString: string; + readonly irStatusAvailable: boolean; + readonly maxCpuSpeed: number; + readonly paintRequestsPerSecond: number; + readonly performanceCounter: number; + readonly performanceCounterFrequency: number; addEventListener(eventType: string, callback: Function): void; getMemoryUsage(): number; getProcessCpuUsage(): number; - getRecentCpuUsage(last: number): any; - getRecentFrames(last: number): any; - getRecentMemoryUsage(last: number): any; - getRecentPaintRequests(last: number): any; + getRecentCpuUsage(last: number | null): any; + getRecentFrames(last: number | null): any; + getRecentMemoryUsage(last: number | null): any; + getRecentPaintRequests(last: number | null): any; removeEventListener(eventType: string, callback: Function): void; repositionWindow(x: number, y: number): void; resizeWindow(width: number, height: number): void; @@ -13512,8 +14738,8 @@ declare var PerfWidgetExternal: { } interface Performance { - navigation: PerformanceNavigation; - timing: PerformanceTiming; + readonly navigation: PerformanceNavigation; + readonly timing: PerformanceTiming; clearMarks(markName?: string): void; clearMeasures(measureName?: string): void; clearResourceTimings(): void; @@ -13535,10 +14761,10 @@ declare var Performance: { } interface PerformanceEntry { - duration: number; - entryType: string; - name: string; - startTime: number; + readonly duration: number; + readonly entryType: string; + readonly name: string; + readonly startTime: number; } declare var PerformanceEntry: { @@ -13563,47 +14789,47 @@ declare var PerformanceMeasure: { } interface PerformanceNavigation { - redirectCount: number; - type: number; + readonly redirectCount: number; + readonly type: number; toJSON(): any; - TYPE_BACK_FORWARD: number; - TYPE_NAVIGATE: number; - TYPE_RELOAD: number; - TYPE_RESERVED: number; + readonly TYPE_BACK_FORWARD: number; + readonly TYPE_NAVIGATE: number; + readonly TYPE_RELOAD: number; + readonly TYPE_RESERVED: number; } declare var PerformanceNavigation: { prototype: PerformanceNavigation; new(): PerformanceNavigation; - TYPE_BACK_FORWARD: number; - TYPE_NAVIGATE: number; - TYPE_RELOAD: number; - TYPE_RESERVED: number; + readonly TYPE_BACK_FORWARD: number; + readonly TYPE_NAVIGATE: number; + readonly TYPE_RELOAD: number; + readonly TYPE_RESERVED: number; } interface PerformanceNavigationTiming extends PerformanceEntry { - connectEnd: number; - connectStart: number; - domComplete: number; - domContentLoadedEventEnd: number; - domContentLoadedEventStart: number; - domInteractive: number; - domLoading: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - loadEventEnd: number; - loadEventStart: number; - navigationStart: number; - redirectCount: number; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; - type: string; - unloadEventEnd: number; - unloadEventStart: number; + readonly connectEnd: number; + readonly connectStart: number; + readonly domComplete: number; + readonly domContentLoadedEventEnd: number; + readonly domContentLoadedEventStart: number; + readonly domInteractive: number; + readonly domLoading: number; + readonly domainLookupEnd: number; + readonly domainLookupStart: number; + readonly fetchStart: number; + readonly loadEventEnd: number; + readonly loadEventStart: number; + readonly navigationStart: number; + readonly redirectCount: number; + readonly redirectEnd: number; + readonly redirectStart: number; + readonly requestStart: number; + readonly responseEnd: number; + readonly responseStart: number; + readonly type: string; + readonly unloadEventEnd: number; + readonly unloadEventStart: number; } declare var PerformanceNavigationTiming: { @@ -13612,17 +14838,17 @@ declare var PerformanceNavigationTiming: { } interface PerformanceResourceTiming extends PerformanceEntry { - connectEnd: number; - connectStart: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - initiatorType: string; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; + readonly connectEnd: number; + readonly connectStart: number; + readonly domainLookupEnd: number; + readonly domainLookupStart: number; + readonly fetchStart: number; + readonly initiatorType: string; + readonly redirectEnd: number; + readonly redirectStart: number; + readonly requestStart: number; + readonly responseEnd: number; + readonly responseStart: number; } declare var PerformanceResourceTiming: { @@ -13631,27 +14857,28 @@ declare var PerformanceResourceTiming: { } interface PerformanceTiming { - connectEnd: number; - connectStart: number; - domComplete: number; - domContentLoadedEventEnd: number; - domContentLoadedEventStart: number; - domInteractive: number; - domLoading: number; - domainLookupEnd: number; - domainLookupStart: number; - fetchStart: number; - loadEventEnd: number; - loadEventStart: number; - msFirstPaint: number; - navigationStart: number; - redirectEnd: number; - redirectStart: number; - requestStart: number; - responseEnd: number; - responseStart: number; - unloadEventEnd: number; - unloadEventStart: number; + readonly connectEnd: number; + readonly connectStart: number; + readonly domComplete: number; + readonly domContentLoadedEventEnd: number; + readonly domContentLoadedEventStart: number; + readonly domInteractive: number; + readonly domLoading: number; + readonly domainLookupEnd: number; + readonly domainLookupStart: number; + readonly fetchStart: number; + readonly loadEventEnd: number; + readonly loadEventStart: number; + readonly msFirstPaint: number; + readonly navigationStart: number; + readonly redirectEnd: number; + readonly redirectStart: number; + readonly requestStart: number; + readonly responseEnd: number; + readonly responseStart: number; + readonly unloadEventEnd: number; + readonly unloadEventStart: number; + readonly secureConnectionStart: number; toJSON(): any; } @@ -13669,7 +14896,7 @@ declare var PeriodicWave: { } interface PermissionRequest extends DeferredPermissionRequest { - state: string; + readonly state: string; defer(): void; } @@ -13679,7 +14906,7 @@ declare var PermissionRequest: { } interface PermissionRequestedEvent extends Event { - permissionRequest: PermissionRequest; + readonly permissionRequest: PermissionRequest; } declare var PermissionRequestedEvent: { @@ -13688,11 +14915,11 @@ declare var PermissionRequestedEvent: { } interface Plugin { - description: string; - filename: string; - length: number; - name: string; - version: string; + readonly description: string; + readonly filename: string; + readonly length: number; + readonly name: string; + readonly version: string; item(index: number): MimeType; namedItem(type: string): MimeType; [index: number]: MimeType; @@ -13704,7 +14931,7 @@ declare var Plugin: { } interface PluginArray { - length: number; + readonly length: number; item(index: number): Plugin; namedItem(name: string): Plugin; refresh(reload?: boolean): void; @@ -13717,18 +14944,18 @@ declare var PluginArray: { } interface PointerEvent extends MouseEvent { - currentPoint: any; - height: number; - hwTimestamp: number; - intermediatePoints: any; - isPrimary: boolean; - pointerId: number; - pointerType: any; - pressure: number; - rotation: number; - tiltX: number; - tiltY: number; - width: number; + readonly currentPoint: any; + readonly height: number; + readonly hwTimestamp: number; + readonly intermediatePoints: any; + readonly isPrimary: boolean; + readonly pointerId: number; + readonly pointerType: any; + readonly pressure: number; + readonly rotation: number; + readonly tiltX: number; + readonly tiltY: number; + readonly width: number; getCurrentPoint(element: Element): void; getIntermediatePoints(element: Element): void; initPointerEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget, offsetXArg: number, offsetYArg: number, widthArg: number, heightArg: number, pressure: number, rotation: number, tiltX: number, tiltY: number, pointerIdArg: number, pointerType: any, hwTimestampArg: number, isPrimary: boolean): void; @@ -13740,7 +14967,7 @@ declare var PointerEvent: { } interface PopStateEvent extends Event { - state: any; + readonly state: any; initPopStateEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, stateArg: any): void; } @@ -13750,8 +14977,8 @@ declare var PopStateEvent: { } interface Position { - coords: Coordinates; - timestamp: number; + readonly coords: Coordinates; + readonly timestamp: number; } declare var Position: { @@ -13760,24 +14987,24 @@ declare var Position: { } interface PositionError { - code: number; - message: string; + readonly code: number; + readonly message: string; toString(): string; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; + readonly PERMISSION_DENIED: number; + readonly POSITION_UNAVAILABLE: number; + readonly TIMEOUT: number; } declare var PositionError: { prototype: PositionError; new(): PositionError; - PERMISSION_DENIED: number; - POSITION_UNAVAILABLE: number; - TIMEOUT: number; + readonly PERMISSION_DENIED: number; + readonly POSITION_UNAVAILABLE: number; + readonly TIMEOUT: number; } interface ProcessingInstruction extends CharacterData { - target: string; + readonly target: string; } declare var ProcessingInstruction: { @@ -13786,9 +15013,9 @@ declare var ProcessingInstruction: { } interface ProgressEvent extends Event { - lengthComputable: boolean; - loaded: number; - total: number; + readonly lengthComputable: boolean; + readonly loaded: number; + readonly total: number; initProgressEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, lengthComputableArg: boolean, loadedArg: number, totalArg: number): void; } @@ -13797,13 +15024,210 @@ declare var ProgressEvent: { new(type: string, eventInitDict?: ProgressEventInit): ProgressEvent; } +interface RTCDTMFToneChangeEvent extends Event { + readonly tone: string; +} + +declare var RTCDTMFToneChangeEvent: { + prototype: RTCDTMFToneChangeEvent; + new(type: string, eventInitDict: RTCDTMFToneChangeEventInit): RTCDTMFToneChangeEvent; +} + +interface RTCDtlsTransport extends RTCStatsProvider { + ondtlsstatechange: ((this: this, ev: RTCDtlsTransportStateChangedEvent) => any) | null; + onerror: ((this: this, ev: ErrorEvent) => any) | null; + readonly state: string; + readonly transport: RTCIceTransport; + getLocalParameters(): RTCDtlsParameters; + getRemoteCertificates(): ArrayBuffer[]; + getRemoteParameters(): RTCDtlsParameters | null; + start(remoteParameters: RTCDtlsParameters): void; + stop(): void; + addEventListener(type: "dtlsstatechange", listener: (this: this, ev: RTCDtlsTransportStateChangedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCDtlsTransport: { + prototype: RTCDtlsTransport; + new(transport: RTCIceTransport): RTCDtlsTransport; +} + +interface RTCDtlsTransportStateChangedEvent extends Event { + readonly state: string; +} + +declare var RTCDtlsTransportStateChangedEvent: { + prototype: RTCDtlsTransportStateChangedEvent; + new(): RTCDtlsTransportStateChangedEvent; +} + +interface RTCDtmfSender extends EventTarget { + readonly canInsertDTMF: boolean; + readonly duration: number; + readonly interToneGap: number; + ontonechange: (this: this, ev: RTCDTMFToneChangeEvent) => any; + readonly sender: RTCRtpSender; + readonly toneBuffer: string; + insertDTMF(tones: string, duration?: number, interToneGap?: number): void; + addEventListener(type: "tonechange", listener: (this: this, ev: RTCDTMFToneChangeEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCDtmfSender: { + prototype: RTCDtmfSender; + new(sender: RTCRtpSender): RTCDtmfSender; +} + +interface RTCIceCandidatePairChangedEvent extends Event { + readonly pair: RTCIceCandidatePair; +} + +declare var RTCIceCandidatePairChangedEvent: { + prototype: RTCIceCandidatePairChangedEvent; + new(): RTCIceCandidatePairChangedEvent; +} + +interface RTCIceGatherer extends RTCStatsProvider { + readonly component: string; + onerror: ((this: this, ev: ErrorEvent) => any) | null; + onlocalcandidate: ((this: this, ev: RTCIceGathererEvent) => any) | null; + createAssociatedGatherer(): RTCIceGatherer; + getLocalCandidates(): RTCIceCandidate[]; + getLocalParameters(): RTCIceParameters; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "localcandidate", listener: (this: this, ev: RTCIceGathererEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCIceGatherer: { + prototype: RTCIceGatherer; + new(options: RTCIceGatherOptions): RTCIceGatherer; +} + +interface RTCIceGathererEvent extends Event { + readonly candidate: RTCIceCandidate | RTCIceCandidateComplete; +} + +declare var RTCIceGathererEvent: { + prototype: RTCIceGathererEvent; + new(): RTCIceGathererEvent; +} + +interface RTCIceTransport extends RTCStatsProvider { + readonly component: string; + readonly iceGatherer: RTCIceGatherer | null; + oncandidatepairchange: ((this: this, ev: RTCIceCandidatePairChangedEvent) => any) | null; + onicestatechange: ((this: this, ev: RTCIceTransportStateChangedEvent) => any) | null; + readonly role: string; + readonly state: string; + addRemoteCandidate(remoteCandidate: RTCIceCandidate | RTCIceCandidateComplete): void; + createAssociatedTransport(): RTCIceTransport; + getNominatedCandidatePair(): RTCIceCandidatePair | null; + getRemoteCandidates(): RTCIceCandidate[]; + getRemoteParameters(): RTCIceParameters | null; + setRemoteCandidates(remoteCandidates: RTCIceCandidate[]): void; + start(gatherer: RTCIceGatherer, remoteParameters: RTCIceParameters, role?: string): void; + stop(): void; + addEventListener(type: "candidatepairchange", listener: (this: this, ev: RTCIceCandidatePairChangedEvent) => any, useCapture?: boolean): void; + addEventListener(type: "icestatechange", listener: (this: this, ev: RTCIceTransportStateChangedEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCIceTransport: { + prototype: RTCIceTransport; + new(): RTCIceTransport; +} + +interface RTCIceTransportStateChangedEvent extends Event { + readonly state: string; +} + +declare var RTCIceTransportStateChangedEvent: { + prototype: RTCIceTransportStateChangedEvent; + new(): RTCIceTransportStateChangedEvent; +} + +interface RTCRtpReceiver extends RTCStatsProvider { + onerror: ((this: this, ev: ErrorEvent) => any) | null; + readonly rtcpTransport: RTCDtlsTransport; + readonly track: MediaStreamTrack | null; + readonly transport: RTCDtlsTransport | RTCSrtpSdesTransport; + getContributingSources(): RTCRtpContributingSource[]; + receive(parameters: RTCRtpParameters): void; + requestSendCSRC(csrc: number): void; + setTransport(transport: RTCDtlsTransport | RTCSrtpSdesTransport, rtcpTransport?: RTCDtlsTransport): void; + stop(): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCRtpReceiver: { + prototype: RTCRtpReceiver; + new(transport: RTCDtlsTransport | RTCSrtpSdesTransport, kind: string, rtcpTransport?: RTCDtlsTransport): RTCRtpReceiver; + getCapabilities(kind?: string): RTCRtpCapabilities; +} + +interface RTCRtpSender extends RTCStatsProvider { + onerror: ((this: this, ev: ErrorEvent) => any) | null; + onssrcconflict: ((this: this, ev: RTCSsrcConflictEvent) => any) | null; + readonly rtcpTransport: RTCDtlsTransport; + readonly track: MediaStreamTrack; + readonly transport: RTCDtlsTransport | RTCSrtpSdesTransport; + send(parameters: RTCRtpParameters): void; + setTrack(track: MediaStreamTrack): void; + setTransport(transport: RTCDtlsTransport | RTCSrtpSdesTransport, rtcpTransport?: RTCDtlsTransport): void; + stop(): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ssrcconflict", listener: (this: this, ev: RTCSsrcConflictEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCRtpSender: { + prototype: RTCRtpSender; + new(track: MediaStreamTrack, transport: RTCDtlsTransport | RTCSrtpSdesTransport, rtcpTransport?: RTCDtlsTransport): RTCRtpSender; + getCapabilities(kind?: string): RTCRtpCapabilities; +} + +interface RTCSrtpSdesTransport extends EventTarget { + onerror: ((this: this, ev: ErrorEvent) => any) | null; + readonly transport: RTCIceTransport; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +} + +declare var RTCSrtpSdesTransport: { + prototype: RTCSrtpSdesTransport; + new(transport: RTCIceTransport, encryptParameters: RTCSrtpSdesParameters, decryptParameters: RTCSrtpSdesParameters): RTCSrtpSdesTransport; + getLocalParameters(): RTCSrtpSdesParameters[]; +} + +interface RTCSsrcConflictEvent extends Event { + readonly ssrc: number; +} + +declare var RTCSsrcConflictEvent: { + prototype: RTCSsrcConflictEvent; + new(): RTCSsrcConflictEvent; +} + +interface RTCStatsProvider extends EventTarget { + getStats(): PromiseLike; + msGetStats(): PromiseLike; +} + +declare var RTCStatsProvider: { + prototype: RTCStatsProvider; + new(): RTCStatsProvider; +} + interface Range { - collapsed: boolean; - commonAncestorContainer: Node; - endContainer: Node; - endOffset: number; - startContainer: Node; - startOffset: number; + readonly collapsed: boolean; + readonly commonAncestorContainer: Node; + readonly endContainer: Node; + readonly endOffset: number; + readonly startContainer: Node; + readonly startOffset: number; cloneContents(): DocumentFragment; cloneRange(): Range; collapse(toStart: boolean): void; @@ -13826,23 +15250,23 @@ interface Range { setStartBefore(refNode: Node): void; surroundContents(newParent: Node): void; toString(): string; - END_TO_END: number; - END_TO_START: number; - START_TO_END: number; - START_TO_START: number; + readonly END_TO_END: number; + readonly END_TO_START: number; + readonly START_TO_END: number; + readonly START_TO_START: number; } declare var Range: { prototype: Range; new(): Range; - END_TO_END: number; - END_TO_START: number; - START_TO_END: number; - START_TO_START: number; + readonly END_TO_END: number; + readonly END_TO_START: number; + readonly START_TO_END: number; + readonly START_TO_START: number; } interface SVGAElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - target: SVGAnimatedString; + readonly target: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13852,32 +15276,32 @@ declare var SVGAElement: { } interface SVGAngle { - unitType: number; + readonly unitType: number; value: number; valueAsString: string; valueInSpecifiedUnits: number; convertToSpecifiedUnits(unitType: number): void; newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void; - SVG_ANGLETYPE_DEG: number; - SVG_ANGLETYPE_GRAD: number; - SVG_ANGLETYPE_RAD: number; - SVG_ANGLETYPE_UNKNOWN: number; - SVG_ANGLETYPE_UNSPECIFIED: number; + readonly SVG_ANGLETYPE_DEG: number; + readonly SVG_ANGLETYPE_GRAD: number; + readonly SVG_ANGLETYPE_RAD: number; + readonly SVG_ANGLETYPE_UNKNOWN: number; + readonly SVG_ANGLETYPE_UNSPECIFIED: number; } declare var SVGAngle: { prototype: SVGAngle; new(): SVGAngle; - SVG_ANGLETYPE_DEG: number; - SVG_ANGLETYPE_GRAD: number; - SVG_ANGLETYPE_RAD: number; - SVG_ANGLETYPE_UNKNOWN: number; - SVG_ANGLETYPE_UNSPECIFIED: number; + readonly SVG_ANGLETYPE_DEG: number; + readonly SVG_ANGLETYPE_GRAD: number; + readonly SVG_ANGLETYPE_RAD: number; + readonly SVG_ANGLETYPE_UNKNOWN: number; + readonly SVG_ANGLETYPE_UNSPECIFIED: number; } interface SVGAnimatedAngle { - animVal: SVGAngle; - baseVal: SVGAngle; + readonly animVal: SVGAngle; + readonly baseVal: SVGAngle; } declare var SVGAnimatedAngle: { @@ -13886,7 +15310,7 @@ declare var SVGAnimatedAngle: { } interface SVGAnimatedBoolean { - animVal: boolean; + readonly animVal: boolean; baseVal: boolean; } @@ -13896,7 +15320,7 @@ declare var SVGAnimatedBoolean: { } interface SVGAnimatedEnumeration { - animVal: number; + readonly animVal: number; baseVal: number; } @@ -13906,7 +15330,7 @@ declare var SVGAnimatedEnumeration: { } interface SVGAnimatedInteger { - animVal: number; + readonly animVal: number; baseVal: number; } @@ -13916,8 +15340,8 @@ declare var SVGAnimatedInteger: { } interface SVGAnimatedLength { - animVal: SVGLength; - baseVal: SVGLength; + readonly animVal: SVGLength; + readonly baseVal: SVGLength; } declare var SVGAnimatedLength: { @@ -13926,8 +15350,8 @@ declare var SVGAnimatedLength: { } interface SVGAnimatedLengthList { - animVal: SVGLengthList; - baseVal: SVGLengthList; + readonly animVal: SVGLengthList; + readonly baseVal: SVGLengthList; } declare var SVGAnimatedLengthList: { @@ -13936,7 +15360,7 @@ declare var SVGAnimatedLengthList: { } interface SVGAnimatedNumber { - animVal: number; + readonly animVal: number; baseVal: number; } @@ -13946,8 +15370,8 @@ declare var SVGAnimatedNumber: { } interface SVGAnimatedNumberList { - animVal: SVGNumberList; - baseVal: SVGNumberList; + readonly animVal: SVGNumberList; + readonly baseVal: SVGNumberList; } declare var SVGAnimatedNumberList: { @@ -13956,8 +15380,8 @@ declare var SVGAnimatedNumberList: { } interface SVGAnimatedPreserveAspectRatio { - animVal: SVGPreserveAspectRatio; - baseVal: SVGPreserveAspectRatio; + readonly animVal: SVGPreserveAspectRatio; + readonly baseVal: SVGPreserveAspectRatio; } declare var SVGAnimatedPreserveAspectRatio: { @@ -13966,8 +15390,8 @@ declare var SVGAnimatedPreserveAspectRatio: { } interface SVGAnimatedRect { - animVal: SVGRect; - baseVal: SVGRect; + readonly animVal: SVGRect; + readonly baseVal: SVGRect; } declare var SVGAnimatedRect: { @@ -13976,7 +15400,7 @@ declare var SVGAnimatedRect: { } interface SVGAnimatedString { - animVal: string; + readonly animVal: string; baseVal: string; } @@ -13986,8 +15410,8 @@ declare var SVGAnimatedString: { } interface SVGAnimatedTransformList { - animVal: SVGTransformList; - baseVal: SVGTransformList; + readonly animVal: SVGTransformList; + readonly baseVal: SVGTransformList; } declare var SVGAnimatedTransformList: { @@ -13996,9 +15420,9 @@ declare var SVGAnimatedTransformList: { } interface SVGCircleElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - r: SVGAnimatedLength; + readonly cx: SVGAnimatedLength; + readonly cy: SVGAnimatedLength; + readonly r: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14008,7 +15432,7 @@ declare var SVGCircleElement: { } interface SVGClipPathElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGUnitTypes { - clipPathUnits: SVGAnimatedEnumeration; + readonly clipPathUnits: SVGAnimatedEnumeration; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14018,30 +15442,30 @@ declare var SVGClipPathElement: { } interface SVGComponentTransferFunctionElement extends SVGElement { - amplitude: SVGAnimatedNumber; - exponent: SVGAnimatedNumber; - intercept: SVGAnimatedNumber; - offset: SVGAnimatedNumber; - slope: SVGAnimatedNumber; - tableValues: SVGAnimatedNumberList; - type: SVGAnimatedEnumeration; - SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; - SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; - SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; - SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; - SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; - SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; + readonly amplitude: SVGAnimatedNumber; + readonly exponent: SVGAnimatedNumber; + readonly intercept: SVGAnimatedNumber; + readonly offset: SVGAnimatedNumber; + readonly slope: SVGAnimatedNumber; + readonly tableValues: SVGAnimatedNumberList; + readonly type: SVGAnimatedEnumeration; + readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; } declare var SVGComponentTransferFunctionElement: { prototype: SVGComponentTransferFunctionElement; new(): SVGComponentTransferFunctionElement; - SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; - SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; - SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; - SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; - SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; - SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_TABLE: number; + readonly SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN: number; } interface SVGDefsElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { @@ -14063,67 +15487,66 @@ declare var SVGDescElement: { } interface SVGElement extends Element { - id: string; - onclick: (ev: MouseEvent) => any; - ondblclick: (ev: MouseEvent) => any; - onfocusin: (ev: FocusEvent) => any; - onfocusout: (ev: FocusEvent) => any; - onload: (ev: Event) => any; - onmousedown: (ev: MouseEvent) => any; - onmousemove: (ev: MouseEvent) => any; - onmouseout: (ev: MouseEvent) => any; - onmouseover: (ev: MouseEvent) => any; - onmouseup: (ev: MouseEvent) => any; - ownerSVGElement: SVGSVGElement; - viewportElement: SVGElement; + onclick: (this: this, ev: MouseEvent) => any; + ondblclick: (this: this, ev: MouseEvent) => any; + onfocusin: (this: this, ev: FocusEvent) => any; + onfocusout: (this: this, ev: FocusEvent) => any; + onload: (this: this, ev: Event) => any; + onmousedown: (this: this, ev: MouseEvent) => any; + onmousemove: (this: this, ev: MouseEvent) => any; + onmouseout: (this: this, ev: MouseEvent) => any; + onmouseover: (this: this, ev: MouseEvent) => any; + onmouseup: (this: this, ev: MouseEvent) => any; + readonly ownerSVGElement: SVGSVGElement; + readonly viewportElement: SVGElement; xmlbase: string; className: any; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focusin", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focusout", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureChange", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureDoubleTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureEnd", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureHold", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGotPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSInertiaStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSLostPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerCancel", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerDown", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerEnter", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerLeave", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerMove", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOut", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOver", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerUp", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ariarequest", listener: (this: this, ev: AriaRequestEvent) => any, useCapture?: boolean): void; + addEventListener(type: "click", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "command", listener: (this: this, ev: CommandEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dblclick", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "focusin", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "focusout", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "gotpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "lostpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousedown", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousemove", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseout", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseover", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseup", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointercancel", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerdown", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerenter", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerleave", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointermove", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerout", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerover", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerup", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchcancel", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchend", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchmove", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchstart", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenerror", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "wheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14133,14 +15556,14 @@ declare var SVGElement: { } interface SVGElementInstance extends EventTarget { - childNodes: SVGElementInstanceList; - correspondingElement: SVGElement; - correspondingUseElement: SVGUseElement; - firstChild: SVGElementInstance; - lastChild: SVGElementInstance; - nextSibling: SVGElementInstance; - parentNode: SVGElementInstance; - previousSibling: SVGElementInstance; + readonly childNodes: SVGElementInstanceList; + readonly correspondingElement: SVGElement; + readonly correspondingUseElement: SVGUseElement; + readonly firstChild: SVGElementInstance; + readonly lastChild: SVGElementInstance; + readonly nextSibling: SVGElementInstance; + readonly parentNode: SVGElementInstance; + readonly previousSibling: SVGElementInstance; } declare var SVGElementInstance: { @@ -14149,7 +15572,7 @@ declare var SVGElementInstance: { } interface SVGElementInstanceList { - length: number; + readonly length: number; item(index: number): SVGElementInstance; } @@ -14159,10 +15582,10 @@ declare var SVGElementInstanceList: { } interface SVGEllipseElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - rx: SVGAnimatedLength; - ry: SVGAnimatedLength; + readonly cx: SVGAnimatedLength; + readonly cy: SVGAnimatedLength; + readonly rx: SVGAnimatedLength; + readonly ry: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14172,75 +15595,75 @@ declare var SVGEllipseElement: { } interface SVGFEBlendElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - mode: SVGAnimatedEnumeration; - SVG_FEBLEND_MODE_COLOR: number; - SVG_FEBLEND_MODE_COLOR_BURN: number; - SVG_FEBLEND_MODE_COLOR_DODGE: number; - SVG_FEBLEND_MODE_DARKEN: number; - SVG_FEBLEND_MODE_DIFFERENCE: number; - SVG_FEBLEND_MODE_EXCLUSION: number; - SVG_FEBLEND_MODE_HARD_LIGHT: number; - SVG_FEBLEND_MODE_HUE: number; - SVG_FEBLEND_MODE_LIGHTEN: number; - SVG_FEBLEND_MODE_LUMINOSITY: number; - SVG_FEBLEND_MODE_MULTIPLY: number; - SVG_FEBLEND_MODE_NORMAL: number; - SVG_FEBLEND_MODE_OVERLAY: number; - SVG_FEBLEND_MODE_SATURATION: number; - SVG_FEBLEND_MODE_SCREEN: number; - SVG_FEBLEND_MODE_SOFT_LIGHT: number; - SVG_FEBLEND_MODE_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly in2: SVGAnimatedString; + readonly mode: SVGAnimatedEnumeration; + readonly SVG_FEBLEND_MODE_COLOR: number; + readonly SVG_FEBLEND_MODE_COLOR_BURN: number; + readonly SVG_FEBLEND_MODE_COLOR_DODGE: number; + readonly SVG_FEBLEND_MODE_DARKEN: number; + readonly SVG_FEBLEND_MODE_DIFFERENCE: number; + readonly SVG_FEBLEND_MODE_EXCLUSION: number; + readonly SVG_FEBLEND_MODE_HARD_LIGHT: number; + readonly SVG_FEBLEND_MODE_HUE: number; + readonly SVG_FEBLEND_MODE_LIGHTEN: number; + readonly SVG_FEBLEND_MODE_LUMINOSITY: number; + readonly SVG_FEBLEND_MODE_MULTIPLY: number; + readonly SVG_FEBLEND_MODE_NORMAL: number; + readonly SVG_FEBLEND_MODE_OVERLAY: number; + readonly SVG_FEBLEND_MODE_SATURATION: number; + readonly SVG_FEBLEND_MODE_SCREEN: number; + readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number; + readonly SVG_FEBLEND_MODE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEBlendElement: { prototype: SVGFEBlendElement; new(): SVGFEBlendElement; - SVG_FEBLEND_MODE_COLOR: number; - SVG_FEBLEND_MODE_COLOR_BURN: number; - SVG_FEBLEND_MODE_COLOR_DODGE: number; - SVG_FEBLEND_MODE_DARKEN: number; - SVG_FEBLEND_MODE_DIFFERENCE: number; - SVG_FEBLEND_MODE_EXCLUSION: number; - SVG_FEBLEND_MODE_HARD_LIGHT: number; - SVG_FEBLEND_MODE_HUE: number; - SVG_FEBLEND_MODE_LIGHTEN: number; - SVG_FEBLEND_MODE_LUMINOSITY: number; - SVG_FEBLEND_MODE_MULTIPLY: number; - SVG_FEBLEND_MODE_NORMAL: number; - SVG_FEBLEND_MODE_OVERLAY: number; - SVG_FEBLEND_MODE_SATURATION: number; - SVG_FEBLEND_MODE_SCREEN: number; - SVG_FEBLEND_MODE_SOFT_LIGHT: number; - SVG_FEBLEND_MODE_UNKNOWN: number; + readonly SVG_FEBLEND_MODE_COLOR: number; + readonly SVG_FEBLEND_MODE_COLOR_BURN: number; + readonly SVG_FEBLEND_MODE_COLOR_DODGE: number; + readonly SVG_FEBLEND_MODE_DARKEN: number; + readonly SVG_FEBLEND_MODE_DIFFERENCE: number; + readonly SVG_FEBLEND_MODE_EXCLUSION: number; + readonly SVG_FEBLEND_MODE_HARD_LIGHT: number; + readonly SVG_FEBLEND_MODE_HUE: number; + readonly SVG_FEBLEND_MODE_LIGHTEN: number; + readonly SVG_FEBLEND_MODE_LUMINOSITY: number; + readonly SVG_FEBLEND_MODE_MULTIPLY: number; + readonly SVG_FEBLEND_MODE_NORMAL: number; + readonly SVG_FEBLEND_MODE_OVERLAY: number; + readonly SVG_FEBLEND_MODE_SATURATION: number; + readonly SVG_FEBLEND_MODE_SCREEN: number; + readonly SVG_FEBLEND_MODE_SOFT_LIGHT: number; + readonly SVG_FEBLEND_MODE_UNKNOWN: number; } interface SVGFEColorMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - type: SVGAnimatedEnumeration; - values: SVGAnimatedNumberList; - SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; - SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; - SVG_FECOLORMATRIX_TYPE_MATRIX: number; - SVG_FECOLORMATRIX_TYPE_SATURATE: number; - SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly type: SVGAnimatedEnumeration; + readonly values: SVGAnimatedNumberList; + readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; + readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; + readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number; + readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number; + readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEColorMatrixElement: { prototype: SVGFEColorMatrixElement; new(): SVGFEColorMatrixElement; - SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; - SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; - SVG_FECOLORMATRIX_TYPE_MATRIX: number; - SVG_FECOLORMATRIX_TYPE_SATURATE: number; - SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; + readonly SVG_FECOLORMATRIX_TYPE_HUEROTATE: number; + readonly SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA: number; + readonly SVG_FECOLORMATRIX_TYPE_MATRIX: number; + readonly SVG_FECOLORMATRIX_TYPE_SATURATE: number; + readonly SVG_FECOLORMATRIX_TYPE_UNKNOWN: number; } interface SVGFEComponentTransferElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; + readonly in1: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14250,70 +15673,70 @@ declare var SVGFEComponentTransferElement: { } interface SVGFECompositeElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - k1: SVGAnimatedNumber; - k2: SVGAnimatedNumber; - k3: SVGAnimatedNumber; - k4: SVGAnimatedNumber; - operator: SVGAnimatedEnumeration; - SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; - SVG_FECOMPOSITE_OPERATOR_ATOP: number; - SVG_FECOMPOSITE_OPERATOR_IN: number; - SVG_FECOMPOSITE_OPERATOR_OUT: number; - SVG_FECOMPOSITE_OPERATOR_OVER: number; - SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; - SVG_FECOMPOSITE_OPERATOR_XOR: number; + readonly in1: SVGAnimatedString; + readonly in2: SVGAnimatedString; + readonly k1: SVGAnimatedNumber; + readonly k2: SVGAnimatedNumber; + readonly k3: SVGAnimatedNumber; + readonly k4: SVGAnimatedNumber; + readonly operator: SVGAnimatedEnumeration; + readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; + readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number; + readonly SVG_FECOMPOSITE_OPERATOR_IN: number; + readonly SVG_FECOMPOSITE_OPERATOR_OUT: number; + readonly SVG_FECOMPOSITE_OPERATOR_OVER: number; + readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; + readonly SVG_FECOMPOSITE_OPERATOR_XOR: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFECompositeElement: { prototype: SVGFECompositeElement; new(): SVGFECompositeElement; - SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; - SVG_FECOMPOSITE_OPERATOR_ATOP: number; - SVG_FECOMPOSITE_OPERATOR_IN: number; - SVG_FECOMPOSITE_OPERATOR_OUT: number; - SVG_FECOMPOSITE_OPERATOR_OVER: number; - SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; - SVG_FECOMPOSITE_OPERATOR_XOR: number; + readonly SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: number; + readonly SVG_FECOMPOSITE_OPERATOR_ATOP: number; + readonly SVG_FECOMPOSITE_OPERATOR_IN: number; + readonly SVG_FECOMPOSITE_OPERATOR_OUT: number; + readonly SVG_FECOMPOSITE_OPERATOR_OVER: number; + readonly SVG_FECOMPOSITE_OPERATOR_UNKNOWN: number; + readonly SVG_FECOMPOSITE_OPERATOR_XOR: number; } interface SVGFEConvolveMatrixElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - bias: SVGAnimatedNumber; - divisor: SVGAnimatedNumber; - edgeMode: SVGAnimatedEnumeration; - in1: SVGAnimatedString; - kernelMatrix: SVGAnimatedNumberList; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - orderX: SVGAnimatedInteger; - orderY: SVGAnimatedInteger; - preserveAlpha: SVGAnimatedBoolean; - targetX: SVGAnimatedInteger; - targetY: SVGAnimatedInteger; - SVG_EDGEMODE_DUPLICATE: number; - SVG_EDGEMODE_NONE: number; - SVG_EDGEMODE_UNKNOWN: number; - SVG_EDGEMODE_WRAP: number; + readonly bias: SVGAnimatedNumber; + readonly divisor: SVGAnimatedNumber; + readonly edgeMode: SVGAnimatedEnumeration; + readonly in1: SVGAnimatedString; + readonly kernelMatrix: SVGAnimatedNumberList; + readonly kernelUnitLengthX: SVGAnimatedNumber; + readonly kernelUnitLengthY: SVGAnimatedNumber; + readonly orderX: SVGAnimatedInteger; + readonly orderY: SVGAnimatedInteger; + readonly preserveAlpha: SVGAnimatedBoolean; + readonly targetX: SVGAnimatedInteger; + readonly targetY: SVGAnimatedInteger; + readonly SVG_EDGEMODE_DUPLICATE: number; + readonly SVG_EDGEMODE_NONE: number; + readonly SVG_EDGEMODE_UNKNOWN: number; + readonly SVG_EDGEMODE_WRAP: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEConvolveMatrixElement: { prototype: SVGFEConvolveMatrixElement; new(): SVGFEConvolveMatrixElement; - SVG_EDGEMODE_DUPLICATE: number; - SVG_EDGEMODE_NONE: number; - SVG_EDGEMODE_UNKNOWN: number; - SVG_EDGEMODE_WRAP: number; + readonly SVG_EDGEMODE_DUPLICATE: number; + readonly SVG_EDGEMODE_NONE: number; + readonly SVG_EDGEMODE_UNKNOWN: number; + readonly SVG_EDGEMODE_WRAP: number; } interface SVGFEDiffuseLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - diffuseConstant: SVGAnimatedNumber; - in1: SVGAnimatedString; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - surfaceScale: SVGAnimatedNumber; + readonly diffuseConstant: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; + readonly kernelUnitLengthX: SVGAnimatedNumber; + readonly kernelUnitLengthY: SVGAnimatedNumber; + readonly surfaceScale: SVGAnimatedNumber; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14323,32 +15746,32 @@ declare var SVGFEDiffuseLightingElement: { } interface SVGFEDisplacementMapElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - in2: SVGAnimatedString; - scale: SVGAnimatedNumber; - xChannelSelector: SVGAnimatedEnumeration; - yChannelSelector: SVGAnimatedEnumeration; - SVG_CHANNEL_A: number; - SVG_CHANNEL_B: number; - SVG_CHANNEL_G: number; - SVG_CHANNEL_R: number; - SVG_CHANNEL_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly in2: SVGAnimatedString; + readonly scale: SVGAnimatedNumber; + readonly xChannelSelector: SVGAnimatedEnumeration; + readonly yChannelSelector: SVGAnimatedEnumeration; + readonly SVG_CHANNEL_A: number; + readonly SVG_CHANNEL_B: number; + readonly SVG_CHANNEL_G: number; + readonly SVG_CHANNEL_R: number; + readonly SVG_CHANNEL_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEDisplacementMapElement: { prototype: SVGFEDisplacementMapElement; new(): SVGFEDisplacementMapElement; - SVG_CHANNEL_A: number; - SVG_CHANNEL_B: number; - SVG_CHANNEL_G: number; - SVG_CHANNEL_R: number; - SVG_CHANNEL_UNKNOWN: number; + readonly SVG_CHANNEL_A: number; + readonly SVG_CHANNEL_B: number; + readonly SVG_CHANNEL_G: number; + readonly SVG_CHANNEL_R: number; + readonly SVG_CHANNEL_UNKNOWN: number; } interface SVGFEDistantLightElement extends SVGElement { - azimuth: SVGAnimatedNumber; - elevation: SVGAnimatedNumber; + readonly azimuth: SVGAnimatedNumber; + readonly elevation: SVGAnimatedNumber; } declare var SVGFEDistantLightElement: { @@ -14398,9 +15821,9 @@ declare var SVGFEFuncRElement: { } interface SVGFEGaussianBlurElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - stdDeviationX: SVGAnimatedNumber; - stdDeviationY: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; + readonly stdDeviationX: SVGAnimatedNumber; + readonly stdDeviationY: SVGAnimatedNumber; setStdDeviation(stdDeviationX: number, stdDeviationY: number): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14411,7 +15834,7 @@ declare var SVGFEGaussianBlurElement: { } interface SVGFEImageElement extends SVGElement, SVGFilterPrimitiveStandardAttributes, SVGLangSpace, SVGURIReference, SVGExternalResourcesRequired { - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; + readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14430,7 +15853,7 @@ declare var SVGFEMergeElement: { } interface SVGFEMergeNodeElement extends SVGElement { - in1: SVGAnimatedString; + readonly in1: SVGAnimatedString; } declare var SVGFEMergeNodeElement: { @@ -14439,28 +15862,28 @@ declare var SVGFEMergeNodeElement: { } interface SVGFEMorphologyElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - operator: SVGAnimatedEnumeration; - radiusX: SVGAnimatedNumber; - radiusY: SVGAnimatedNumber; - SVG_MORPHOLOGY_OPERATOR_DILATE: number; - SVG_MORPHOLOGY_OPERATOR_ERODE: number; - SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; + readonly in1: SVGAnimatedString; + readonly operator: SVGAnimatedEnumeration; + readonly radiusX: SVGAnimatedNumber; + readonly radiusY: SVGAnimatedNumber; + readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number; + readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number; + readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFEMorphologyElement: { prototype: SVGFEMorphologyElement; new(): SVGFEMorphologyElement; - SVG_MORPHOLOGY_OPERATOR_DILATE: number; - SVG_MORPHOLOGY_OPERATOR_ERODE: number; - SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; + readonly SVG_MORPHOLOGY_OPERATOR_DILATE: number; + readonly SVG_MORPHOLOGY_OPERATOR_ERODE: number; + readonly SVG_MORPHOLOGY_OPERATOR_UNKNOWN: number; } interface SVGFEOffsetElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - dx: SVGAnimatedNumber; - dy: SVGAnimatedNumber; - in1: SVGAnimatedString; + readonly dx: SVGAnimatedNumber; + readonly dy: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14470,9 +15893,9 @@ declare var SVGFEOffsetElement: { } interface SVGFEPointLightElement extends SVGElement { - x: SVGAnimatedNumber; - y: SVGAnimatedNumber; - z: SVGAnimatedNumber; + readonly x: SVGAnimatedNumber; + readonly y: SVGAnimatedNumber; + readonly z: SVGAnimatedNumber; } declare var SVGFEPointLightElement: { @@ -14481,12 +15904,12 @@ declare var SVGFEPointLightElement: { } interface SVGFESpecularLightingElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; - kernelUnitLengthX: SVGAnimatedNumber; - kernelUnitLengthY: SVGAnimatedNumber; - specularConstant: SVGAnimatedNumber; - specularExponent: SVGAnimatedNumber; - surfaceScale: SVGAnimatedNumber; + readonly in1: SVGAnimatedString; + readonly kernelUnitLengthX: SVGAnimatedNumber; + readonly kernelUnitLengthY: SVGAnimatedNumber; + readonly specularConstant: SVGAnimatedNumber; + readonly specularExponent: SVGAnimatedNumber; + readonly surfaceScale: SVGAnimatedNumber; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14496,14 +15919,14 @@ declare var SVGFESpecularLightingElement: { } interface SVGFESpotLightElement extends SVGElement { - limitingConeAngle: SVGAnimatedNumber; - pointsAtX: SVGAnimatedNumber; - pointsAtY: SVGAnimatedNumber; - pointsAtZ: SVGAnimatedNumber; - specularExponent: SVGAnimatedNumber; - x: SVGAnimatedNumber; - y: SVGAnimatedNumber; - z: SVGAnimatedNumber; + readonly limitingConeAngle: SVGAnimatedNumber; + readonly pointsAtX: SVGAnimatedNumber; + readonly pointsAtY: SVGAnimatedNumber; + readonly pointsAtZ: SVGAnimatedNumber; + readonly specularExponent: SVGAnimatedNumber; + readonly x: SVGAnimatedNumber; + readonly y: SVGAnimatedNumber; + readonly z: SVGAnimatedNumber; } declare var SVGFESpotLightElement: { @@ -14512,7 +15935,7 @@ declare var SVGFESpotLightElement: { } interface SVGFETileElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - in1: SVGAnimatedString; + readonly in1: SVGAnimatedString; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14522,41 +15945,41 @@ declare var SVGFETileElement: { } interface SVGFETurbulenceElement extends SVGElement, SVGFilterPrimitiveStandardAttributes { - baseFrequencyX: SVGAnimatedNumber; - baseFrequencyY: SVGAnimatedNumber; - numOctaves: SVGAnimatedInteger; - seed: SVGAnimatedNumber; - stitchTiles: SVGAnimatedEnumeration; - type: SVGAnimatedEnumeration; - SVG_STITCHTYPE_NOSTITCH: number; - SVG_STITCHTYPE_STITCH: number; - SVG_STITCHTYPE_UNKNOWN: number; - SVG_TURBULENCE_TYPE_FRACTALNOISE: number; - SVG_TURBULENCE_TYPE_TURBULENCE: number; - SVG_TURBULENCE_TYPE_UNKNOWN: number; + readonly baseFrequencyX: SVGAnimatedNumber; + readonly baseFrequencyY: SVGAnimatedNumber; + readonly numOctaves: SVGAnimatedInteger; + readonly seed: SVGAnimatedNumber; + readonly stitchTiles: SVGAnimatedEnumeration; + readonly type: SVGAnimatedEnumeration; + readonly SVG_STITCHTYPE_NOSTITCH: number; + readonly SVG_STITCHTYPE_STITCH: number; + readonly SVG_STITCHTYPE_UNKNOWN: number; + readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number; + readonly SVG_TURBULENCE_TYPE_TURBULENCE: number; + readonly SVG_TURBULENCE_TYPE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGFETurbulenceElement: { prototype: SVGFETurbulenceElement; new(): SVGFETurbulenceElement; - SVG_STITCHTYPE_NOSTITCH: number; - SVG_STITCHTYPE_STITCH: number; - SVG_STITCHTYPE_UNKNOWN: number; - SVG_TURBULENCE_TYPE_FRACTALNOISE: number; - SVG_TURBULENCE_TYPE_TURBULENCE: number; - SVG_TURBULENCE_TYPE_UNKNOWN: number; + readonly SVG_STITCHTYPE_NOSTITCH: number; + readonly SVG_STITCHTYPE_STITCH: number; + readonly SVG_STITCHTYPE_UNKNOWN: number; + readonly SVG_TURBULENCE_TYPE_FRACTALNOISE: number; + readonly SVG_TURBULENCE_TYPE_TURBULENCE: number; + readonly SVG_TURBULENCE_TYPE_UNKNOWN: number; } interface SVGFilterElement extends SVGElement, SVGUnitTypes, SVGStylable, SVGLangSpace, SVGURIReference, SVGExternalResourcesRequired { - filterResX: SVGAnimatedInteger; - filterResY: SVGAnimatedInteger; - filterUnits: SVGAnimatedEnumeration; - height: SVGAnimatedLength; - primitiveUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly filterResX: SVGAnimatedInteger; + readonly filterResY: SVGAnimatedInteger; + readonly filterUnits: SVGAnimatedEnumeration; + readonly height: SVGAnimatedLength; + readonly primitiveUnits: SVGAnimatedEnumeration; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; setFilterRes(filterResX: number, filterResY: number): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14567,10 +15990,10 @@ declare var SVGFilterElement: { } interface SVGForeignObjectElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - height: SVGAnimatedLength; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14589,31 +16012,31 @@ declare var SVGGElement: { } interface SVGGradientElement extends SVGElement, SVGStylable, SVGExternalResourcesRequired, SVGURIReference, SVGUnitTypes { - gradientTransform: SVGAnimatedTransformList; - gradientUnits: SVGAnimatedEnumeration; - spreadMethod: SVGAnimatedEnumeration; - SVG_SPREADMETHOD_PAD: number; - SVG_SPREADMETHOD_REFLECT: number; - SVG_SPREADMETHOD_REPEAT: number; - SVG_SPREADMETHOD_UNKNOWN: number; + readonly gradientTransform: SVGAnimatedTransformList; + readonly gradientUnits: SVGAnimatedEnumeration; + readonly spreadMethod: SVGAnimatedEnumeration; + readonly SVG_SPREADMETHOD_PAD: number; + readonly SVG_SPREADMETHOD_REFLECT: number; + readonly SVG_SPREADMETHOD_REPEAT: number; + readonly SVG_SPREADMETHOD_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGGradientElement: { prototype: SVGGradientElement; new(): SVGGradientElement; - SVG_SPREADMETHOD_PAD: number; - SVG_SPREADMETHOD_REFLECT: number; - SVG_SPREADMETHOD_REPEAT: number; - SVG_SPREADMETHOD_UNKNOWN: number; + readonly SVG_SPREADMETHOD_PAD: number; + readonly SVG_SPREADMETHOD_REFLECT: number; + readonly SVG_SPREADMETHOD_REPEAT: number; + readonly SVG_SPREADMETHOD_UNKNOWN: number; } interface SVGImageElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - height: SVGAnimatedLength; - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14623,43 +16046,43 @@ declare var SVGImageElement: { } interface SVGLength { - unitType: number; + readonly unitType: number; value: number; valueAsString: string; valueInSpecifiedUnits: number; convertToSpecifiedUnits(unitType: number): void; newValueSpecifiedUnits(unitType: number, valueInSpecifiedUnits: number): void; - SVG_LENGTHTYPE_CM: number; - SVG_LENGTHTYPE_EMS: number; - SVG_LENGTHTYPE_EXS: number; - SVG_LENGTHTYPE_IN: number; - SVG_LENGTHTYPE_MM: number; - SVG_LENGTHTYPE_NUMBER: number; - SVG_LENGTHTYPE_PC: number; - SVG_LENGTHTYPE_PERCENTAGE: number; - SVG_LENGTHTYPE_PT: number; - SVG_LENGTHTYPE_PX: number; - SVG_LENGTHTYPE_UNKNOWN: number; + readonly SVG_LENGTHTYPE_CM: number; + readonly SVG_LENGTHTYPE_EMS: number; + readonly SVG_LENGTHTYPE_EXS: number; + readonly SVG_LENGTHTYPE_IN: number; + readonly SVG_LENGTHTYPE_MM: number; + readonly SVG_LENGTHTYPE_NUMBER: number; + readonly SVG_LENGTHTYPE_PC: number; + readonly SVG_LENGTHTYPE_PERCENTAGE: number; + readonly SVG_LENGTHTYPE_PT: number; + readonly SVG_LENGTHTYPE_PX: number; + readonly SVG_LENGTHTYPE_UNKNOWN: number; } declare var SVGLength: { prototype: SVGLength; new(): SVGLength; - SVG_LENGTHTYPE_CM: number; - SVG_LENGTHTYPE_EMS: number; - SVG_LENGTHTYPE_EXS: number; - SVG_LENGTHTYPE_IN: number; - SVG_LENGTHTYPE_MM: number; - SVG_LENGTHTYPE_NUMBER: number; - SVG_LENGTHTYPE_PC: number; - SVG_LENGTHTYPE_PERCENTAGE: number; - SVG_LENGTHTYPE_PT: number; - SVG_LENGTHTYPE_PX: number; - SVG_LENGTHTYPE_UNKNOWN: number; + readonly SVG_LENGTHTYPE_CM: number; + readonly SVG_LENGTHTYPE_EMS: number; + readonly SVG_LENGTHTYPE_EXS: number; + readonly SVG_LENGTHTYPE_IN: number; + readonly SVG_LENGTHTYPE_MM: number; + readonly SVG_LENGTHTYPE_NUMBER: number; + readonly SVG_LENGTHTYPE_PC: number; + readonly SVG_LENGTHTYPE_PERCENTAGE: number; + readonly SVG_LENGTHTYPE_PT: number; + readonly SVG_LENGTHTYPE_PX: number; + readonly SVG_LENGTHTYPE_UNKNOWN: number; } interface SVGLengthList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGLength): SVGLength; clear(): void; getItem(index: number): SVGLength; @@ -14675,10 +16098,10 @@ declare var SVGLengthList: { } interface SVGLineElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - x1: SVGAnimatedLength; - x2: SVGAnimatedLength; - y1: SVGAnimatedLength; - y2: SVGAnimatedLength; + readonly x1: SVGAnimatedLength; + readonly x2: SVGAnimatedLength; + readonly y1: SVGAnimatedLength; + readonly y2: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14688,10 +16111,10 @@ declare var SVGLineElement: { } interface SVGLinearGradientElement extends SVGGradientElement { - x1: SVGAnimatedLength; - x2: SVGAnimatedLength; - y1: SVGAnimatedLength; - y2: SVGAnimatedLength; + readonly x1: SVGAnimatedLength; + readonly x2: SVGAnimatedLength; + readonly y1: SVGAnimatedLength; + readonly y2: SVGAnimatedLength; } declare var SVGLinearGradientElement: { @@ -14700,42 +16123,42 @@ declare var SVGLinearGradientElement: { } interface SVGMarkerElement extends SVGElement, SVGStylable, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox { - markerHeight: SVGAnimatedLength; - markerUnits: SVGAnimatedEnumeration; - markerWidth: SVGAnimatedLength; - orientAngle: SVGAnimatedAngle; - orientType: SVGAnimatedEnumeration; - refX: SVGAnimatedLength; - refY: SVGAnimatedLength; + readonly markerHeight: SVGAnimatedLength; + readonly markerUnits: SVGAnimatedEnumeration; + readonly markerWidth: SVGAnimatedLength; + readonly orientAngle: SVGAnimatedAngle; + readonly orientType: SVGAnimatedEnumeration; + readonly refX: SVGAnimatedLength; + readonly refY: SVGAnimatedLength; setOrientToAngle(angle: SVGAngle): void; setOrientToAuto(): void; - SVG_MARKERUNITS_STROKEWIDTH: number; - SVG_MARKERUNITS_UNKNOWN: number; - SVG_MARKERUNITS_USERSPACEONUSE: number; - SVG_MARKER_ORIENT_ANGLE: number; - SVG_MARKER_ORIENT_AUTO: number; - SVG_MARKER_ORIENT_UNKNOWN: number; + readonly SVG_MARKERUNITS_STROKEWIDTH: number; + readonly SVG_MARKERUNITS_UNKNOWN: number; + readonly SVG_MARKERUNITS_USERSPACEONUSE: number; + readonly SVG_MARKER_ORIENT_ANGLE: number; + readonly SVG_MARKER_ORIENT_AUTO: number; + readonly SVG_MARKER_ORIENT_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGMarkerElement: { prototype: SVGMarkerElement; new(): SVGMarkerElement; - SVG_MARKERUNITS_STROKEWIDTH: number; - SVG_MARKERUNITS_UNKNOWN: number; - SVG_MARKERUNITS_USERSPACEONUSE: number; - SVG_MARKER_ORIENT_ANGLE: number; - SVG_MARKER_ORIENT_AUTO: number; - SVG_MARKER_ORIENT_UNKNOWN: number; + readonly SVG_MARKERUNITS_STROKEWIDTH: number; + readonly SVG_MARKERUNITS_UNKNOWN: number; + readonly SVG_MARKERUNITS_USERSPACEONUSE: number; + readonly SVG_MARKER_ORIENT_ANGLE: number; + readonly SVG_MARKER_ORIENT_AUTO: number; + readonly SVG_MARKER_ORIENT_UNKNOWN: number; } interface SVGMaskElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGUnitTypes { - height: SVGAnimatedLength; - maskContentUnits: SVGAnimatedEnumeration; - maskUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly maskContentUnits: SVGAnimatedEnumeration; + readonly maskUnits: SVGAnimatedEnumeration; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -14787,7 +16210,7 @@ declare var SVGNumber: { } interface SVGNumberList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGNumber): SVGNumber; clear(): void; getItem(index: number): SVGNumber; @@ -14834,53 +16257,53 @@ declare var SVGPathElement: { } interface SVGPathSeg { - pathSegType: number; - pathSegTypeAsLetter: string; - PATHSEG_ARC_ABS: number; - PATHSEG_ARC_REL: number; - PATHSEG_CLOSEPATH: number; - PATHSEG_CURVETO_CUBIC_ABS: number; - PATHSEG_CURVETO_CUBIC_REL: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; - PATHSEG_CURVETO_QUADRATIC_ABS: number; - PATHSEG_CURVETO_QUADRATIC_REL: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; - PATHSEG_LINETO_ABS: number; - PATHSEG_LINETO_HORIZONTAL_ABS: number; - PATHSEG_LINETO_HORIZONTAL_REL: number; - PATHSEG_LINETO_REL: number; - PATHSEG_LINETO_VERTICAL_ABS: number; - PATHSEG_LINETO_VERTICAL_REL: number; - PATHSEG_MOVETO_ABS: number; - PATHSEG_MOVETO_REL: number; - PATHSEG_UNKNOWN: number; + readonly pathSegType: number; + readonly pathSegTypeAsLetter: string; + readonly PATHSEG_ARC_ABS: number; + readonly PATHSEG_ARC_REL: number; + readonly PATHSEG_CLOSEPATH: number; + readonly PATHSEG_CURVETO_CUBIC_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_REL: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; + readonly PATHSEG_LINETO_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_REL: number; + readonly PATHSEG_LINETO_REL: number; + readonly PATHSEG_LINETO_VERTICAL_ABS: number; + readonly PATHSEG_LINETO_VERTICAL_REL: number; + readonly PATHSEG_MOVETO_ABS: number; + readonly PATHSEG_MOVETO_REL: number; + readonly PATHSEG_UNKNOWN: number; } declare var SVGPathSeg: { prototype: SVGPathSeg; new(): SVGPathSeg; - PATHSEG_ARC_ABS: number; - PATHSEG_ARC_REL: number; - PATHSEG_CLOSEPATH: number; - PATHSEG_CURVETO_CUBIC_ABS: number; - PATHSEG_CURVETO_CUBIC_REL: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; - PATHSEG_CURVETO_QUADRATIC_ABS: number; - PATHSEG_CURVETO_QUADRATIC_REL: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; - PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; - PATHSEG_LINETO_ABS: number; - PATHSEG_LINETO_HORIZONTAL_ABS: number; - PATHSEG_LINETO_HORIZONTAL_REL: number; - PATHSEG_LINETO_REL: number; - PATHSEG_LINETO_VERTICAL_ABS: number; - PATHSEG_LINETO_VERTICAL_REL: number; - PATHSEG_MOVETO_ABS: number; - PATHSEG_MOVETO_REL: number; - PATHSEG_UNKNOWN: number; + readonly PATHSEG_ARC_ABS: number; + readonly PATHSEG_ARC_REL: number; + readonly PATHSEG_CLOSEPATH: number; + readonly PATHSEG_CURVETO_CUBIC_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_REL: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_CUBIC_SMOOTH_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_REL: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: number; + readonly PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: number; + readonly PATHSEG_LINETO_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_ABS: number; + readonly PATHSEG_LINETO_HORIZONTAL_REL: number; + readonly PATHSEG_LINETO_REL: number; + readonly PATHSEG_LINETO_VERTICAL_ABS: number; + readonly PATHSEG_LINETO_VERTICAL_REL: number; + readonly PATHSEG_MOVETO_ABS: number; + readonly PATHSEG_MOVETO_REL: number; + readonly PATHSEG_UNKNOWN: number; } interface SVGPathSegArcAbs extends SVGPathSeg { @@ -15074,7 +16497,7 @@ declare var SVGPathSegLinetoVerticalRel: { } interface SVGPathSegList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGPathSeg): SVGPathSeg; clear(): void; getItem(index: number): SVGPathSeg; @@ -15110,13 +16533,13 @@ declare var SVGPathSegMovetoRel: { } interface SVGPatternElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGFitToViewBox, SVGURIReference, SVGUnitTypes { - height: SVGAnimatedLength; - patternContentUnits: SVGAnimatedEnumeration; - patternTransform: SVGAnimatedTransformList; - patternUnits: SVGAnimatedEnumeration; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly patternContentUnits: SVGAnimatedEnumeration; + readonly patternTransform: SVGAnimatedTransformList; + readonly patternUnits: SVGAnimatedEnumeration; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -15137,7 +16560,7 @@ declare var SVGPoint: { } interface SVGPointList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGPoint): SVGPoint; clear(): void; getItem(index: number): SVGPoint; @@ -15173,47 +16596,47 @@ declare var SVGPolylineElement: { interface SVGPreserveAspectRatio { align: number; meetOrSlice: number; - SVG_MEETORSLICE_MEET: number; - SVG_MEETORSLICE_SLICE: number; - SVG_MEETORSLICE_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_NONE: number; - SVG_PRESERVEASPECTRATIO_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; - SVG_PRESERVEASPECTRATIO_XMAXYMID: number; - SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; - SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; - SVG_PRESERVEASPECTRATIO_XMIDYMID: number; - SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; - SVG_PRESERVEASPECTRATIO_XMINYMAX: number; - SVG_PRESERVEASPECTRATIO_XMINYMID: number; - SVG_PRESERVEASPECTRATIO_XMINYMIN: number; + readonly SVG_MEETORSLICE_MEET: number; + readonly SVG_MEETORSLICE_SLICE: number; + readonly SVG_MEETORSLICE_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_NONE: number; + readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number; } declare var SVGPreserveAspectRatio: { prototype: SVGPreserveAspectRatio; new(): SVGPreserveAspectRatio; - SVG_MEETORSLICE_MEET: number; - SVG_MEETORSLICE_SLICE: number; - SVG_MEETORSLICE_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_NONE: number; - SVG_PRESERVEASPECTRATIO_UNKNOWN: number; - SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; - SVG_PRESERVEASPECTRATIO_XMAXYMID: number; - SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; - SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; - SVG_PRESERVEASPECTRATIO_XMIDYMID: number; - SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; - SVG_PRESERVEASPECTRATIO_XMINYMAX: number; - SVG_PRESERVEASPECTRATIO_XMINYMID: number; - SVG_PRESERVEASPECTRATIO_XMINYMIN: number; + readonly SVG_MEETORSLICE_MEET: number; + readonly SVG_MEETORSLICE_SLICE: number; + readonly SVG_MEETORSLICE_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_NONE: number; + readonly SVG_PRESERVEASPECTRATIO_UNKNOWN: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMAXYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMIDYMIN: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMAX: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMID: number; + readonly SVG_PRESERVEASPECTRATIO_XMINYMIN: number; } interface SVGRadialGradientElement extends SVGGradientElement { - cx: SVGAnimatedLength; - cy: SVGAnimatedLength; - fx: SVGAnimatedLength; - fy: SVGAnimatedLength; - r: SVGAnimatedLength; + readonly cx: SVGAnimatedLength; + readonly cy: SVGAnimatedLength; + readonly fx: SVGAnimatedLength; + readonly fy: SVGAnimatedLength; + readonly r: SVGAnimatedLength; } declare var SVGRadialGradientElement: { @@ -15234,12 +16657,12 @@ declare var SVGRect: { } interface SVGRectElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - height: SVGAnimatedLength; - rx: SVGAnimatedLength; - ry: SVGAnimatedLength; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly rx: SVGAnimatedLength; + readonly ry: SVGAnimatedLength; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -15252,22 +16675,22 @@ interface SVGSVGElement extends SVGElement, DocumentEvent, SVGLocatable, SVGTest contentScriptType: string; contentStyleType: string; currentScale: number; - currentTranslate: SVGPoint; - height: SVGAnimatedLength; - onabort: (ev: Event) => any; - onerror: (ev: Event) => any; - onresize: (ev: UIEvent) => any; - onscroll: (ev: UIEvent) => any; - onunload: (ev: Event) => any; - onzoom: (ev: SVGZoomEvent) => any; - pixelUnitToMillimeterX: number; - pixelUnitToMillimeterY: number; - screenPixelToMillimeterX: number; - screenPixelToMillimeterY: number; - viewport: SVGRect; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly currentTranslate: SVGPoint; + readonly height: SVGAnimatedLength; + onabort: (this: this, ev: Event) => any; + onerror: (this: this, ev: Event) => any; + onresize: (this: this, ev: UIEvent) => any; + onscroll: (this: this, ev: UIEvent) => any; + onunload: (this: this, ev: Event) => any; + onzoom: (this: this, ev: SVGZoomEvent) => any; + readonly pixelUnitToMillimeterX: number; + readonly pixelUnitToMillimeterY: number; + readonly screenPixelToMillimeterX: number; + readonly screenPixelToMillimeterY: number; + readonly viewport: SVGRect; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; checkEnclosure(element: SVGElement, rect: SVGRect): boolean; checkIntersection(element: SVGElement, rect: SVGRect): boolean; createSVGAngle(): SVGAngle; @@ -15283,66 +16706,66 @@ interface SVGSVGElement extends SVGElement, DocumentEvent, SVGLocatable, SVGTest getComputedStyle(elt: Element, pseudoElt?: string): CSSStyleDeclaration; getCurrentTime(): number; getElementById(elementId: string): Element; - getEnclosureList(rect: SVGRect, referenceElement: SVGElement): NodeList; - getIntersectionList(rect: SVGRect, referenceElement: SVGElement): NodeList; + getEnclosureList(rect: SVGRect, referenceElement: SVGElement): NodeListOf; + getIntersectionList(rect: SVGRect, referenceElement: SVGElement): NodeListOf; pauseAnimations(): void; setCurrentTime(seconds: number): void; suspendRedraw(maxWaitMilliseconds: number): number; unpauseAnimations(): void; unsuspendRedraw(suspendHandleID: number): void; unsuspendRedrawAll(): void; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGotPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSLostPointerCapture", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "SVGAbort", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "SVGError", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "SVGUnload", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "SVGZoom", listener: (ev: SVGZoomEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ariarequest", listener: (ev: AriaRequestEvent) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "command", listener: (ev: CommandEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focusin", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "focusout", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "gotpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "lostpointercapture", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "resize", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchcancel", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchend", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchmove", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "touchstart", listener: (ev: TouchEvent) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "webkitfullscreenerror", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureChange", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureDoubleTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureEnd", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureHold", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGotPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSInertiaStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSLostPointerCapture", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerCancel", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerDown", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerEnter", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerLeave", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerMove", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOut", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOver", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerUp", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "SVGAbort", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "SVGError", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "SVGUnload", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "SVGZoom", listener: (this: this, ev: SVGZoomEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ariarequest", listener: (this: this, ev: AriaRequestEvent) => any, useCapture?: boolean): void; + addEventListener(type: "click", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "command", listener: (this: this, ev: CommandEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dblclick", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "focusin", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "focusout", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "gotpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "lostpointercapture", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousedown", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousemove", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseout", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseover", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseup", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointercancel", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerdown", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerenter", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerleave", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointermove", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerout", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerover", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerup", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "resize", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "scroll", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchcancel", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchend", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchmove", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "touchstart", listener: (this: this, ev: TouchEvent) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "webkitfullscreenerror", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "wheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -15362,7 +16785,7 @@ declare var SVGScriptElement: { } interface SVGStopElement extends SVGElement, SVGStylable { - offset: SVGAnimatedNumber; + readonly offset: SVGAnimatedNumber; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -15372,7 +16795,7 @@ declare var SVGStopElement: { } interface SVGStringList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: string): string; clear(): void; getItem(index: number): string; @@ -15388,6 +16811,7 @@ declare var SVGStringList: { } interface SVGStyleElement extends SVGElement, SVGLangSpace { + disabled: boolean; media: string; title: string; type: string; @@ -15426,8 +16850,8 @@ declare var SVGTSpanElement: { } interface SVGTextContentElement extends SVGElement, SVGStylable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired { - lengthAdjust: SVGAnimatedEnumeration; - textLength: SVGAnimatedLength; + readonly lengthAdjust: SVGAnimatedEnumeration; + readonly textLength: SVGAnimatedLength; getCharNumAtPosition(point: SVGPoint): number; getComputedTextLength(): number; getEndPositionOfChar(charnum: number): SVGPoint; @@ -15437,18 +16861,18 @@ interface SVGTextContentElement extends SVGElement, SVGStylable, SVGTests, SVGLa getStartPositionOfChar(charnum: number): SVGPoint; getSubStringLength(charnum: number, nchars: number): number; selectSubString(charnum: number, nchars: number): void; - LENGTHADJUST_SPACING: number; - LENGTHADJUST_SPACINGANDGLYPHS: number; - LENGTHADJUST_UNKNOWN: number; + readonly LENGTHADJUST_SPACING: number; + readonly LENGTHADJUST_SPACINGANDGLYPHS: number; + readonly LENGTHADJUST_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGTextContentElement: { prototype: SVGTextContentElement; new(): SVGTextContentElement; - LENGTHADJUST_SPACING: number; - LENGTHADJUST_SPACINGANDGLYPHS: number; - LENGTHADJUST_UNKNOWN: number; + readonly LENGTHADJUST_SPACING: number; + readonly LENGTHADJUST_SPACINGANDGLYPHS: number; + readonly LENGTHADJUST_UNKNOWN: number; } interface SVGTextElement extends SVGTextPositioningElement, SVGTransformable { @@ -15461,35 +16885,35 @@ declare var SVGTextElement: { } interface SVGTextPathElement extends SVGTextContentElement, SVGURIReference { - method: SVGAnimatedEnumeration; - spacing: SVGAnimatedEnumeration; - startOffset: SVGAnimatedLength; - TEXTPATH_METHODTYPE_ALIGN: number; - TEXTPATH_METHODTYPE_STRETCH: number; - TEXTPATH_METHODTYPE_UNKNOWN: number; - TEXTPATH_SPACINGTYPE_AUTO: number; - TEXTPATH_SPACINGTYPE_EXACT: number; - TEXTPATH_SPACINGTYPE_UNKNOWN: number; + readonly method: SVGAnimatedEnumeration; + readonly spacing: SVGAnimatedEnumeration; + readonly startOffset: SVGAnimatedLength; + readonly TEXTPATH_METHODTYPE_ALIGN: number; + readonly TEXTPATH_METHODTYPE_STRETCH: number; + readonly TEXTPATH_METHODTYPE_UNKNOWN: number; + readonly TEXTPATH_SPACINGTYPE_AUTO: number; + readonly TEXTPATH_SPACINGTYPE_EXACT: number; + readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var SVGTextPathElement: { prototype: SVGTextPathElement; new(): SVGTextPathElement; - TEXTPATH_METHODTYPE_ALIGN: number; - TEXTPATH_METHODTYPE_STRETCH: number; - TEXTPATH_METHODTYPE_UNKNOWN: number; - TEXTPATH_SPACINGTYPE_AUTO: number; - TEXTPATH_SPACINGTYPE_EXACT: number; - TEXTPATH_SPACINGTYPE_UNKNOWN: number; + readonly TEXTPATH_METHODTYPE_ALIGN: number; + readonly TEXTPATH_METHODTYPE_STRETCH: number; + readonly TEXTPATH_METHODTYPE_UNKNOWN: number; + readonly TEXTPATH_SPACINGTYPE_AUTO: number; + readonly TEXTPATH_SPACINGTYPE_EXACT: number; + readonly TEXTPATH_SPACINGTYPE_UNKNOWN: number; } interface SVGTextPositioningElement extends SVGTextContentElement { - dx: SVGAnimatedLengthList; - dy: SVGAnimatedLengthList; - rotate: SVGAnimatedNumberList; - x: SVGAnimatedLengthList; - y: SVGAnimatedLengthList; + readonly dx: SVGAnimatedLengthList; + readonly dy: SVGAnimatedLengthList; + readonly rotate: SVGAnimatedNumberList; + readonly x: SVGAnimatedLengthList; + readonly y: SVGAnimatedLengthList; } declare var SVGTextPositioningElement: { @@ -15507,38 +16931,38 @@ declare var SVGTitleElement: { } interface SVGTransform { - angle: number; - matrix: SVGMatrix; - type: number; + readonly angle: number; + readonly matrix: SVGMatrix; + readonly type: number; setMatrix(matrix: SVGMatrix): void; setRotate(angle: number, cx: number, cy: number): void; setScale(sx: number, sy: number): void; setSkewX(angle: number): void; setSkewY(angle: number): void; setTranslate(tx: number, ty: number): void; - SVG_TRANSFORM_MATRIX: number; - SVG_TRANSFORM_ROTATE: number; - SVG_TRANSFORM_SCALE: number; - SVG_TRANSFORM_SKEWX: number; - SVG_TRANSFORM_SKEWY: number; - SVG_TRANSFORM_TRANSLATE: number; - SVG_TRANSFORM_UNKNOWN: number; + readonly SVG_TRANSFORM_MATRIX: number; + readonly SVG_TRANSFORM_ROTATE: number; + readonly SVG_TRANSFORM_SCALE: number; + readonly SVG_TRANSFORM_SKEWX: number; + readonly SVG_TRANSFORM_SKEWY: number; + readonly SVG_TRANSFORM_TRANSLATE: number; + readonly SVG_TRANSFORM_UNKNOWN: number; } declare var SVGTransform: { prototype: SVGTransform; new(): SVGTransform; - SVG_TRANSFORM_MATRIX: number; - SVG_TRANSFORM_ROTATE: number; - SVG_TRANSFORM_SCALE: number; - SVG_TRANSFORM_SKEWX: number; - SVG_TRANSFORM_SKEWY: number; - SVG_TRANSFORM_TRANSLATE: number; - SVG_TRANSFORM_UNKNOWN: number; + readonly SVG_TRANSFORM_MATRIX: number; + readonly SVG_TRANSFORM_ROTATE: number; + readonly SVG_TRANSFORM_SCALE: number; + readonly SVG_TRANSFORM_SKEWX: number; + readonly SVG_TRANSFORM_SKEWY: number; + readonly SVG_TRANSFORM_TRANSLATE: number; + readonly SVG_TRANSFORM_UNKNOWN: number; } interface SVGTransformList { - numberOfItems: number; + readonly numberOfItems: number; appendItem(newItem: SVGTransform): SVGTransform; clear(): void; consolidate(): SVGTransform; @@ -15556,19 +16980,19 @@ declare var SVGTransformList: { } interface SVGUnitTypes { - SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number; - SVG_UNIT_TYPE_UNKNOWN: number; - SVG_UNIT_TYPE_USERSPACEONUSE: number; + readonly SVG_UNIT_TYPE_OBJECTBOUNDINGBOX: number; + readonly SVG_UNIT_TYPE_UNKNOWN: number; + readonly SVG_UNIT_TYPE_USERSPACEONUSE: number; } declare var SVGUnitTypes: SVGUnitTypes; interface SVGUseElement extends SVGElement, SVGStylable, SVGTransformable, SVGTests, SVGLangSpace, SVGExternalResourcesRequired, SVGURIReference { - animatedInstanceRoot: SVGElementInstance; - height: SVGAnimatedLength; - instanceRoot: SVGElementInstance; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly animatedInstanceRoot: SVGElementInstance; + readonly height: SVGAnimatedLength; + readonly instanceRoot: SVGElementInstance; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -15578,7 +17002,7 @@ declare var SVGUseElement: { } interface SVGViewElement extends SVGElement, SVGExternalResourcesRequired, SVGFitToViewBox, SVGZoomAndPan { - viewTarget: SVGStringList; + readonly viewTarget: SVGStringList; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -15588,18 +17012,21 @@ declare var SVGViewElement: { } interface SVGZoomAndPan { - SVG_ZOOMANDPAN_DISABLE: number; - SVG_ZOOMANDPAN_MAGNIFY: number; - SVG_ZOOMANDPAN_UNKNOWN: number; + readonly zoomAndPan: number; +} + +declare var SVGZoomAndPan: { + readonly SVG_ZOOMANDPAN_DISABLE: number; + readonly SVG_ZOOMANDPAN_MAGNIFY: number; + readonly SVG_ZOOMANDPAN_UNKNOWN: number; } -declare var SVGZoomAndPan: SVGZoomAndPan; interface SVGZoomEvent extends UIEvent { - newScale: number; - newTranslate: SVGPoint; - previousScale: number; - previousTranslate: SVGPoint; - zoomRectScreen: SVGRect; + readonly newScale: number; + readonly newTranslate: SVGPoint; + readonly previousScale: number; + readonly previousTranslate: SVGPoint; + readonly zoomRectScreen: SVGRect; } declare var SVGZoomEvent: { @@ -15608,25 +17035,25 @@ declare var SVGZoomEvent: { } interface Screen extends EventTarget { - availHeight: number; - availWidth: number; + readonly availHeight: number; + readonly availWidth: number; bufferDepth: number; - colorDepth: number; - deviceXDPI: number; - deviceYDPI: number; - fontSmoothingEnabled: boolean; - height: number; - logicalXDPI: number; - logicalYDPI: number; - msOrientation: string; - onmsorientationchange: (ev: Event) => any; - pixelDepth: number; - systemXDPI: number; - systemYDPI: number; - width: number; + readonly colorDepth: number; + readonly deviceXDPI: number; + readonly deviceYDPI: number; + readonly fontSmoothingEnabled: boolean; + readonly height: number; + readonly logicalXDPI: number; + readonly logicalYDPI: number; + readonly msOrientation: string; + onmsorientationchange: (this: this, ev: Event) => any; + readonly pixelDepth: number; + readonly systemXDPI: number; + readonly systemYDPI: number; + readonly width: number; msLockOrientation(orientations: string | string[]): boolean; msUnlockOrientation(): void; - addEventListener(type: "MSOrientationChange", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "MSOrientationChange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -15636,8 +17063,8 @@ declare var Screen: { } interface ScriptNotifyEvent extends Event { - callingUri: string; - value: string; + readonly callingUri: string; + readonly value: string; } declare var ScriptNotifyEvent: { @@ -15646,9 +17073,9 @@ declare var ScriptNotifyEvent: { } interface ScriptProcessorNode extends AudioNode { - bufferSize: number; - onaudioprocess: (ev: AudioProcessingEvent) => any; - addEventListener(type: "audioprocess", listener: (ev: AudioProcessingEvent) => any, useCapture?: boolean): void; + readonly bufferSize: number; + onaudioprocess: (this: this, ev: AudioProcessingEvent) => any; + addEventListener(type: "audioprocess", listener: (this: this, ev: AudioProcessingEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -15658,13 +17085,13 @@ declare var ScriptProcessorNode: { } interface Selection { - anchorNode: Node; - anchorOffset: number; - focusNode: Node; - focusOffset: number; - isCollapsed: boolean; - rangeCount: number; - type: string; + readonly anchorNode: Node; + readonly anchorOffset: number; + readonly focusNode: Node; + readonly focusOffset: number; + readonly isCollapsed: boolean; + readonly rangeCount: number; + readonly type: string; addRange(range: Range): void; collapse(parentNode: Node, offset: number): void; collapseToEnd(): void; @@ -15689,12 +17116,12 @@ declare var Selection: { interface SourceBuffer extends EventTarget { appendWindowEnd: number; appendWindowStart: number; - audioTracks: AudioTrackList; - buffered: TimeRanges; + readonly audioTracks: AudioTrackList; + readonly buffered: TimeRanges; mode: string; timestampOffset: number; - updating: boolean; - videoTracks: VideoTrackList; + readonly updating: boolean; + readonly videoTracks: VideoTrackList; abort(): void; appendBuffer(data: ArrayBuffer | ArrayBufferView): void; appendStream(stream: MSStream, maxSize?: number): void; @@ -15707,7 +17134,7 @@ declare var SourceBuffer: { } interface SourceBufferList extends EventTarget { - length: number; + readonly length: number; item(index: number): SourceBuffer; [index: number]: SourceBuffer; } @@ -15718,7 +17145,7 @@ declare var SourceBufferList: { } interface StereoPannerNode extends AudioNode { - pan: AudioParam; + readonly pan: AudioParam; } declare var StereoPannerNode: { @@ -15727,10 +17154,10 @@ declare var StereoPannerNode: { } interface Storage { - length: number; + readonly length: number; clear(): void; - getItem(key: string): any; - key(index: number): string; + getItem(key: string): string | null; + key(index: number): string | null; removeItem(key: string): void; setItem(key: string, data: string): void; [key: string]: any; @@ -15743,21 +17170,20 @@ declare var Storage: { } interface StorageEvent extends Event { - key: string; - newValue: any; - oldValue: any; - storageArea: Storage; - url: string; - initStorageEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, keyArg: string, oldValueArg: any, newValueArg: any, urlArg: string, storageAreaArg: Storage): void; + readonly url: string; + key?: string; + oldValue?: string; + newValue?: string; + storageArea?: Storage; } declare var StorageEvent: { prototype: StorageEvent; - new(): StorageEvent; + new (type: string, eventInitDict?: StorageEventInit): StorageEvent; } interface StyleMedia { - type: string; + readonly type: string; matchMedium(mediaquery: string): boolean; } @@ -15768,12 +17194,12 @@ declare var StyleMedia: { interface StyleSheet { disabled: boolean; - href: string; - media: MediaList; - ownerNode: Node; - parentStyleSheet: StyleSheet; - title: string; - type: string; + readonly href: string; + readonly media: MediaList; + readonly ownerNode: Node; + readonly parentStyleSheet: StyleSheet; + readonly title: string; + readonly type: string; } declare var StyleSheet: { @@ -15782,7 +17208,7 @@ declare var StyleSheet: { } interface StyleSheetList { - length: number; + readonly length: number; item(index?: number): StyleSheet; [index: number]: StyleSheet; } @@ -15793,7 +17219,7 @@ declare var StyleSheetList: { } interface StyleSheetPageList { - length: number; + readonly length: number; item(index: number): CSSPageRule; [index: number]: CSSPageRule; } @@ -15804,18 +17230,24 @@ declare var StyleSheetPageList: { } interface SubtleCrypto { - decrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - deriveBits(algorithm: string | Algorithm, baseKey: CryptoKey, length: number): any; - deriveKey(algorithm: string | Algorithm, baseKey: CryptoKey, derivedKeyType: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - digest(algorithm: string | Algorithm, data: ArrayBufferView): any; - encrypt(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - exportKey(format: string, key: CryptoKey): any; - generateKey(algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - importKey(format: string, keyData: ArrayBufferView, algorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - sign(algorithm: string | Algorithm, key: CryptoKey, data: ArrayBufferView): any; - unwrapKey(format: string, wrappedKey: ArrayBufferView, unwrappingKey: CryptoKey, unwrapAlgorithm: string | Algorithm, unwrappedKeyAlgorithm: string | Algorithm, extractable: boolean, keyUsages: string[]): any; - verify(algorithm: string | Algorithm, key: CryptoKey, signature: ArrayBufferView, data: ArrayBufferView): any; - wrapKey(format: string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: string | Algorithm): any; + decrypt(algorithm: string | RsaOaepParams | AesCtrParams | AesCbcParams | AesCmacParams | AesGcmParams | AesCfbParams, key: CryptoKey, data: BufferSource): PromiseLike; + deriveBits(algorithm: string | EcdhKeyDeriveParams | DhKeyDeriveParams | ConcatParams | HkdfCtrParams | Pbkdf2Params, baseKey: CryptoKey, length: number): PromiseLike; + deriveKey(algorithm: string | EcdhKeyDeriveParams | DhKeyDeriveParams | ConcatParams | HkdfCtrParams | Pbkdf2Params, baseKey: CryptoKey, derivedKeyType: string | AesDerivedKeyParams | HmacImportParams | ConcatParams | HkdfCtrParams | Pbkdf2Params, extractable: boolean, keyUsages: string[]): PromiseLike; + digest(algorithm: AlgorithmIdentifier, data: BufferSource): PromiseLike; + encrypt(algorithm: string | RsaOaepParams | AesCtrParams | AesCbcParams | AesCmacParams | AesGcmParams | AesCfbParams, key: CryptoKey, data: BufferSource): PromiseLike; + exportKey(format: "jwk", key: CryptoKey): PromiseLike; + exportKey(format: "raw" | "pkcs8" | "spki", key: CryptoKey): PromiseLike; + exportKey(format: string, key: CryptoKey): PromiseLike; + generateKey(algorithm: string, extractable: boolean, keyUsages: string[]): PromiseLike; + generateKey(algorithm: RsaHashedKeyGenParams | EcKeyGenParams | DhKeyGenParams, extractable: boolean, keyUsages: string[]): PromiseLike; + generateKey(algorithm: AesKeyGenParams | HmacKeyGenParams | Pbkdf2Params, extractable: boolean, keyUsages: string[]): PromiseLike; + importKey(format: "jwk", keyData: JsonWebKey, algorithm: string | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | DhImportKeyParams, extractable:boolean, keyUsages: string[]): PromiseLike; + importKey(format: "raw" | "pkcs8" | "spki", keyData: BufferSource, algorithm: string | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | DhImportKeyParams, extractable:boolean, keyUsages: string[]): PromiseLike; + importKey(format: string, keyData: JsonWebKey | BufferSource, algorithm: string | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | DhImportKeyParams, extractable:boolean, keyUsages: string[]): PromiseLike; + sign(algorithm: string | RsaPssParams | EcdsaParams | AesCmacParams, key: CryptoKey, data: BufferSource): PromiseLike; + unwrapKey(format: string, wrappedKey: BufferSource, unwrappingKey: CryptoKey, unwrapAlgorithm: AlgorithmIdentifier, unwrappedKeyAlgorithm: AlgorithmIdentifier, extractable: boolean, keyUsages: string[]): PromiseLike; + verify(algorithm: string | RsaPssParams | EcdsaParams | AesCmacParams, key: CryptoKey, signature: BufferSource, data: BufferSource): PromiseLike; + wrapKey(format: string, key: CryptoKey, wrappingKey: CryptoKey, wrapAlgorithm: AlgorithmIdentifier): PromiseLike; } declare var SubtleCrypto: { @@ -15824,8 +17256,7 @@ declare var SubtleCrypto: { } interface Text extends CharacterData { - wholeText: string; - replaceWholeText(content: string): Text; + readonly wholeText: string; splitText(offset: number): Text; } @@ -15835,39 +17266,39 @@ declare var Text: { } interface TextEvent extends UIEvent { - data: string; - inputMethod: number; - locale: string; + readonly data: string; + readonly inputMethod: number; + readonly locale: string; initTextEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, dataArg: string, inputMethod: number, locale: string): void; - DOM_INPUT_METHOD_DROP: number; - DOM_INPUT_METHOD_HANDWRITING: number; - DOM_INPUT_METHOD_IME: number; - DOM_INPUT_METHOD_KEYBOARD: number; - DOM_INPUT_METHOD_MULTIMODAL: number; - DOM_INPUT_METHOD_OPTION: number; - DOM_INPUT_METHOD_PASTE: number; - DOM_INPUT_METHOD_SCRIPT: number; - DOM_INPUT_METHOD_UNKNOWN: number; - DOM_INPUT_METHOD_VOICE: number; + readonly DOM_INPUT_METHOD_DROP: number; + readonly DOM_INPUT_METHOD_HANDWRITING: number; + readonly DOM_INPUT_METHOD_IME: number; + readonly DOM_INPUT_METHOD_KEYBOARD: number; + readonly DOM_INPUT_METHOD_MULTIMODAL: number; + readonly DOM_INPUT_METHOD_OPTION: number; + readonly DOM_INPUT_METHOD_PASTE: number; + readonly DOM_INPUT_METHOD_SCRIPT: number; + readonly DOM_INPUT_METHOD_UNKNOWN: number; + readonly DOM_INPUT_METHOD_VOICE: number; } declare var TextEvent: { prototype: TextEvent; new(): TextEvent; - DOM_INPUT_METHOD_DROP: number; - DOM_INPUT_METHOD_HANDWRITING: number; - DOM_INPUT_METHOD_IME: number; - DOM_INPUT_METHOD_KEYBOARD: number; - DOM_INPUT_METHOD_MULTIMODAL: number; - DOM_INPUT_METHOD_OPTION: number; - DOM_INPUT_METHOD_PASTE: number; - DOM_INPUT_METHOD_SCRIPT: number; - DOM_INPUT_METHOD_UNKNOWN: number; - DOM_INPUT_METHOD_VOICE: number; + readonly DOM_INPUT_METHOD_DROP: number; + readonly DOM_INPUT_METHOD_HANDWRITING: number; + readonly DOM_INPUT_METHOD_IME: number; + readonly DOM_INPUT_METHOD_KEYBOARD: number; + readonly DOM_INPUT_METHOD_MULTIMODAL: number; + readonly DOM_INPUT_METHOD_OPTION: number; + readonly DOM_INPUT_METHOD_PASTE: number; + readonly DOM_INPUT_METHOD_SCRIPT: number; + readonly DOM_INPUT_METHOD_UNKNOWN: number; + readonly DOM_INPUT_METHOD_VOICE: number; } interface TextMetrics { - width: number; + readonly width: number; } declare var TextMetrics: { @@ -15875,113 +17306,57 @@ declare var TextMetrics: { new(): TextMetrics; } -interface TextRange { - boundingHeight: number; - boundingLeft: number; - boundingTop: number; - boundingWidth: number; - htmlText: string; - offsetLeft: number; - offsetTop: number; - text: string; - collapse(start?: boolean): void; - compareEndPoints(how: string, sourceRange: TextRange): number; - duplicate(): TextRange; - execCommand(cmdID: string, showUI?: boolean, value?: any): boolean; - execCommandShowHelp(cmdID: string): boolean; - expand(Unit: string): boolean; - findText(string: string, count?: number, flags?: number): boolean; - getBookmark(): string; - getBoundingClientRect(): ClientRect; - getClientRects(): ClientRectList; - inRange(range: TextRange): boolean; - isEqual(range: TextRange): boolean; - move(unit: string, count?: number): number; - moveEnd(unit: string, count?: number): number; - moveStart(unit: string, count?: number): number; - moveToBookmark(bookmark: string): boolean; - moveToElementText(element: Element): void; - moveToPoint(x: number, y: number): void; - parentElement(): Element; - pasteHTML(html: string): void; - queryCommandEnabled(cmdID: string): boolean; - queryCommandIndeterm(cmdID: string): boolean; - queryCommandState(cmdID: string): boolean; - queryCommandSupported(cmdID: string): boolean; - queryCommandText(cmdID: string): string; - queryCommandValue(cmdID: string): any; - scrollIntoView(fStart?: boolean): void; - select(): void; - setEndPoint(how: string, SourceRange: TextRange): void; -} - -declare var TextRange: { - prototype: TextRange; - new(): TextRange; -} - -interface TextRangeCollection { - length: number; - item(index: number): TextRange; - [index: number]: TextRange; -} - -declare var TextRangeCollection: { - prototype: TextRangeCollection; - new(): TextRangeCollection; -} - interface TextTrack extends EventTarget { - activeCues: TextTrackCueList; - cues: TextTrackCueList; - inBandMetadataTrackDispatchType: string; - kind: string; - label: string; - language: string; + readonly activeCues: TextTrackCueList; + readonly cues: TextTrackCueList; + readonly inBandMetadataTrackDispatchType: string; + readonly kind: string; + readonly label: string; + readonly language: string; mode: any; - oncuechange: (ev: Event) => any; - onerror: (ev: Event) => any; - onload: (ev: Event) => any; - readyState: number; + oncuechange: (this: this, ev: Event) => any; + onerror: (this: this, ev: ErrorEvent) => any; + onload: (this: this, ev: Event) => any; + readonly readyState: number; addCue(cue: TextTrackCue): void; removeCue(cue: TextTrackCue): void; - DISABLED: number; - ERROR: number; - HIDDEN: number; - LOADED: number; - LOADING: number; - NONE: number; - SHOWING: number; - addEventListener(type: "cuechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; + readonly DISABLED: number; + readonly ERROR: number; + readonly HIDDEN: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; + readonly SHOWING: number; + addEventListener(type: "cuechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var TextTrack: { prototype: TextTrack; new(): TextTrack; - DISABLED: number; - ERROR: number; - HIDDEN: number; - LOADED: number; - LOADING: number; - NONE: number; - SHOWING: number; + readonly DISABLED: number; + readonly ERROR: number; + readonly HIDDEN: number; + readonly LOADED: number; + readonly LOADING: number; + readonly NONE: number; + readonly SHOWING: number; } interface TextTrackCue extends EventTarget { endTime: number; id: string; - onenter: (ev: Event) => any; - onexit: (ev: Event) => any; + onenter: (this: this, ev: Event) => any; + onexit: (this: this, ev: Event) => any; pauseOnExit: boolean; startTime: number; text: string; - track: TextTrack; + readonly track: TextTrack; getCueAsHTML(): DocumentFragment; - addEventListener(type: "enter", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "exit", listener: (ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "enter", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "exit", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -15991,7 +17366,7 @@ declare var TextTrackCue: { } interface TextTrackCueList { - length: number; + readonly length: number; getCueById(id: string): TextTrackCue; item(index: number): TextTrackCue; [index: number]: TextTrackCue; @@ -16003,10 +17378,10 @@ declare var TextTrackCueList: { } interface TextTrackList extends EventTarget { - length: number; - onaddtrack: (ev: TrackEvent) => any; + readonly length: number; + onaddtrack: ((this: this, ev: TrackEvent) => any) | null; item(index: number): TextTrack; - addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; + addEventListener(type: "addtrack", listener: (this: this, ev: TrackEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; [index: number]: TextTrack; } @@ -16017,7 +17392,7 @@ declare var TextTrackList: { } interface TimeRanges { - length: number; + readonly length: number; end(index: number): number; start(index: number): number; } @@ -16028,14 +17403,14 @@ declare var TimeRanges: { } interface Touch { - clientX: number; - clientY: number; - identifier: number; - pageX: number; - pageY: number; - screenX: number; - screenY: number; - target: EventTarget; + readonly clientX: number; + readonly clientY: number; + readonly identifier: number; + readonly pageX: number; + readonly pageY: number; + readonly screenX: number; + readonly screenY: number; + readonly target: EventTarget; } declare var Touch: { @@ -16044,13 +17419,13 @@ declare var Touch: { } interface TouchEvent extends UIEvent { - altKey: boolean; - changedTouches: TouchList; - ctrlKey: boolean; - metaKey: boolean; - shiftKey: boolean; - targetTouches: TouchList; - touches: TouchList; + readonly altKey: boolean; + readonly changedTouches: TouchList; + readonly ctrlKey: boolean; + readonly metaKey: boolean; + readonly shiftKey: boolean; + readonly targetTouches: TouchList; + readonly touches: TouchList; } declare var TouchEvent: { @@ -16059,8 +17434,8 @@ declare var TouchEvent: { } interface TouchList { - length: number; - item(index: number): Touch; + readonly length: number; + item(index: number): Touch | null; [index: number]: Touch; } @@ -16070,7 +17445,7 @@ declare var TouchList: { } interface TrackEvent extends Event { - track: any; + readonly track: any; } declare var TrackEvent: { @@ -16079,8 +17454,8 @@ declare var TrackEvent: { } interface TransitionEvent extends Event { - elapsedTime: number; - propertyName: string; + readonly elapsedTime: number; + readonly propertyName: string; initTransitionEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, propertyNameArg: string, elapsedTimeArg: number): void; } @@ -16091,10 +17466,10 @@ declare var TransitionEvent: { interface TreeWalker { currentNode: Node; - expandEntityReferences: boolean; - filter: NodeFilter; - root: Node; - whatToShow: number; + readonly expandEntityReferences: boolean; + readonly filter: NodeFilter; + readonly root: Node; + readonly whatToShow: number; firstChild(): Node; lastChild(): Node; nextNode(): Node; @@ -16110,8 +17485,8 @@ declare var TreeWalker: { } interface UIEvent extends Event { - detail: number; - view: Window; + readonly detail: number; + readonly view: Window; initUIEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number): void; } @@ -16121,13 +17496,29 @@ declare var UIEvent: { } interface URL { + hash: string; + host: string; + hostname: string; + href: string; + readonly origin: string; + password: string; + pathname: string; + port: string; + protocol: string; + search: string; + username: string; + toString(): string; +} + +declare var URL: { + prototype: URL; + new(url: string, base?: string): URL; createObjectURL(object: any, options?: ObjectURLOptions): string; revokeObjectURL(url: string): void; } -declare var URL: URL; interface UnviewableContentIdentifiedEvent extends NavigationEventWithReferrer { - mediaType: string; + readonly mediaType: string; } declare var UnviewableContentIdentifiedEvent: { @@ -16136,16 +17527,16 @@ declare var UnviewableContentIdentifiedEvent: { } interface ValidityState { - badInput: boolean; - customError: boolean; - patternMismatch: boolean; - rangeOverflow: boolean; - rangeUnderflow: boolean; - stepMismatch: boolean; - tooLong: boolean; - typeMismatch: boolean; - valid: boolean; - valueMissing: boolean; + readonly badInput: boolean; + readonly customError: boolean; + readonly patternMismatch: boolean; + readonly rangeOverflow: boolean; + readonly rangeUnderflow: boolean; + readonly stepMismatch: boolean; + readonly tooLong: boolean; + readonly typeMismatch: boolean; + readonly valid: boolean; + readonly valueMissing: boolean; } declare var ValidityState: { @@ -16154,11 +17545,11 @@ declare var ValidityState: { } interface VideoPlaybackQuality { - corruptedVideoFrames: number; - creationTime: number; - droppedVideoFrames: number; - totalFrameDelay: number; - totalVideoFrames: number; + readonly corruptedVideoFrames: number; + readonly creationTime: number; + readonly droppedVideoFrames: number; + readonly totalFrameDelay: number; + readonly totalVideoFrames: number; } declare var VideoPlaybackQuality: { @@ -16167,12 +17558,12 @@ declare var VideoPlaybackQuality: { } interface VideoTrack { - id: string; + readonly id: string; kind: string; - label: string; + readonly label: string; language: string; selected: boolean; - sourceBuffer: SourceBuffer; + readonly sourceBuffer: SourceBuffer; } declare var VideoTrack: { @@ -16181,16 +17572,16 @@ declare var VideoTrack: { } interface VideoTrackList extends EventTarget { - length: number; - onaddtrack: (ev: TrackEvent) => any; - onchange: (ev: Event) => any; - onremovetrack: (ev: TrackEvent) => any; - selectedIndex: number; - getTrackById(id: string): VideoTrack; + readonly length: number; + onaddtrack: (this: this, ev: TrackEvent) => any; + onchange: (this: this, ev: Event) => any; + onremovetrack: (this: this, ev: TrackEvent) => any; + readonly selectedIndex: number; + getTrackById(id: string): VideoTrack | null; item(index: number): VideoTrack; - addEventListener(type: "addtrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "removetrack", listener: (ev: TrackEvent) => any, useCapture?: boolean): void; + addEventListener(type: "addtrack", listener: (this: this, ev: TrackEvent) => any, useCapture?: boolean): void; + addEventListener(type: "change", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "removetrack", listener: (this: this, ev: TrackEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; [index: number]: VideoTrack; } @@ -16201,45 +17592,45 @@ declare var VideoTrackList: { } interface WEBGL_compressed_texture_s3tc { - COMPRESSED_RGBA_S3TC_DXT1_EXT: number; - COMPRESSED_RGBA_S3TC_DXT3_EXT: number; - COMPRESSED_RGBA_S3TC_DXT5_EXT: number; - COMPRESSED_RGB_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: number; + readonly COMPRESSED_RGB_S3TC_DXT1_EXT: number; } declare var WEBGL_compressed_texture_s3tc: { prototype: WEBGL_compressed_texture_s3tc; new(): WEBGL_compressed_texture_s3tc; - COMPRESSED_RGBA_S3TC_DXT1_EXT: number; - COMPRESSED_RGBA_S3TC_DXT3_EXT: number; - COMPRESSED_RGBA_S3TC_DXT5_EXT: number; - COMPRESSED_RGB_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT1_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT3_EXT: number; + readonly COMPRESSED_RGBA_S3TC_DXT5_EXT: number; + readonly COMPRESSED_RGB_S3TC_DXT1_EXT: number; } interface WEBGL_debug_renderer_info { - UNMASKED_RENDERER_WEBGL: number; - UNMASKED_VENDOR_WEBGL: number; + readonly UNMASKED_RENDERER_WEBGL: number; + readonly UNMASKED_VENDOR_WEBGL: number; } declare var WEBGL_debug_renderer_info: { prototype: WEBGL_debug_renderer_info; new(): WEBGL_debug_renderer_info; - UNMASKED_RENDERER_WEBGL: number; - UNMASKED_VENDOR_WEBGL: number; + readonly UNMASKED_RENDERER_WEBGL: number; + readonly UNMASKED_VENDOR_WEBGL: number; } interface WEBGL_depth_texture { - UNSIGNED_INT_24_8_WEBGL: number; + readonly UNSIGNED_INT_24_8_WEBGL: number; } declare var WEBGL_depth_texture: { prototype: WEBGL_depth_texture; new(): WEBGL_depth_texture; - UNSIGNED_INT_24_8_WEBGL: number; + readonly UNSIGNED_INT_24_8_WEBGL: number; } interface WaveShaperNode extends AudioNode { - curve: Float32Array; + curve: Float32Array | null; oversample: string; } @@ -16249,9 +17640,9 @@ declare var WaveShaperNode: { } interface WebGLActiveInfo { - name: string; - size: number; - type: number; + readonly name: string; + readonly size: number; + readonly type: number; } declare var WebGLActiveInfo: { @@ -16268,12 +17659,12 @@ declare var WebGLBuffer: { } interface WebGLContextEvent extends Event { - statusMessage: string; + readonly statusMessage: string; } declare var WebGLContextEvent: { prototype: WebGLContextEvent; - new(): WebGLContextEvent; + new(type: string, eventInitDict?: WebGLContextEventInit): WebGLContextEvent; } interface WebGLFramebuffer extends WebGLObject { @@ -16309,16 +17700,16 @@ declare var WebGLRenderbuffer: { } interface WebGLRenderingContext { - canvas: HTMLCanvasElement; - drawingBufferHeight: number; - drawingBufferWidth: number; + readonly canvas: HTMLCanvasElement; + readonly drawingBufferHeight: number; + readonly drawingBufferWidth: number; activeTexture(texture: number): void; - attachShader(program: WebGLProgram, shader: WebGLShader): void; - bindAttribLocation(program: WebGLProgram, index: number, name: string): void; - bindBuffer(target: number, buffer: WebGLBuffer): void; - bindFramebuffer(target: number, framebuffer: WebGLFramebuffer): void; - bindRenderbuffer(target: number, renderbuffer: WebGLRenderbuffer): void; - bindTexture(target: number, texture: WebGLTexture): void; + attachShader(program: WebGLProgram | null, shader: WebGLShader | null): void; + bindAttribLocation(program: WebGLProgram | null, index: number, name: string): void; + bindBuffer(target: number, buffer: WebGLBuffer | null): void; + bindFramebuffer(target: number, framebuffer: WebGLFramebuffer | null): void; + bindRenderbuffer(target: number, renderbuffer: WebGLRenderbuffer | null): void; + bindTexture(target: number, texture: WebGLTexture | null): void; blendColor(red: number, green: number, blue: number, alpha: number): void; blendEquation(mode: number): void; blendEquationSeparate(modeRGB: number, modeAlpha: number): void; @@ -16332,28 +17723,28 @@ interface WebGLRenderingContext { clearDepth(depth: number): void; clearStencil(s: number): void; colorMask(red: boolean, green: boolean, blue: boolean, alpha: boolean): void; - compileShader(shader: WebGLShader): void; + compileShader(shader: WebGLShader | null): void; compressedTexImage2D(target: number, level: number, internalformat: number, width: number, height: number, border: number, data: ArrayBufferView): void; compressedTexSubImage2D(target: number, level: number, xoffset: number, yoffset: number, width: number, height: number, format: number, data: ArrayBufferView): void; copyTexImage2D(target: number, level: number, internalformat: number, x: number, y: number, width: number, height: number, border: number): void; copyTexSubImage2D(target: number, level: number, xoffset: number, yoffset: number, x: number, y: number, width: number, height: number): void; - createBuffer(): WebGLBuffer; - createFramebuffer(): WebGLFramebuffer; - createProgram(): WebGLProgram; - createRenderbuffer(): WebGLRenderbuffer; - createShader(type: number): WebGLShader; - createTexture(): WebGLTexture; + createBuffer(): WebGLBuffer | null; + createFramebuffer(): WebGLFramebuffer | null; + createProgram(): WebGLProgram | null; + createRenderbuffer(): WebGLRenderbuffer | null; + createShader(type: number): WebGLShader | null; + createTexture(): WebGLTexture | null; cullFace(mode: number): void; - deleteBuffer(buffer: WebGLBuffer): void; - deleteFramebuffer(framebuffer: WebGLFramebuffer): void; - deleteProgram(program: WebGLProgram): void; - deleteRenderbuffer(renderbuffer: WebGLRenderbuffer): void; - deleteShader(shader: WebGLShader): void; - deleteTexture(texture: WebGLTexture): void; + deleteBuffer(buffer: WebGLBuffer | null): void; + deleteFramebuffer(framebuffer: WebGLFramebuffer | null): void; + deleteProgram(program: WebGLProgram | null): void; + deleteRenderbuffer(renderbuffer: WebGLRenderbuffer | null): void; + deleteShader(shader: WebGLShader | null): void; + deleteTexture(texture: WebGLTexture | null): void; depthFunc(func: number): void; depthMask(flag: boolean): void; depthRange(zNear: number, zFar: number): void; - detachShader(program: WebGLProgram, shader: WebGLShader): void; + detachShader(program: WebGLProgram | null, shader: WebGLShader | null): void; disable(cap: number): void; disableVertexAttribArray(index: number): void; drawArrays(mode: number, first: number, count: number): void; @@ -16362,699 +17753,693 @@ interface WebGLRenderingContext { enableVertexAttribArray(index: number): void; finish(): void; flush(): void; - framebufferRenderbuffer(target: number, attachment: number, renderbuffertarget: number, renderbuffer: WebGLRenderbuffer): void; - framebufferTexture2D(target: number, attachment: number, textarget: number, texture: WebGLTexture, level: number): void; + framebufferRenderbuffer(target: number, attachment: number, renderbuffertarget: number, renderbuffer: WebGLRenderbuffer | null): void; + framebufferTexture2D(target: number, attachment: number, textarget: number, texture: WebGLTexture | null, level: number): void; frontFace(mode: number): void; generateMipmap(target: number): void; - getActiveAttrib(program: WebGLProgram, index: number): WebGLActiveInfo; - getActiveUniform(program: WebGLProgram, index: number): WebGLActiveInfo; - getAttachedShaders(program: WebGLProgram): WebGLShader[]; - getAttribLocation(program: WebGLProgram, name: string): number; + getActiveAttrib(program: WebGLProgram | null, index: number): WebGLActiveInfo | null; + getActiveUniform(program: WebGLProgram | null, index: number): WebGLActiveInfo | null; + getAttachedShaders(program: WebGLProgram | null): WebGLShader[] | null; + getAttribLocation(program: WebGLProgram | null, name: string): number; getBufferParameter(target: number, pname: number): any; getContextAttributes(): WebGLContextAttributes; getError(): number; getExtension(name: string): any; getFramebufferAttachmentParameter(target: number, attachment: number, pname: number): any; getParameter(pname: number): any; - getProgramInfoLog(program: WebGLProgram): string; - getProgramParameter(program: WebGLProgram, pname: number): any; + getProgramInfoLog(program: WebGLProgram | null): string | null; + getProgramParameter(program: WebGLProgram | null, pname: number): any; getRenderbufferParameter(target: number, pname: number): any; - getShaderInfoLog(shader: WebGLShader): string; - getShaderParameter(shader: WebGLShader, pname: number): any; - getShaderPrecisionFormat(shadertype: number, precisiontype: number): WebGLShaderPrecisionFormat; - getShaderSource(shader: WebGLShader): string; - getSupportedExtensions(): string[]; + getShaderInfoLog(shader: WebGLShader | null): string | null; + getShaderParameter(shader: WebGLShader | null, pname: number): any; + getShaderPrecisionFormat(shadertype: number, precisiontype: number): WebGLShaderPrecisionFormat | null; + getShaderSource(shader: WebGLShader | null): string | null; + getSupportedExtensions(): string[] | null; getTexParameter(target: number, pname: number): any; - getUniform(program: WebGLProgram, location: WebGLUniformLocation): any; - getUniformLocation(program: WebGLProgram, name: string): WebGLUniformLocation; + getUniform(program: WebGLProgram | null, location: WebGLUniformLocation | null): any; + getUniformLocation(program: WebGLProgram | null, name: string): WebGLUniformLocation | null; getVertexAttrib(index: number, pname: number): any; getVertexAttribOffset(index: number, pname: number): number; hint(target: number, mode: number): void; - isBuffer(buffer: WebGLBuffer): boolean; + isBuffer(buffer: WebGLBuffer | null): boolean; isContextLost(): boolean; isEnabled(cap: number): boolean; - isFramebuffer(framebuffer: WebGLFramebuffer): boolean; - isProgram(program: WebGLProgram): boolean; - isRenderbuffer(renderbuffer: WebGLRenderbuffer): boolean; - isShader(shader: WebGLShader): boolean; - isTexture(texture: WebGLTexture): boolean; + isFramebuffer(framebuffer: WebGLFramebuffer | null): boolean; + isProgram(program: WebGLProgram | null): boolean; + isRenderbuffer(renderbuffer: WebGLRenderbuffer | null): boolean; + isShader(shader: WebGLShader | null): boolean; + isTexture(texture: WebGLTexture | null): boolean; lineWidth(width: number): void; - linkProgram(program: WebGLProgram): void; + linkProgram(program: WebGLProgram | null): void; pixelStorei(pname: number, param: number): void; polygonOffset(factor: number, units: number): void; - readPixels(x: number, y: number, width: number, height: number, format: number, type: number, pixels: ArrayBufferView): void; + readPixels(x: number, y: number, width: number, height: number, format: number, type: number, pixels: ArrayBufferView | null): void; renderbufferStorage(target: number, internalformat: number, width: number, height: number): void; sampleCoverage(value: number, invert: boolean): void; scissor(x: number, y: number, width: number, height: number): void; - shaderSource(shader: WebGLShader, source: string): void; + shaderSource(shader: WebGLShader | null, source: string): void; stencilFunc(func: number, ref: number, mask: number): void; stencilFuncSeparate(face: number, func: number, ref: number, mask: number): void; stencilMask(mask: number): void; stencilMaskSeparate(face: number, mask: number): void; stencilOp(fail: number, zfail: number, zpass: number): void; stencilOpSeparate(face: number, fail: number, zfail: number, zpass: number): void; - texImage2D(target: number, level: number, internalformat: number, width: number, height: number, border: number, format: number, type: number, pixels: ArrayBufferView): void; - texImage2D(target: number, level: number, internalformat: number, format: number, type: number, image: HTMLImageElement): void; - texImage2D(target: number, level: number, internalformat: number, format: number, type: number, canvas: HTMLCanvasElement): void; - texImage2D(target: number, level: number, internalformat: number, format: number, type: number, video: HTMLVideoElement): void; - texImage2D(target: number, level: number, internalformat: number, format: number, type: number, pixels: ImageData): void; + texImage2D(target: number, level: number, internalformat: number, width: number, height: number, border: number, format: number, type: number, pixels?: ArrayBufferView): void; + texImage2D(target: number, level: number, internalformat: number, format: number, type: number, pixels?: ImageData | HTMLVideoElement | HTMLImageElement | HTMLCanvasElement): void; texParameterf(target: number, pname: number, param: number): void; texParameteri(target: number, pname: number, param: number): void; - texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, width: number, height: number, format: number, type: number, pixels: ArrayBufferView): void; - texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, image: HTMLImageElement): void; - texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, canvas: HTMLCanvasElement): void; - texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, video: HTMLVideoElement): void; - texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, pixels: ImageData): void; - uniform1f(location: WebGLUniformLocation, x: number): void; - uniform1fv(location: WebGLUniformLocation, v: Float32Array): void; - uniform1i(location: WebGLUniformLocation, x: number): void; - uniform1iv(location: WebGLUniformLocation, v: Int32Array): void; - uniform2f(location: WebGLUniformLocation, x: number, y: number): void; - uniform2fv(location: WebGLUniformLocation, v: Float32Array): void; - uniform2i(location: WebGLUniformLocation, x: number, y: number): void; - uniform2iv(location: WebGLUniformLocation, v: Int32Array): void; - uniform3f(location: WebGLUniformLocation, x: number, y: number, z: number): void; - uniform3fv(location: WebGLUniformLocation, v: Float32Array): void; - uniform3i(location: WebGLUniformLocation, x: number, y: number, z: number): void; - uniform3iv(location: WebGLUniformLocation, v: Int32Array): void; - uniform4f(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void; - uniform4fv(location: WebGLUniformLocation, v: Float32Array): void; - uniform4i(location: WebGLUniformLocation, x: number, y: number, z: number, w: number): void; - uniform4iv(location: WebGLUniformLocation, v: Int32Array): void; - uniformMatrix2fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; - uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; - uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array): void; - useProgram(program: WebGLProgram): void; - validateProgram(program: WebGLProgram): void; + texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, width: number, height: number, format: number, type: number, pixels?: ArrayBufferView): void; + texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, pixels?: ImageData | HTMLVideoElement | HTMLImageElement | HTMLCanvasElement): void; + uniform1f(location: WebGLUniformLocation | null, x: number): void; + uniform1fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; + uniform1i(location: WebGLUniformLocation | null, x: number): void; + uniform1iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; + uniform2f(location: WebGLUniformLocation | null, x: number, y: number): void; + uniform2fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; + uniform2i(location: WebGLUniformLocation | null, x: number, y: number): void; + uniform2iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; + uniform3f(location: WebGLUniformLocation | null, x: number, y: number, z: number): void; + uniform3fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; + uniform3i(location: WebGLUniformLocation | null, x: number, y: number, z: number): void; + uniform3iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; + uniform4f(location: WebGLUniformLocation | null, x: number, y: number, z: number, w: number): void; + uniform4fv(location: WebGLUniformLocation, v: Float32Array | number[]): void; + uniform4i(location: WebGLUniformLocation | null, x: number, y: number, z: number, w: number): void; + uniform4iv(location: WebGLUniformLocation, v: Int32Array | number[]): void; + uniformMatrix2fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array | number[]): void; + uniformMatrix3fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array | number[]): void; + uniformMatrix4fv(location: WebGLUniformLocation, transpose: boolean, value: Float32Array | number[]): void; + useProgram(program: WebGLProgram | null): void; + validateProgram(program: WebGLProgram | null): void; vertexAttrib1f(indx: number, x: number): void; - vertexAttrib1fv(indx: number, values: Float32Array): void; + vertexAttrib1fv(indx: number, values: Float32Array | number[]): void; vertexAttrib2f(indx: number, x: number, y: number): void; - vertexAttrib2fv(indx: number, values: Float32Array): void; + vertexAttrib2fv(indx: number, values: Float32Array | number[]): void; vertexAttrib3f(indx: number, x: number, y: number, z: number): void; - vertexAttrib3fv(indx: number, values: Float32Array): void; + vertexAttrib3fv(indx: number, values: Float32Array | number[]): void; vertexAttrib4f(indx: number, x: number, y: number, z: number, w: number): void; - vertexAttrib4fv(indx: number, values: Float32Array): void; + vertexAttrib4fv(indx: number, values: Float32Array | number[]): void; vertexAttribPointer(indx: number, size: number, type: number, normalized: boolean, stride: number, offset: number): void; viewport(x: number, y: number, width: number, height: number): void; - ACTIVE_ATTRIBUTES: number; - ACTIVE_TEXTURE: number; - ACTIVE_UNIFORMS: number; - ALIASED_LINE_WIDTH_RANGE: number; - ALIASED_POINT_SIZE_RANGE: number; - ALPHA: number; - ALPHA_BITS: number; - ALWAYS: number; - ARRAY_BUFFER: number; - ARRAY_BUFFER_BINDING: number; - ATTACHED_SHADERS: number; - BACK: number; - BLEND: number; - BLEND_COLOR: number; - BLEND_DST_ALPHA: number; - BLEND_DST_RGB: number; - BLEND_EQUATION: number; - BLEND_EQUATION_ALPHA: number; - BLEND_EQUATION_RGB: number; - BLEND_SRC_ALPHA: number; - BLEND_SRC_RGB: number; - BLUE_BITS: number; - BOOL: number; - BOOL_VEC2: number; - BOOL_VEC3: number; - BOOL_VEC4: number; - BROWSER_DEFAULT_WEBGL: number; - BUFFER_SIZE: number; - BUFFER_USAGE: number; - BYTE: number; - CCW: number; - CLAMP_TO_EDGE: number; - COLOR_ATTACHMENT0: number; - COLOR_BUFFER_BIT: number; - COLOR_CLEAR_VALUE: number; - COLOR_WRITEMASK: number; - COMPILE_STATUS: number; - COMPRESSED_TEXTURE_FORMATS: number; - CONSTANT_ALPHA: number; - CONSTANT_COLOR: number; - CONTEXT_LOST_WEBGL: number; - CULL_FACE: number; - CULL_FACE_MODE: number; - CURRENT_PROGRAM: number; - CURRENT_VERTEX_ATTRIB: number; - CW: number; - DECR: number; - DECR_WRAP: number; - DELETE_STATUS: number; - DEPTH_ATTACHMENT: number; - DEPTH_BITS: number; - DEPTH_BUFFER_BIT: number; - DEPTH_CLEAR_VALUE: number; - DEPTH_COMPONENT: number; - DEPTH_COMPONENT16: number; - DEPTH_FUNC: number; - DEPTH_RANGE: number; - DEPTH_STENCIL: number; - DEPTH_STENCIL_ATTACHMENT: number; - DEPTH_TEST: number; - DEPTH_WRITEMASK: number; - DITHER: number; - DONT_CARE: number; - DST_ALPHA: number; - DST_COLOR: number; - DYNAMIC_DRAW: number; - ELEMENT_ARRAY_BUFFER: number; - ELEMENT_ARRAY_BUFFER_BINDING: number; - EQUAL: number; - FASTEST: number; - FLOAT: number; - FLOAT_MAT2: number; - FLOAT_MAT3: number; - FLOAT_MAT4: number; - FLOAT_VEC2: number; - FLOAT_VEC3: number; - FLOAT_VEC4: number; - FRAGMENT_SHADER: number; - FRAMEBUFFER: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; - FRAMEBUFFER_BINDING: number; - FRAMEBUFFER_COMPLETE: number; - FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; - FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; - FRAMEBUFFER_UNSUPPORTED: number; - FRONT: number; - FRONT_AND_BACK: number; - FRONT_FACE: number; - FUNC_ADD: number; - FUNC_REVERSE_SUBTRACT: number; - FUNC_SUBTRACT: number; - GENERATE_MIPMAP_HINT: number; - GEQUAL: number; - GREATER: number; - GREEN_BITS: number; - HIGH_FLOAT: number; - HIGH_INT: number; - IMPLEMENTATION_COLOR_READ_FORMAT: number; - IMPLEMENTATION_COLOR_READ_TYPE: number; - INCR: number; - INCR_WRAP: number; - INT: number; - INT_VEC2: number; - INT_VEC3: number; - INT_VEC4: number; - INVALID_ENUM: number; - INVALID_FRAMEBUFFER_OPERATION: number; - INVALID_OPERATION: number; - INVALID_VALUE: number; - INVERT: number; - KEEP: number; - LEQUAL: number; - LESS: number; - LINEAR: number; - LINEAR_MIPMAP_LINEAR: number; - LINEAR_MIPMAP_NEAREST: number; - LINES: number; - LINE_LOOP: number; - LINE_STRIP: number; - LINE_WIDTH: number; - LINK_STATUS: number; - LOW_FLOAT: number; - LOW_INT: number; - LUMINANCE: number; - LUMINANCE_ALPHA: number; - MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; - MAX_CUBE_MAP_TEXTURE_SIZE: number; - MAX_FRAGMENT_UNIFORM_VECTORS: number; - MAX_RENDERBUFFER_SIZE: number; - MAX_TEXTURE_IMAGE_UNITS: number; - MAX_TEXTURE_SIZE: number; - MAX_VARYING_VECTORS: number; - MAX_VERTEX_ATTRIBS: number; - MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; - MAX_VERTEX_UNIFORM_VECTORS: number; - MAX_VIEWPORT_DIMS: number; - MEDIUM_FLOAT: number; - MEDIUM_INT: number; - MIRRORED_REPEAT: number; - NEAREST: number; - NEAREST_MIPMAP_LINEAR: number; - NEAREST_MIPMAP_NEAREST: number; - NEVER: number; - NICEST: number; - NONE: number; - NOTEQUAL: number; - NO_ERROR: number; - ONE: number; - ONE_MINUS_CONSTANT_ALPHA: number; - ONE_MINUS_CONSTANT_COLOR: number; - ONE_MINUS_DST_ALPHA: number; - ONE_MINUS_DST_COLOR: number; - ONE_MINUS_SRC_ALPHA: number; - ONE_MINUS_SRC_COLOR: number; - OUT_OF_MEMORY: number; - PACK_ALIGNMENT: number; - POINTS: number; - POLYGON_OFFSET_FACTOR: number; - POLYGON_OFFSET_FILL: number; - POLYGON_OFFSET_UNITS: number; - RED_BITS: number; - RENDERBUFFER: number; - RENDERBUFFER_ALPHA_SIZE: number; - RENDERBUFFER_BINDING: number; - RENDERBUFFER_BLUE_SIZE: number; - RENDERBUFFER_DEPTH_SIZE: number; - RENDERBUFFER_GREEN_SIZE: number; - RENDERBUFFER_HEIGHT: number; - RENDERBUFFER_INTERNAL_FORMAT: number; - RENDERBUFFER_RED_SIZE: number; - RENDERBUFFER_STENCIL_SIZE: number; - RENDERBUFFER_WIDTH: number; - RENDERER: number; - REPEAT: number; - REPLACE: number; - RGB: number; - RGB565: number; - RGB5_A1: number; - RGBA: number; - RGBA4: number; - SAMPLER_2D: number; - SAMPLER_CUBE: number; - SAMPLES: number; - SAMPLE_ALPHA_TO_COVERAGE: number; - SAMPLE_BUFFERS: number; - SAMPLE_COVERAGE: number; - SAMPLE_COVERAGE_INVERT: number; - SAMPLE_COVERAGE_VALUE: number; - SCISSOR_BOX: number; - SCISSOR_TEST: number; - SHADER_TYPE: number; - SHADING_LANGUAGE_VERSION: number; - SHORT: number; - SRC_ALPHA: number; - SRC_ALPHA_SATURATE: number; - SRC_COLOR: number; - STATIC_DRAW: number; - STENCIL_ATTACHMENT: number; - STENCIL_BACK_FAIL: number; - STENCIL_BACK_FUNC: number; - STENCIL_BACK_PASS_DEPTH_FAIL: number; - STENCIL_BACK_PASS_DEPTH_PASS: number; - STENCIL_BACK_REF: number; - STENCIL_BACK_VALUE_MASK: number; - STENCIL_BACK_WRITEMASK: number; - STENCIL_BITS: number; - STENCIL_BUFFER_BIT: number; - STENCIL_CLEAR_VALUE: number; - STENCIL_FAIL: number; - STENCIL_FUNC: number; - STENCIL_INDEX: number; - STENCIL_INDEX8: number; - STENCIL_PASS_DEPTH_FAIL: number; - STENCIL_PASS_DEPTH_PASS: number; - STENCIL_REF: number; - STENCIL_TEST: number; - STENCIL_VALUE_MASK: number; - STENCIL_WRITEMASK: number; - STREAM_DRAW: number; - SUBPIXEL_BITS: number; - TEXTURE: number; - TEXTURE0: number; - TEXTURE1: number; - TEXTURE10: number; - TEXTURE11: number; - TEXTURE12: number; - TEXTURE13: number; - TEXTURE14: number; - TEXTURE15: number; - TEXTURE16: number; - TEXTURE17: number; - TEXTURE18: number; - TEXTURE19: number; - TEXTURE2: number; - TEXTURE20: number; - TEXTURE21: number; - TEXTURE22: number; - TEXTURE23: number; - TEXTURE24: number; - TEXTURE25: number; - TEXTURE26: number; - TEXTURE27: number; - TEXTURE28: number; - TEXTURE29: number; - TEXTURE3: number; - TEXTURE30: number; - TEXTURE31: number; - TEXTURE4: number; - TEXTURE5: number; - TEXTURE6: number; - TEXTURE7: number; - TEXTURE8: number; - TEXTURE9: number; - TEXTURE_2D: number; - TEXTURE_BINDING_2D: number; - TEXTURE_BINDING_CUBE_MAP: number; - TEXTURE_CUBE_MAP: number; - TEXTURE_CUBE_MAP_NEGATIVE_X: number; - TEXTURE_CUBE_MAP_NEGATIVE_Y: number; - TEXTURE_CUBE_MAP_NEGATIVE_Z: number; - TEXTURE_CUBE_MAP_POSITIVE_X: number; - TEXTURE_CUBE_MAP_POSITIVE_Y: number; - TEXTURE_CUBE_MAP_POSITIVE_Z: number; - TEXTURE_MAG_FILTER: number; - TEXTURE_MIN_FILTER: number; - TEXTURE_WRAP_S: number; - TEXTURE_WRAP_T: number; - TRIANGLES: number; - TRIANGLE_FAN: number; - TRIANGLE_STRIP: number; - UNPACK_ALIGNMENT: number; - UNPACK_COLORSPACE_CONVERSION_WEBGL: number; - UNPACK_FLIP_Y_WEBGL: number; - UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; - UNSIGNED_BYTE: number; - UNSIGNED_INT: number; - UNSIGNED_SHORT: number; - UNSIGNED_SHORT_4_4_4_4: number; - UNSIGNED_SHORT_5_5_5_1: number; - UNSIGNED_SHORT_5_6_5: number; - VALIDATE_STATUS: number; - VENDOR: number; - VERSION: number; - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; - VERTEX_ATTRIB_ARRAY_ENABLED: number; - VERTEX_ATTRIB_ARRAY_NORMALIZED: number; - VERTEX_ATTRIB_ARRAY_POINTER: number; - VERTEX_ATTRIB_ARRAY_SIZE: number; - VERTEX_ATTRIB_ARRAY_STRIDE: number; - VERTEX_ATTRIB_ARRAY_TYPE: number; - VERTEX_SHADER: number; - VIEWPORT: number; - ZERO: number; + readonly ACTIVE_ATTRIBUTES: number; + readonly ACTIVE_TEXTURE: number; + readonly ACTIVE_UNIFORMS: number; + readonly ALIASED_LINE_WIDTH_RANGE: number; + readonly ALIASED_POINT_SIZE_RANGE: number; + readonly ALPHA: number; + readonly ALPHA_BITS: number; + readonly ALWAYS: number; + readonly ARRAY_BUFFER: number; + readonly ARRAY_BUFFER_BINDING: number; + readonly ATTACHED_SHADERS: number; + readonly BACK: number; + readonly BLEND: number; + readonly BLEND_COLOR: number; + readonly BLEND_DST_ALPHA: number; + readonly BLEND_DST_RGB: number; + readonly BLEND_EQUATION: number; + readonly BLEND_EQUATION_ALPHA: number; + readonly BLEND_EQUATION_RGB: number; + readonly BLEND_SRC_ALPHA: number; + readonly BLEND_SRC_RGB: number; + readonly BLUE_BITS: number; + readonly BOOL: number; + readonly BOOL_VEC2: number; + readonly BOOL_VEC3: number; + readonly BOOL_VEC4: number; + readonly BROWSER_DEFAULT_WEBGL: number; + readonly BUFFER_SIZE: number; + readonly BUFFER_USAGE: number; + readonly BYTE: number; + readonly CCW: number; + readonly CLAMP_TO_EDGE: number; + readonly COLOR_ATTACHMENT0: number; + readonly COLOR_BUFFER_BIT: number; + readonly COLOR_CLEAR_VALUE: number; + readonly COLOR_WRITEMASK: number; + readonly COMPILE_STATUS: number; + readonly COMPRESSED_TEXTURE_FORMATS: number; + readonly CONSTANT_ALPHA: number; + readonly CONSTANT_COLOR: number; + readonly CONTEXT_LOST_WEBGL: number; + readonly CULL_FACE: number; + readonly CULL_FACE_MODE: number; + readonly CURRENT_PROGRAM: number; + readonly CURRENT_VERTEX_ATTRIB: number; + readonly CW: number; + readonly DECR: number; + readonly DECR_WRAP: number; + readonly DELETE_STATUS: number; + readonly DEPTH_ATTACHMENT: number; + readonly DEPTH_BITS: number; + readonly DEPTH_BUFFER_BIT: number; + readonly DEPTH_CLEAR_VALUE: number; + readonly DEPTH_COMPONENT: number; + readonly DEPTH_COMPONENT16: number; + readonly DEPTH_FUNC: number; + readonly DEPTH_RANGE: number; + readonly DEPTH_STENCIL: number; + readonly DEPTH_STENCIL_ATTACHMENT: number; + readonly DEPTH_TEST: number; + readonly DEPTH_WRITEMASK: number; + readonly DITHER: number; + readonly DONT_CARE: number; + readonly DST_ALPHA: number; + readonly DST_COLOR: number; + readonly DYNAMIC_DRAW: number; + readonly ELEMENT_ARRAY_BUFFER: number; + readonly ELEMENT_ARRAY_BUFFER_BINDING: number; + readonly EQUAL: number; + readonly FASTEST: number; + readonly FLOAT: number; + readonly FLOAT_MAT2: number; + readonly FLOAT_MAT3: number; + readonly FLOAT_MAT4: number; + readonly FLOAT_VEC2: number; + readonly FLOAT_VEC3: number; + readonly FLOAT_VEC4: number; + readonly FRAGMENT_SHADER: number; + readonly FRAMEBUFFER: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; + readonly FRAMEBUFFER_BINDING: number; + readonly FRAMEBUFFER_COMPLETE: number; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; + readonly FRAMEBUFFER_UNSUPPORTED: number; + readonly FRONT: number; + readonly FRONT_AND_BACK: number; + readonly FRONT_FACE: number; + readonly FUNC_ADD: number; + readonly FUNC_REVERSE_SUBTRACT: number; + readonly FUNC_SUBTRACT: number; + readonly GENERATE_MIPMAP_HINT: number; + readonly GEQUAL: number; + readonly GREATER: number; + readonly GREEN_BITS: number; + readonly HIGH_FLOAT: number; + readonly HIGH_INT: number; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: number; + readonly IMPLEMENTATION_COLOR_READ_TYPE: number; + readonly INCR: number; + readonly INCR_WRAP: number; + readonly INT: number; + readonly INT_VEC2: number; + readonly INT_VEC3: number; + readonly INT_VEC4: number; + readonly INVALID_ENUM: number; + readonly INVALID_FRAMEBUFFER_OPERATION: number; + readonly INVALID_OPERATION: number; + readonly INVALID_VALUE: number; + readonly INVERT: number; + readonly KEEP: number; + readonly LEQUAL: number; + readonly LESS: number; + readonly LINEAR: number; + readonly LINEAR_MIPMAP_LINEAR: number; + readonly LINEAR_MIPMAP_NEAREST: number; + readonly LINES: number; + readonly LINE_LOOP: number; + readonly LINE_STRIP: number; + readonly LINE_WIDTH: number; + readonly LINK_STATUS: number; + readonly LOW_FLOAT: number; + readonly LOW_INT: number; + readonly LUMINANCE: number; + readonly LUMINANCE_ALPHA: number; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: number; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: number; + readonly MAX_RENDERBUFFER_SIZE: number; + readonly MAX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_TEXTURE_SIZE: number; + readonly MAX_VARYING_VECTORS: number; + readonly MAX_VERTEX_ATTRIBS: number; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_VERTEX_UNIFORM_VECTORS: number; + readonly MAX_VIEWPORT_DIMS: number; + readonly MEDIUM_FLOAT: number; + readonly MEDIUM_INT: number; + readonly MIRRORED_REPEAT: number; + readonly NEAREST: number; + readonly NEAREST_MIPMAP_LINEAR: number; + readonly NEAREST_MIPMAP_NEAREST: number; + readonly NEVER: number; + readonly NICEST: number; + readonly NONE: number; + readonly NOTEQUAL: number; + readonly NO_ERROR: number; + readonly ONE: number; + readonly ONE_MINUS_CONSTANT_ALPHA: number; + readonly ONE_MINUS_CONSTANT_COLOR: number; + readonly ONE_MINUS_DST_ALPHA: number; + readonly ONE_MINUS_DST_COLOR: number; + readonly ONE_MINUS_SRC_ALPHA: number; + readonly ONE_MINUS_SRC_COLOR: number; + readonly OUT_OF_MEMORY: number; + readonly PACK_ALIGNMENT: number; + readonly POINTS: number; + readonly POLYGON_OFFSET_FACTOR: number; + readonly POLYGON_OFFSET_FILL: number; + readonly POLYGON_OFFSET_UNITS: number; + readonly RED_BITS: number; + readonly RENDERBUFFER: number; + readonly RENDERBUFFER_ALPHA_SIZE: number; + readonly RENDERBUFFER_BINDING: number; + readonly RENDERBUFFER_BLUE_SIZE: number; + readonly RENDERBUFFER_DEPTH_SIZE: number; + readonly RENDERBUFFER_GREEN_SIZE: number; + readonly RENDERBUFFER_HEIGHT: number; + readonly RENDERBUFFER_INTERNAL_FORMAT: number; + readonly RENDERBUFFER_RED_SIZE: number; + readonly RENDERBUFFER_STENCIL_SIZE: number; + readonly RENDERBUFFER_WIDTH: number; + readonly RENDERER: number; + readonly REPEAT: number; + readonly REPLACE: number; + readonly RGB: number; + readonly RGB565: number; + readonly RGB5_A1: number; + readonly RGBA: number; + readonly RGBA4: number; + readonly SAMPLER_2D: number; + readonly SAMPLER_CUBE: number; + readonly SAMPLES: number; + readonly SAMPLE_ALPHA_TO_COVERAGE: number; + readonly SAMPLE_BUFFERS: number; + readonly SAMPLE_COVERAGE: number; + readonly SAMPLE_COVERAGE_INVERT: number; + readonly SAMPLE_COVERAGE_VALUE: number; + readonly SCISSOR_BOX: number; + readonly SCISSOR_TEST: number; + readonly SHADER_TYPE: number; + readonly SHADING_LANGUAGE_VERSION: number; + readonly SHORT: number; + readonly SRC_ALPHA: number; + readonly SRC_ALPHA_SATURATE: number; + readonly SRC_COLOR: number; + readonly STATIC_DRAW: number; + readonly STENCIL_ATTACHMENT: number; + readonly STENCIL_BACK_FAIL: number; + readonly STENCIL_BACK_FUNC: number; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: number; + readonly STENCIL_BACK_PASS_DEPTH_PASS: number; + readonly STENCIL_BACK_REF: number; + readonly STENCIL_BACK_VALUE_MASK: number; + readonly STENCIL_BACK_WRITEMASK: number; + readonly STENCIL_BITS: number; + readonly STENCIL_BUFFER_BIT: number; + readonly STENCIL_CLEAR_VALUE: number; + readonly STENCIL_FAIL: number; + readonly STENCIL_FUNC: number; + readonly STENCIL_INDEX: number; + readonly STENCIL_INDEX8: number; + readonly STENCIL_PASS_DEPTH_FAIL: number; + readonly STENCIL_PASS_DEPTH_PASS: number; + readonly STENCIL_REF: number; + readonly STENCIL_TEST: number; + readonly STENCIL_VALUE_MASK: number; + readonly STENCIL_WRITEMASK: number; + readonly STREAM_DRAW: number; + readonly SUBPIXEL_BITS: number; + readonly TEXTURE: number; + readonly TEXTURE0: number; + readonly TEXTURE1: number; + readonly TEXTURE10: number; + readonly TEXTURE11: number; + readonly TEXTURE12: number; + readonly TEXTURE13: number; + readonly TEXTURE14: number; + readonly TEXTURE15: number; + readonly TEXTURE16: number; + readonly TEXTURE17: number; + readonly TEXTURE18: number; + readonly TEXTURE19: number; + readonly TEXTURE2: number; + readonly TEXTURE20: number; + readonly TEXTURE21: number; + readonly TEXTURE22: number; + readonly TEXTURE23: number; + readonly TEXTURE24: number; + readonly TEXTURE25: number; + readonly TEXTURE26: number; + readonly TEXTURE27: number; + readonly TEXTURE28: number; + readonly TEXTURE29: number; + readonly TEXTURE3: number; + readonly TEXTURE30: number; + readonly TEXTURE31: number; + readonly TEXTURE4: number; + readonly TEXTURE5: number; + readonly TEXTURE6: number; + readonly TEXTURE7: number; + readonly TEXTURE8: number; + readonly TEXTURE9: number; + readonly TEXTURE_2D: number; + readonly TEXTURE_BINDING_2D: number; + readonly TEXTURE_BINDING_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: number; + readonly TEXTURE_MAG_FILTER: number; + readonly TEXTURE_MIN_FILTER: number; + readonly TEXTURE_WRAP_S: number; + readonly TEXTURE_WRAP_T: number; + readonly TRIANGLES: number; + readonly TRIANGLE_FAN: number; + readonly TRIANGLE_STRIP: number; + readonly UNPACK_ALIGNMENT: number; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: number; + readonly UNPACK_FLIP_Y_WEBGL: number; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; + readonly UNSIGNED_BYTE: number; + readonly UNSIGNED_INT: number; + readonly UNSIGNED_SHORT: number; + readonly UNSIGNED_SHORT_4_4_4_4: number; + readonly UNSIGNED_SHORT_5_5_5_1: number; + readonly UNSIGNED_SHORT_5_6_5: number; + readonly VALIDATE_STATUS: number; + readonly VENDOR: number; + readonly VERSION: number; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: number; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: number; + readonly VERTEX_ATTRIB_ARRAY_POINTER: number; + readonly VERTEX_ATTRIB_ARRAY_SIZE: number; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: number; + readonly VERTEX_ATTRIB_ARRAY_TYPE: number; + readonly VERTEX_SHADER: number; + readonly VIEWPORT: number; + readonly ZERO: number; } declare var WebGLRenderingContext: { prototype: WebGLRenderingContext; new(): WebGLRenderingContext; - ACTIVE_ATTRIBUTES: number; - ACTIVE_TEXTURE: number; - ACTIVE_UNIFORMS: number; - ALIASED_LINE_WIDTH_RANGE: number; - ALIASED_POINT_SIZE_RANGE: number; - ALPHA: number; - ALPHA_BITS: number; - ALWAYS: number; - ARRAY_BUFFER: number; - ARRAY_BUFFER_BINDING: number; - ATTACHED_SHADERS: number; - BACK: number; - BLEND: number; - BLEND_COLOR: number; - BLEND_DST_ALPHA: number; - BLEND_DST_RGB: number; - BLEND_EQUATION: number; - BLEND_EQUATION_ALPHA: number; - BLEND_EQUATION_RGB: number; - BLEND_SRC_ALPHA: number; - BLEND_SRC_RGB: number; - BLUE_BITS: number; - BOOL: number; - BOOL_VEC2: number; - BOOL_VEC3: number; - BOOL_VEC4: number; - BROWSER_DEFAULT_WEBGL: number; - BUFFER_SIZE: number; - BUFFER_USAGE: number; - BYTE: number; - CCW: number; - CLAMP_TO_EDGE: number; - COLOR_ATTACHMENT0: number; - COLOR_BUFFER_BIT: number; - COLOR_CLEAR_VALUE: number; - COLOR_WRITEMASK: number; - COMPILE_STATUS: number; - COMPRESSED_TEXTURE_FORMATS: number; - CONSTANT_ALPHA: number; - CONSTANT_COLOR: number; - CONTEXT_LOST_WEBGL: number; - CULL_FACE: number; - CULL_FACE_MODE: number; - CURRENT_PROGRAM: number; - CURRENT_VERTEX_ATTRIB: number; - CW: number; - DECR: number; - DECR_WRAP: number; - DELETE_STATUS: number; - DEPTH_ATTACHMENT: number; - DEPTH_BITS: number; - DEPTH_BUFFER_BIT: number; - DEPTH_CLEAR_VALUE: number; - DEPTH_COMPONENT: number; - DEPTH_COMPONENT16: number; - DEPTH_FUNC: number; - DEPTH_RANGE: number; - DEPTH_STENCIL: number; - DEPTH_STENCIL_ATTACHMENT: number; - DEPTH_TEST: number; - DEPTH_WRITEMASK: number; - DITHER: number; - DONT_CARE: number; - DST_ALPHA: number; - DST_COLOR: number; - DYNAMIC_DRAW: number; - ELEMENT_ARRAY_BUFFER: number; - ELEMENT_ARRAY_BUFFER_BINDING: number; - EQUAL: number; - FASTEST: number; - FLOAT: number; - FLOAT_MAT2: number; - FLOAT_MAT3: number; - FLOAT_MAT4: number; - FLOAT_VEC2: number; - FLOAT_VEC3: number; - FLOAT_VEC4: number; - FRAGMENT_SHADER: number; - FRAMEBUFFER: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; - FRAMEBUFFER_BINDING: number; - FRAMEBUFFER_COMPLETE: number; - FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; - FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; - FRAMEBUFFER_UNSUPPORTED: number; - FRONT: number; - FRONT_AND_BACK: number; - FRONT_FACE: number; - FUNC_ADD: number; - FUNC_REVERSE_SUBTRACT: number; - FUNC_SUBTRACT: number; - GENERATE_MIPMAP_HINT: number; - GEQUAL: number; - GREATER: number; - GREEN_BITS: number; - HIGH_FLOAT: number; - HIGH_INT: number; - IMPLEMENTATION_COLOR_READ_FORMAT: number; - IMPLEMENTATION_COLOR_READ_TYPE: number; - INCR: number; - INCR_WRAP: number; - INT: number; - INT_VEC2: number; - INT_VEC3: number; - INT_VEC4: number; - INVALID_ENUM: number; - INVALID_FRAMEBUFFER_OPERATION: number; - INVALID_OPERATION: number; - INVALID_VALUE: number; - INVERT: number; - KEEP: number; - LEQUAL: number; - LESS: number; - LINEAR: number; - LINEAR_MIPMAP_LINEAR: number; - LINEAR_MIPMAP_NEAREST: number; - LINES: number; - LINE_LOOP: number; - LINE_STRIP: number; - LINE_WIDTH: number; - LINK_STATUS: number; - LOW_FLOAT: number; - LOW_INT: number; - LUMINANCE: number; - LUMINANCE_ALPHA: number; - MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; - MAX_CUBE_MAP_TEXTURE_SIZE: number; - MAX_FRAGMENT_UNIFORM_VECTORS: number; - MAX_RENDERBUFFER_SIZE: number; - MAX_TEXTURE_IMAGE_UNITS: number; - MAX_TEXTURE_SIZE: number; - MAX_VARYING_VECTORS: number; - MAX_VERTEX_ATTRIBS: number; - MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; - MAX_VERTEX_UNIFORM_VECTORS: number; - MAX_VIEWPORT_DIMS: number; - MEDIUM_FLOAT: number; - MEDIUM_INT: number; - MIRRORED_REPEAT: number; - NEAREST: number; - NEAREST_MIPMAP_LINEAR: number; - NEAREST_MIPMAP_NEAREST: number; - NEVER: number; - NICEST: number; - NONE: number; - NOTEQUAL: number; - NO_ERROR: number; - ONE: number; - ONE_MINUS_CONSTANT_ALPHA: number; - ONE_MINUS_CONSTANT_COLOR: number; - ONE_MINUS_DST_ALPHA: number; - ONE_MINUS_DST_COLOR: number; - ONE_MINUS_SRC_ALPHA: number; - ONE_MINUS_SRC_COLOR: number; - OUT_OF_MEMORY: number; - PACK_ALIGNMENT: number; - POINTS: number; - POLYGON_OFFSET_FACTOR: number; - POLYGON_OFFSET_FILL: number; - POLYGON_OFFSET_UNITS: number; - RED_BITS: number; - RENDERBUFFER: number; - RENDERBUFFER_ALPHA_SIZE: number; - RENDERBUFFER_BINDING: number; - RENDERBUFFER_BLUE_SIZE: number; - RENDERBUFFER_DEPTH_SIZE: number; - RENDERBUFFER_GREEN_SIZE: number; - RENDERBUFFER_HEIGHT: number; - RENDERBUFFER_INTERNAL_FORMAT: number; - RENDERBUFFER_RED_SIZE: number; - RENDERBUFFER_STENCIL_SIZE: number; - RENDERBUFFER_WIDTH: number; - RENDERER: number; - REPEAT: number; - REPLACE: number; - RGB: number; - RGB565: number; - RGB5_A1: number; - RGBA: number; - RGBA4: number; - SAMPLER_2D: number; - SAMPLER_CUBE: number; - SAMPLES: number; - SAMPLE_ALPHA_TO_COVERAGE: number; - SAMPLE_BUFFERS: number; - SAMPLE_COVERAGE: number; - SAMPLE_COVERAGE_INVERT: number; - SAMPLE_COVERAGE_VALUE: number; - SCISSOR_BOX: number; - SCISSOR_TEST: number; - SHADER_TYPE: number; - SHADING_LANGUAGE_VERSION: number; - SHORT: number; - SRC_ALPHA: number; - SRC_ALPHA_SATURATE: number; - SRC_COLOR: number; - STATIC_DRAW: number; - STENCIL_ATTACHMENT: number; - STENCIL_BACK_FAIL: number; - STENCIL_BACK_FUNC: number; - STENCIL_BACK_PASS_DEPTH_FAIL: number; - STENCIL_BACK_PASS_DEPTH_PASS: number; - STENCIL_BACK_REF: number; - STENCIL_BACK_VALUE_MASK: number; - STENCIL_BACK_WRITEMASK: number; - STENCIL_BITS: number; - STENCIL_BUFFER_BIT: number; - STENCIL_CLEAR_VALUE: number; - STENCIL_FAIL: number; - STENCIL_FUNC: number; - STENCIL_INDEX: number; - STENCIL_INDEX8: number; - STENCIL_PASS_DEPTH_FAIL: number; - STENCIL_PASS_DEPTH_PASS: number; - STENCIL_REF: number; - STENCIL_TEST: number; - STENCIL_VALUE_MASK: number; - STENCIL_WRITEMASK: number; - STREAM_DRAW: number; - SUBPIXEL_BITS: number; - TEXTURE: number; - TEXTURE0: number; - TEXTURE1: number; - TEXTURE10: number; - TEXTURE11: number; - TEXTURE12: number; - TEXTURE13: number; - TEXTURE14: number; - TEXTURE15: number; - TEXTURE16: number; - TEXTURE17: number; - TEXTURE18: number; - TEXTURE19: number; - TEXTURE2: number; - TEXTURE20: number; - TEXTURE21: number; - TEXTURE22: number; - TEXTURE23: number; - TEXTURE24: number; - TEXTURE25: number; - TEXTURE26: number; - TEXTURE27: number; - TEXTURE28: number; - TEXTURE29: number; - TEXTURE3: number; - TEXTURE30: number; - TEXTURE31: number; - TEXTURE4: number; - TEXTURE5: number; - TEXTURE6: number; - TEXTURE7: number; - TEXTURE8: number; - TEXTURE9: number; - TEXTURE_2D: number; - TEXTURE_BINDING_2D: number; - TEXTURE_BINDING_CUBE_MAP: number; - TEXTURE_CUBE_MAP: number; - TEXTURE_CUBE_MAP_NEGATIVE_X: number; - TEXTURE_CUBE_MAP_NEGATIVE_Y: number; - TEXTURE_CUBE_MAP_NEGATIVE_Z: number; - TEXTURE_CUBE_MAP_POSITIVE_X: number; - TEXTURE_CUBE_MAP_POSITIVE_Y: number; - TEXTURE_CUBE_MAP_POSITIVE_Z: number; - TEXTURE_MAG_FILTER: number; - TEXTURE_MIN_FILTER: number; - TEXTURE_WRAP_S: number; - TEXTURE_WRAP_T: number; - TRIANGLES: number; - TRIANGLE_FAN: number; - TRIANGLE_STRIP: number; - UNPACK_ALIGNMENT: number; - UNPACK_COLORSPACE_CONVERSION_WEBGL: number; - UNPACK_FLIP_Y_WEBGL: number; - UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; - UNSIGNED_BYTE: number; - UNSIGNED_INT: number; - UNSIGNED_SHORT: number; - UNSIGNED_SHORT_4_4_4_4: number; - UNSIGNED_SHORT_5_5_5_1: number; - UNSIGNED_SHORT_5_6_5: number; - VALIDATE_STATUS: number; - VENDOR: number; - VERSION: number; - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; - VERTEX_ATTRIB_ARRAY_ENABLED: number; - VERTEX_ATTRIB_ARRAY_NORMALIZED: number; - VERTEX_ATTRIB_ARRAY_POINTER: number; - VERTEX_ATTRIB_ARRAY_SIZE: number; - VERTEX_ATTRIB_ARRAY_STRIDE: number; - VERTEX_ATTRIB_ARRAY_TYPE: number; - VERTEX_SHADER: number; - VIEWPORT: number; - ZERO: number; + readonly ACTIVE_ATTRIBUTES: number; + readonly ACTIVE_TEXTURE: number; + readonly ACTIVE_UNIFORMS: number; + readonly ALIASED_LINE_WIDTH_RANGE: number; + readonly ALIASED_POINT_SIZE_RANGE: number; + readonly ALPHA: number; + readonly ALPHA_BITS: number; + readonly ALWAYS: number; + readonly ARRAY_BUFFER: number; + readonly ARRAY_BUFFER_BINDING: number; + readonly ATTACHED_SHADERS: number; + readonly BACK: number; + readonly BLEND: number; + readonly BLEND_COLOR: number; + readonly BLEND_DST_ALPHA: number; + readonly BLEND_DST_RGB: number; + readonly BLEND_EQUATION: number; + readonly BLEND_EQUATION_ALPHA: number; + readonly BLEND_EQUATION_RGB: number; + readonly BLEND_SRC_ALPHA: number; + readonly BLEND_SRC_RGB: number; + readonly BLUE_BITS: number; + readonly BOOL: number; + readonly BOOL_VEC2: number; + readonly BOOL_VEC3: number; + readonly BOOL_VEC4: number; + readonly BROWSER_DEFAULT_WEBGL: number; + readonly BUFFER_SIZE: number; + readonly BUFFER_USAGE: number; + readonly BYTE: number; + readonly CCW: number; + readonly CLAMP_TO_EDGE: number; + readonly COLOR_ATTACHMENT0: number; + readonly COLOR_BUFFER_BIT: number; + readonly COLOR_CLEAR_VALUE: number; + readonly COLOR_WRITEMASK: number; + readonly COMPILE_STATUS: number; + readonly COMPRESSED_TEXTURE_FORMATS: number; + readonly CONSTANT_ALPHA: number; + readonly CONSTANT_COLOR: number; + readonly CONTEXT_LOST_WEBGL: number; + readonly CULL_FACE: number; + readonly CULL_FACE_MODE: number; + readonly CURRENT_PROGRAM: number; + readonly CURRENT_VERTEX_ATTRIB: number; + readonly CW: number; + readonly DECR: number; + readonly DECR_WRAP: number; + readonly DELETE_STATUS: number; + readonly DEPTH_ATTACHMENT: number; + readonly DEPTH_BITS: number; + readonly DEPTH_BUFFER_BIT: number; + readonly DEPTH_CLEAR_VALUE: number; + readonly DEPTH_COMPONENT: number; + readonly DEPTH_COMPONENT16: number; + readonly DEPTH_FUNC: number; + readonly DEPTH_RANGE: number; + readonly DEPTH_STENCIL: number; + readonly DEPTH_STENCIL_ATTACHMENT: number; + readonly DEPTH_TEST: number; + readonly DEPTH_WRITEMASK: number; + readonly DITHER: number; + readonly DONT_CARE: number; + readonly DST_ALPHA: number; + readonly DST_COLOR: number; + readonly DYNAMIC_DRAW: number; + readonly ELEMENT_ARRAY_BUFFER: number; + readonly ELEMENT_ARRAY_BUFFER_BINDING: number; + readonly EQUAL: number; + readonly FASTEST: number; + readonly FLOAT: number; + readonly FLOAT_MAT2: number; + readonly FLOAT_MAT3: number; + readonly FLOAT_MAT4: number; + readonly FLOAT_VEC2: number; + readonly FLOAT_VEC3: number; + readonly FLOAT_VEC4: number; + readonly FRAGMENT_SHADER: number; + readonly FRAMEBUFFER: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: number; + readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: number; + readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: number; + readonly FRAMEBUFFER_BINDING: number; + readonly FRAMEBUFFER_COMPLETE: number; + readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: number; + readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: number; + readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: number; + readonly FRAMEBUFFER_UNSUPPORTED: number; + readonly FRONT: number; + readonly FRONT_AND_BACK: number; + readonly FRONT_FACE: number; + readonly FUNC_ADD: number; + readonly FUNC_REVERSE_SUBTRACT: number; + readonly FUNC_SUBTRACT: number; + readonly GENERATE_MIPMAP_HINT: number; + readonly GEQUAL: number; + readonly GREATER: number; + readonly GREEN_BITS: number; + readonly HIGH_FLOAT: number; + readonly HIGH_INT: number; + readonly IMPLEMENTATION_COLOR_READ_FORMAT: number; + readonly IMPLEMENTATION_COLOR_READ_TYPE: number; + readonly INCR: number; + readonly INCR_WRAP: number; + readonly INT: number; + readonly INT_VEC2: number; + readonly INT_VEC3: number; + readonly INT_VEC4: number; + readonly INVALID_ENUM: number; + readonly INVALID_FRAMEBUFFER_OPERATION: number; + readonly INVALID_OPERATION: number; + readonly INVALID_VALUE: number; + readonly INVERT: number; + readonly KEEP: number; + readonly LEQUAL: number; + readonly LESS: number; + readonly LINEAR: number; + readonly LINEAR_MIPMAP_LINEAR: number; + readonly LINEAR_MIPMAP_NEAREST: number; + readonly LINES: number; + readonly LINE_LOOP: number; + readonly LINE_STRIP: number; + readonly LINE_WIDTH: number; + readonly LINK_STATUS: number; + readonly LOW_FLOAT: number; + readonly LOW_INT: number; + readonly LUMINANCE: number; + readonly LUMINANCE_ALPHA: number; + readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: number; + readonly MAX_CUBE_MAP_TEXTURE_SIZE: number; + readonly MAX_FRAGMENT_UNIFORM_VECTORS: number; + readonly MAX_RENDERBUFFER_SIZE: number; + readonly MAX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_TEXTURE_SIZE: number; + readonly MAX_VARYING_VECTORS: number; + readonly MAX_VERTEX_ATTRIBS: number; + readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: number; + readonly MAX_VERTEX_UNIFORM_VECTORS: number; + readonly MAX_VIEWPORT_DIMS: number; + readonly MEDIUM_FLOAT: number; + readonly MEDIUM_INT: number; + readonly MIRRORED_REPEAT: number; + readonly NEAREST: number; + readonly NEAREST_MIPMAP_LINEAR: number; + readonly NEAREST_MIPMAP_NEAREST: number; + readonly NEVER: number; + readonly NICEST: number; + readonly NONE: number; + readonly NOTEQUAL: number; + readonly NO_ERROR: number; + readonly ONE: number; + readonly ONE_MINUS_CONSTANT_ALPHA: number; + readonly ONE_MINUS_CONSTANT_COLOR: number; + readonly ONE_MINUS_DST_ALPHA: number; + readonly ONE_MINUS_DST_COLOR: number; + readonly ONE_MINUS_SRC_ALPHA: number; + readonly ONE_MINUS_SRC_COLOR: number; + readonly OUT_OF_MEMORY: number; + readonly PACK_ALIGNMENT: number; + readonly POINTS: number; + readonly POLYGON_OFFSET_FACTOR: number; + readonly POLYGON_OFFSET_FILL: number; + readonly POLYGON_OFFSET_UNITS: number; + readonly RED_BITS: number; + readonly RENDERBUFFER: number; + readonly RENDERBUFFER_ALPHA_SIZE: number; + readonly RENDERBUFFER_BINDING: number; + readonly RENDERBUFFER_BLUE_SIZE: number; + readonly RENDERBUFFER_DEPTH_SIZE: number; + readonly RENDERBUFFER_GREEN_SIZE: number; + readonly RENDERBUFFER_HEIGHT: number; + readonly RENDERBUFFER_INTERNAL_FORMAT: number; + readonly RENDERBUFFER_RED_SIZE: number; + readonly RENDERBUFFER_STENCIL_SIZE: number; + readonly RENDERBUFFER_WIDTH: number; + readonly RENDERER: number; + readonly REPEAT: number; + readonly REPLACE: number; + readonly RGB: number; + readonly RGB565: number; + readonly RGB5_A1: number; + readonly RGBA: number; + readonly RGBA4: number; + readonly SAMPLER_2D: number; + readonly SAMPLER_CUBE: number; + readonly SAMPLES: number; + readonly SAMPLE_ALPHA_TO_COVERAGE: number; + readonly SAMPLE_BUFFERS: number; + readonly SAMPLE_COVERAGE: number; + readonly SAMPLE_COVERAGE_INVERT: number; + readonly SAMPLE_COVERAGE_VALUE: number; + readonly SCISSOR_BOX: number; + readonly SCISSOR_TEST: number; + readonly SHADER_TYPE: number; + readonly SHADING_LANGUAGE_VERSION: number; + readonly SHORT: number; + readonly SRC_ALPHA: number; + readonly SRC_ALPHA_SATURATE: number; + readonly SRC_COLOR: number; + readonly STATIC_DRAW: number; + readonly STENCIL_ATTACHMENT: number; + readonly STENCIL_BACK_FAIL: number; + readonly STENCIL_BACK_FUNC: number; + readonly STENCIL_BACK_PASS_DEPTH_FAIL: number; + readonly STENCIL_BACK_PASS_DEPTH_PASS: number; + readonly STENCIL_BACK_REF: number; + readonly STENCIL_BACK_VALUE_MASK: number; + readonly STENCIL_BACK_WRITEMASK: number; + readonly STENCIL_BITS: number; + readonly STENCIL_BUFFER_BIT: number; + readonly STENCIL_CLEAR_VALUE: number; + readonly STENCIL_FAIL: number; + readonly STENCIL_FUNC: number; + readonly STENCIL_INDEX: number; + readonly STENCIL_INDEX8: number; + readonly STENCIL_PASS_DEPTH_FAIL: number; + readonly STENCIL_PASS_DEPTH_PASS: number; + readonly STENCIL_REF: number; + readonly STENCIL_TEST: number; + readonly STENCIL_VALUE_MASK: number; + readonly STENCIL_WRITEMASK: number; + readonly STREAM_DRAW: number; + readonly SUBPIXEL_BITS: number; + readonly TEXTURE: number; + readonly TEXTURE0: number; + readonly TEXTURE1: number; + readonly TEXTURE10: number; + readonly TEXTURE11: number; + readonly TEXTURE12: number; + readonly TEXTURE13: number; + readonly TEXTURE14: number; + readonly TEXTURE15: number; + readonly TEXTURE16: number; + readonly TEXTURE17: number; + readonly TEXTURE18: number; + readonly TEXTURE19: number; + readonly TEXTURE2: number; + readonly TEXTURE20: number; + readonly TEXTURE21: number; + readonly TEXTURE22: number; + readonly TEXTURE23: number; + readonly TEXTURE24: number; + readonly TEXTURE25: number; + readonly TEXTURE26: number; + readonly TEXTURE27: number; + readonly TEXTURE28: number; + readonly TEXTURE29: number; + readonly TEXTURE3: number; + readonly TEXTURE30: number; + readonly TEXTURE31: number; + readonly TEXTURE4: number; + readonly TEXTURE5: number; + readonly TEXTURE6: number; + readonly TEXTURE7: number; + readonly TEXTURE8: number; + readonly TEXTURE9: number; + readonly TEXTURE_2D: number; + readonly TEXTURE_BINDING_2D: number; + readonly TEXTURE_BINDING_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_X: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: number; + readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_X: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Y: number; + readonly TEXTURE_CUBE_MAP_POSITIVE_Z: number; + readonly TEXTURE_MAG_FILTER: number; + readonly TEXTURE_MIN_FILTER: number; + readonly TEXTURE_WRAP_S: number; + readonly TEXTURE_WRAP_T: number; + readonly TRIANGLES: number; + readonly TRIANGLE_FAN: number; + readonly TRIANGLE_STRIP: number; + readonly UNPACK_ALIGNMENT: number; + readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: number; + readonly UNPACK_FLIP_Y_WEBGL: number; + readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: number; + readonly UNSIGNED_BYTE: number; + readonly UNSIGNED_INT: number; + readonly UNSIGNED_SHORT: number; + readonly UNSIGNED_SHORT_4_4_4_4: number; + readonly UNSIGNED_SHORT_5_5_5_1: number; + readonly UNSIGNED_SHORT_5_6_5: number; + readonly VALIDATE_STATUS: number; + readonly VENDOR: number; + readonly VERSION: number; + readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: number; + readonly VERTEX_ATTRIB_ARRAY_ENABLED: number; + readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: number; + readonly VERTEX_ATTRIB_ARRAY_POINTER: number; + readonly VERTEX_ATTRIB_ARRAY_SIZE: number; + readonly VERTEX_ATTRIB_ARRAY_STRIDE: number; + readonly VERTEX_ATTRIB_ARRAY_TYPE: number; + readonly VERTEX_SHADER: number; + readonly VIEWPORT: number; + readonly ZERO: number; } interface WebGLShader extends WebGLObject { @@ -17066,9 +18451,9 @@ declare var WebGLShader: { } interface WebGLShaderPrecisionFormat { - precision: number; - rangeMax: number; - rangeMin: number; + readonly precision: number; + readonly rangeMax: number; + readonly rangeMin: number; } declare var WebGLShaderPrecisionFormat: { @@ -17144,196 +18529,201 @@ declare var WebKitPoint: { interface WebSocket extends EventTarget { binaryType: string; - bufferedAmount: number; - extensions: string; - onclose: (ev: CloseEvent) => any; - onerror: (ev: Event) => any; - onmessage: (ev: MessageEvent) => any; - onopen: (ev: Event) => any; - protocol: string; - readyState: number; - url: string; + readonly bufferedAmount: number; + readonly extensions: string; + onclose: (this: this, ev: CloseEvent) => any; + onerror: (this: this, ev: ErrorEvent) => any; + onmessage: (this: this, ev: MessageEvent) => any; + onopen: (this: this, ev: Event) => any; + readonly protocol: string; + readonly readyState: number; + readonly url: string; close(code?: number, reason?: string): void; send(data: any): void; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - OPEN: number; - addEventListener(type: "close", listener: (ev: CloseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void; - addEventListener(type: "open", listener: (ev: Event) => any, useCapture?: boolean): void; + readonly CLOSED: number; + readonly CLOSING: number; + readonly CONNECTING: number; + readonly OPEN: number; + addEventListener(type: "close", listener: (this: this, ev: CloseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "message", listener: (this: this, ev: MessageEvent) => any, useCapture?: boolean): void; + addEventListener(type: "open", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var WebSocket: { prototype: WebSocket; new(url: string, protocols?: string | string[]): WebSocket; - CLOSED: number; - CLOSING: number; - CONNECTING: number; - OPEN: number; + readonly CLOSED: number; + readonly CLOSING: number; + readonly CONNECTING: number; + readonly OPEN: number; } interface WheelEvent extends MouseEvent { - deltaMode: number; - deltaX: number; - deltaY: number; - deltaZ: number; + readonly deltaMode: number; + readonly deltaX: number; + readonly deltaY: number; + readonly deltaZ: number; + readonly wheelDelta: number; + readonly wheelDeltaX: number; + readonly wheelDeltaY: number; getCurrentPoint(element: Element): void; initWheelEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, buttonArg: number, relatedTargetArg: EventTarget, modifiersListArg: string, deltaXArg: number, deltaYArg: number, deltaZArg: number, deltaMode: number): void; - DOM_DELTA_LINE: number; - DOM_DELTA_PAGE: number; - DOM_DELTA_PIXEL: number; + readonly DOM_DELTA_LINE: number; + readonly DOM_DELTA_PAGE: number; + readonly DOM_DELTA_PIXEL: number; } declare var WheelEvent: { prototype: WheelEvent; new(typeArg: string, eventInitDict?: WheelEventInit): WheelEvent; - DOM_DELTA_LINE: number; - DOM_DELTA_PAGE: number; - DOM_DELTA_PIXEL: number; + readonly DOM_DELTA_LINE: number; + readonly DOM_DELTA_PAGE: number; + readonly DOM_DELTA_PIXEL: number; } interface Window extends EventTarget, WindowTimers, WindowSessionStorage, WindowLocalStorage, WindowConsole, GlobalEventHandlers, IDBEnvironment, WindowBase64 { - animationStartTime: number; - applicationCache: ApplicationCache; - clientInformation: Navigator; - closed: boolean; - crypto: Crypto; + readonly applicationCache: ApplicationCache; + readonly clientInformation: Navigator; + readonly closed: boolean; + readonly crypto: Crypto; defaultStatus: string; - devicePixelRatio: number; - doNotTrack: string; - document: Document; + readonly devicePixelRatio: number; + readonly doNotTrack: string; + readonly document: Document; event: Event; - external: External; - frameElement: Element; - frames: Window; - history: History; - innerHeight: number; - innerWidth: number; - length: number; - location: Location; - locationbar: BarProp; - menubar: BarProp; - msAnimationStartTime: number; + readonly external: External; + readonly frameElement: Element; + readonly frames: Window; + readonly history: History; + readonly innerHeight: number; + readonly innerWidth: number; + readonly length: number; + readonly location: Location; + readonly locationbar: BarProp; + readonly menubar: BarProp; + readonly msCredentials: MSCredentials; name: string; - navigator: Navigator; + readonly navigator: Navigator; offscreenBuffering: string | boolean; - onabort: (ev: Event) => any; - onafterprint: (ev: Event) => any; - onbeforeprint: (ev: Event) => any; - onbeforeunload: (ev: BeforeUnloadEvent) => any; - onblur: (ev: FocusEvent) => any; - oncanplay: (ev: Event) => any; - oncanplaythrough: (ev: Event) => any; - onchange: (ev: Event) => any; - onclick: (ev: MouseEvent) => any; - oncompassneedscalibration: (ev: Event) => any; - oncontextmenu: (ev: PointerEvent) => any; - ondblclick: (ev: MouseEvent) => any; - ondevicemotion: (ev: DeviceMotionEvent) => any; - ondeviceorientation: (ev: DeviceOrientationEvent) => any; - ondrag: (ev: DragEvent) => any; - ondragend: (ev: DragEvent) => any; - ondragenter: (ev: DragEvent) => any; - ondragleave: (ev: DragEvent) => any; - ondragover: (ev: DragEvent) => any; - ondragstart: (ev: DragEvent) => any; - ondrop: (ev: DragEvent) => any; - ondurationchange: (ev: Event) => any; - onemptied: (ev: Event) => any; - onended: (ev: Event) => any; + onabort: (this: this, ev: UIEvent) => any; + onafterprint: (this: this, ev: Event) => any; + onbeforeprint: (this: this, ev: Event) => any; + onbeforeunload: (this: this, ev: BeforeUnloadEvent) => any; + onblur: (this: this, ev: FocusEvent) => any; + oncanplay: (this: this, ev: Event) => any; + oncanplaythrough: (this: this, ev: Event) => any; + onchange: (this: this, ev: Event) => any; + onclick: (this: this, ev: MouseEvent) => any; + oncompassneedscalibration: (this: this, ev: Event) => any; + oncontextmenu: (this: this, ev: PointerEvent) => any; + ondblclick: (this: this, ev: MouseEvent) => any; + ondevicelight: (this: this, ev: DeviceLightEvent) => any; + ondevicemotion: (this: this, ev: DeviceMotionEvent) => any; + ondeviceorientation: (this: this, ev: DeviceOrientationEvent) => any; + ondrag: (this: this, ev: DragEvent) => any; + ondragend: (this: this, ev: DragEvent) => any; + ondragenter: (this: this, ev: DragEvent) => any; + ondragleave: (this: this, ev: DragEvent) => any; + ondragover: (this: this, ev: DragEvent) => any; + ondragstart: (this: this, ev: DragEvent) => any; + ondrop: (this: this, ev: DragEvent) => any; + ondurationchange: (this: this, ev: Event) => any; + onemptied: (this: this, ev: Event) => any; + onended: (this: this, ev: MediaStreamErrorEvent) => any; onerror: ErrorEventHandler; - onfocus: (ev: FocusEvent) => any; - onhashchange: (ev: HashChangeEvent) => any; - oninput: (ev: Event) => any; - onkeydown: (ev: KeyboardEvent) => any; - onkeypress: (ev: KeyboardEvent) => any; - onkeyup: (ev: KeyboardEvent) => any; - onload: (ev: Event) => any; - onloadeddata: (ev: Event) => any; - onloadedmetadata: (ev: Event) => any; - onloadstart: (ev: Event) => any; - onmessage: (ev: MessageEvent) => any; - onmousedown: (ev: MouseEvent) => any; - onmouseenter: (ev: MouseEvent) => any; - onmouseleave: (ev: MouseEvent) => any; - onmousemove: (ev: MouseEvent) => any; - onmouseout: (ev: MouseEvent) => any; - onmouseover: (ev: MouseEvent) => any; - onmouseup: (ev: MouseEvent) => any; - onmousewheel: (ev: MouseWheelEvent) => any; - onmsgesturechange: (ev: MSGestureEvent) => any; - onmsgesturedoubletap: (ev: MSGestureEvent) => any; - onmsgestureend: (ev: MSGestureEvent) => any; - onmsgesturehold: (ev: MSGestureEvent) => any; - onmsgesturestart: (ev: MSGestureEvent) => any; - onmsgesturetap: (ev: MSGestureEvent) => any; - onmsinertiastart: (ev: MSGestureEvent) => any; - onmspointercancel: (ev: MSPointerEvent) => any; - onmspointerdown: (ev: MSPointerEvent) => any; - onmspointerenter: (ev: MSPointerEvent) => any; - onmspointerleave: (ev: MSPointerEvent) => any; - onmspointermove: (ev: MSPointerEvent) => any; - onmspointerout: (ev: MSPointerEvent) => any; - onmspointerover: (ev: MSPointerEvent) => any; - onmspointerup: (ev: MSPointerEvent) => any; - onoffline: (ev: Event) => any; - ononline: (ev: Event) => any; - onorientationchange: (ev: Event) => any; - onpagehide: (ev: PageTransitionEvent) => any; - onpageshow: (ev: PageTransitionEvent) => any; - onpause: (ev: Event) => any; - onplay: (ev: Event) => any; - onplaying: (ev: Event) => any; - onpopstate: (ev: PopStateEvent) => any; - onprogress: (ev: ProgressEvent) => any; - onratechange: (ev: Event) => any; - onreadystatechange: (ev: ProgressEvent) => any; - onreset: (ev: Event) => any; - onresize: (ev: UIEvent) => any; - onscroll: (ev: UIEvent) => any; - onseeked: (ev: Event) => any; - onseeking: (ev: Event) => any; - onselect: (ev: UIEvent) => any; - onstalled: (ev: Event) => any; - onstorage: (ev: StorageEvent) => any; - onsubmit: (ev: Event) => any; - onsuspend: (ev: Event) => any; - ontimeupdate: (ev: Event) => any; - ontouchcancel: any; - ontouchend: any; - ontouchmove: any; - ontouchstart: any; - onunload: (ev: Event) => any; - onvolumechange: (ev: Event) => any; - onwaiting: (ev: Event) => any; - opener: Window; + onfocus: (this: this, ev: FocusEvent) => any; + onhashchange: (this: this, ev: HashChangeEvent) => any; + oninput: (this: this, ev: Event) => any; + oninvalid: (this: this, ev: Event) => any; + onkeydown: (this: this, ev: KeyboardEvent) => any; + onkeypress: (this: this, ev: KeyboardEvent) => any; + onkeyup: (this: this, ev: KeyboardEvent) => any; + onload: (this: this, ev: Event) => any; + onloadeddata: (this: this, ev: Event) => any; + onloadedmetadata: (this: this, ev: Event) => any; + onloadstart: (this: this, ev: Event) => any; + onmessage: (this: this, ev: MessageEvent) => any; + onmousedown: (this: this, ev: MouseEvent) => any; + onmouseenter: (this: this, ev: MouseEvent) => any; + onmouseleave: (this: this, ev: MouseEvent) => any; + onmousemove: (this: this, ev: MouseEvent) => any; + onmouseout: (this: this, ev: MouseEvent) => any; + onmouseover: (this: this, ev: MouseEvent) => any; + onmouseup: (this: this, ev: MouseEvent) => any; + onmousewheel: (this: this, ev: WheelEvent) => any; + onmsgesturechange: (this: this, ev: MSGestureEvent) => any; + onmsgesturedoubletap: (this: this, ev: MSGestureEvent) => any; + onmsgestureend: (this: this, ev: MSGestureEvent) => any; + onmsgesturehold: (this: this, ev: MSGestureEvent) => any; + onmsgesturestart: (this: this, ev: MSGestureEvent) => any; + onmsgesturetap: (this: this, ev: MSGestureEvent) => any; + onmsinertiastart: (this: this, ev: MSGestureEvent) => any; + onmspointercancel: (this: this, ev: MSPointerEvent) => any; + onmspointerdown: (this: this, ev: MSPointerEvent) => any; + onmspointerenter: (this: this, ev: MSPointerEvent) => any; + onmspointerleave: (this: this, ev: MSPointerEvent) => any; + onmspointermove: (this: this, ev: MSPointerEvent) => any; + onmspointerout: (this: this, ev: MSPointerEvent) => any; + onmspointerover: (this: this, ev: MSPointerEvent) => any; + onmspointerup: (this: this, ev: MSPointerEvent) => any; + onoffline: (this: this, ev: Event) => any; + ononline: (this: this, ev: Event) => any; + onorientationchange: (this: this, ev: Event) => any; + onpagehide: (this: this, ev: PageTransitionEvent) => any; + onpageshow: (this: this, ev: PageTransitionEvent) => any; + onpause: (this: this, ev: Event) => any; + onplay: (this: this, ev: Event) => any; + onplaying: (this: this, ev: Event) => any; + onpopstate: (this: this, ev: PopStateEvent) => any; + onprogress: (this: this, ev: ProgressEvent) => any; + onratechange: (this: this, ev: Event) => any; + onreadystatechange: (this: this, ev: ProgressEvent) => any; + onreset: (this: this, ev: Event) => any; + onresize: (this: this, ev: UIEvent) => any; + onscroll: (this: this, ev: UIEvent) => any; + onseeked: (this: this, ev: Event) => any; + onseeking: (this: this, ev: Event) => any; + onselect: (this: this, ev: UIEvent) => any; + onstalled: (this: this, ev: Event) => any; + onstorage: (this: this, ev: StorageEvent) => any; + onsubmit: (this: this, ev: Event) => any; + onsuspend: (this: this, ev: Event) => any; + ontimeupdate: (this: this, ev: Event) => any; + ontouchcancel: (ev: TouchEvent) => any; + ontouchend: (ev: TouchEvent) => any; + ontouchmove: (ev: TouchEvent) => any; + ontouchstart: (ev: TouchEvent) => any; + onunload: (this: this, ev: Event) => any; + onvolumechange: (this: this, ev: Event) => any; + onwaiting: (this: this, ev: Event) => any; + opener: any; orientation: string | number; - outerHeight: number; - outerWidth: number; - pageXOffset: number; - pageYOffset: number; - parent: Window; - performance: Performance; - personalbar: BarProp; - screen: Screen; - screenLeft: number; - screenTop: number; - screenX: number; - screenY: number; - scrollX: number; - scrollY: number; - scrollbars: BarProp; - self: Window; + readonly outerHeight: number; + readonly outerWidth: number; + readonly pageXOffset: number; + readonly pageYOffset: number; + readonly parent: Window; + readonly performance: Performance; + readonly personalbar: BarProp; + readonly screen: Screen; + readonly screenLeft: number; + readonly screenTop: number; + readonly screenX: number; + readonly screenY: number; + readonly scrollX: number; + readonly scrollY: number; + readonly scrollbars: BarProp; + readonly self: Window; status: string; - statusbar: BarProp; - styleMedia: StyleMedia; - toolbar: BarProp; - top: Window; - window: Window; - URL: URL; + readonly statusbar: BarProp; + readonly styleMedia: StyleMedia; + readonly toolbar: BarProp; + readonly top: Window; + readonly window: Window; + URL: typeof URL; + Blob: typeof Blob; alert(message?: any): void; blur(): void; cancelAnimationFrame(handle: number): void; @@ -17347,14 +18737,11 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window matchMedia(mediaQuery: string): MediaQueryList; moveBy(x?: number, y?: number): void; moveTo(x?: number, y?: number): void; - msCancelRequestAnimationFrame(handle: number): void; - msMatchMedia(mediaQuery: string): MediaQueryList; - msRequestAnimationFrame(callback: FrameRequestCallback): number; msWriteProfilerMark(profilerMarkName: string): void; - open(url?: string, target?: string, features?: string, replace?: boolean): any; - postMessage(message: any, targetOrigin: string, ports?: any): void; + open(url?: string, target?: string, features?: string, replace?: boolean): Window; + postMessage(message: any, targetOrigin: string, transfer?: any[]): void; print(): void; - prompt(message?: string, _default?: string): string; + prompt(message?: string, _default?: string): string | null; releaseEvents(): void; requestAnimationFrame(callback: FrameRequestCallback): number; resizeBy(x?: number, y?: number): void; @@ -17362,101 +18749,108 @@ interface Window extends EventTarget, WindowTimers, WindowSessionStorage, Window scroll(x?: number, y?: number): void; scrollBy(x?: number, y?: number): void; scrollTo(x?: number, y?: number): void; + webkitCancelAnimationFrame(handle: number): void; webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint; webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint; - addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "afterprint", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; - addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "compassneedscalibration", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "devicemotion", listener: (ev: DeviceMotionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "deviceorientation", listener: (ev: DeviceOrientationEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; - addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; - addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; - addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; - addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; - addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "popstate", listener: (ev: PopStateEvent) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "readystatechange", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "resize", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; - addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "storage", listener: (ev: StorageEvent) => any, useCapture?: boolean): void; - addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "unload", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + webkitRequestAnimationFrame(callback: FrameRequestCallback): number; + scroll(options?: ScrollToOptions): void; + scrollTo(options?: ScrollToOptions): void; + scrollBy(options?: ScrollToOptions): void; + addEventListener(type: "MSGestureChange", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureDoubleTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureEnd", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureHold", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSGestureTap", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSInertiaStart", listener: (this: this, ev: MSGestureEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerCancel", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerDown", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerEnter", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerLeave", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerMove", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOut", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerOver", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "MSPointerUp", listener: (this: this, ev: MSPointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "abort", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "afterprint", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "beforeprint", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "beforeunload", listener: (this: this, ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; + addEventListener(type: "blur", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "canplay", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "canplaythrough", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "change", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "click", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "compassneedscalibration", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "contextmenu", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dblclick", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "devicelight", listener: (this: this, ev: DeviceLightEvent) => any, useCapture?: boolean): void; + addEventListener(type: "devicemotion", listener: (this: this, ev: DeviceMotionEvent) => any, useCapture?: boolean): void; + addEventListener(type: "deviceorientation", listener: (this: this, ev: DeviceOrientationEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drag", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragend", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragenter", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragleave", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragover", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "dragstart", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "drop", listener: (this: this, ev: DragEvent) => any, useCapture?: boolean): void; + addEventListener(type: "durationchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "emptied", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "ended", listener: (this: this, ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "focus", listener: (this: this, ev: FocusEvent) => any, useCapture?: boolean): void; + addEventListener(type: "hashchange", listener: (this: this, ev: HashChangeEvent) => any, useCapture?: boolean): void; + addEventListener(type: "input", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "invalid", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "keydown", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keypress", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "keyup", listener: (this: this, ev: KeyboardEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadeddata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadedmetadata", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "message", listener: (this: this, ev: MessageEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousedown", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseenter", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseleave", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousemove", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseout", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseover", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mouseup", listener: (this: this, ev: MouseEvent) => any, useCapture?: boolean): void; + addEventListener(type: "mousewheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; + addEventListener(type: "offline", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "online", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "orientationchange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "pagehide", listener: (this: this, ev: PageTransitionEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pageshow", listener: (this: this, ev: PageTransitionEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pause", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "play", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "playing", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "pointercancel", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerdown", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerenter", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerleave", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointermove", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerout", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerover", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerup", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "popstate", listener: (this: this, ev: PopStateEvent) => any, useCapture?: boolean): void; + addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "ratechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "readystatechange", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "reset", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "resize", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "scroll", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "seeked", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "seeking", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "select", listener: (this: this, ev: UIEvent) => any, useCapture?: boolean): void; + addEventListener(type: "stalled", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "storage", listener: (this: this, ev: StorageEvent) => any, useCapture?: boolean): void; + addEventListener(type: "submit", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "suspend", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "timeupdate", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "unload", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "volumechange", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "waiting", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "wheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; [index: number]: Window; } @@ -17467,11 +18861,11 @@ declare var Window: { } interface Worker extends EventTarget, AbstractWorker { - onmessage: (ev: MessageEvent) => any; + onmessage: (this: this, ev: MessageEvent) => any; postMessage(message: any, ports?: any): void; terminate(): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "message", listener: (this: this, ev: MessageEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -17489,22 +18883,21 @@ declare var XMLDocument: { } interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { - msCaching: string; - onreadystatechange: (ev: ProgressEvent) => any; - readyState: number; - response: any; - responseBody: any; - responseText: string; + onreadystatechange: (this: this, ev: ProgressEvent) => any; + readonly readyState: number; + readonly response: any; + readonly responseText: string; responseType: string; - responseXML: any; - status: number; - statusText: string; + readonly responseXML: any; + readonly status: number; + readonly statusText: string; timeout: number; - upload: XMLHttpRequestUpload; + readonly upload: XMLHttpRequestUpload; withCredentials: boolean; + msCaching?: string; abort(): void; getAllResponseHeaders(): string; - getResponseHeader(header: string): string; + getResponseHeader(header: string): string | null; msCachingEnabled(): boolean; open(method: string, url: string, async?: boolean, user?: string, password?: string): void; overrideMimeType(mime: string): void; @@ -17512,30 +18905,30 @@ interface XMLHttpRequest extends EventTarget, XMLHttpRequestEventTarget { send(data?: string): void; send(data?: any): void; setRequestHeader(header: string, value: string): void; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - UNSENT: number; - addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadend", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "readystatechange", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "timeout", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; + readonly DONE: number; + readonly HEADERS_RECEIVED: number; + readonly LOADING: number; + readonly OPENED: number; + readonly UNSENT: number; + addEventListener(type: "abort", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadend", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "readystatechange", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "timeout", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } declare var XMLHttpRequest: { prototype: XMLHttpRequest; new(): XMLHttpRequest; - DONE: number; - HEADERS_RECEIVED: number; - LOADING: number; - OPENED: number; - UNSENT: number; + readonly DONE: number; + readonly HEADERS_RECEIVED: number; + readonly LOADING: number; + readonly OPENED: number; + readonly UNSENT: number; create(): XMLHttpRequest; } @@ -17587,40 +18980,40 @@ declare var XPathNSResolver: { } interface XPathResult { - booleanValue: boolean; - invalidIteratorState: boolean; - numberValue: number; - resultType: number; - singleNodeValue: Node; - snapshotLength: number; - stringValue: string; + readonly booleanValue: boolean; + readonly invalidIteratorState: boolean; + readonly numberValue: number; + readonly resultType: number; + readonly singleNodeValue: Node; + readonly snapshotLength: number; + readonly stringValue: string; iterateNext(): Node; snapshotItem(index: number): Node; - ANY_TYPE: number; - ANY_UNORDERED_NODE_TYPE: number; - BOOLEAN_TYPE: number; - FIRST_ORDERED_NODE_TYPE: number; - NUMBER_TYPE: number; - ORDERED_NODE_ITERATOR_TYPE: number; - ORDERED_NODE_SNAPSHOT_TYPE: number; - STRING_TYPE: number; - UNORDERED_NODE_ITERATOR_TYPE: number; - UNORDERED_NODE_SNAPSHOT_TYPE: number; + readonly ANY_TYPE: number; + readonly ANY_UNORDERED_NODE_TYPE: number; + readonly BOOLEAN_TYPE: number; + readonly FIRST_ORDERED_NODE_TYPE: number; + readonly NUMBER_TYPE: number; + readonly ORDERED_NODE_ITERATOR_TYPE: number; + readonly ORDERED_NODE_SNAPSHOT_TYPE: number; + readonly STRING_TYPE: number; + readonly UNORDERED_NODE_ITERATOR_TYPE: number; + readonly UNORDERED_NODE_SNAPSHOT_TYPE: number; } declare var XPathResult: { prototype: XPathResult; new(): XPathResult; - ANY_TYPE: number; - ANY_UNORDERED_NODE_TYPE: number; - BOOLEAN_TYPE: number; - FIRST_ORDERED_NODE_TYPE: number; - NUMBER_TYPE: number; - ORDERED_NODE_ITERATOR_TYPE: number; - ORDERED_NODE_SNAPSHOT_TYPE: number; - STRING_TYPE: number; - UNORDERED_NODE_ITERATOR_TYPE: number; - UNORDERED_NODE_SNAPSHOT_TYPE: number; + readonly ANY_TYPE: number; + readonly ANY_UNORDERED_NODE_TYPE: number; + readonly BOOLEAN_TYPE: number; + readonly FIRST_ORDERED_NODE_TYPE: number; + readonly NUMBER_TYPE: number; + readonly ORDERED_NODE_ITERATOR_TYPE: number; + readonly ORDERED_NODE_SNAPSHOT_TYPE: number; + readonly STRING_TYPE: number; + readonly UNORDERED_NODE_ITERATOR_TYPE: number; + readonly UNORDERED_NODE_SNAPSHOT_TYPE: number; } interface XSLTProcessor { @@ -17640,11 +19033,23 @@ declare var XSLTProcessor: { } interface AbstractWorker { - onerror: (ev: Event) => any; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; + onerror: (this: this, ev: ErrorEvent) => any; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } +interface CanvasPathMethods { + arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; + arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; + bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; + closePath(): void; + ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void; + lineTo(x: number, y: number): void; + moveTo(x: number, y: number): void; + quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; + rect(x: number, y: number, w: number, h: number): void; +} + interface ChildNode { remove(): void; } @@ -17667,6 +19072,7 @@ interface DocumentEvent { createEvent(eventInterface:"CommandEvent"): CommandEvent; createEvent(eventInterface:"CompositionEvent"): CompositionEvent; createEvent(eventInterface:"CustomEvent"): CustomEvent; + createEvent(eventInterface:"DeviceLightEvent"): DeviceLightEvent; createEvent(eventInterface:"DeviceMotionEvent"): DeviceMotionEvent; createEvent(eventInterface:"DeviceOrientationEvent"): DeviceOrientationEvent; createEvent(eventInterface:"DragEvent"): DragEvent; @@ -17678,6 +19084,7 @@ interface DocumentEvent { createEvent(eventInterface:"HashChangeEvent"): HashChangeEvent; createEvent(eventInterface:"IDBVersionChangeEvent"): IDBVersionChangeEvent; createEvent(eventInterface:"KeyboardEvent"): KeyboardEvent; + createEvent(eventInterface:"ListeningStateChangedEvent"): ListeningStateChangedEvent; createEvent(eventInterface:"LongRunningScriptDetectedEvent"): LongRunningScriptDetectedEvent; createEvent(eventInterface:"MSGestureEvent"): MSGestureEvent; createEvent(eventInterface:"MSManipulationEvent"): MSManipulationEvent; @@ -17685,21 +19092,31 @@ interface DocumentEvent { createEvent(eventInterface:"MSMediaKeyNeededEvent"): MSMediaKeyNeededEvent; createEvent(eventInterface:"MSPointerEvent"): MSPointerEvent; createEvent(eventInterface:"MSSiteModeEvent"): MSSiteModeEvent; + createEvent(eventInterface:"MediaEncryptedEvent"): MediaEncryptedEvent; + createEvent(eventInterface:"MediaKeyMessageEvent"): MediaKeyMessageEvent; + createEvent(eventInterface:"MediaStreamErrorEvent"): MediaStreamErrorEvent; + createEvent(eventInterface:"MediaStreamTrackEvent"): MediaStreamTrackEvent; createEvent(eventInterface:"MessageEvent"): MessageEvent; createEvent(eventInterface:"MouseEvent"): MouseEvent; createEvent(eventInterface:"MouseEvents"): MouseEvent; - createEvent(eventInterface:"MouseWheelEvent"): MouseWheelEvent; createEvent(eventInterface:"MutationEvent"): MutationEvent; createEvent(eventInterface:"MutationEvents"): MutationEvent; createEvent(eventInterface:"NavigationCompletedEvent"): NavigationCompletedEvent; createEvent(eventInterface:"NavigationEvent"): NavigationEvent; createEvent(eventInterface:"NavigationEventWithReferrer"): NavigationEventWithReferrer; createEvent(eventInterface:"OfflineAudioCompletionEvent"): OfflineAudioCompletionEvent; + createEvent(eventInterface:"OverflowEvent"): OverflowEvent; createEvent(eventInterface:"PageTransitionEvent"): PageTransitionEvent; createEvent(eventInterface:"PermissionRequestedEvent"): PermissionRequestedEvent; createEvent(eventInterface:"PointerEvent"): PointerEvent; createEvent(eventInterface:"PopStateEvent"): PopStateEvent; createEvent(eventInterface:"ProgressEvent"): ProgressEvent; + createEvent(eventInterface:"RTCDTMFToneChangeEvent"): RTCDTMFToneChangeEvent; + createEvent(eventInterface:"RTCDtlsTransportStateChangedEvent"): RTCDtlsTransportStateChangedEvent; + createEvent(eventInterface:"RTCIceCandidatePairChangedEvent"): RTCIceCandidatePairChangedEvent; + createEvent(eventInterface:"RTCIceGathererEvent"): RTCIceGathererEvent; + createEvent(eventInterface:"RTCIceTransportStateChangedEvent"): RTCIceTransportStateChangedEvent; + createEvent(eventInterface:"RTCSsrcConflictEvent"): RTCSsrcConflictEvent; createEvent(eventInterface:"SVGZoomEvent"): SVGZoomEvent; createEvent(eventInterface:"SVGZoomEvents"): SVGZoomEvent; createEvent(eventInterface:"ScriptNotifyEvent"): ScriptNotifyEvent; @@ -17717,11 +19134,11 @@ interface DocumentEvent { } interface ElementTraversal { - childElementCount: number; - firstElementChild: Element; - lastElementChild: Element; - nextElementSibling: Element; - previousElementSibling: Element; + readonly childElementCount: number; + readonly firstElementChild: Element; + readonly lastElementChild: Element; + readonly nextElementSibling: Element; + readonly previousElementSibling: Element; } interface GetSVGDocument { @@ -17729,24 +19146,24 @@ interface GetSVGDocument { } interface GlobalEventHandlers { - onpointercancel: (ev: PointerEvent) => any; - onpointerdown: (ev: PointerEvent) => any; - onpointerenter: (ev: PointerEvent) => any; - onpointerleave: (ev: PointerEvent) => any; - onpointermove: (ev: PointerEvent) => any; - onpointerout: (ev: PointerEvent) => any; - onpointerover: (ev: PointerEvent) => any; - onpointerup: (ev: PointerEvent) => any; - onwheel: (ev: WheelEvent) => any; - addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; - addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; + onpointercancel: (this: this, ev: PointerEvent) => any; + onpointerdown: (this: this, ev: PointerEvent) => any; + onpointerenter: (this: this, ev: PointerEvent) => any; + onpointerleave: (this: this, ev: PointerEvent) => any; + onpointermove: (this: this, ev: PointerEvent) => any; + onpointerout: (this: this, ev: PointerEvent) => any; + onpointerover: (this: this, ev: PointerEvent) => any; + onpointerup: (this: this, ev: PointerEvent) => any; + onwheel: (this: this, ev: WheelEvent) => any; + addEventListener(type: "pointercancel", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerdown", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerenter", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerleave", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointermove", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerout", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerover", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "pointerup", listener: (this: this, ev: PointerEvent) => any, useCapture?: boolean): void; + addEventListener(type: "wheel", listener: (this: this, ev: WheelEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -17766,33 +19183,32 @@ interface HTMLTableAlignment { } interface IDBEnvironment { - indexedDB: IDBFactory; - msIndexedDB: IDBFactory; + readonly indexedDB: IDBFactory; } interface LinkStyle { - sheet: StyleSheet; + readonly sheet: StyleSheet; } interface MSBaseReader { - onabort: (ev: Event) => any; - onerror: (ev: Event) => any; - onload: (ev: Event) => any; - onloadend: (ev: ProgressEvent) => any; - onloadstart: (ev: Event) => any; - onprogress: (ev: ProgressEvent) => any; - readyState: number; - result: any; + onabort: (this: this, ev: Event) => any; + onerror: (this: this, ev: ErrorEvent) => any; + onload: (this: this, ev: Event) => any; + onloadend: (this: this, ev: ProgressEvent) => any; + onloadstart: (this: this, ev: Event) => any; + onprogress: (this: this, ev: ProgressEvent) => any; + readonly readyState: number; + readonly result: any; abort(): void; - DONE: number; - EMPTY: number; - LOADING: number; - addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadend", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; + readonly DONE: number; + readonly EMPTY: number; + readonly LOADING: number; + addEventListener(type: "abort", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadend", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -17814,29 +19230,386 @@ interface NavigatorContentUtils { } interface NavigatorGeolocation { - geolocation: Geolocation; + readonly geolocation: Geolocation; } interface NavigatorID { - appName: string; - appVersion: string; - platform: string; - product: string; - productSub: string; - userAgent: string; - vendor: string; - vendorSub: string; + readonly appName: string; + readonly appVersion: string; + readonly platform: string; + readonly product: string; + readonly productSub: string; + readonly userAgent: string; + readonly vendor: string; + readonly vendorSub: string; } interface NavigatorOnLine { - onLine: boolean; + readonly onLine: boolean; } interface NavigatorStorageUtils { } +interface NavigatorUserMedia { + readonly mediaDevices: MediaDevices; + getUserMedia(constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback): void; +} + interface NodeSelector { + querySelector(selectors: "a"): HTMLAnchorElement; + querySelector(selectors: "abbr"): HTMLElement; + querySelector(selectors: "acronym"): HTMLElement; + querySelector(selectors: "address"): HTMLElement; + querySelector(selectors: "applet"): HTMLAppletElement; + querySelector(selectors: "area"): HTMLAreaElement; + querySelector(selectors: "article"): HTMLElement; + querySelector(selectors: "aside"): HTMLElement; + querySelector(selectors: "audio"): HTMLAudioElement; + querySelector(selectors: "b"): HTMLElement; + querySelector(selectors: "base"): HTMLBaseElement; + querySelector(selectors: "basefont"): HTMLBaseFontElement; + querySelector(selectors: "bdo"): HTMLElement; + querySelector(selectors: "big"): HTMLElement; + querySelector(selectors: "blockquote"): HTMLQuoteElement; + querySelector(selectors: "body"): HTMLBodyElement; + querySelector(selectors: "br"): HTMLBRElement; + querySelector(selectors: "button"): HTMLButtonElement; + querySelector(selectors: "canvas"): HTMLCanvasElement; + querySelector(selectors: "caption"): HTMLTableCaptionElement; + querySelector(selectors: "center"): HTMLElement; + querySelector(selectors: "circle"): SVGCircleElement; + querySelector(selectors: "cite"): HTMLElement; + querySelector(selectors: "clippath"): SVGClipPathElement; + querySelector(selectors: "code"): HTMLElement; + querySelector(selectors: "col"): HTMLTableColElement; + querySelector(selectors: "colgroup"): HTMLTableColElement; + querySelector(selectors: "datalist"): HTMLDataListElement; + querySelector(selectors: "dd"): HTMLElement; + querySelector(selectors: "defs"): SVGDefsElement; + querySelector(selectors: "del"): HTMLModElement; + querySelector(selectors: "desc"): SVGDescElement; + querySelector(selectors: "dfn"): HTMLElement; + querySelector(selectors: "dir"): HTMLDirectoryElement; + querySelector(selectors: "div"): HTMLDivElement; + querySelector(selectors: "dl"): HTMLDListElement; + querySelector(selectors: "dt"): HTMLElement; + querySelector(selectors: "ellipse"): SVGEllipseElement; + querySelector(selectors: "em"): HTMLElement; + querySelector(selectors: "embed"): HTMLEmbedElement; + querySelector(selectors: "feblend"): SVGFEBlendElement; + querySelector(selectors: "fecolormatrix"): SVGFEColorMatrixElement; + querySelector(selectors: "fecomponenttransfer"): SVGFEComponentTransferElement; + querySelector(selectors: "fecomposite"): SVGFECompositeElement; + querySelector(selectors: "feconvolvematrix"): SVGFEConvolveMatrixElement; + querySelector(selectors: "fediffuselighting"): SVGFEDiffuseLightingElement; + querySelector(selectors: "fedisplacementmap"): SVGFEDisplacementMapElement; + querySelector(selectors: "fedistantlight"): SVGFEDistantLightElement; + querySelector(selectors: "feflood"): SVGFEFloodElement; + querySelector(selectors: "fefunca"): SVGFEFuncAElement; + querySelector(selectors: "fefuncb"): SVGFEFuncBElement; + querySelector(selectors: "fefuncg"): SVGFEFuncGElement; + querySelector(selectors: "fefuncr"): SVGFEFuncRElement; + querySelector(selectors: "fegaussianblur"): SVGFEGaussianBlurElement; + querySelector(selectors: "feimage"): SVGFEImageElement; + querySelector(selectors: "femerge"): SVGFEMergeElement; + querySelector(selectors: "femergenode"): SVGFEMergeNodeElement; + querySelector(selectors: "femorphology"): SVGFEMorphologyElement; + querySelector(selectors: "feoffset"): SVGFEOffsetElement; + querySelector(selectors: "fepointlight"): SVGFEPointLightElement; + querySelector(selectors: "fespecularlighting"): SVGFESpecularLightingElement; + querySelector(selectors: "fespotlight"): SVGFESpotLightElement; + querySelector(selectors: "fetile"): SVGFETileElement; + querySelector(selectors: "feturbulence"): SVGFETurbulenceElement; + querySelector(selectors: "fieldset"): HTMLFieldSetElement; + querySelector(selectors: "figcaption"): HTMLElement; + querySelector(selectors: "figure"): HTMLElement; + querySelector(selectors: "filter"): SVGFilterElement; + querySelector(selectors: "font"): HTMLFontElement; + querySelector(selectors: "footer"): HTMLElement; + querySelector(selectors: "foreignobject"): SVGForeignObjectElement; + querySelector(selectors: "form"): HTMLFormElement; + querySelector(selectors: "frame"): HTMLFrameElement; + querySelector(selectors: "frameset"): HTMLFrameSetElement; + querySelector(selectors: "g"): SVGGElement; + querySelector(selectors: "h1"): HTMLHeadingElement; + querySelector(selectors: "h2"): HTMLHeadingElement; + querySelector(selectors: "h3"): HTMLHeadingElement; + querySelector(selectors: "h4"): HTMLHeadingElement; + querySelector(selectors: "h5"): HTMLHeadingElement; + querySelector(selectors: "h6"): HTMLHeadingElement; + querySelector(selectors: "head"): HTMLHeadElement; + querySelector(selectors: "header"): HTMLElement; + querySelector(selectors: "hgroup"): HTMLElement; + querySelector(selectors: "hr"): HTMLHRElement; + querySelector(selectors: "html"): HTMLHtmlElement; + querySelector(selectors: "i"): HTMLElement; + querySelector(selectors: "iframe"): HTMLIFrameElement; + querySelector(selectors: "image"): SVGImageElement; + querySelector(selectors: "img"): HTMLImageElement; + querySelector(selectors: "input"): HTMLInputElement; + querySelector(selectors: "ins"): HTMLModElement; + querySelector(selectors: "isindex"): HTMLUnknownElement; + querySelector(selectors: "kbd"): HTMLElement; + querySelector(selectors: "keygen"): HTMLElement; + querySelector(selectors: "label"): HTMLLabelElement; + querySelector(selectors: "legend"): HTMLLegendElement; + querySelector(selectors: "li"): HTMLLIElement; + querySelector(selectors: "line"): SVGLineElement; + querySelector(selectors: "lineargradient"): SVGLinearGradientElement; + querySelector(selectors: "link"): HTMLLinkElement; + querySelector(selectors: "listing"): HTMLPreElement; + querySelector(selectors: "map"): HTMLMapElement; + querySelector(selectors: "mark"): HTMLElement; + querySelector(selectors: "marker"): SVGMarkerElement; + querySelector(selectors: "marquee"): HTMLMarqueeElement; + querySelector(selectors: "mask"): SVGMaskElement; + querySelector(selectors: "menu"): HTMLMenuElement; + querySelector(selectors: "meta"): HTMLMetaElement; + querySelector(selectors: "metadata"): SVGMetadataElement; + querySelector(selectors: "meter"): HTMLMeterElement; + querySelector(selectors: "nav"): HTMLElement; + querySelector(selectors: "nextid"): HTMLUnknownElement; + querySelector(selectors: "nobr"): HTMLElement; + querySelector(selectors: "noframes"): HTMLElement; + querySelector(selectors: "noscript"): HTMLElement; + querySelector(selectors: "object"): HTMLObjectElement; + querySelector(selectors: "ol"): HTMLOListElement; + querySelector(selectors: "optgroup"): HTMLOptGroupElement; + querySelector(selectors: "option"): HTMLOptionElement; + querySelector(selectors: "p"): HTMLParagraphElement; + querySelector(selectors: "param"): HTMLParamElement; + querySelector(selectors: "path"): SVGPathElement; + querySelector(selectors: "pattern"): SVGPatternElement; + querySelector(selectors: "picture"): HTMLPictureElement; + querySelector(selectors: "plaintext"): HTMLElement; + querySelector(selectors: "polygon"): SVGPolygonElement; + querySelector(selectors: "polyline"): SVGPolylineElement; + querySelector(selectors: "pre"): HTMLPreElement; + querySelector(selectors: "progress"): HTMLProgressElement; + querySelector(selectors: "q"): HTMLQuoteElement; + querySelector(selectors: "radialgradient"): SVGRadialGradientElement; + querySelector(selectors: "rect"): SVGRectElement; + querySelector(selectors: "rt"): HTMLElement; + querySelector(selectors: "ruby"): HTMLElement; + querySelector(selectors: "s"): HTMLElement; + querySelector(selectors: "samp"): HTMLElement; + querySelector(selectors: "script"): HTMLScriptElement; + querySelector(selectors: "section"): HTMLElement; + querySelector(selectors: "select"): HTMLSelectElement; + querySelector(selectors: "small"): HTMLElement; + querySelector(selectors: "source"): HTMLSourceElement; + querySelector(selectors: "span"): HTMLSpanElement; + querySelector(selectors: "stop"): SVGStopElement; + querySelector(selectors: "strike"): HTMLElement; + querySelector(selectors: "strong"): HTMLElement; + querySelector(selectors: "style"): HTMLStyleElement; + querySelector(selectors: "sub"): HTMLElement; + querySelector(selectors: "sup"): HTMLElement; + querySelector(selectors: "svg"): SVGSVGElement; + querySelector(selectors: "switch"): SVGSwitchElement; + querySelector(selectors: "symbol"): SVGSymbolElement; + querySelector(selectors: "table"): HTMLTableElement; + querySelector(selectors: "tbody"): HTMLTableSectionElement; + querySelector(selectors: "td"): HTMLTableDataCellElement; + querySelector(selectors: "template"): HTMLTemplateElement; + querySelector(selectors: "text"): SVGTextElement; + querySelector(selectors: "textpath"): SVGTextPathElement; + querySelector(selectors: "textarea"): HTMLTextAreaElement; + querySelector(selectors: "tfoot"): HTMLTableSectionElement; + querySelector(selectors: "th"): HTMLTableHeaderCellElement; + querySelector(selectors: "thead"): HTMLTableSectionElement; + querySelector(selectors: "title"): HTMLTitleElement; + querySelector(selectors: "tr"): HTMLTableRowElement; + querySelector(selectors: "track"): HTMLTrackElement; + querySelector(selectors: "tspan"): SVGTSpanElement; + querySelector(selectors: "tt"): HTMLElement; + querySelector(selectors: "u"): HTMLElement; + querySelector(selectors: "ul"): HTMLUListElement; + querySelector(selectors: "use"): SVGUseElement; + querySelector(selectors: "var"): HTMLElement; + querySelector(selectors: "video"): HTMLVideoElement; + querySelector(selectors: "view"): SVGViewElement; + querySelector(selectors: "wbr"): HTMLElement; + querySelector(selectors: "x-ms-webview"): MSHTMLWebViewElement; + querySelector(selectors: "xmp"): HTMLPreElement; querySelector(selectors: string): Element; + querySelectorAll(selectors: "a"): NodeListOf; + querySelectorAll(selectors: "abbr"): NodeListOf; + querySelectorAll(selectors: "acronym"): NodeListOf; + querySelectorAll(selectors: "address"): NodeListOf; + querySelectorAll(selectors: "applet"): NodeListOf; + querySelectorAll(selectors: "area"): NodeListOf; + querySelectorAll(selectors: "article"): NodeListOf; + querySelectorAll(selectors: "aside"): NodeListOf; + querySelectorAll(selectors: "audio"): NodeListOf; + querySelectorAll(selectors: "b"): NodeListOf; + querySelectorAll(selectors: "base"): NodeListOf; + querySelectorAll(selectors: "basefont"): NodeListOf; + querySelectorAll(selectors: "bdo"): NodeListOf; + querySelectorAll(selectors: "big"): NodeListOf; + querySelectorAll(selectors: "blockquote"): NodeListOf; + querySelectorAll(selectors: "body"): NodeListOf; + querySelectorAll(selectors: "br"): NodeListOf; + querySelectorAll(selectors: "button"): NodeListOf; + querySelectorAll(selectors: "canvas"): NodeListOf; + querySelectorAll(selectors: "caption"): NodeListOf; + querySelectorAll(selectors: "center"): NodeListOf; + querySelectorAll(selectors: "circle"): NodeListOf; + querySelectorAll(selectors: "cite"): NodeListOf; + querySelectorAll(selectors: "clippath"): NodeListOf; + querySelectorAll(selectors: "code"): NodeListOf; + querySelectorAll(selectors: "col"): NodeListOf; + querySelectorAll(selectors: "colgroup"): NodeListOf; + querySelectorAll(selectors: "datalist"): NodeListOf; + querySelectorAll(selectors: "dd"): NodeListOf; + querySelectorAll(selectors: "defs"): NodeListOf; + querySelectorAll(selectors: "del"): NodeListOf; + querySelectorAll(selectors: "desc"): NodeListOf; + querySelectorAll(selectors: "dfn"): NodeListOf; + querySelectorAll(selectors: "dir"): NodeListOf; + querySelectorAll(selectors: "div"): NodeListOf; + querySelectorAll(selectors: "dl"): NodeListOf; + querySelectorAll(selectors: "dt"): NodeListOf; + querySelectorAll(selectors: "ellipse"): NodeListOf; + querySelectorAll(selectors: "em"): NodeListOf; + querySelectorAll(selectors: "embed"): NodeListOf; + querySelectorAll(selectors: "feblend"): NodeListOf; + querySelectorAll(selectors: "fecolormatrix"): NodeListOf; + querySelectorAll(selectors: "fecomponenttransfer"): NodeListOf; + querySelectorAll(selectors: "fecomposite"): NodeListOf; + querySelectorAll(selectors: "feconvolvematrix"): NodeListOf; + querySelectorAll(selectors: "fediffuselighting"): NodeListOf; + querySelectorAll(selectors: "fedisplacementmap"): NodeListOf; + querySelectorAll(selectors: "fedistantlight"): NodeListOf; + querySelectorAll(selectors: "feflood"): NodeListOf; + querySelectorAll(selectors: "fefunca"): NodeListOf; + querySelectorAll(selectors: "fefuncb"): NodeListOf; + querySelectorAll(selectors: "fefuncg"): NodeListOf; + querySelectorAll(selectors: "fefuncr"): NodeListOf; + querySelectorAll(selectors: "fegaussianblur"): NodeListOf; + querySelectorAll(selectors: "feimage"): NodeListOf; + querySelectorAll(selectors: "femerge"): NodeListOf; + querySelectorAll(selectors: "femergenode"): NodeListOf; + querySelectorAll(selectors: "femorphology"): NodeListOf; + querySelectorAll(selectors: "feoffset"): NodeListOf; + querySelectorAll(selectors: "fepointlight"): NodeListOf; + querySelectorAll(selectors: "fespecularlighting"): NodeListOf; + querySelectorAll(selectors: "fespotlight"): NodeListOf; + querySelectorAll(selectors: "fetile"): NodeListOf; + querySelectorAll(selectors: "feturbulence"): NodeListOf; + querySelectorAll(selectors: "fieldset"): NodeListOf; + querySelectorAll(selectors: "figcaption"): NodeListOf; + querySelectorAll(selectors: "figure"): NodeListOf; + querySelectorAll(selectors: "filter"): NodeListOf; + querySelectorAll(selectors: "font"): NodeListOf; + querySelectorAll(selectors: "footer"): NodeListOf; + querySelectorAll(selectors: "foreignobject"): NodeListOf; + querySelectorAll(selectors: "form"): NodeListOf; + querySelectorAll(selectors: "frame"): NodeListOf; + querySelectorAll(selectors: "frameset"): NodeListOf; + querySelectorAll(selectors: "g"): NodeListOf; + querySelectorAll(selectors: "h1"): NodeListOf; + querySelectorAll(selectors: "h2"): NodeListOf; + querySelectorAll(selectors: "h3"): NodeListOf; + querySelectorAll(selectors: "h4"): NodeListOf; + querySelectorAll(selectors: "h5"): NodeListOf; + querySelectorAll(selectors: "h6"): NodeListOf; + querySelectorAll(selectors: "head"): NodeListOf; + querySelectorAll(selectors: "header"): NodeListOf; + querySelectorAll(selectors: "hgroup"): NodeListOf; + querySelectorAll(selectors: "hr"): NodeListOf; + querySelectorAll(selectors: "html"): NodeListOf; + querySelectorAll(selectors: "i"): NodeListOf; + querySelectorAll(selectors: "iframe"): NodeListOf; + querySelectorAll(selectors: "image"): NodeListOf; + querySelectorAll(selectors: "img"): NodeListOf; + querySelectorAll(selectors: "input"): NodeListOf; + querySelectorAll(selectors: "ins"): NodeListOf; + querySelectorAll(selectors: "isindex"): NodeListOf; + querySelectorAll(selectors: "kbd"): NodeListOf; + querySelectorAll(selectors: "keygen"): NodeListOf; + querySelectorAll(selectors: "label"): NodeListOf; + querySelectorAll(selectors: "legend"): NodeListOf; + querySelectorAll(selectors: "li"): NodeListOf; + querySelectorAll(selectors: "line"): NodeListOf; + querySelectorAll(selectors: "lineargradient"): NodeListOf; + querySelectorAll(selectors: "link"): NodeListOf; + querySelectorAll(selectors: "listing"): NodeListOf; + querySelectorAll(selectors: "map"): NodeListOf; + querySelectorAll(selectors: "mark"): NodeListOf; + querySelectorAll(selectors: "marker"): NodeListOf; + querySelectorAll(selectors: "marquee"): NodeListOf; + querySelectorAll(selectors: "mask"): NodeListOf; + querySelectorAll(selectors: "menu"): NodeListOf; + querySelectorAll(selectors: "meta"): NodeListOf; + querySelectorAll(selectors: "metadata"): NodeListOf; + querySelectorAll(selectors: "meter"): NodeListOf; + querySelectorAll(selectors: "nav"): NodeListOf; + querySelectorAll(selectors: "nextid"): NodeListOf; + querySelectorAll(selectors: "nobr"): NodeListOf; + querySelectorAll(selectors: "noframes"): NodeListOf; + querySelectorAll(selectors: "noscript"): NodeListOf; + querySelectorAll(selectors: "object"): NodeListOf; + querySelectorAll(selectors: "ol"): NodeListOf; + querySelectorAll(selectors: "optgroup"): NodeListOf; + querySelectorAll(selectors: "option"): NodeListOf; + querySelectorAll(selectors: "p"): NodeListOf; + querySelectorAll(selectors: "param"): NodeListOf; + querySelectorAll(selectors: "path"): NodeListOf; + querySelectorAll(selectors: "pattern"): NodeListOf; + querySelectorAll(selectors: "picture"): NodeListOf; + querySelectorAll(selectors: "plaintext"): NodeListOf; + querySelectorAll(selectors: "polygon"): NodeListOf; + querySelectorAll(selectors: "polyline"): NodeListOf; + querySelectorAll(selectors: "pre"): NodeListOf; + querySelectorAll(selectors: "progress"): NodeListOf; + querySelectorAll(selectors: "q"): NodeListOf; + querySelectorAll(selectors: "radialgradient"): NodeListOf; + querySelectorAll(selectors: "rect"): NodeListOf; + querySelectorAll(selectors: "rt"): NodeListOf; + querySelectorAll(selectors: "ruby"): NodeListOf; + querySelectorAll(selectors: "s"): NodeListOf; + querySelectorAll(selectors: "samp"): NodeListOf; + querySelectorAll(selectors: "script"): NodeListOf; + querySelectorAll(selectors: "section"): NodeListOf; + querySelectorAll(selectors: "select"): NodeListOf; + querySelectorAll(selectors: "small"): NodeListOf; + querySelectorAll(selectors: "source"): NodeListOf; + querySelectorAll(selectors: "span"): NodeListOf; + querySelectorAll(selectors: "stop"): NodeListOf; + querySelectorAll(selectors: "strike"): NodeListOf; + querySelectorAll(selectors: "strong"): NodeListOf; + querySelectorAll(selectors: "style"): NodeListOf; + querySelectorAll(selectors: "sub"): NodeListOf; + querySelectorAll(selectors: "sup"): NodeListOf; + querySelectorAll(selectors: "svg"): NodeListOf; + querySelectorAll(selectors: "switch"): NodeListOf; + querySelectorAll(selectors: "symbol"): NodeListOf; + querySelectorAll(selectors: "table"): NodeListOf; + querySelectorAll(selectors: "tbody"): NodeListOf; + querySelectorAll(selectors: "td"): NodeListOf; + querySelectorAll(selectors: "template"): NodeListOf; + querySelectorAll(selectors: "text"): NodeListOf; + querySelectorAll(selectors: "textpath"): NodeListOf; + querySelectorAll(selectors: "textarea"): NodeListOf; + querySelectorAll(selectors: "tfoot"): NodeListOf; + querySelectorAll(selectors: "th"): NodeListOf; + querySelectorAll(selectors: "thead"): NodeListOf; + querySelectorAll(selectors: "title"): NodeListOf; + querySelectorAll(selectors: "tr"): NodeListOf; + querySelectorAll(selectors: "track"): NodeListOf; + querySelectorAll(selectors: "tspan"): NodeListOf; + querySelectorAll(selectors: "tt"): NodeListOf; + querySelectorAll(selectors: "u"): NodeListOf; + querySelectorAll(selectors: "ul"): NodeListOf; + querySelectorAll(selectors: "use"): NodeListOf; + querySelectorAll(selectors: "var"): NodeListOf; + querySelectorAll(selectors: "video"): NodeListOf; + querySelectorAll(selectors: "view"): NodeListOf; + querySelectorAll(selectors: "wbr"): NodeListOf; + querySelectorAll(selectors: "x-ms-webview"): NodeListOf; + querySelectorAll(selectors: "xmp"): NodeListOf; querySelectorAll(selectors: string): NodeListOf; } @@ -17845,29 +19618,29 @@ interface RandomSource { } interface SVGAnimatedPathData { - pathSegList: SVGPathSegList; + readonly pathSegList: SVGPathSegList; } interface SVGAnimatedPoints { - animatedPoints: SVGPointList; - points: SVGPointList; + readonly animatedPoints: SVGPointList; + readonly points: SVGPointList; } interface SVGExternalResourcesRequired { - externalResourcesRequired: SVGAnimatedBoolean; + readonly externalResourcesRequired: SVGAnimatedBoolean; } interface SVGFilterPrimitiveStandardAttributes extends SVGStylable { - height: SVGAnimatedLength; - result: SVGAnimatedString; - width: SVGAnimatedLength; - x: SVGAnimatedLength; - y: SVGAnimatedLength; + readonly height: SVGAnimatedLength; + readonly result: SVGAnimatedString; + readonly width: SVGAnimatedLength; + readonly x: SVGAnimatedLength; + readonly y: SVGAnimatedLength; } interface SVGFitToViewBox { - preserveAspectRatio: SVGAnimatedPreserveAspectRatio; - viewBox: SVGAnimatedRect; + readonly preserveAspectRatio: SVGAnimatedPreserveAspectRatio; + readonly viewBox: SVGAnimatedRect; } interface SVGLangSpace { @@ -17876,8 +19649,8 @@ interface SVGLangSpace { } interface SVGLocatable { - farthestViewportElement: SVGElement; - nearestViewportElement: SVGElement; + readonly farthestViewportElement: SVGElement; + readonly nearestViewportElement: SVGElement; getBBox(): SVGRect; getCTM(): SVGMatrix; getScreenCTM(): SVGMatrix; @@ -17886,22 +19659,22 @@ interface SVGLocatable { interface SVGStylable { className: any; - style: CSSStyleDeclaration; + readonly style: CSSStyleDeclaration; } interface SVGTests { - requiredExtensions: SVGStringList; - requiredFeatures: SVGStringList; - systemLanguage: SVGStringList; + readonly requiredExtensions: SVGStringList; + readonly requiredFeatures: SVGStringList; + readonly systemLanguage: SVGStringList; hasExtension(extension: string): boolean; } interface SVGTransformable extends SVGLocatable { - transform: SVGAnimatedTransformList; + readonly transform: SVGAnimatedTransformList; } interface SVGURIReference { - href: SVGAnimatedString; + readonly href: SVGAnimatedString; } interface WindowBase64 { @@ -17910,57 +19683,63 @@ interface WindowBase64 { } interface WindowConsole { - console: Console; + readonly console: Console; } interface WindowLocalStorage { - localStorage: Storage; + readonly localStorage: Storage; } interface WindowSessionStorage { - sessionStorage: Storage; + readonly sessionStorage: Storage; } interface WindowTimers extends Object, WindowTimersExtension { clearInterval(handle: number): void; clearTimeout(handle: number): void; + setInterval(handler: (...args: any[]) => void, timeout: number): number; setInterval(handler: any, timeout?: any, ...args: any[]): number; + setTimeout(handler: (...args: any[]) => void, timeout: number): number; setTimeout(handler: any, timeout?: any, ...args: any[]): number; } interface WindowTimersExtension { clearImmediate(handle: number): void; - msClearImmediate(handle: number): void; - msSetImmediate(expression: any, ...args: any[]): number; - setImmediate(expression: any, ...args: any[]): number; + setImmediate(handler: (...args: any[]) => void): number; + setImmediate(handler: any, ...args: any[]): number; } interface XMLHttpRequestEventTarget { - onabort: (ev: Event) => any; - onerror: (ev: Event) => any; - onload: (ev: Event) => any; - onloadend: (ev: ProgressEvent) => any; - onloadstart: (ev: Event) => any; - onprogress: (ev: ProgressEvent) => any; - ontimeout: (ev: ProgressEvent) => any; - addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "error", listener: (ev: ErrorEvent) => any, useCapture?: boolean): void; - addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "loadend", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; - addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; - addEventListener(type: "timeout", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; + onabort: (this: this, ev: Event) => any; + onerror: (this: this, ev: ErrorEvent) => any; + onload: (this: this, ev: Event) => any; + onloadend: (this: this, ev: ProgressEvent) => any; + onloadstart: (this: this, ev: Event) => any; + onprogress: (this: this, ev: ProgressEvent) => any; + ontimeout: (this: this, ev: ProgressEvent) => any; + addEventListener(type: "abort", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "error", listener: (this: this, ev: ErrorEvent) => any, useCapture?: boolean): void; + addEventListener(type: "load", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "loadend", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "loadstart", listener: (this: this, ev: Event) => any, useCapture?: boolean): void; + addEventListener(type: "progress", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; + addEventListener(type: "timeout", listener: (this: this, ev: ProgressEvent) => any, useCapture?: boolean): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } -interface IDBObjectStoreParameters { - keyPath?: string | string[]; - autoIncrement?: boolean; +interface StorageEventInit extends EventInit { + key?: string; + oldValue?: string; + newValue?: string; + url: string; + storageArea?: Storage; } -interface IDBIndexParameters { - unique?: boolean; - multiEntry?: boolean; +interface Canvas2DContextAttributes { + alpha?: boolean; + willReadFrequently?: boolean; + storage?: boolean; + [attribute: string]: boolean | string | undefined; } interface NodeListOf extends NodeList { @@ -17969,6 +19748,12 @@ interface NodeListOf extends NodeList { [index: number]: TNode; } +interface HTMLCollectionOf extends HTMLCollection { + item(index: number): T; + namedItem(name: string): T; + [index: number]: T; +} + interface BlobPropertyBag { type?: string; endings?: string; @@ -17998,13 +19783,204 @@ interface ProgressEventInit extends EventInit { total?: number; } -interface HTMLTemplateElement extends HTMLElement { - content: DocumentFragment; +interface ScrollOptions { + behavior?: ScrollBehavior; } -declare var HTMLTemplateElement: { - prototype: HTMLTemplateElement; - new(): HTMLTemplateElement; +interface ScrollToOptions extends ScrollOptions { + left?: number; + top?: number; +} + +interface ScrollIntoViewOptions extends ScrollOptions { + block?: ScrollLogicalPosition; + inline?: ScrollLogicalPosition; +} + +interface ClipboardEventInit extends EventInit { + data?: string; + dataType?: string; +} + +interface IDBArrayKey extends Array { +} + +interface RsaKeyGenParams extends Algorithm { + modulusLength: number; + publicExponent: Uint8Array; +} + +interface RsaHashedKeyGenParams extends RsaKeyGenParams { + hash: AlgorithmIdentifier; +} + +interface RsaKeyAlgorithm extends KeyAlgorithm { + modulusLength: number; + publicExponent: Uint8Array; +} + +interface RsaHashedKeyAlgorithm extends RsaKeyAlgorithm { + hash: AlgorithmIdentifier; +} + +interface RsaHashedImportParams { + hash: AlgorithmIdentifier; +} + +interface RsaPssParams { + saltLength: number; +} + +interface RsaOaepParams extends Algorithm { + label?: BufferSource; +} + +interface EcdsaParams extends Algorithm { + hash: AlgorithmIdentifier; +} + +interface EcKeyGenParams extends Algorithm { + namedCurve: string; +} + +interface EcKeyAlgorithm extends KeyAlgorithm { + typedCurve: string; +} + +interface EcKeyImportParams { + namedCurve: string; +} + +interface EcdhKeyDeriveParams extends Algorithm { + public: CryptoKey; +} + +interface AesCtrParams extends Algorithm { + counter: BufferSource; + length: number; +} + +interface AesKeyAlgorithm extends KeyAlgorithm { + length: number; +} + +interface AesKeyGenParams extends Algorithm { + length: number; +} + +interface AesDerivedKeyParams extends Algorithm { + length: number; +} + +interface AesCbcParams extends Algorithm { + iv: BufferSource; +} + +interface AesCmacParams extends Algorithm { + length: number; +} + +interface AesGcmParams extends Algorithm { + iv: BufferSource; + additionalData?: BufferSource; + tagLength?: number; +} + +interface AesCfbParams extends Algorithm { + iv: BufferSource; +} + +interface HmacImportParams extends Algorithm { + hash?: AlgorithmIdentifier; + length?: number; +} + +interface HmacKeyAlgorithm extends KeyAlgorithm { + hash: AlgorithmIdentifier; + length: number; +} + +interface HmacKeyGenParams extends Algorithm { + hash: AlgorithmIdentifier; + length?: number; +} + +interface DhKeyGenParams extends Algorithm { + prime: Uint8Array; + generator: Uint8Array; +} + +interface DhKeyAlgorithm extends KeyAlgorithm { + prime: Uint8Array; + generator: Uint8Array; +} + +interface DhKeyDeriveParams extends Algorithm { + public: CryptoKey; +} + +interface DhImportKeyParams extends Algorithm { + prime: Uint8Array; + generator: Uint8Array; +} + +interface ConcatParams extends Algorithm { + hash?: AlgorithmIdentifier; + algorithmId: Uint8Array; + partyUInfo: Uint8Array; + partyVInfo: Uint8Array; + publicInfo?: Uint8Array; + privateInfo?: Uint8Array; +} + +interface HkdfCtrParams extends Algorithm { + hash: AlgorithmIdentifier; + label: BufferSource; + context: BufferSource; +} + +interface Pbkdf2Params extends Algorithm { + salt: BufferSource; + iterations: number; + hash: AlgorithmIdentifier; +} + +interface RsaOtherPrimesInfo { + r: string; + d: string; + t: string; +} + +interface JsonWebKey { + kty: string; + use?: string; + key_ops?: string[]; + alg?: string; + kid?: string; + x5u?: string; + x5c?: string; + x5t?: string; + ext?: boolean; + crv?: string; + x?: string; + y?: string; + d?: string; + n?: string; + e?: string; + p?: string; + q?: string; + dp?: string; + dq?: string; + qi?: string; + oth?: RsaOtherPrimesInfo[]; + k?: string; +} + +interface ParentNode { + readonly children: HTMLCollection; + readonly firstElementChild: Element; + readonly lastElementChild: Element; + readonly childElementCount: number; } declare type EventListenerOrEventListenerObject = EventListener | EventListenerObject; @@ -18040,15 +20016,23 @@ interface DecodeSuccessCallback { (decodedData: AudioBuffer): void; } interface DecodeErrorCallback { - (): void; + (error: DOMException): void; } interface FunctionStringCallback { (data: string): void; } +interface NavigatorUserMediaSuccessCallback { + (stream: MediaStream): void; +} +interface NavigatorUserMediaErrorCallback { + (error: MediaStreamError): void; +} +interface ForEachCallback { + (keyId: any, status: string): void; +} declare var Audio: {new(src?: string): HTMLAudioElement; }; declare var Image: {new(width?: number, height?: number): HTMLImageElement; }; declare var Option: {new(text?: string, value?: string, defaultSelected?: boolean, selected?: boolean): HTMLOptionElement; }; -declare var animationStartTime: number; declare var applicationCache: ApplicationCache; declare var clientInformation: Navigator; declare var closed: boolean; @@ -18068,100 +20052,102 @@ declare var length: number; declare var location: Location; declare var locationbar: BarProp; declare var menubar: BarProp; -declare var msAnimationStartTime: number; -declare var name: string; +declare var msCredentials: MSCredentials; +declare const name: never; declare var navigator: Navigator; declare var offscreenBuffering: string | boolean; -declare var onabort: (ev: Event) => any; -declare var onafterprint: (ev: Event) => any; -declare var onbeforeprint: (ev: Event) => any; -declare var onbeforeunload: (ev: BeforeUnloadEvent) => any; -declare var onblur: (ev: FocusEvent) => any; -declare var oncanplay: (ev: Event) => any; -declare var oncanplaythrough: (ev: Event) => any; -declare var onchange: (ev: Event) => any; -declare var onclick: (ev: MouseEvent) => any; -declare var oncompassneedscalibration: (ev: Event) => any; -declare var oncontextmenu: (ev: PointerEvent) => any; -declare var ondblclick: (ev: MouseEvent) => any; -declare var ondevicemotion: (ev: DeviceMotionEvent) => any; -declare var ondeviceorientation: (ev: DeviceOrientationEvent) => any; -declare var ondrag: (ev: DragEvent) => any; -declare var ondragend: (ev: DragEvent) => any; -declare var ondragenter: (ev: DragEvent) => any; -declare var ondragleave: (ev: DragEvent) => any; -declare var ondragover: (ev: DragEvent) => any; -declare var ondragstart: (ev: DragEvent) => any; -declare var ondrop: (ev: DragEvent) => any; -declare var ondurationchange: (ev: Event) => any; -declare var onemptied: (ev: Event) => any; -declare var onended: (ev: Event) => any; +declare var onabort: (this: Window, ev: UIEvent) => any; +declare var onafterprint: (this: Window, ev: Event) => any; +declare var onbeforeprint: (this: Window, ev: Event) => any; +declare var onbeforeunload: (this: Window, ev: BeforeUnloadEvent) => any; +declare var onblur: (this: Window, ev: FocusEvent) => any; +declare var oncanplay: (this: Window, ev: Event) => any; +declare var oncanplaythrough: (this: Window, ev: Event) => any; +declare var onchange: (this: Window, ev: Event) => any; +declare var onclick: (this: Window, ev: MouseEvent) => any; +declare var oncompassneedscalibration: (this: Window, ev: Event) => any; +declare var oncontextmenu: (this: Window, ev: PointerEvent) => any; +declare var ondblclick: (this: Window, ev: MouseEvent) => any; +declare var ondevicelight: (this: Window, ev: DeviceLightEvent) => any; +declare var ondevicemotion: (this: Window, ev: DeviceMotionEvent) => any; +declare var ondeviceorientation: (this: Window, ev: DeviceOrientationEvent) => any; +declare var ondrag: (this: Window, ev: DragEvent) => any; +declare var ondragend: (this: Window, ev: DragEvent) => any; +declare var ondragenter: (this: Window, ev: DragEvent) => any; +declare var ondragleave: (this: Window, ev: DragEvent) => any; +declare var ondragover: (this: Window, ev: DragEvent) => any; +declare var ondragstart: (this: Window, ev: DragEvent) => any; +declare var ondrop: (this: Window, ev: DragEvent) => any; +declare var ondurationchange: (this: Window, ev: Event) => any; +declare var onemptied: (this: Window, ev: Event) => any; +declare var onended: (this: Window, ev: MediaStreamErrorEvent) => any; declare var onerror: ErrorEventHandler; -declare var onfocus: (ev: FocusEvent) => any; -declare var onhashchange: (ev: HashChangeEvent) => any; -declare var oninput: (ev: Event) => any; -declare var onkeydown: (ev: KeyboardEvent) => any; -declare var onkeypress: (ev: KeyboardEvent) => any; -declare var onkeyup: (ev: KeyboardEvent) => any; -declare var onload: (ev: Event) => any; -declare var onloadeddata: (ev: Event) => any; -declare var onloadedmetadata: (ev: Event) => any; -declare var onloadstart: (ev: Event) => any; -declare var onmessage: (ev: MessageEvent) => any; -declare var onmousedown: (ev: MouseEvent) => any; -declare var onmouseenter: (ev: MouseEvent) => any; -declare var onmouseleave: (ev: MouseEvent) => any; -declare var onmousemove: (ev: MouseEvent) => any; -declare var onmouseout: (ev: MouseEvent) => any; -declare var onmouseover: (ev: MouseEvent) => any; -declare var onmouseup: (ev: MouseEvent) => any; -declare var onmousewheel: (ev: MouseWheelEvent) => any; -declare var onmsgesturechange: (ev: MSGestureEvent) => any; -declare var onmsgesturedoubletap: (ev: MSGestureEvent) => any; -declare var onmsgestureend: (ev: MSGestureEvent) => any; -declare var onmsgesturehold: (ev: MSGestureEvent) => any; -declare var onmsgesturestart: (ev: MSGestureEvent) => any; -declare var onmsgesturetap: (ev: MSGestureEvent) => any; -declare var onmsinertiastart: (ev: MSGestureEvent) => any; -declare var onmspointercancel: (ev: MSPointerEvent) => any; -declare var onmspointerdown: (ev: MSPointerEvent) => any; -declare var onmspointerenter: (ev: MSPointerEvent) => any; -declare var onmspointerleave: (ev: MSPointerEvent) => any; -declare var onmspointermove: (ev: MSPointerEvent) => any; -declare var onmspointerout: (ev: MSPointerEvent) => any; -declare var onmspointerover: (ev: MSPointerEvent) => any; -declare var onmspointerup: (ev: MSPointerEvent) => any; -declare var onoffline: (ev: Event) => any; -declare var ononline: (ev: Event) => any; -declare var onorientationchange: (ev: Event) => any; -declare var onpagehide: (ev: PageTransitionEvent) => any; -declare var onpageshow: (ev: PageTransitionEvent) => any; -declare var onpause: (ev: Event) => any; -declare var onplay: (ev: Event) => any; -declare var onplaying: (ev: Event) => any; -declare var onpopstate: (ev: PopStateEvent) => any; -declare var onprogress: (ev: ProgressEvent) => any; -declare var onratechange: (ev: Event) => any; -declare var onreadystatechange: (ev: ProgressEvent) => any; -declare var onreset: (ev: Event) => any; -declare var onresize: (ev: UIEvent) => any; -declare var onscroll: (ev: UIEvent) => any; -declare var onseeked: (ev: Event) => any; -declare var onseeking: (ev: Event) => any; -declare var onselect: (ev: UIEvent) => any; -declare var onstalled: (ev: Event) => any; -declare var onstorage: (ev: StorageEvent) => any; -declare var onsubmit: (ev: Event) => any; -declare var onsuspend: (ev: Event) => any; -declare var ontimeupdate: (ev: Event) => any; -declare var ontouchcancel: any; -declare var ontouchend: any; -declare var ontouchmove: any; -declare var ontouchstart: any; -declare var onunload: (ev: Event) => any; -declare var onvolumechange: (ev: Event) => any; -declare var onwaiting: (ev: Event) => any; -declare var opener: Window; +declare var onfocus: (this: Window, ev: FocusEvent) => any; +declare var onhashchange: (this: Window, ev: HashChangeEvent) => any; +declare var oninput: (this: Window, ev: Event) => any; +declare var oninvalid: (this: Window, ev: Event) => any; +declare var onkeydown: (this: Window, ev: KeyboardEvent) => any; +declare var onkeypress: (this: Window, ev: KeyboardEvent) => any; +declare var onkeyup: (this: Window, ev: KeyboardEvent) => any; +declare var onload: (this: Window, ev: Event) => any; +declare var onloadeddata: (this: Window, ev: Event) => any; +declare var onloadedmetadata: (this: Window, ev: Event) => any; +declare var onloadstart: (this: Window, ev: Event) => any; +declare var onmessage: (this: Window, ev: MessageEvent) => any; +declare var onmousedown: (this: Window, ev: MouseEvent) => any; +declare var onmouseenter: (this: Window, ev: MouseEvent) => any; +declare var onmouseleave: (this: Window, ev: MouseEvent) => any; +declare var onmousemove: (this: Window, ev: MouseEvent) => any; +declare var onmouseout: (this: Window, ev: MouseEvent) => any; +declare var onmouseover: (this: Window, ev: MouseEvent) => any; +declare var onmouseup: (this: Window, ev: MouseEvent) => any; +declare var onmousewheel: (this: Window, ev: WheelEvent) => any; +declare var onmsgesturechange: (this: Window, ev: MSGestureEvent) => any; +declare var onmsgesturedoubletap: (this: Window, ev: MSGestureEvent) => any; +declare var onmsgestureend: (this: Window, ev: MSGestureEvent) => any; +declare var onmsgesturehold: (this: Window, ev: MSGestureEvent) => any; +declare var onmsgesturestart: (this: Window, ev: MSGestureEvent) => any; +declare var onmsgesturetap: (this: Window, ev: MSGestureEvent) => any; +declare var onmsinertiastart: (this: Window, ev: MSGestureEvent) => any; +declare var onmspointercancel: (this: Window, ev: MSPointerEvent) => any; +declare var onmspointerdown: (this: Window, ev: MSPointerEvent) => any; +declare var onmspointerenter: (this: Window, ev: MSPointerEvent) => any; +declare var onmspointerleave: (this: Window, ev: MSPointerEvent) => any; +declare var onmspointermove: (this: Window, ev: MSPointerEvent) => any; +declare var onmspointerout: (this: Window, ev: MSPointerEvent) => any; +declare var onmspointerover: (this: Window, ev: MSPointerEvent) => any; +declare var onmspointerup: (this: Window, ev: MSPointerEvent) => any; +declare var onoffline: (this: Window, ev: Event) => any; +declare var ononline: (this: Window, ev: Event) => any; +declare var onorientationchange: (this: Window, ev: Event) => any; +declare var onpagehide: (this: Window, ev: PageTransitionEvent) => any; +declare var onpageshow: (this: Window, ev: PageTransitionEvent) => any; +declare var onpause: (this: Window, ev: Event) => any; +declare var onplay: (this: Window, ev: Event) => any; +declare var onplaying: (this: Window, ev: Event) => any; +declare var onpopstate: (this: Window, ev: PopStateEvent) => any; +declare var onprogress: (this: Window, ev: ProgressEvent) => any; +declare var onratechange: (this: Window, ev: Event) => any; +declare var onreadystatechange: (this: Window, ev: ProgressEvent) => any; +declare var onreset: (this: Window, ev: Event) => any; +declare var onresize: (this: Window, ev: UIEvent) => any; +declare var onscroll: (this: Window, ev: UIEvent) => any; +declare var onseeked: (this: Window, ev: Event) => any; +declare var onseeking: (this: Window, ev: Event) => any; +declare var onselect: (this: Window, ev: UIEvent) => any; +declare var onstalled: (this: Window, ev: Event) => any; +declare var onstorage: (this: Window, ev: StorageEvent) => any; +declare var onsubmit: (this: Window, ev: Event) => any; +declare var onsuspend: (this: Window, ev: Event) => any; +declare var ontimeupdate: (this: Window, ev: Event) => any; +declare var ontouchcancel: (ev: TouchEvent) => any; +declare var ontouchend: (ev: TouchEvent) => any; +declare var ontouchmove: (ev: TouchEvent) => any; +declare var ontouchstart: (ev: TouchEvent) => any; +declare var onunload: (this: Window, ev: Event) => any; +declare var onvolumechange: (this: Window, ev: Event) => any; +declare var onwaiting: (this: Window, ev: Event) => any; +declare var opener: any; declare var orientation: string | number; declare var outerHeight: number; declare var outerWidth: number; @@ -18185,7 +20171,6 @@ declare var styleMedia: StyleMedia; declare var toolbar: BarProp; declare var top: Window; declare var window: Window; -declare var URL: URL; declare function alert(message?: any): void; declare function blur(): void; declare function cancelAnimationFrame(handle: number): void; @@ -18199,14 +20184,11 @@ declare function getSelection(): Selection; declare function matchMedia(mediaQuery: string): MediaQueryList; declare function moveBy(x?: number, y?: number): void; declare function moveTo(x?: number, y?: number): void; -declare function msCancelRequestAnimationFrame(handle: number): void; -declare function msMatchMedia(mediaQuery: string): MediaQueryList; -declare function msRequestAnimationFrame(callback: FrameRequestCallback): number; declare function msWriteProfilerMark(profilerMarkName: string): void; -declare function open(url?: string, target?: string, features?: string, replace?: boolean): any; -declare function postMessage(message: any, targetOrigin: string, ports?: any): void; +declare function open(url?: string, target?: string, features?: string, replace?: boolean): Window; +declare function postMessage(message: any, targetOrigin: string, transfer?: any[]): void; declare function print(): void; -declare function prompt(message?: string, _default?: string): string; +declare function prompt(message?: string, _default?: string): string | null; declare function releaseEvents(): void; declare function requestAnimationFrame(callback: FrameRequestCallback): number; declare function resizeBy(x?: number, y?: number): void; @@ -18214,141 +20196,173 @@ declare function resizeTo(x?: number, y?: number): void; declare function scroll(x?: number, y?: number): void; declare function scrollBy(x?: number, y?: number): void; declare function scrollTo(x?: number, y?: number): void; +declare function webkitCancelAnimationFrame(handle: number): void; declare function webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint; declare function webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint; +declare function webkitRequestAnimationFrame(callback: FrameRequestCallback): number; +declare function scroll(options?: ScrollToOptions): void; +declare function scrollTo(options?: ScrollToOptions): void; +declare function scrollBy(options?: ScrollToOptions): void; declare function toString(): string; -declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +declare function addEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; declare function dispatchEvent(evt: Event): boolean; -declare function removeEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +declare function removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, useCapture?: boolean): void; declare function clearInterval(handle: number): void; declare function clearTimeout(handle: number): void; +declare function setInterval(handler: (...args: any[]) => void, timeout: number): number; declare function setInterval(handler: any, timeout?: any, ...args: any[]): number; +declare function setTimeout(handler: (...args: any[]) => void, timeout: number): number; declare function setTimeout(handler: any, timeout?: any, ...args: any[]): number; declare function clearImmediate(handle: number): void; -declare function msClearImmediate(handle: number): void; -declare function msSetImmediate(expression: any, ...args: any[]): number; -declare function setImmediate(expression: any, ...args: any[]): number; +declare function setImmediate(handler: (...args: any[]) => void): number; +declare function setImmediate(handler: any, ...args: any[]): number; declare var sessionStorage: Storage; declare var localStorage: Storage; declare var console: Console; -declare var onpointercancel: (ev: PointerEvent) => any; -declare var onpointerdown: (ev: PointerEvent) => any; -declare var onpointerenter: (ev: PointerEvent) => any; -declare var onpointerleave: (ev: PointerEvent) => any; -declare var onpointermove: (ev: PointerEvent) => any; -declare var onpointerout: (ev: PointerEvent) => any; -declare var onpointerover: (ev: PointerEvent) => any; -declare var onpointerup: (ev: PointerEvent) => any; -declare var onwheel: (ev: WheelEvent) => any; +declare var onpointercancel: (this: Window, ev: PointerEvent) => any; +declare var onpointerdown: (this: Window, ev: PointerEvent) => any; +declare var onpointerenter: (this: Window, ev: PointerEvent) => any; +declare var onpointerleave: (this: Window, ev: PointerEvent) => any; +declare var onpointermove: (this: Window, ev: PointerEvent) => any; +declare var onpointerout: (this: Window, ev: PointerEvent) => any; +declare var onpointerover: (this: Window, ev: PointerEvent) => any; +declare var onpointerup: (this: Window, ev: PointerEvent) => any; +declare var onwheel: (this: Window, ev: WheelEvent) => any; declare var indexedDB: IDBFactory; -declare var msIndexedDB: IDBFactory; declare function atob(encodedString: string): string; declare function btoa(rawString: string): string; -declare function addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSGestureHold", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSGestureStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSGestureTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSInertiaStart", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerCancel", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerDown", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerEnter", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerLeave", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerMove", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerOut", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerOver", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "MSPointerUp", listener: (ev: MSPointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "abort", listener: (ev: UIEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "afterprint", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "beforeprint", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "beforeunload", listener: (ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "blur", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "canplay", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "canplaythrough", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "change", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "click", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "compassneedscalibration", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "contextmenu", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "dblclick", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "devicemotion", listener: (ev: DeviceMotionEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "deviceorientation", listener: (ev: DeviceOrientationEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "drag", listener: (ev: DragEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "dragend", listener: (ev: DragEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "dragenter", listener: (ev: DragEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "dragleave", listener: (ev: DragEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "dragover", listener: (ev: DragEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "dragstart", listener: (ev: DragEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "drop", listener: (ev: DragEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "durationchange", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "emptied", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "ended", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "focus", listener: (ev: FocusEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "hashchange", listener: (ev: HashChangeEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "input", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "keydown", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "keypress", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "keyup", listener: (ev: KeyboardEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "load", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "loadeddata", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "loadedmetadata", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "loadstart", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "message", listener: (ev: MessageEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mousedown", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mouseenter", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mouseleave", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mousemove", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mouseout", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mouseover", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mouseup", listener: (ev: MouseEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "mousewheel", listener: (ev: MouseWheelEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "offline", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "online", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "orientationchange", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pagehide", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pageshow", listener: (ev: PageTransitionEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pause", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "play", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "playing", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointercancel", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointerdown", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointerenter", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointerleave", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointermove", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointerout", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointerover", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "pointerup", listener: (ev: PointerEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "popstate", listener: (ev: PopStateEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "progress", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "ratechange", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "readystatechange", listener: (ev: ProgressEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "reset", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "resize", listener: (ev: UIEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "scroll", listener: (ev: UIEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "seeked", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "seeking", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "select", listener: (ev: UIEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "stalled", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "storage", listener: (ev: StorageEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: "submit", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "suspend", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "timeupdate", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "unload", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "volumechange", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "waiting", listener: (ev: Event) => any, useCapture?: boolean): void; -declare function addEventListener(type: "wheel", listener: (ev: WheelEvent) => any, useCapture?: boolean): void; -declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;interface DOMTokenList { - [Symbol.iterator](): IterableIterator; -} - -interface NodeList { - [Symbol.iterator](): IterableIterator -} - -interface NodeListOf { - [Symbol.iterator](): IterableIterator -} - +declare function addEventListener(type: "MSGestureChange", listener: (this: Window, ev: MSGestureEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "MSGestureDoubleTap", listener: (this: Window, ev: MSGestureEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "MSGestureEnd", listener: (this: Window, ev: MSGestureEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "MSGestureHold", listener: (this: Window, ev: MSGestureEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "MSGestureStart", listener: (this: Window, ev: MSGestureEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "MSGestureTap", listener: (this: Window, ev: MSGestureEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "MSInertiaStart", listener: (this: Window, ev: MSGestureEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "MSPointerCancel", listener: (this: Window, ev: MSPointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "MSPointerDown", listener: (this: Window, ev: MSPointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "MSPointerEnter", listener: (this: Window, ev: MSPointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "MSPointerLeave", listener: (this: Window, ev: MSPointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "MSPointerMove", listener: (this: Window, ev: MSPointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "MSPointerOut", listener: (this: Window, ev: MSPointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "MSPointerOver", listener: (this: Window, ev: MSPointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "MSPointerUp", listener: (this: Window, ev: MSPointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "abort", listener: (this: Window, ev: UIEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "afterprint", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "beforeprint", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "beforeunload", listener: (this: Window, ev: BeforeUnloadEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "blur", listener: (this: Window, ev: FocusEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "canplay", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "canplaythrough", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "change", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "click", listener: (this: Window, ev: MouseEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "compassneedscalibration", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "contextmenu", listener: (this: Window, ev: PointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "dblclick", listener: (this: Window, ev: MouseEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "devicelight", listener: (this: Window, ev: DeviceLightEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "devicemotion", listener: (this: Window, ev: DeviceMotionEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "deviceorientation", listener: (this: Window, ev: DeviceOrientationEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "drag", listener: (this: Window, ev: DragEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "dragend", listener: (this: Window, ev: DragEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "dragenter", listener: (this: Window, ev: DragEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "dragleave", listener: (this: Window, ev: DragEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "dragover", listener: (this: Window, ev: DragEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "dragstart", listener: (this: Window, ev: DragEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "drop", listener: (this: Window, ev: DragEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "durationchange", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "emptied", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "ended", listener: (this: Window, ev: MediaStreamErrorEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "focus", listener: (this: Window, ev: FocusEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "hashchange", listener: (this: Window, ev: HashChangeEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "input", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "invalid", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "keydown", listener: (this: Window, ev: KeyboardEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "keypress", listener: (this: Window, ev: KeyboardEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "keyup", listener: (this: Window, ev: KeyboardEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "load", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "loadeddata", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "loadedmetadata", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "loadstart", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "message", listener: (this: Window, ev: MessageEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "mousedown", listener: (this: Window, ev: MouseEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "mouseenter", listener: (this: Window, ev: MouseEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "mouseleave", listener: (this: Window, ev: MouseEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "mousemove", listener: (this: Window, ev: MouseEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "mouseout", listener: (this: Window, ev: MouseEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "mouseover", listener: (this: Window, ev: MouseEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "mouseup", listener: (this: Window, ev: MouseEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "mousewheel", listener: (this: Window, ev: WheelEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "offline", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "online", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "orientationchange", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "pagehide", listener: (this: Window, ev: PageTransitionEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "pageshow", listener: (this: Window, ev: PageTransitionEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "pause", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "play", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "playing", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "pointercancel", listener: (this: Window, ev: PointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "pointerdown", listener: (this: Window, ev: PointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "pointerenter", listener: (this: Window, ev: PointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "pointerleave", listener: (this: Window, ev: PointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "pointermove", listener: (this: Window, ev: PointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "pointerout", listener: (this: Window, ev: PointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "pointerover", listener: (this: Window, ev: PointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "pointerup", listener: (this: Window, ev: PointerEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "popstate", listener: (this: Window, ev: PopStateEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "progress", listener: (this: Window, ev: ProgressEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "ratechange", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "readystatechange", listener: (this: Window, ev: ProgressEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "reset", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "resize", listener: (this: Window, ev: UIEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "scroll", listener: (this: Window, ev: UIEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "seeked", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "seeking", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "select", listener: (this: Window, ev: UIEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "stalled", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "storage", listener: (this: Window, ev: StorageEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: "submit", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "suspend", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "timeupdate", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "unload", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "volumechange", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "waiting", listener: (this: Window, ev: Event) => any, useCapture?: boolean): void; +declare function addEventListener(type: "wheel", listener: (this: Window, ev: WheelEvent) => any, useCapture?: boolean): void; +declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; +type AAGUID = string; +type AlgorithmIdentifier = string | Algorithm; +type ConstrainBoolean = boolean | ConstrainBooleanParameters; +type ConstrainDOMString = string | string[] | ConstrainDOMStringParameters; +type ConstrainDouble = number | ConstrainDoubleRange; +type ConstrainLong = number | ConstrainLongRange; +type CryptoOperationData = ArrayBufferView; +type GLbitfield = number; +type GLboolean = boolean; +type GLbyte = number; +type GLclampf = number; +type GLenum = number; +type GLfloat = number; +type GLint = number; +type GLintptr = number; +type GLshort = number; +type GLsizei = number; +type GLsizeiptr = number; +type GLubyte = number; +type GLuint = number; +type GLushort = number; +type IDBKeyPath = string; +type KeyFormat = string; +type KeyType = string; +type KeyUsage = string; +type MSInboundPayload = MSVideoRecvPayload | MSAudioRecvPayload; +type MSLocalClientEvent = MSLocalClientEventBase | MSAudioLocalClientEvent; +type MSOutboundPayload = MSVideoSendPayload | MSAudioSendPayload; +type RTCIceGatherCandidate = RTCIceCandidate | RTCIceCandidateComplete; +type RTCTransport = RTCDtlsTransport | RTCSrtpSdesTransport; +type payloadtype = number; +type ScrollBehavior = "auto" | "instant" | "smooth"; +type ScrollLogicalPosition = "start" | "center" | "end" | "nearest"; +type IDBValidKey = number | string | Date | IDBArrayKey; +type BufferSource = ArrayBuffer | ArrayBufferView; +type MouseWheelEvent = WheelEvent; ///////////////////////////// /// WorkerGlobalScope APIs ///////////////////////////// @@ -18632,3 +20646,29 @@ interface VBArrayConstructor { } declare var VBArray: VBArrayConstructor; + +/** + * Automation date (VT_DATE) + */ +interface VarDate { } + +interface DateConstructor { + new (vd: VarDate): Date; +} + +interface Date { + getVarDate: () => VarDate; +} +/// + +interface DOMTokenList { + [Symbol.iterator](): IterableIterator; +} + +interface NodeList { + [Symbol.iterator](): IterableIterator +} + +interface NodeListOf { + [Symbol.iterator](): IterableIterator +} diff --git a/lib/decl/webrtc/MediaStream.d.ts b/lib/decl/webrtc/MediaStream.d.ts deleted file mode 100644 index a2306b621..000000000 --- a/lib/decl/webrtc/MediaStream.d.ts +++ /dev/null @@ -1,199 +0,0 @@ -// Type definitions for WebRTC -// Project: http://dev.w3.org/2011/webrtc/ -// Definitions by: Ken Smith -// Definitions: https://github.com/borisyankov/DefinitelyTyped - -// Taken from http://dev.w3.org/2011/webrtc/editor/getusermedia.html -// version: W3C Editor's Draft 29 June 2015 - -interface ConstrainBooleanParameters { - exact?: boolean; - ideal?: boolean; -} - -interface NumberRange { - max?: number; - min?: number; -} - -interface ConstrainNumberRange extends NumberRange { - exact?: number; - ideal?: number; -} - -interface ConstrainStringParameters { - exact?: string | string[]; - ideal?: string | string[]; -} - -interface MediaStreamConstraints { - video?: boolean | MediaTrackConstraints; - audio?: boolean | MediaTrackConstraints; -} - -declare module W3C { - type LongRange = NumberRange; - type DoubleRange = NumberRange; - type ConstrainBoolean = boolean | ConstrainBooleanParameters; - type ConstrainNumber = number | ConstrainNumberRange; - type ConstrainLong = ConstrainNumber; - type ConstrainDouble = ConstrainNumber; - type ConstrainString = string | string[] | ConstrainStringParameters; -} - -interface MediaTrackConstraints extends MediaTrackConstraintSet { - advanced?: MediaTrackConstraintSet[]; -} - -interface MediaTrackConstraintSet { - width?: W3C.ConstrainLong; - height?: W3C.ConstrainLong; - aspectRatio?: W3C.ConstrainDouble; - frameRate?: W3C.ConstrainDouble; - facingMode?: W3C.ConstrainString; - volume?: W3C.ConstrainDouble; - sampleRate?: W3C.ConstrainLong; - sampleSize?: W3C.ConstrainLong; - echoCancellation?: W3C.ConstrainBoolean; - latency?: W3C.ConstrainDouble; - deviceId?: W3C.ConstrainString; - groupId?: W3C.ConstrainString; -} - -interface MediaTrackSupportedConstraints { - width?: boolean; - height?: boolean; - aspectRatio?: boolean; - frameRate?: boolean; - facingMode?: boolean; - volume?: boolean; - sampleRate?: boolean; - sampleSize?: boolean; - echoCancellation?: boolean; - latency?: boolean; - deviceId?: boolean; - groupId?: boolean; -} - -interface MediaStream extends EventTarget { - id: string; - active: boolean; - - onactive: EventListener; - oninactive: EventListener; - onaddtrack: (event: MediaStreamTrackEvent) => any; - onremovetrack: (event: MediaStreamTrackEvent) => any; - - clone(): MediaStream; - stop(): void; - - getAudioTracks(): MediaStreamTrack[]; - getVideoTracks(): MediaStreamTrack[]; - getTracks(): MediaStreamTrack[]; - - getTrackById(trackId: string): MediaStreamTrack; - - addTrack(track: MediaStreamTrack): void; - removeTrack(track: MediaStreamTrack): void; -} - -interface MediaStreamTrackEvent extends Event { - track: MediaStreamTrack; -} - -declare enum MediaStreamTrackState { - "live", - "ended" -} - -interface MediaStreamTrack extends EventTarget { - id: string; - kind: string; - label: string; - enabled: boolean; - muted: boolean; - remote: boolean; - readyState: MediaStreamTrackState; - - onmute: EventListener; - onunmute: EventListener; - onended: EventListener; - onoverconstrained: EventListener; - - clone(): MediaStreamTrack; - - stop(): void; - - getCapabilities(): MediaTrackCapabilities; - getConstraints(): MediaTrackConstraints; - getSettings(): MediaTrackSettings; - applyConstraints(constraints: MediaTrackConstraints): Promise; -} - -interface MediaTrackCapabilities { - width: number | W3C.LongRange; - height: number | W3C.LongRange; - aspectRatio: number | W3C.DoubleRange; - frameRate: number | W3C.DoubleRange; - facingMode: string; - volume: number | W3C.DoubleRange; - sampleRate: number | W3C.LongRange; - sampleSize: number | W3C.LongRange; - echoCancellation: boolean[]; - latency: number | W3C.DoubleRange; - deviceId: string; - groupId: string; -} - -interface MediaTrackSettings { - width: number; - height: number; - aspectRatio: number; - frameRate: number; - facingMode: string; - volume: number; - sampleRate: number; - sampleSize: number; - echoCancellation: boolean; - latency: number; - deviceId: string; - groupId: string; -} - -interface MediaStreamError { - name: string; - message: string; - constraintName: string; -} - -interface NavigatorGetUserMedia { - (constraints: MediaStreamConstraints, - successCallback: (stream: MediaStream) => void, - errorCallback: (error: MediaStreamError) => void): void; -} - -interface Navigator { - getUserMedia: NavigatorGetUserMedia; - - webkitGetUserMedia: NavigatorGetUserMedia; - - mozGetUserMedia: NavigatorGetUserMedia; - - msGetUserMedia: NavigatorGetUserMedia; - - mediaDevices: MediaDevices; -} - -interface MediaDevices { - getSupportedConstraints(): MediaTrackSupportedConstraints; - - getUserMedia(constraints: MediaStreamConstraints): Promise; - enumerateDevices(): Promise; -} - -interface MediaDeviceInfo { - label: string; - id: string; - kind: string; - facing: string; -} diff --git a/lib/wallet/db.ts b/lib/wallet/db.ts index 7fe635b9e..5104f28fb 100644 --- a/lib/wallet/db.ts +++ b/lib/wallet/db.ts @@ -93,7 +93,7 @@ export function exportDb(db: IDBDatabase): Promise { return new Promise((resolve, reject) => { - let tx = db.transaction(db.objectStoreNames); + let tx = db.transaction(Array.from(db.objectStoreNames)); tx.addEventListener("complete", () => { resolve(dump); }); diff --git a/lib/wallet/emscriptif.ts b/lib/wallet/emscriptif.ts index a12128666..34ef4d377 100644 --- a/lib/wallet/emscriptif.ts +++ b/lib/wallet/emscriptif.ts @@ -164,7 +164,7 @@ enum RandomQuality { abstract class ArenaObject { - private _nativePtr: number | undefined = undefined; + protected _nativePtr: number | undefined = undefined; arena: Arena; abstract destroy(): void; @@ -440,7 +440,8 @@ abstract class PackedArenaObject extends ArenaObject { } alloc() { - if (!this.nativePtr) { + super.alloc(this.size()); + if (!this._nativePtr) { this.nativePtr = emscAlloc.malloc(this.size()); } } @@ -775,7 +776,7 @@ export class AbsoluteTimeNbo extends PackedArenaObject { x.alloc(); let r = /Date\(([0-9]+)\)/; let m = r.exec(s); - if (m.length != 2) { + if (!m || m.length != 2) { throw Error(); } let n = parseInt(m[1]) * 1000000; diff --git a/lib/wallet/wallet.ts b/lib/wallet/wallet.ts index 209c7a253..367c9cbcd 100644 --- a/lib/wallet/wallet.ts +++ b/lib/wallet/wallet.ts @@ -373,18 +373,16 @@ export class Wallet { exchange.baseUrl); return; } - let cd = { - coin: coin, - denom: exchange.active_denoms.find((e) => e.denom_pub === coin.denomPub) - }; - if (!cd.denom) { + let denom = exchange.active_denoms.find((e) => e.denom_pub === coin.denomPub); + if (!denom) { console.warn("denom not found (database inconsistent)"); return; } - if (cd.denom.value.currency !== paymentAmount.currency) { + if (denom.value.currency !== paymentAmount.currency) { console.warn("same pubkey for different currencies"); return; } + let cd = {coin, denom}; let x = m[url]; if (!x) { m[url] = [cd]; diff --git a/lib/wallet/wxMessaging.ts b/lib/wallet/wxMessaging.ts index 401fefd56..9c08b20ca 100644 --- a/lib/wallet/wxMessaging.ts +++ b/lib/wallet/wxMessaging.ts @@ -64,7 +64,7 @@ function makeHandlers(db: IDBDatabase, }, ["reset"]: function(detail, sender) { if (db) { - let tx = db.transaction(db.objectStoreNames, 'readwrite'); + let tx = db.transaction(Array.from(db.objectStoreNames), 'readwrite'); for (let i = 0; i < db.objectStoreNames.length; i++) { tx.objectStore(db.objectStoreNames[i]).clear(); } @@ -313,7 +313,7 @@ export function wxMain() { console.error("could not open database"); console.error(e); }) - .then((db) => { + .then((db: IDBDatabase) => { let http = new BrowserHttpLib(); let badge = new ChromeBadge(); let notifier = new ChromeNotifier(); diff --git a/pages/confirm-contract.tsx b/pages/confirm-contract.tsx index e88336a2d..19b049eb5 100644 --- a/pages/confirm-contract.tsx +++ b/pages/confirm-contract.tsx @@ -95,7 +95,7 @@ export function main() { } }; - m.mount(document.getElementById("contract"), Contract); + m.mount(document.getElementById("contract")!, Contract); function checkPayment() { chrome.runtime.sendMessage({type: 'check-pay', detail: {offer}}, (resp) => { diff --git a/pages/confirm-create-reserve.tsx b/pages/confirm-create-reserve.tsx index 667323044..0a509118d 100644 --- a/pages/confirm-create-reserve.tsx +++ b/pages/confirm-create-reserve.tsx @@ -189,7 +189,7 @@ class Controller { } function view(ctrl: Controller): any { - function* f() { + function* f(): IterableIterator { yield m("p", i18n.parts`You are about to withdraw ${m("strong", amountToPretty( ctrl.amount))} from your bank account into your wallet.`); @@ -374,8 +374,8 @@ export function main() { getSuggestedExchange(amount.currency) .then((suggestedExchangeUrl) => { const controller = function () { return new Controller(suggestedExchangeUrl, amount, callback_url, wt_types); }; - var ExchangeSelection = {controller, view}; - m.mount(document.getElementById("exchange-selection"), ExchangeSelection); + const ExchangeSelection = {controller, view}; + m.mount(document.getElementById("exchange-selection")!, ExchangeSelection); }) .catch((e) => { // TODO: provide more context information, maybe factor it out into a diff --git a/pages/show-db.ts b/pages/show-db.ts index 0a3a5bd46..71e74388b 100644 --- a/pages/show-db.ts +++ b/pages/show-db.ts @@ -48,6 +48,10 @@ function prettyPrint(obj: any) { document.addEventListener("DOMContentLoaded", () => { chrome.runtime.sendMessage({type: 'dump-db'}, (resp) => { - document.getElementById('dump').innerHTML = prettyPrint(resp); + const el = document.getElementById('dump'); + if (!el) { + throw Error(); + } + el.innerHTML = prettyPrint(resp); }); });