Skip to content

Fixed regression in reverse mapped type inference caused by cache leak #59232

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

Andarist
Copy link
Contributor

@Andarist Andarist commented Jul 10, 2024

This PR fixes regression from #57837 that was discovered here: reduxjs/redux-toolkit#4500

Unfortunately, it also conflicts with a PR that landed later on: #58318 . With this fix tests/cases/compiler/mappedTypeRecursiveInference.ts runs into:

RangeError: Maximum call stack size exceeded

This is specifically caused by the newly introduced reportRelationError here: https://github.com/microsoft/TypeScript/pull/58318/files#diff-d9ab6589e714c71e657f601cf30ff51dfc607fc98419bf72e04f6b0fa92cc4b8R21710

This gets called by isPropertySymbolTypeRelated in an already deep stack created by this infinitely expanding mapped type. Then that type (or its slice) gets converted into a string eagerly within this function by getTypeNamesForErrorDisplay and this recurses quite a bit too.

I think that this isn't a new problem. Nothing is fundamentally wrong with the PR that added this reportRelationError. It's just that two big stacks call were accidentally "concatenated" in a way that they were not before.

I'm looking for some guidance as to what could be a potential fix for this. My current best idea is to lazily convert types to strings when actually needed/when handing over to the TS Server as a final diagnostic. This would affect a bunch of places though and I don't want to follow that rabbit hole before getting initial thoughts from the team about this.

cc @gabritto

@typescript-bot
Copy link
Collaborator

This PR doesn't have any linked issues. Please open an issue that references this PR. From there we can discuss and prioritise.

@typescript-bot typescript-bot added the For Uncommitted Bug PR for untriaged, rejected, closed or missing bug label Jul 10, 2024
@jakebailey
Copy link
Member

This looks good but the tests are out of date, it seems!

@gabritto
Copy link
Member

gabritto commented Jul 11, 2024

This looks good but the tests are out of date, it seems!

The fix is correct but causes test tests/cases/compiler/mappedTypeRecursiveInference.ts to stack overflow, which is the main problem.

@Andarist
Copy link
Contributor Author

Andarist commented Jul 11, 2024

I think that my theory about 2 deep stacks being stacked on top of each other here might be correct.

This reportRelationError tries to relate globalThis source to what I think is Deep<typeof globalThis> target (or some anonymous type derived from it). We get there by descending roughly through this property chain:

XMLHttpRequest > responseXML > body > offsetParent > shadowRoot > adoptedStyleSheets > (relateVariances) > CSSStyleSheet > ownerRule > parentRule > parentStyleSheet > ownerNode > (unionOrIntersectionRelatedTo) > Element > ownerDocument > defaultView > frames > self > globalThis

I captured this target and printed it after the stack was cleared and it succeeded. The result isn't pretty but it did "work":

typeToString(target)
'Deep<{ readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: { readonly globalThis: unknown; eval: unknown; parseInt: unknown; parseFloat: unknown; isNaN: unknown; isFinite: unknown; decodeURI: unknown; decodeURIComponent: unknown; encodeURI: unknown; encodeURIComponent: unknown; escape: unknown; unescape: unknown; NaN: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; Infinity: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; Symbol: { readonly iterator: any; readonly prototype: any; for: any; keyFor: any; readonly hasInstance: any; readonly isConcatSpreadable: any; readonly match: any; readonly replace: any; readonly search: any; readonly species: any; readonly split: any; readonly toPrimitive: any; readonly toStringTag: any; readonly unscopables: any; }; Object: { readonly prototype: any; getPrototypeOf: any; getOwnPropertyDescriptor: any; getOwnPropertyNames: any; create: any; defineProperty: any; defineProperties: any; seal: any; freeze: any; preventExtensions: any; isSealed: any; isFrozen: any; isExtensible: any; keys: any; assign: any; getOwnPropertySymbols: any; is: any; setPrototypeOf: any; }; Function: { readonly prototype: any; }; String: { readonly prototype: any; fromCharCode: any; fromCodePoint: any; raw: any; }; Boolean: { readonly prototype: any; }; Number: { readonly prototype: any; readonly MAX_VALUE: any; readonly MIN_VALUE: any; readonly NaN: any; readonly NEGATIVE_INFINITY: any; readonly POSITIVE_INFINITY: any; readonly EPSILON: any; isFinite: any; isInteger: any; isNaN: any; isSafeInteger: any; readonly MAX_SAFE_INTEGER: any; readonly MIN_SAFE_INTEGER: any; parseFloat: any; parseInt: any; }; Math: { readonly E: any; readonly LN10: any; readonly LN2: any; readonly LOG2E: any; readonly LOG10E: any; readonly PI: any; readonly SQRT1_2: any; readonly SQRT2: any; abs: any; acos: any; asin: any; atan: any; atan2: any; ceil: any; cos: any; exp: any; floor: any; log: any; max: any; min: any; pow: any; random: any; round: any; sin: any; sqrt: any; tan: any; clz32: any; imul: any; sign: any; log10: any; log2: any; log1p: any; expm1: any; cosh: any; sinh: any; tanh: any; acosh: any; asinh: any; atanh: any; hypot: any; trunc: any; fround: any; cbrt: any; readonly [Symbol.toStringTag]: any; }; Date: { readonly prototype: any; parse: any; UTC: any; now: any; }; RegExp: { readonly prototype: any; $1: any; $2: any; $3: any; $4: any; $5: any; $6: any; $7: any; $8: any; $9: any; input: any; $_: any; lastMatch: any; "$&": any; lastParen: any; "$+": any; leftContext: any; "$`": any; rightContext: any; "$\'": any; readonly [Symbol.species]: any; }; Error: { readonly prototype: any; }; EvalError: { readonly prototype: any; }; RangeError: { readonly prototype: any; }; ReferenceError: { readonly prototype: any; }; SyntaxError: { readonly prototype: any; }; TypeError: { readonly prototype: any; }; URIError: { readonly prototype: any; }; JSON: { parse: any; stringify: any; readonly [Symbol.toStringTag]: any; }; Array: { isArray: any; readonly prototype: any; from: any; of: any; readonly [Symbol.species]: any; }; Promise: { all: any; race: any; readonly prototype: any; reject: any; resolve: any; readonly [Symbol.species]: any; }; ArrayBuffer: { readonly prototype: any; isView: any; readonly [Symbol.species]: any; }; DataView: { readonly prototype: any; }; Int8Array: { readonly prototype: any; readonly BYTES_PER_ELEMENT: any; of: any; from: any; }; Uint8Array: { readonly prototype: any; readonly BYTES_PER_ELEMENT: any; of: any; from: any; }; Uint8ClampedArray: { readonly prototype: any; readonly BYTES_PER_ELEMENT: any; of: any; from: any; }; Int16Array: { readonly prototype: any; readonly BYTES_PER_ELEMENT: any; of: any; from: any; }; Uint16Array: { readonly prototype: any; readonly BYTES_PER_ELEMENT: any; of: any; from: any; }; Int32Array: { readonly prototype: any; readonly BYTES_PER_ELEMENT: any; of: any; from: any; }; Uint32Array: { readonly prototype: any; readonly BYTES_PER_ELEMENT: any; of: any; from: any; }; Float32Array: { readonly prototype: any; readonly BYTES_PER_ELEMENT: any; of: any; from: any; }; Float64Array: { readonly prototype: any; readonly BYTES_PER_ELEMENT: any; of: any; from: any; }; Intl: { Collator: { supportedLocalesOf: any; }; NumberFormat: { supportedLocalesOf: any; readonly prototype: any; }; DateTimeFormat: { supportedLocalesOf: any; readonly prototype: any; }; }; alert: unknown; blur: unknown; cancelIdleCallback: unknown; captureEvents: unknown; close: unknown; confirm: unknown; focus: unknown; getComputedStyle: unknown; getSelection: unknown; matchMedia: unknown; moveBy: unknown; moveTo: unknown; open: unknown; postMessage: unknown; print: unknown; prompt: unknown; releaseEvents: unknown; requestIdleCallback: unknown; resizeBy: unknown; resizeTo: unknown; scroll: unknown; scrollBy: unknown; scrollTo: unknown; stop: unknown; toString: unknown; dispatchEvent: unknown; cancelAnimationFrame: unknown; requestAnimationFrame: unknown; atob: unknown; btoa: unknown; clearInterval: unknown; clearTimeout: unknown; createImageBitmap: unknown; fetch: unknown; queueMicrotask: unknown; reportError: unknown; setInterval: unknown; setTimeout: unknown; structuredClone: unknown; addEventListener: unknown; removeEventListener: unknown; NodeFilter: { readonly FILTER_ACCEPT: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly FILTER_REJECT: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly FILTER_SKIP: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly SHOW_ALL: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly SHOW_ELEMENT: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly SHOW_ATTRIBUTE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly SHOW_TEXT: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly SHOW_CDATA_SECTION: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly SHOW_ENTITY_REFERENCE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly SHOW_ENTITY: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly SHOW_PROCESSING_INSTRUCTION: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly SHOW_COMMENT: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly SHOW_DOCUMENT: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly SHOW_DOCUMENT_TYPE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly SHOW_DOCUMENT_FRAGMENT: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly SHOW_NOTATION: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; }; AbortController: { prototype: { readonly signal: any; abort: any; }; }; AbortSignal: { prototype: { readonly aborted: any; onabort: any; readonly reason: any; throwIfAborted: any; addEventListener: any; removeEventListener: any; dispatchEvent: any; }; abort: unknown; any: unknown; timeout: unknown; }; AbstractRange: { prototype: { readonly collapsed: any; readonly endContainer: any; readonly endOffset: any; readonly startContainer: any; readonly startOffset: any; }; }; AnalyserNode: { prototype: { fftSize: any; readonly frequencyBinCount: any; maxDecibels: any; minDecibels: any; smoothingTimeConstant: any; getByteFrequencyData: any; getByteTimeDomainData: any; getFloatFrequencyData: any; getFloatTimeDomainData: any; channelCount: any; channelCountMode: any; channelInterpretation: any; readonly context: any; readonly numberOfInputs: any; readonly numberOfOutputs: any; connect: any; disconnect: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; }; Animation: { prototype: { currentTime: any; effect: any; readonly finished: any; id: any; oncancel: any; onfinish: any; onremove: any; readonly pending: any; readonly playState: any; playbackRate: any; readonly ready: any; readonly replaceState: any; startTime: any; timeline: any; cancel: any; commitStyles: any; finish: any; pause: any; persist: any; play: any; reverse: any; updatePlaybackRate: any; addEventListener: any; removeEventListener: any; dispatchEvent: any; }; }; AnimationEffect: { prototype: { getComputedTiming: any; getTiming: any; updateTiming: any; }; }; AnimationEvent: { prototype: { readonly animationName: any; readonly elapsedTime: any; readonly pseudoElement: any; readonly bubbles: any; cancelBubble: any; readonly cancelable: any; readonly composed: any; readonly currentTarget: any; readonly defaultPrevented: any; readonly eventPhase: any; readonly isTrusted: any; returnValue: any; readonly srcElement: any; readonly target: any; readonly timeStamp: any; readonly type: any; composedPath: any; initEvent: any; preventDefault: any; stopImmediatePropagation: any; stopPropagation: any; readonly NONE: any; readonly CAPTURING_PHASE: any; readonly AT_TARGET: any; readonly BUBBLING_PHASE: any; }; }; AnimationPlaybackEvent: { prototype: { readonly currentTime: any; readonly timelineTime: any; readonly bubbles: any; cancelBubble: any; readonly cancelable: any; readonly composed: any; readonly currentTarget: any; readonly defaultPrevented: any; readonly eventPhase: any; readonly isTrusted: any; returnValue: any; readonly srcElement: any; readonly target: any; readonly timeStamp: any; readonly type: any; composedPath: any; initEvent: any; preventDefault: any; stopImmediatePropagation: any; stopPropagation: any; readonly NONE: any; readonly CAPTURING_PHASE: any; readonly AT_TARGET: any; readonly BUBBLING_PHASE: any; }; }; AnimationTimeline: { prototype: { readonly currentTime: any; }; }; Attr: { prototype: { readonly localName: any; readonly name: any; readonly namespaceURI: any; readonly ownerDocument: any; readonly ownerElement: any; readonly prefix: any; readonly specified: any; value: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; }; AudioBuffer: { prototype: { readonly duration: any; readonly length: any; readonly numberOfChannels: any; readonly sampleRate: any; copyFromChannel: any; copyToChannel: any; getChannelData: any; }; }; AudioBufferSourceNode: { prototype: { buffer: any; readonly detune: any; loop: any; loopEnd: any; loopStart: any; readonly playbackRate: any; start: any; addEventListener: any; removeEventListener: any; onended: any; stop: any; channelCount: any; channelCountMode: any; channelInterpretation: any; readonly context: any; readonly numberOfInputs: any; readonly numberOfOutputs: any; connect: any; disconnect: any; dispatchEvent: any; }; }; AudioContext: { prototype: { readonly baseLatency: any; readonly outputLatency: any; close: any; createMediaElementSource: any; createMediaStreamDestination: any; createMediaStreamSource: any; getOutputTimestamp: any; resume: any; suspend: any; addEventListener: any; removeEventListener: any; readonly audioWorklet: any; readonly currentTime: any; readonly destination: any; readonly listener: any; onstatechange: any; readonly sampleRate: any; readonly state: any; createAnalyser: any; createBiquadFilter: any; createBuffer: any; createBufferSource: any; createChannelMerger: any; createChannelSplitter: any; createConstantSource: any; createConvolver: any; createDelay: any; createDynamicsCompressor: any; createGain: any; createIIRFilter: any; createOscillator: any; createPanner: any; createPeriodicWave: any; createScriptProcessor: any; createStereoPanner: any; createWaveShaper: any; decodeAudioData: any; dispatchEvent: any; }; }; AudioDestinationNode: { prototype: { readonly maxChannelCount: any; channelCount: any; channelCountMode: any; channelInterpretation: any; readonly context: any; readonly numberOfInputs: any; readonly numberOfOutputs: any; connect: any; disconnect: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; }; AudioListener: { prototype: { readonly forwardX: any; readonly forwardY: any; readonly forwardZ: any; readonly positionX: any; readonly positionY: any; readonly positionZ: any; readonly upX: any; readonly upY: any; readonly upZ: any; setOrientation: any; setPosition: any; }; }; AudioNode: { prototype: { channelCount: any; channelCountMode: any; channelInterpretation: any; readonly context: any; readonly numberOfInputs: any; readonly numberOfOutputs: any; connect: any; disconnect: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; }; AudioParam: { prototype: { automationRate: any; readonly defaultValue: any; readonly maxValue: any; readonly minValue: any; value: any; cancelAndHoldAtTime: any; cancelScheduledValues: any; exponentialRampToValueAtTime: any; linearRampToValueAtTime: any; setTargetAtTime: any; setValueAtTime: any; setValueCurveAtTime: any; }; }; AudioParamMap: { prototype: { forEach: any; }; }; AudioProcessingEvent: { prototype: { readonly inputBuffer: any; readonly outputBuffer: any; readonly playbackTime: any; readonly bubbles: any; cancelBubble: any; readonly cancelable: any; readonly composed: any; readonly currentTarget: any; readonly defaultPrevented: any; readonly eventPhase: any; readonly isTrusted: any; returnValue: any; readonly srcElement: any; readonly target: any; readonly timeStamp: any; readonly type: any; composedPath: any; initEvent: any; preventDefault: any; stopImmediatePropagation: any; stopPropagation: any; readonly NONE: any; readonly CAPTURING_PHASE: any; readonly AT_TARGET: any; readonly BUBBLING_PHASE: any; }; }; AudioScheduledSourceNode: { prototype: { onended: any; start: any; stop: any; addEventListener: any; removeEventListener: any; channelCount: any; channelCountMode: any; channelInterpretation: any; readonly context: any; readonly numberOfInputs: any; readonly numberOfOutputs: any; connect: any; disconnect: any; dispatchEvent: any; }; }; AudioWorklet: { prototype: { addModule: any; }; }; AudioWorkletNode: { prototype: { onprocessorerror: any; readonly parameters: any; readonly port: any; addEventListener: any; removeEventListener: any; channelCount: any; channelCountMode: any; channelInterpretation: any; readonly context: any; readonly numberOfInputs: any; readonly numberOfOutputs: any; connect: any; disconnect: any; dispatchEvent: any; }; }; AuthenticatorAssertionResponse: { prototype: { readonly authenticatorData: any; readonly signature: any; readonly userHandle: any; readonly clientDataJSON: any; }; }; AuthenticatorAttestationResponse: { prototype: { readonly attestationObject: any; getAuthenticatorData: any; getPublicKey: any; getPublicKeyAlgorithm: any; getTransports: any; readonly clientDataJSON: any; }; }; AuthenticatorResponse: { prototype: { readonly clientDataJSON: any; }; }; BarProp: { prototype: { readonly visible: any; }; }; BaseAudioContext: { prototype: { readonly audioWorklet: any; readonly currentTime: any; readonly destination: any; readonly listener: any; onstatechange: any; readonly sampleRate: any; readonly state: any; createAnalyser: any; createBiquadFilter: any; createBuffer: any; createBufferSource: any; createChannelMerger: any; createChannelSplitter: any; createConstantSource: any; createConvolver: any; createDelay: any; createDynamicsCompressor: any; createGain: any; createIIRFilter: any; createOscillator: any; createPanner: any; createPeriodicWave: any; createScriptProcessor: any; createStereoPanner: any; createWaveShaper: any; decodeAudioData: any; addEventListener: any; removeEventListener: any; dispatchEvent: any; }; }; BeforeUnloadEvent: { prototype: { returnValue: any; readonly bubbles: any; cancelBubble: any; readonly cancelable: any; readonly composed: any; readonly currentTarget: any; readonly defaultPrevented: any; readonly eventPhase: any; readonly isTrusted: any; readonly srcElement: any; readonly target: any; readonly timeStamp: any; readonly type: any; composedPath: any; initEvent: any; preventDefault: any; stopImmediatePropagation: any; stopPropagation: any; readonly NONE: any; readonly CAPTURING_PHASE: any; readonly AT_TARGET: any; readonly BUBBLING_PHASE: any; }; }; BiquadFilterNode: { prototype: { readonly Q: any; readonly detune: any; readonly frequency: any; readonly gain: any; type: any; getFrequencyResponse: any; channelCount: any; channelCountMode: any; channelInterpretation: any; readonly context: any; readonly numberOfInputs: any; readonly numberOfOutputs: any; connect: any; disconnect: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; }; Blob: { prototype: { readonly size: any; readonly type: any; arrayBuffer: any; slice: any; stream: any; text: any; }; }; BlobEvent: { prototype: { readonly data: any; readonly timecode: any; readonly bubbles: any; cancelBubble: any; readonly cancelable: any; readonly composed: any; readonly currentTarget: any; readonly defaultPrevented: any; readonly eventPhase: any; readonly isTrusted: any; returnValue: any; readonly srcElement: any; readonly target: any; readonly timeStamp: any; readonly type: any; composedPath: any; initEvent: any; preventDefault: any; stopImmediatePropagation: any; stopPropagation: any; readonly NONE: any; readonly CAPTURING_PHASE: any; readonly AT_TARGET: any; readonly BUBBLING_PHASE: any; }; }; BroadcastChannel: { prototype: { readonly name: any; onmessage: any; onmessageerror: any; close: any; postMessage: any; addEventListener: any; removeEventListener: any; dispatchEvent: any; }; }; ByteLengthQueuingStrategy: { prototype: { readonly highWaterMark: any; readonly size: any; }; }; CDATASection: { prototype: { readonly wholeText: any; splitText: any; data: any; readonly length: any; readonly ownerDocument: any; appendData: any; deleteData: any; insertData: any; replaceData: any; substringData: any; readonly baseURI: any; readonly childNodes: any; readonly firstChild: any; readonly isConnected: any; readonly lastChild: any; readonly nextSibling: any; readonly nodeName: any; readonly nodeType: any; nodeValue: any; readonly parentElement: any; readonly parentNode: any; readonly previousSibling: any; textContent: any; appendChild: any; cloneNode: any; compareDocumentPosition: any; contains: any; getRootNode: any; hasChildNodes: any; insertBefore: any; isDefaultNamespace: any; isEqualNode: any; isSameNode: any; lookupNamespaceURI: any; lookupPrefix: any; normalize: any; removeChild: any; replaceChild: any; readonly ELEMENT_NODE: any; readonly ATTRIBUTE_NODE: any; readonly TEXT_NODE: any; readonly CDATA_SECTION_NODE: any; readonly ENTITY_REFERENCE_NODE: any; readonly ENTITY_NODE: any; readonly PROCESSING_INSTRUCTION_NODE: any; readonly COMMENT_NODE: any; readonly DOCUMENT_NODE: any; readonly DOCUMENT_TYPE_NODE: any; readonly DOCUMENT_FRAGMENT_NODE: any; readonly NOTATION_NODE: any; readonly DOCUMENT_POSITION_DISCONNECTED: any; readonly DOCUMENT_POSITION_PRECEDING: any; readonly DOCUMENT_POSITION_FOLLOWING: any; readonly DOCUMENT_POSITION_CONTAINS: any; readonly DOCUMENT_POSITION_CONTAINED_BY: any; readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; after: any; before: any; remove: any; replaceWith: any; readonly nextElementSibling: any; readonly previousElementSibling: any; readonly assignedSlot: any; }; }; CSSAnimation: { prototype: { readonly animationName: any; addEventListener: any; removeEventListener: any; currentTime: any; effect: any; readonly finished: any; id: any; oncancel: any; onfinish: any; onremove: any; readonly pending: any; readonly playState: any; playbackRate: any; readonly ready: any; readonly replaceState: any; startTime: any; timeline: any; cancel: any; commitStyles: any; finish: any; pause: any; persist: any; play: any; reverse: any; updatePlaybackRate: any; dispatchEvent: any; }; }; CSSConditionRule: { prototype: { readonly conditionText: any; readonly cssRules: any; deleteRule: any; insertRule: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSContainerRule: { prototype: { readonly containerName: any; readonly containerQuery: any; readonly conditionText: any; readonly cssRules: any; deleteRule: any; insertRule: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSCounterStyleRule: { prototype: { additiveSymbols: any; fallback: any; name: any; negative: any; pad: any; prefix: any; range: any; speakAs: any; suffix: any; symbols: any; system: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSFontFaceRule: { prototype: { readonly style: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSFontFeatureValuesRule: { prototype: { fontFamily: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSFontPaletteValuesRule: { prototype: { readonly basePalette: any; readonly fontFamily: any; readonly name: any; readonly overrideColors: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSGroupingRule: { prototype: { readonly cssRules: any; deleteRule: any; insertRule: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSImageValue: { prototype: { toString: any; }; }; CSSImportRule: { prototype: { readonly href: any; readonly layerName: any; readonly media: any; readonly styleSheet: any; readonly supportsText: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSKeyframeRule: { prototype: { keyText: any; readonly style: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSKeyframesRule: { prototype: { readonly cssRules: any; readonly length: any; name: any; appendRule: any; deleteRule: any; findRule: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSKeywordValue: { prototype: { value: any; toString: any; }; }; CSSLayerBlockRule: { prototype: { readonly name: any; readonly cssRules: any; deleteRule: any; insertRule: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSLayerStatementRule: { prototype: { readonly nameList: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSMathClamp: { prototype: { readonly lower: any; readonly upper: any; readonly value: any; readonly operator: any; add: any; div: any; equals: any; max: any; min: any; mul: any; sub: any; to: any; toSum: any; type: any; toString: any; }; }; CSSMathInvert: { prototype: { readonly value: any; readonly operator: any; add: any; div: any; equals: any; max: any; min: any; mul: any; sub: any; to: any; toSum: any; type: any; toString: any; }; }; CSSMathMax: { prototype: { readonly values: any; readonly operator: any; add: any; div: any; equals: any; max: any; min: any; mul: any; sub: any; to: any; toSum: any; type: any; toString: any; }; }; CSSMathMin: { prototype: { readonly values: any; readonly operator: any; add: any; div: any; equals: any; max: any; min: any; mul: any; sub: any; to: any; toSum: any; type: any; toString: any; }; }; CSSMathNegate: { prototype: { readonly value: any; readonly operator: any; add: any; div: any; equals: any; max: any; min: any; mul: any; sub: any; to: any; toSum: any; type: any; toString: any; }; }; CSSMathProduct: { prototype: { readonly values: any; readonly operator: any; add: any; div: any; equals: any; max: any; min: any; mul: any; sub: any; to: any; toSum: any; type: any; toString: any; }; }; CSSMathSum: { prototype: { readonly values: any; readonly operator: any; add: any; div: any; equals: any; max: any; min: any; mul: any; sub: any; to: any; toSum: any; type: any; toString: any; }; }; CSSMathValue: { prototype: { readonly operator: any; add: any; div: any; equals: any; max: any; min: any; mul: any; sub: any; to: any; toSum: any; type: any; toString: any; }; }; CSSMatrixComponent: { prototype: { matrix: any; is2D: any; toMatrix: any; toString: any; }; }; CSSMediaRule: { prototype: { readonly media: any; readonly conditionText: any; readonly cssRules: any; deleteRule: any; insertRule: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSNamespaceRule: { prototype: { readonly namespaceURI: any; readonly prefix: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSNumericArray: { prototype: { readonly length: any; forEach: any; }; }; CSSNumericValue: { prototype: { add: any; div: any; equals: any; max: any; min: any; mul: any; sub: any; to: any; toSum: any; type: any; toString: any; }; parse: unknown; }; CSSPageRule: { prototype: { selectorText: any; readonly style: any; readonly cssRules: any; deleteRule: any; insertRule: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSPerspective: { prototype: { length: any; is2D: any; toMatrix: any; toString: any; }; }; CSSPropertyRule: { prototype: { readonly inherits: any; readonly initialValue: any; readonly name: any; readonly syntax: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSRotate: { prototype: { angle: any; x: any; y: any; z: any; is2D: any; toMatrix: any; toString: any; }; }; CSSRule: { prototype: { cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; readonly STYLE_RULE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly CHARSET_RULE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly IMPORT_RULE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly MEDIA_RULE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly FONT_FACE_RULE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly PAGE_RULE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly NAMESPACE_RULE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly KEYFRAMES_RULE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly KEYFRAME_RULE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly SUPPORTS_RULE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly COUNTER_STYLE_RULE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly FONT_FEATURE_VALUES_RULE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; }; CSSRuleList: { prototype: { readonly length: any; item: any; }; }; CSSScale: { prototype: { x: any; y: any; z: any; is2D: any; toMatrix: any; toString: any; }; }; CSSScopeRule: { prototype: { readonly end: any; readonly start: any; readonly cssRules: any; deleteRule: any; insertRule: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSSkew: { prototype: { ax: any; ay: any; is2D: any; toMatrix: any; toString: any; }; }; CSSSkewX: { prototype: { ax: any; is2D: any; toMatrix: any; toString: any; }; }; CSSSkewY: { prototype: { ay: any; is2D: any; toMatrix: any; toString: any; }; }; CSSStartingStyleRule: { prototype: { readonly cssRules: any; deleteRule: any; insertRule: any; cssText: any; readonly parentRule: any; readonly parentStyleSheet: any; readonly type: any; readonly STYLE_RULE: any; readonly CHARSET_RULE: any; readonly IMPORT_RULE: any; readonly MEDIA_RULE: any; readonly FONT_FACE_RULE: any; readonly PAGE_RULE: any; readonly NAMESPACE_RULE: any; readonly KEYFRAMES_RULE: any; readonly KEYFRAME_RULE: any; readonly SUPPORTS_RULE: any; readonly COUNTER_STYLE_RULE: any; readonly FONT_FEATURE_VALUES_RULE: any; }; }; CSSStyleDeclaration: { prototype: { accentColor: any; alignContent: any; alignItems: any; alignSelf: any; alignmentBaseline: any; all: any; animation: any; animationComposition: any; animationDelay: any; animationDirection: any; animationDuration: any; animationFillMode: any; animationIterationCount: any; animationName: any; animationPlayState: any; animationTimingFunction: any; appearance: any; aspectRatio: any; backdropFilter: any; backfaceVisibility: any; background: any; backgroundAttachment: any; backgroundBlendMode: any; backgroundClip: any; backgroundColor: any; backgroundImage: any; backgroundOrigin: any; backgroundPosition: any; backgroundPositionX: any; backgroundPositionY: any; backgroundRepeat: any; backgroundSize: any; baselineShift: any; baselineSource: any; blockSize: any; border: any; borderBlock: any; borderBlockColor: any; borderBlockEnd: any; borderBlockEndColor: any; borderBlockEndStyle: any; borderBlockEndWidth: any; borderBlockStart: any; borderBlockStartColor: any; borderBlockStartStyle: any; borderBlockStartWidth: any; borderBlockStyle: any; borderBlockWidth: any; borderBottom: any; borderBottomColor: any; borderBottomLeftRadius: any; borderBottomRightRadius: any; borderBottomStyle: any; borderBottomWidth: any; borderCollapse: any; borderColor: any; borderEndEndRadius: any; borderEndStartRadius: any; borderImage: any; borderImageOutset: any; borderImageRepeat: any; borderImageSlice: any; borderImageSource: any; borderImageWidth: any; borderInline: any; borderInlineColor: any; borderInlineEnd: any; borderInlineEndColor: any; borderInlineEndStyle: any; borderInlineEndWidth: any; borderInlineStart: any; borderInlineStartColor: any; borderInlineStartStyle: any; borderInlineStartWidth: any; borderInlineStyle: any; borderInlineWidth: any; borderLeft: any; borderLeftColor: any; borderLeftStyle: any; borderLeftWidth: any; borderRadius: any; borderRight: any; borderRightColor: any; borderRightStyle: any; borderRightWidth: any; borderSpacing: any; borderStartEndRadius: any; borderStartStartRadius: any; borderStyle: any; borderTop: any; borderTopColor: any; borderTopLeftRadius: any; borderTopRightRadius: any; borderTopStyle: any; borderTopWidth: any; borderWidth: any; bottom: any; boxShadow: any; boxSizing: any; breakAfter: any; breakBefore: any; breakInside: any; captionSide: any; caretColor: any; clear: any; clip: any; clipPath: any; clipRule: any; color: any; colorInterpolation: any; colorInterpolationFilters: any; colorScheme: any; columnCount: any; columnFill: any; columnGap: any; columnRule: any; columnRuleColor: any; columnRuleStyle: any; columnRuleWidth: any; columnSpan: any; columnWidth: any; columns: any; contain: any; containIntrinsicBlockSize: any; containIntrinsicHeight: any; containIntrinsicInlineSize: any; containIntrinsicSize: any; containIntrinsicWidth: any; container: any; containerName: any; containerType: any; content: any; contentVisibility: any; counterIncrement: any; counterReset: any; counterSet: any; cssFloat: any; cssText: any; cursor: any; cx: any; cy: any; d: any; direction: any; display: any; dominantBaseline: any; emptyCells: any; fill: any; fillOpacity: any; fillRule: any; filter: any; flex: any; flexBasis: any; flexDirection: any; flexFlow: any; flexGrow: any; flexShrink: any; flexWrap: any; float: any; floodColor: any; floodOpacity: any; font: any; fontFamily: any; fontFeatureSettings: any; fontKerning: any; fontOpticalSizing: any; fontPalette: any; fontSize: any; fontSizeAdjust: any; fontStretch: any; fontStyle: any; fontSynthesis: any; fontSynthesisSmallCaps: any; fontSynthesisStyle: any; fontSynthesisWeight: any; fontVariant: any; fontVariantAlternates: any; fontVariantCaps: any; fontVariantEastAsian: any; fontVariantLigatures: any; fontVariantNumeric: any; fontVariantPosition: any; fontVariationSettings: any; fontWeight: any; forcedColorAdjust: any; gap: any; grid: any; gridArea: any; gridAutoColumns: any; gridAutoFlow: any; gridAutoRows: any; gridColumn: any; gridColumnEnd: any; gridColumnGap: any; gridColumnStart: any; gridGap: any; gridRow: any; gridRowEnd: any; gridRowGap: any; gridRowStart: any; gridTemplate: any; gridTemplateAreas: any; gridTemplateColumns: any; gridTemplateRows: any; height: any; hyphenateCharacter: any; hyphens: any; imageOrientation: any; imageRendering: any; inlineSize: any; inset: any; insetBlock: any; insetBlockEnd: any; insetBlockStart: any; insetInline: any; insetInlineEnd: any; insetInl…donly composed: any; readonly currentTarget: any; readonly defaultPrevented: any; readonly eventPhase: any; readonly isTrusted: any; returnValue: any; readonly srcElement: any; readonly target: any; readonly timeStamp: any; readonly type: any; composedPath: any; initEvent: any; preventDefault: any; stopImmediatePropagation: any; stopPropagation: any; readonly NONE: any; readonly CAPTURING_PHASE: any; readonly AT_TARGET: any; readonly BUBBLING_PHASE: any; }; }; TransformStream: { prototype: { readonly readable: any; readonly writable: any; }; }; TransformStreamDefaultController: { prototype: { readonly desiredSize: any; enqueue: any; error: any; terminate: any; }; }; TransitionEvent: { prototype: { readonly elapsedTime: any; readonly propertyName: any; readonly pseudoElement: any; readonly bubbles: any; cancelBubble: any; readonly cancelable: any; readonly composed: any; readonly currentTarget: any; readonly defaultPrevented: any; readonly eventPhase: any; readonly isTrusted: any; returnValue: any; readonly srcElement: any; readonly target: any; readonly timeStamp: any; readonly type: any; composedPath: any; initEvent: any; preventDefault: any; stopImmediatePropagation: any; stopPropagation: any; readonly NONE: any; readonly CAPTURING_PHASE: any; readonly AT_TARGET: any; readonly BUBBLING_PHASE: any; }; }; TreeWalker: { prototype: { currentNode: any; readonly filter: any; readonly root: any; readonly whatToShow: any; firstChild: any; lastChild: any; nextNode: any; nextSibling: any; parentNode: any; previousNode: any; previousSibling: any; }; }; UIEvent: { prototype: { readonly detail: any; readonly view: any; readonly which: any; initUIEvent: any; readonly bubbles: any; cancelBubble: any; readonly cancelable: any; readonly composed: any; readonly currentTarget: any; readonly defaultPrevented: any; readonly eventPhase: any; readonly isTrusted: any; returnValue: any; readonly srcElement: any; readonly target: any; readonly timeStamp: any; readonly type: any; composedPath: any; initEvent: any; preventDefault: any; stopImmediatePropagation: any; stopPropagation: any; readonly NONE: any; readonly CAPTURING_PHASE: any; readonly AT_TARGET: any; readonly BUBBLING_PHASE: any; }; }; URL: { prototype: { hash: any; host: any; hostname: any; href: any; toString: any; readonly origin: any; password: any; pathname: any; port: any; protocol: any; search: any; readonly searchParams: any; username: any; toJSON: any; }; canParse: unknown; createObjectURL: unknown; revokeObjectURL: unknown; }; webkitURL: { prototype: { hash: any; host: any; hostname: any; href: any; toString: any; readonly origin: any; password: any; pathname: any; port: any; protocol: any; search: any; readonly searchParams: any; username: any; toJSON: any; }; canParse: unknown; createObjectURL: unknown; revokeObjectURL: unknown; }; URLSearchParams: { prototype: { readonly size: any; append: any; delete: any; get: any; getAll: any; has: any; set: any; sort: any; toString: any; forEach: any; }; }; UserActivation: { prototype: { readonly hasBeenActive: any; readonly isActive: any; }; }; VTTCue: { prototype: { align: any; line: any; lineAlign: any; position: any; positionAlign: any; region: any; size: any; snapToLines: any; text: any; vertical: any; getCueAsHTML: any; addEventListener: any; removeEventListener: any; endTime: any; id: any; onenter: any; onexit: any; pauseOnExit: any; startTime: any; readonly track: any; dispatchEvent: any; }; }; VTTRegion: { prototype: { id: any; lines: any; regionAnchorX: any; regionAnchorY: any; scroll: any; viewportAnchorX: any; viewportAnchorY: any; width: any; }; }; ValidityState: { prototype: { readonly badInput: any; readonly customError: any; readonly patternMismatch: any; readonly rangeOverflow: any; readonly rangeUnderflow: any; readonly stepMismatch: any; readonly tooLong: any; readonly tooShort: any; readonly typeMismatch: any; readonly valid: any; readonly valueMissing: any; }; }; VideoColorSpace: { prototype: { readonly fullRange: any; readonly matrix: any; readonly primaries: any; readonly transfer: any; toJSON: any; }; }; VideoDecoder: { prototype: { readonly decodeQueueSize: any; ondequeue: any; readonly state: any; close: any; configure: any; decode: any; flush: any; reset: any; addEventListener: any; removeEventListener: any; dispatchEvent: any; }; isConfigSupported: unknown; }; VideoEncoder: { prototype: { readonly encodeQueueSize: any; ondequeue: any; readonly state: any; close: any; configure: any; encode: any; flush: any; reset: any; addEventListener: any; removeEventListener: any; dispatchEvent: any; }; isConfigSupported: unknown; }; VideoFrame: { prototype: { readonly codedHeight: any; readonly codedRect: any; readonly codedWidth: any; readonly colorSpace: any; readonly displayHeight: any; readonly displayWidth: any; readonly duration: any; readonly format: any; readonly timestamp: any; readonly visibleRect: any; allocationSize: any; clone: any; close: any; copyTo: any; }; }; VideoPlaybackQuality: { prototype: { readonly corruptedVideoFrames: any; readonly creationTime: any; readonly droppedVideoFrames: any; readonly totalVideoFrames: any; }; }; VisualViewport: { prototype: { readonly height: any; readonly offsetLeft: any; readonly offsetTop: any; onresize: any; onscroll: any; readonly pageLeft: any; readonly pageTop: any; readonly scale: any; readonly width: any; addEventListener: any; removeEventListener: any; dispatchEvent: any; }; }; WakeLock: { prototype: { request: any; }; }; WakeLockSentinel: { prototype: { onrelease: any; readonly released: any; readonly type: any; release: any; addEventListener: any; removeEventListener: any; dispatchEvent: any; }; }; WaveShaperNode: { prototype: { curve: any; oversample: any; channelCount: any; channelCountMode: any; channelInterpretation: any; readonly context: any; readonly numberOfInputs: any; readonly numberOfOutputs: any; connect: any; disconnect: any; addEventListener: any; dispatchEvent: any; removeEventListener: any; }; }; WebGL2RenderingContext: { prototype: { beginQuery: any; beginTransformFeedback: any; bindBufferBase: any; bindBufferRange: any; bindSampler: any; bindTransformFeedback: any; bindVertexArray: any; blitFramebuffer: any; clearBufferfi: any; clearBufferfv: any; clearBufferiv: any; clearBufferuiv: any; clientWaitSync: any; compressedTexImage3D: any; compressedTexSubImage3D: any; copyBufferSubData: any; copyTexSubImage3D: any; createQuery: any; createSampler: any; createTransformFeedback: any; createVertexArray: any; deleteQuery: any; deleteSampler: any; deleteSync: any; deleteTransformFeedback: any; deleteVertexArray: any; drawArraysInstanced: any; drawBuffers: any; drawElementsInstanced: any; drawRangeElements: any; endQuery: any; endTransformFeedback: any; fenceSync: any; framebufferTextureLayer: any; getActiveUniformBlockName: any; getActiveUniformBlockParameter: any; getActiveUniforms: any; getBufferSubData: any; getFragDataLocation: any; getIndexedParameter: any; getInternalformatParameter: any; getQuery: any; getQueryParameter: any; getSamplerParameter: any; getSyncParameter: any; getTransformFeedbackVarying: any; getUniformBlockIndex: any; getUniformIndices: any; invalidateFramebuffer: any; invalidateSubFramebuffer: any; isQuery: any; isSampler: any; isSync: any; isTransformFeedback: any; isVertexArray: any; pauseTransformFeedback: any; readBuffer: any; renderbufferStorageMultisample: any; resumeTransformFeedback: any; samplerParameterf: any; samplerParameteri: any; texImage3D: any; texStorage2D: any; texStorage3D: any; texSubImage3D: any; transformFeedbackVaryings: any; uniform1ui: any; uniform1uiv: any; uniform2ui: any; uniform2uiv: any; uniform3ui: any; uniform3uiv: any; uniform4ui: any; uniform4uiv: any; uniformBlockBinding: any; uniformMatrix2x3fv: any; uniformMatrix2x4fv: any; uniformMatrix3x2fv: any; uniformMatrix3x4fv: any; uniformMatrix4x2fv: any; uniformMatrix4x3fv: any; vertexAttribDivisor: any; vertexAttribI4i: any; vertexAttribI4iv: any; vertexAttribI4ui: any; vertexAttribI4uiv: any; vertexAttribIPointer: any; waitSync: any; readonly READ_BUFFER: any; readonly UNPACK_ROW_LENGTH: any; readonly UNPACK_SKIP_ROWS: any; readonly UNPACK_SKIP_PIXELS: any; readonly PACK_ROW_LENGTH: any; readonly PACK_SKIP_ROWS: any; readonly PACK_SKIP_PIXELS: any; readonly COLOR: any; readonly DEPTH: any; readonly STENCIL: any; readonly RED: any; readonly RGB8: any; readonly RGB10_A2: any; readonly TEXTURE_BINDING_3D: any; readonly UNPACK_SKIP_IMAGES: any; readonly UNPACK_IMAGE_HEIGHT: any; readonly TEXTURE_3D: any; readonly TEXTURE_WRAP_R: any; readonly MAX_3D_TEXTURE_SIZE: any; readonly UNSIGNED_INT_2_10_10_10_REV: any; readonly MAX_ELEMENTS_VERTICES: any; readonly MAX_ELEMENTS_INDICES: any; readonly TEXTURE_MIN_LOD: any; readonly TEXTURE_MAX_LOD: any; readonly TEXTURE_BASE_LEVEL: any; readonly TEXTURE_MAX_LEVEL: any; readonly MIN: any; readonly MAX: any; readonly DEPTH_COMPONENT24: any; readonly MAX_TEXTURE_LOD_BIAS: any; readonly TEXTURE_COMPARE_MODE: any; readonly TEXTURE_COMPARE_FUNC: any; readonly CURRENT_QUERY: any; readonly QUERY_RESULT: any; readonly QUERY_RESULT_AVAILABLE: any; readonly STREAM_READ: any; readonly STREAM_COPY: any; readonly STATIC_READ: any; readonly STATIC_COPY: any; readonly DYNAMIC_READ: any; readonly DYNAMIC_COPY: any; readonly MAX_DRAW_BUFFERS: any; readonly DRAW_BUFFER0: any; readonly DRAW_BUFFER1: any; readonly DRAW_BUFFER2: any; readonly DRAW_BUFFER3: any; readonly DRAW_BUFFER4: any; readonly DRAW_BUFFER5: any; readonly DRAW_BUFFER6: any; readonly DRAW_BUFFER7: any; readonly DRAW_BUFFER8: any; readonly DRAW_BUFFER9: any; readonly DRAW_BUFFER10: any; readonly DRAW_BUFFER11: any; readonly DRAW_BUFFER12: any; readonly DRAW_BUFFER13: any; readonly DRAW_BUFFER14: any; readonly DRAW_BUFFER15: any; readonly MAX_FRAGMENT_UNIFORM_COMPONENTS: any; readonly MAX_VERTEX_UNIFORM_COMPONENTS: any; readonly SAMPLER_3D: any; readonly SAMPLER_2D_SHADOW: any; readonly FRAGMENT_SHADER_DERIVATIVE_HINT: any; readonly PIXEL_PACK_BUFFER: any; readonly PIXEL_UNPACK_BUFFER: any; readonly PIXEL_PACK_BUFFER_BINDING: any; readonly PIXEL_UNPACK_BUFFER_BINDING: any; readonly FLOAT_MAT2x3: any; readonly FLOAT_MAT2x4: any; readonly FLOAT_MAT3x2: any; readonly FLOAT_MAT3x4: any; readonly FLOAT_MAT4x2: any; readonly FLOAT_MAT4x3: any; readonly SRGB: any; readonly SRGB8: any; readonly SRGB8_ALPHA8: any; readonly COMPARE_REF_TO_TEXTURE: any; readonly RGBA32F: any; readonly RGB32F: any; readonly RGBA16F: any; readonly RGB16F: any; readonly VERTEX_ATTRIB_ARRAY_INTEGER: any; readonly MAX_ARRAY_TEXTURE_LAYERS: any; readonly MIN_PROGRAM_TEXEL_OFFSET: any; readonly MAX_PROGRAM_TEXEL_OFFSET: any; readonly MAX_VARYING_COMPONENTS: any; readonly TEXTURE_2D_ARRAY: any; readonly TEXTURE_BINDING_2D_ARRAY: any; readonly R11F_G11F_B10F: any; readonly UNSIGNED_INT_10F_11F_11F_REV: any; readonly RGB9_E5: any; readonly UNSIGNED_INT_5_9_9_9_REV: any; readonly TRANSFORM_FEEDBACK_BUFFER_MODE: any; readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: any; readonly TRANSFORM_FEEDBACK_VARYINGS: any; readonly TRANSFORM_FEEDBACK_BUFFER_START: any; readonly TRANSFORM_FEEDBACK_BUFFER_SIZE: any; readonly TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: any; readonly RASTERIZER_DISCARD: any; readonly MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: any; readonly MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: any; readonly INTERLEAVED_ATTRIBS: any; readonly SEPARATE_ATTRIBS: any; readonly TRANSFORM_FEEDBACK_BUFFER: any; readonly TRANSFORM_FEEDBACK_BUFFER_BINDING: any; readonly RGBA32UI: any; readonly RGB32UI: any; readonly RGBA16UI: any; readonly RGB16UI: any; readonly RGBA8UI: any; readonly RGB8UI: any; readonly RGBA32I: any; readonly RGB32I: any; readonly RGBA16I: any; readonly RGB16I: any; readonly RGBA8I: any; readonly RGB8I: any; readonly RED_INTEGER: any; readonly RGB_INTEGER: any; readonly RGBA_INTEGER: any; readonly SAMPLER_2D_ARRAY: any; readonly SAMPLER_2D_ARRAY_SHADOW: any; readonly SAMPLER_CUBE_SHADOW: any; readonly UNSIGNED_INT_VEC2: any; readonly UNSIGNED_INT_VEC3: any; readonly UNSIGNED_INT_VEC4: any; readonly INT_SAMPLER_2D: any; readonly INT_SAMPLER_3D: any; readonly INT_SAMPLER_CUBE: any; readonly INT_SAMPLER_2D_ARRAY: any; readonly UNSIGNED_INT_SAMPLER_2D: any; readonly UNSIGNED_INT_SAMPLER_3D: any; readonly UNSIGNED_INT_SAMPLER_CUBE: any; readonly UNSIGNED_INT_SAMPLER_2D_ARRAY: any; readonly DEPTH_COMPONENT32F: any; readonly DEPTH32F_STENCIL8: any; readonly FLOAT_32_UNSIGNED_INT_24_8_REV: any; readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: any; readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: any; readonly FRAMEBUFFER_ATTACHMENT_RED_SIZE: any; readonly FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: any; readonly FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: any; readonly FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: any; readonly FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: any; readonly FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: any; readonly FRAMEBUFFER_DEFAULT: any; readonly UNSIGNED_INT_24_8: any; readonly DEPTH24_STENCIL8: any; readonly UNSIGNED_NORMALIZED: any; readonly DRAW_FRAMEBUFFER_BINDING: any; readonly READ_FRAMEBUFFER: any; readonly DRAW_FRAMEBUFFER: any; readonly READ_FRAMEBUFFER_BINDING: any; readonly RENDERBUFFER_SAMPLES: any; readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: any; readonly MAX_COLOR_ATTACHMENTS: any; readonly COLOR_ATTACHMENT1: any; readonly COLOR_ATTACHMENT2: any; readonly COLOR_ATTACHMENT3: any; readonly COLOR_ATTACHMENT4: any; readonly COLOR_ATTACHMENT5: any; readonly COLOR_ATTACHMENT6: any; readonly COLOR_ATTACHMENT7: any; readonly COLOR_ATTACHMENT8: any; readonly COLOR_ATTACHMENT9: any; readonly COLOR_ATTACHMENT10: any; readonly COLOR_ATTACHMENT11: any; readonly COLOR_ATTACHMENT12: any; readonly COLOR_ATTACHMENT13: any; readonly COLOR_ATTACHMENT14: any; readonly COLOR_ATTACHMENT15: any; readonly FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: any; readonly MAX_SAMPLES: any; readonly HALF_FLOAT: any; readonly RG: any; readonly RG_INTEGER: any; readonly R8: any; readonly RG8: any; readonly R16F: any; readonly R32F: any; readonly RG16F: any; readonly RG32F: any; readonly R8I: any; readonly R8UI: any; readonly R16I: any; readonly R16UI: any; readonly R32I: any; readonly R32UI: any; readonly RG8I: any; readonly RG8UI: any; readonly RG16I: any; readonly RG16UI: any; readonly RG32I: any; readonly RG32UI: any; readonly VERTEX_ARRAY_BINDING: any; readonly R8_SNORM: any; readonly RG8_SNORM: any; readonly RGB8_SNORM: any; readonly RGBA8_SNORM: any; readonly SIGNED_NORMALIZED: any; readonly COPY_READ_BUFFER: any; readonly COPY_WRITE_BUFFER: any; readonly COPY_READ_BUFFER_BINDING: any; readonly COPY_WRITE_BUFFER_BINDING: any; readonly UNIFORM_BUFFER: any; readonly UNIFORM_BUFFER_BINDING: any; readonly UNIFORM_BUFFER_START: any; readonly UNIFORM_BUFFER_SIZE: any; readonly MAX_VERTEX_UNIFORM_BLOCKS: any; readonly MAX_FRAGMENT_UNIFORM_BLOCKS: any; readonly MAX_COMBINED_UNIFORM_BLOCKS: any; readonly MAX_UNIFORM_BUFFER_BINDINGS: any; readonly MAX_UNIFORM_BLOCK_SIZE: any; readonly MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: any; readonly MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: any; readonly UNIFORM_BUFFER_OFFSET_ALIGNMENT: any; readonly ACTIVE_UNIFORM_BLOCKS: any; readonly UNIFORM_TYPE: any; readonly UNIFORM_SIZE: any; readonly UNIFORM_BLOCK_INDEX: any; readonly UNIFORM_OFFSET: any; readonly UNIFORM_ARRAY_STRIDE: any; readonly UNIFORM_MATRIX_STRIDE: any; readonly UNIFORM_IS_ROW_MAJOR: any; readonly UNIFORM_BLOCK_BINDING: any; readonly UNIFORM_BLOCK_DATA_SIZE: any; readonly UNIFORM_BLOCK_ACTIVE_UNIFORMS: any; readonly UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: any; readonly UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: any; readonly UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: any; readonly INVALID_INDEX: any; readonly MAX_VERTEX_OUTPUT_COMPONENTS: any; readonly MAX_FRAGMENT_INPUT_COMPONENTS: any; readonly MAX_SERVER_WAIT_TIMEOUT: any; readonly OBJECT_TYPE: any; readonly SYNC_CONDITION: any; readonly SYNC_STATUS: any; readonly SYNC_FLAGS: any; readonly SYNC_FENCE: any; readonly SYNC_GPU_COMMANDS_COMPLETE: any; readonly UNSIGNALED: any; readonly SIGNALED: any; readonly ALREADY_SIGNALED: any; readonly TIMEOUT_EXPIRED: any; readonly CONDITION_SATISFIED: any; readonly WAIT_FAILED: any; readonly SYNC_FLUSH_COMMANDS_BIT: any; readonly VERTEX_ATTRIB_ARRAY_DIVISOR: any; readonly ANY_SAMPLES_PASSED: any; readonly ANY_SAMPLES_PASSED_CONSERVATIVE: any; readonly SAMPLER_BINDING: any; readonly RGB10_A2UI: any; readonly INT_2_10_10_10_REV: any; readonly TRANSFORM_FEEDBACK: any; readonly TRANSFORM_FEEDBACK_PAUSED: any; readonly TRANSFORM_FEEDBACK_ACTIVE: any; readonly TRANSFORM_FEEDBACK_BINDING: any; readonly TEXTURE_IMMUTABLE_FORMAT: any; readonly MAX_ELEMENT_INDEX: any; readonly TEXTURE_IMMUTABLE_LEVELS: any; readonly TIMEOUT_IGNORED: any; readonly MAX_CLIENT_WAIT_TIMEOUT_WEBGL: any; bufferData: any; bufferSubData: any; compressedTexImage2D: any; compressedTexSubImage2D: any; readPixels: any; texImage2D: any; texSubImage2D: any; uniform1fv: any; uniform1iv: any; uniform2fv: any; uniform2iv: any; uniform3fv: any; uniform3iv: any; uniform4fv: any; uniform4iv: any; uniformMatrix2fv: any; uniformMatrix3fv: any; uniformMatrix4fv: any; readonly canvas: any; drawingBufferColorSpace: any; readonly drawingBufferHeight: any; readonly drawingBufferWidth: any; activeTexture: any; attachShader: any; bindAttribLocation: any; bindBuffer: any; bindFramebuffer: any; bindRenderbuffer: any; bindTexture: any; blendColor: any; blendEquation: any; blendEquationSeparate: any; blendFunc: any; blendFuncSeparate: any; checkFramebufferStatus: any; clear: any; clearColor: any; clearDepth: any; clearStencil: any; colorMask: any; compileShader: any; copyTexImage2D: any; copyTexSubImage2D: any; createBuffer: any; createFramebuffer: any; createProgram: any; createRenderbuffer: any; createShader: any; createTexture: any; cullFace: any; deleteBuffer: any; deleteFramebuffer: any; deleteProgram: any; deleteRenderbuffer: any; deleteShader: any; deleteTexture: any; depthFunc: any; depthMask: any; depthRange: any; detachShader: any; disable: any; disableVertexAttribArray: any; drawArrays: any; drawElements: any; enable: any; enableVertexAttribArray: any; finish: any; flush: any; framebufferRenderbuffer: any; framebufferTexture2D: any; frontFace: any; generateMipmap: any; getActiveAttrib: any; getActiveUniform: any; getAttachedShaders: any; getAttribLocation: any; getBufferParameter: any; getContextAttributes: any; getError: any; getExtension: any; getFramebufferAttachmentParameter: any; getParameter: any; getProgramInfoLog: any; getProgramParameter: any; getRenderbufferParameter: any; getShaderInfoLog: any; getShaderParameter: any; getShaderPrecisionFormat: any; getShaderSource: any; getSupportedExtensions: any; getTexParameter: any; getUniform: any; getUniformLocation: any; getVertexAttrib: any; getVertexAttribOffset: any; hint: any; isBuffer: any; isContextLost: any; isEnabled: any; isFramebuffer: any; isProgram: any; isRenderbuffer: any; isShader: any; isTexture: any; lineWidth: any; linkProgram: any; pixelStorei: any; polygonOffset: any; renderbufferStorage: any; sampleCoverage: any; scissor: any; shaderSource: any; stencilFunc: any; stencilFuncSeparate: any; stencilMask: any; stencilMaskSeparate: any; stencilOp: any; stencilOpSeparate: any; texParameterf: any; texParameteri: any; uniform1f: any; uniform1i: any; uniform2f: any; uniform2i: any; uniform3f: any; uniform3i: any; uniform4f: any; uniform4i: any; useProgram: any; validateProgram: any; vertexAttrib1f: any; vertexAttrib1fv: any; vertexAttrib2f: any; vertexAttrib2fv: any; vertexAttrib3f: any; vertexAttrib3fv: any; vertexAttrib4f: any; vertexAttrib4fv: any; vertexAttribPointer: any; viewport: any; readonly DEPTH_BUFFER_BIT: any; readonly STENCIL_BUFFER_BIT: any; readonly COLOR_BUFFER_BIT: any; readonly POINTS: any; readonly LINES: any; readonly LINE_LOOP: any; readonly LINE_STRIP: any; readonly TRIANGLES: any; readonly TRIANGLE_STRIP: any; readonly TRIANGLE_FAN: any; readonly ZERO: any; readonly ONE: any; readonly SRC_COLOR: any; readonly ONE_MINUS_SRC_COLOR: any; readonly SRC_ALPHA: any; readonly ONE_MINUS_SRC_ALPHA: any; readonly DST_ALPHA: any; readonly ONE_MINUS_DST_ALPHA: any; readonly DST_COLOR: any; readonly ONE_MINUS_DST_COLOR: any; readonly SRC_ALPHA_SATURATE: any; readonly FUNC_ADD: any; readonly BLEND_EQUATION: any; readonly BLEND_EQUATION_RGB: any; readonly BLEND_EQUATION_ALPHA: any; readonly FUNC_SUBTRACT: any; readonly FUNC_REVERSE_SUBTRACT: any; readonly BLEND_DST_RGB: any; readonly BLEND_SRC_RGB: any; readonly BLEND_DST_ALPHA: any; readonly BLEND_SRC_ALPHA: any; readonly CONSTANT_COLOR: any; readonly ONE_MINUS_CONSTANT_COLOR: any; readonly CONSTANT_ALPHA: any; readonly ONE_MINUS_CONSTANT_ALPHA: any; readonly BLEND_COLOR: any; readonly ARRAY_BUFFER: any; readonly ELEMENT_ARRAY_BUFFER: any; readonly ARRAY_BUFFER_BINDING: any; readonly ELEMENT_ARRAY_BUFFER_BINDING: any; readonly STREAM_DRAW: any; readonly STATIC_DRAW: any; readonly DYNAMIC_DRAW: any; readonly BUFFER_SIZE: any; readonly BUFFER_USAGE: any; readonly CURRENT_VERTEX_ATTRIB: any; readonly FRONT: any; readonly BACK: any; readonly FRONT_AND_BACK: any; readonly CULL_FACE: any; readonly BLEND: any; readonly DITHER: any; readonly STENCIL_TEST: any; readonly DEPTH_TEST: any; readonly SCISSOR_TEST: any; readonly POLYGON_OFFSET_FILL: any; readonly SAMPLE_ALPHA_TO_COVERAGE: any; readonly SAMPLE_COVERAGE: any; readonly NO_ERROR: any; readonly INVALID_ENUM: any; readonly INVALID_VALUE: any; readonly INVALID_OPERATION: any; readonly OUT_OF_MEMORY: any; readonly CW: any; readonly CCW: any; readonly LINE_WIDTH: any; readonly ALIASED_POINT_SIZE_RANGE: any; readonly ALIASED_LINE_WIDTH_RANGE: any; readonly CULL_FACE_MODE: any; readonly FRONT_FACE: any; readonly DEPTH_RANGE: any; readonly DEPTH_WRITEMASK: any; readonly DEPTH_CLEAR_VALUE: any; readonly DEPTH_FUNC: any; readonly STENCIL_CLEAR_VALUE: any; readonly STENCIL_FUNC: any; readonly STENCIL_FAIL: any; readonly STENCIL_PASS_DEPTH_FAIL: any; readonly STENCIL_PASS_DEPTH_PASS: any; readonly STENCIL_REF: any; readonly STENCIL_VALUE_MASK: any; readonly STENCIL_WRITEMASK: any; readonly STENCIL_BACK_FUNC: any; readonly STENCIL_BACK_FAIL: any; readonly STENCIL_BACK_PASS_DEPTH_FAIL: any; readonly STENCIL_BACK_PASS_DEPTH_PASS: any; readonly STENCIL_BACK_REF: any; readonly STENCIL_BACK_VALUE_MASK: any; readonly STENCIL_BACK_WRITEMASK: any; readonly VIEWPORT: any; readonly SCISSOR_BOX: any; readonly COLOR_CLEAR_VALUE: any; readonly COLOR_WRITEMASK: any; readonly UNPACK_ALIGNMENT: any; readonly PACK_ALIGNMENT: any; readonly MAX_TEXTURE_SIZE: any; readonly MAX_VIEWPORT_DIMS: any; readonly SUBPIXEL_BITS: any; readonly RED_BITS: any; readonly GREEN_BITS: any; readonly BLUE_BITS: any; readonly ALPHA_BITS: any; readonly DEPTH_BITS: any; readonly STENCIL_BITS: any; readonly POLYGON_OFFSET_UNITS: any; readonly POLYGON_OFFSET_FACTOR: any; readonly TEXTURE_BINDING_2D: any; readonly SAMPLE_BUFFERS: any; readonly SAMPLES: any; readonly SAMPLE_COVERAGE_VALUE: any; readonly SAMPLE_COVERAGE_INVERT: any; readonly COMPRESSED_TEXTURE_FORMATS: any; readonly DONT_CARE: any; readonly FASTEST: any; readonly NICEST: any; readonly GENERATE_MIPMAP_HINT: any; readonly BYTE: any; readonly UNSIGNED_BYTE: any; readonly SHORT: any; readonly UNSIGNED_SHORT: any; readonly INT: any; readonly UNSIGNED_INT: any; readonly FLOAT: any; readonly DEPTH_COMPONENT: any; readonly ALPHA: any; readonly RGB: any; readonly RGBA: any; readonly LUMINANCE: any; readonly LUMINANCE_ALPHA: any; readonly UNSIGNED_SHORT_4_4_4_4: any; readonly UNSIGNED_SHORT_5_5_5_1: any; readonly UNSIGNED_SHORT_5_6_5: any; readonly FRAGMENT_SHADER: any; readonly VERTEX_SHADER: any; readonly MAX_VERTEX_ATTRIBS: any; readonly MAX_VERTEX_UNIFORM_VECTORS: any; readonly MAX_VARYING_VECTORS: any; readonly MAX_COMBINED_TEXTURE_IMAGE_UNITS: any; readonly MAX_VERTEX_TEXTURE_IMAGE_UNITS: any; readonly MAX_TEXTURE_IMAGE_UNITS: any; readonly MAX_FRAGMENT_UNIFORM_VECTORS: any; readonly SHADER_TYPE: any; readonly DELETE_STATUS: any; readonly LINK_STATUS: any; readonly VALIDATE_STATUS: any; readonly ATTACHED_SHADERS: any; readonly ACTIVE_UNIFORMS: any; readonly ACTIVE_ATTRIBUTES: any; readonly SHADING_LANGUAGE_VERSION: any; readonly CURRENT_PROGRAM: any; readonly NEVER: any; readonly LESS: any; readonly EQUAL: any; readonly LEQUAL: any; readonly GREATER: any; readonly NOTEQUAL: any; readonly GEQUAL: any; readonly ALWAYS: any; readonly KEEP: any; readonly REPLACE: any; readonly INCR: any; readonly DECR: any; readonly INVERT: any; readonly INCR_WRAP: any; readonly DECR_WRAP: any; readonly VENDOR: any; readonly RENDERER: any; readonly VERSION: any; readonly NEAREST: any; readonly LINEAR: any; readonly NEAREST_MIPMAP_NEAREST: any; readonly LINEAR_MIPMAP_NEAREST: any; readonly NEAREST_MIPMAP_LINEAR: any; readonly LINEAR_MIPMAP_LINEAR: any; readonly TEXTURE_MAG_FILTER: any; readonly TEXTURE_MIN_FILTER: any; readonly TEXTURE_WRAP_S: any; readonly TEXTURE_WRAP_T: any; readonly TEXTURE_2D: any; readonly TEXTURE: any; readonly TEXTURE_CUBE_MAP: any; readonly TEXTURE_BINDING_CUBE_MAP: any; readonly TEXTURE_CUBE_MAP_POSITIVE_X: any; readonly TEXTURE_CUBE_MAP_NEGATIVE_X: any; readonly TEXTURE_CUBE_MAP_POSITIVE_Y: any; readonly TEXTURE_CUBE_MAP_NEGATIVE_Y: any; readonly TEXTURE_CUBE_MAP_POSITIVE_Z: any; readonly TEXTURE_CUBE_MAP_NEGATIVE_Z: any; readonly MAX_CUBE_MAP_TEXTURE_SIZE: any; readonly TEXTURE0: any; readonly TEXTURE1: any; readonly TEXTURE2: any; readonly TEXTURE3: any; readonly TEXTURE4: any; readonly TEXTURE5: any; readonly TEXTURE6: any; readonly TEXTURE7: any; readonly TEXTURE8: any; readonly TEXTURE9: any; readonly TEXTURE10: any; readonly TEXTURE11: any; readonly TEXTURE12: any; readonly TEXTURE13: any; readonly TEXTURE14: any; readonly TEXTURE15: any; readonly TEXTURE16: any; readonly TEXTURE17: any; readonly TEXTURE18: any; readonly TEXTURE19: any; readonly TEXTURE20: any; readonly TEXTURE21: any; readonly TEXTURE22: any; readonly TEXTURE23: any; readonly TEXTURE24: any; readonly TEXTURE25: any; readonly TEXTURE26: any; readonly TEXTURE27: any; readonly TEXTURE28: any; readonly TEXTURE29: any; readonly TEXTURE30: any; readonly TEXTURE31: any; readonly ACTIVE_TEXTURE: any; readonly REPEAT: any; readonly CLAMP_TO_EDGE: any; readonly MIRRORED_REPEAT: any; readonly FLOAT_VEC2: any; readonly FLOAT_VEC3: any; readonly FLOAT_VEC4: any; readonly INT_VEC2: any; readonly INT_VEC3: any; readonly INT_VEC4: any; readonly BOOL: any; readonly BOOL_VEC2: any; readonly BOOL_VEC3: any; readonly BOOL_VEC4: any; readonly FLOAT_MAT2: any; readonly FLOAT_MAT3: any; readonly FLOAT_MAT4: any; readonly SAMPLER_2D: any; readonly SAMPLER_CUBE: any; readonly VERTEX_ATTRIB_ARRAY_ENABLED: any; readonly VERTEX_ATTRIB_ARRAY_SIZE: any; readonly VERTEX_ATTRIB_ARRAY_STRIDE: any; readonly VERTEX_ATTRIB_ARRAY_TYPE: any; readonly VERTEX_ATTRIB_ARRAY_NORMALIZED: any; readonly VERTEX_ATTRIB_ARRAY_POINTER: any; readonly VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: any; readonly IMPLEMENTATION_COLOR_READ_TYPE: any; readonly IMPLEMENTATION_COLOR_READ_FORMAT: any; readonly COMPILE_STATUS: any; readonly LOW_FLOAT: any; readonly MEDIUM_FLOAT: any; readonly HIGH_FLOAT: any; readonly LOW_INT: any; readonly MEDIUM_INT: any; readonly HIGH_INT: any; readonly FRAMEBUFFER: any; readonly RENDERBUFFER: any; readonly RGBA4: any; readonly RGB5_A1: any; readonly RGBA8: any; readonly RGB565: any; readonly DEPTH_COMPONENT16: any; readonly STENCIL_INDEX8: any; readonly DEPTH_STENCIL: any; readonly RENDERBUFFER_WIDTH: any; readonly RENDERBUFFER_HEIGHT: any; readonly RENDERBUFFER_INTERNAL_FORMAT: any; readonly RENDERBUFFER_RED_SIZE: any; readonly RENDERBUFFER_GREEN_SIZE: any; readonly RENDERBUFFER_BLUE_SIZE: any; readonly RENDERBUFFER_ALPHA_SIZE: any; readonly RENDERBUFFER_DEPTH_SIZE: any; readonly RENDERBUFFER_STENCIL_SIZE: any; readonly FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: any; readonly FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: any; readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: any; readonly FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: any; readonly COLOR_ATTACHMENT0: any; readonly DEPTH_ATTACHMENT: any; readonly STENCIL_ATTACHMENT: any; readonly DEPTH_STENCIL_ATTACHMENT: any; readonly NONE: any; readonly FRAMEBUFFER_COMPLETE: any; readonly FRAMEBUFFER_INCOMPLETE_ATTACHMENT: any; readonly FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: any; readonly FRAMEBUFFER_INCOMPLETE_DIMENSIONS: any; readonly FRAMEBUFFER_UNSUPPORTED: any; readonly FRAMEBUFFER_BINDING: any; readonly RENDERBUFFER_BINDING: any; readonly MAX_RENDERBUFFER_SIZE: any; readonly INVALID_FRAMEBUFFER_OPERATION: any; readonly UNPACK_FLIP_Y_WEBGL: any; readonly UNPACK_PREMULTIPLY_ALPHA_WEBGL: any; readonly CONTEXT_LOST_WEBGL: any; readonly UNPACK_COLORSPACE_CONVERSION_WEBGL: any; readonly BROWSER_DEFAULT_WEBGL: any; }; readonly READ_BUFFER: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly UNPACK_ROW_LENGTH: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly UNPACK_SKIP_ROWS: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly UNPACK_SKIP_PIXELS: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly PACK_ROW_LENGTH: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly PACK_SKIP_ROWS: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly PACK_SKIP_PIXELS: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly COLOR: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DEPTH: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly STENCIL: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly RED: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly RGB8: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly RGB10_A2: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXTURE_BINDING_3D: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly UNPACK_SKIP_IMAGES: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly UNPACK_IMAGE_HEIGHT: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXTURE_3D: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXTURE_WRAP_R: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly MAX_3D_TEXTURE_SIZE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly UNSIGNED_INT_2_10_10_10_REV: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly MAX_ELEMENTS_VERTICES: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly MAX_ELEMENTS_INDICES: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXTURE_MIN_LOD: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXTURE_MAX_LOD: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXTURE_BASE_LEVEL: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXTURE_MAX_LEVEL: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly MIN: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly MAX: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly DEPTH_COMPONENT24: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly MAX_TEXTURE_LOD_BIAS: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXTURE_COMPARE_MODE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly TEXTURE_COMPARE_FUNC: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly CURRENT_QUERY: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly QUERY_RESULT: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly QUERY_RESULT_AVAILABLE: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly STREAM_READ: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly STREAM_COPY: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly STATIC_READ: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; readonly STATIC_COPY: { toString: any; toFixed: any; toExponential: any; toPrecision: any; valueOf: any; toLocaleString: any; }; ... 519 more ...; readonly BROWSER_DEFAULT_WEBGL: { ...; }; }; ... 218 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }; ... 884 more ...; undefined: unknown; }>'

This isn't particularly useful display... so ye, definitely something could be done to optimize how this gets printed. That said, maybe making the type print lazy in diagnostics would be something worth exploring either way? If it's only a feasible idea it could improve the performance of some of those pathological cases as some of the created error messages end up being discarded.

Interestingly, this doesn't print the same expansion of this type in the error message:

// @strict: false
// @strictNullChecks: false
type Deep<T> = { [K in keyof T]: Deep<T[K]> };

const test: {
  globalThis: Deep<typeof globalThis>;
} = { globalThis };

I don't know where the difference is between those 2.

@gabritto
Copy link
Member

I think that my theory about 2 deep stacks being stacked on top of each other here might be correct.

This reportRelationError tries to relate globalThis source to what I think is Deep<typeof globalThis> target (or some anonymous type derived from it). We get there by descending roughly through this property chain:

XMLHttpRequest > responseXML > body > offsetParent > shadowRoot > adoptedStyleSheets > (relateVariances) > CSSStyleSheet > ownerRule > parentRule > parentStyleSheet > ownerNode > (unionOrIntersectionRelatedTo) > Element > ownerDocument > defaultView > frames > self > globalThis

I captured this target and printed it after the stack was cleared and it succeeded. The result isn't pretty but it did "work":

typeToString(target)
This isn't particularly useful display... so ye, definitely something could be done to optimize how this gets printed. That said, maybe making the type print lazy in diagnostics would be something worth exploring either way? If it's only a feasible idea it could improve the performance of some of those pathological cases as some of the created error messages end up being discarded.

Interestingly, this doesn't print the same expansion of this type in the error message:

// @strict: false
// @strictNullChecks: false
type Deep<T> = { [K in keyof T]: Deep<T[K]> };

const test: {
  globalThis: Deep<typeof globalThis>;
} = { globalThis };

I don't know where the difference is between those 2.

Adding my explanation of things to this:

  1. typeToString(type) succeeds for the infinitely deep reverse mapped type if given enough stack because we have a 100k truncation limit for typeToString, so eventually we do stop going deeper and deeper into the reverse mapped type because we reach that character limit. Also, we only go so deep during typeToString in the tests because the tests set noErrorTruncation to true. If this option is not set, we start truncating much earlier.

  2. I believe the stack overflow didn't happen before 5.5 because we reached the 100k truncation limit before blowing up the stack.

  3. My incorrect 5.5 PR Avoid infinite recursion with inferReverseMappedType #57837 meant that, upon digging deeper into the infinitely deep reverse mapped type, we would call inferReverseMappedType and incorrectly return the previous result cached by inferTypeForHomomorphicMappedType. This meant that, when digging deeper into the reverse mapped type, we would produce the same mapped type, thus breaking the infinity of the type. So typeToString didn't dig infinitely into this type before due to this bug, because it detects that it is printing the same reverse mapped type and stops.

  4. With my other 5.5 PR Improve diagnostics deduplication 2 #58318, the stack is already bigger when we call typeToString with the infinitely deep type, so there isn't enough stack space to print the type until reaching the 100k truncation limit.

Putting all of those things together means that this PR causes the test to stack overflow.

@Andarist
Copy link
Contributor Author

thanks @gabritto for fixing that printing issue ❤️

@gabritto gabritto requested a review from weswigham July 12, 2024 17:50
@gabritto
Copy link
Member

@typescript-bot test it

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 12, 2024

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
test top400 ✅ Started ✅ Results
user test this ✅ Started ✅ Results
run dt ✅ Started ✅ Results
perf test this faster ✅ Started 👀 Results

@typescript-bot
Copy link
Collaborator

Hey @gabritto, the results of running the DT tests are ready.

Everything looks the same!

You can check the log here.

@typescript-bot
Copy link
Collaborator

@gabritto Here are the results of running the user tests with tsc comparing main and refs/pull/59232/merge:

Everything looks good!

@typescript-bot
Copy link
Collaborator

@gabritto
The results of the perf run you requested are in!

Here they are:

tsc

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-Unions - node (v18.15.0, x64)
Errors 30 30 ~ ~ ~ p=1.000 n=6
Symbols 62,153 62,153 ~ ~ ~ p=1.000 n=6
Types 50,242 50,242 ~ ~ ~ p=1.000 n=6
Memory used 192,949k (± 0.72%) 193,395k (± 0.93%) ~ 192,155k 195,755k p=0.575 n=6
Parse Time 1.31s (± 0.39%) 1.30s (± 0.90%) ~ 1.28s 1.31s p=0.191 n=6
Bind Time 0.71s 0.71s ~ ~ ~ p=1.000 n=6
Check Time 9.44s (± 0.48%) 9.45s (± 0.33%) ~ 9.42s 9.48s p=0.359 n=6
Emit Time 2.75s (± 0.44%) 2.74s (± 0.45%) ~ 2.73s 2.76s p=0.323 n=6
Total Time 14.20s (± 0.26%) 14.21s (± 0.27%) ~ 14.17s 14.25s p=0.936 n=6
angular-1 - node (v18.15.0, x64)
Errors 5 5 ~ ~ ~ p=1.000 n=6
Symbols 944,114 944,114 ~ ~ ~ p=1.000 n=6
Types 407,050 407,050 ~ ~ ~ p=1.000 n=6
Memory used 1,218,418k (± 0.00%) 1,218,370k (± 0.00%) ~ 1,218,327k 1,218,441k p=0.093 n=6
Parse Time 6.71s (± 0.36%) 6.71s (± 0.64%) ~ 6.64s 6.76s p=1.000 n=6
Bind Time 1.88s (± 0.27%) 1.88s (± 0.52%) ~ 1.87s 1.89s p=0.931 n=6
Check Time 30.71s (± 0.34%) 30.68s (± 0.31%) ~ 30.59s 30.85s p=0.686 n=6
Emit Time 13.59s (± 1.00%) 13.57s (± 0.69%) ~ 13.42s 13.67s p=0.630 n=6
Total Time 52.89s (± 0.36%) 52.84s (± 0.26%) ~ 52.63s 53.01s p=0.470 n=6
mui-docs - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 2,148,730 2,148,730 ~ ~ ~ p=1.000 n=6
Types 929,320 929,320 ~ ~ ~ p=1.000 n=6
Memory used 2,116,468k (± 0.00%) 2,116,490k (± 0.00%) ~ 2,116,422k 2,116,577k p=0.378 n=6
Parse Time 6.59s (± 0.35%) 6.58s (± 0.21%) ~ 6.55s 6.59s p=0.277 n=6
Bind Time 2.35s (± 2.64%) 2.32s (± 0.35%) ~ 2.32s 2.34s p=0.081 n=6
Check Time 70.88s (± 0.46%) 70.78s (± 0.38%) ~ 70.52s 71.28s p=0.574 n=6
Emit Time 0.14s (± 4.05%) 0.14s (± 2.95%) ~ 0.13s 0.14s p=0.282 n=6
Total Time 79.96s (± 0.46%) 79.82s (± 0.33%) ~ 79.55s 80.30s p=0.471 n=6
self-build-src - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,226,005 1,225,977 -28 (- 0.00%) ~ ~ p=0.001 n=6
Types 261,615 261,615 ~ ~ ~ p=1.000 n=6
Memory used 2,338,767k (± 0.03%) 2,339,227k (± 0.02%) ~ 2,338,668k 2,339,899k p=0.173 n=6
Parse Time 5.08s (± 1.33%) 5.07s (± 1.09%) ~ 4.98s 5.14s p=0.688 n=6
Bind Time 1.91s (± 1.43%) 1.90s (± 0.91%) ~ 1.88s 1.93s p=0.805 n=6
Check Time 34.17s (± 0.26%) 34.13s (± 0.33%) ~ 34.02s 34.30s p=0.629 n=6
Emit Time 3.28s (± 1.21%) 3.24s (± 0.86%) ~ 3.19s 3.27s p=0.261 n=6
Total Time 44.44s (± 0.34%) 44.34s (± 0.24%) ~ 44.20s 44.51s p=0.298 n=6
self-build-src-public-api - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,226,005 1,225,977 -28 (- 0.00%) ~ ~ p=0.001 n=6
Types 261,615 261,615 ~ ~ ~ p=1.000 n=6
Memory used 2,413,454k (± 0.01%) 2,412,751k (± 0.02%) -703k (- 0.03%) 2,411,960k 2,413,145k p=0.005 n=6
Parse Time 6.30s (± 0.60%) 6.34s (± 0.80%) ~ 6.28s 6.42s p=0.471 n=6
Bind Time 2.04s (± 0.86%) 2.02s (± 0.60%) ~ 2.01s 2.04s p=0.410 n=6
Check Time 40.70s (± 0.32%) 40.83s (± 0.26%) ~ 40.70s 41.02s p=0.297 n=6
Emit Time 3.97s (± 1.31%) 3.93s (± 2.60%) ~ 3.81s 4.06s p=0.471 n=6
Total Time 53.01s (± 0.33%) 53.12s (± 0.34%) ~ 52.93s 53.36s p=0.378 n=6
self-compiler - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 258,315 258,320 +5 (+ 0.00%) ~ ~ p=0.001 n=6
Types 104,817 104,818 +1 (+ 0.00%) ~ ~ p=0.001 n=6
Memory used 427,202k (± 0.02%) 427,220k (± 0.04%) ~ 427,096k 427,567k p=0.575 n=6
Parse Time 3.30s (± 0.78%) 3.32s (± 0.58%) ~ 3.29s 3.34s p=0.333 n=6
Bind Time 1.31s (± 1.53%) 1.32s (± 0.78%) ~ 1.30s 1.33s p=0.741 n=6
Check Time 17.84s (± 0.55%) 17.84s (± 0.30%) ~ 17.79s 17.93s p=0.810 n=6
Emit Time 1.65s (± 2.23%) 1.65s (± 1.67%) ~ 1.61s 1.69s p=1.000 n=6
Total Time 24.10s (± 0.50%) 24.13s (± 0.34%) ~ 24.02s 24.25s p=0.521 n=6
ts-pre-modules - node (v18.15.0, x64)
Errors 35 35 ~ ~ ~ p=1.000 n=6
Symbols 224,565 224,565 ~ ~ ~ p=1.000 n=6
Types 93,734 93,734 ~ ~ ~ p=1.000 n=6
Memory used 369,540k (± 0.03%) 369,549k (± 0.04%) ~ 369,430k 369,836k p=0.575 n=6
Parse Time 3.44s (± 0.40%) 3.45s (± 0.62%) ~ 3.42s 3.48s p=0.318 n=6
Bind Time 1.93s (± 0.63%) 1.93s (± 0.54%) ~ 1.91s 1.94s p=0.735 n=6
Check Time 19.18s (± 0.15%) 19.12s (± 0.19%) -0.06s (- 0.32%) 19.08s 19.18s p=0.016 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 24.55s (± 0.14%) 24.50s (± 0.18%) ~ 24.46s 24.57s p=0.077 n=6
vscode - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 2,891,026 2,891,019 -7 (- 0.00%) ~ ~ p=0.001 n=6
Types 978,080 978,084 +4 (+ 0.00%) ~ ~ p=0.001 n=6
Memory used 3,054,703k (± 0.00%) 3,054,681k (± 0.00%) ~ 3,054,631k 3,054,747k p=0.630 n=6
Parse Time 16.94s (± 0.11%) 16.94s (± 0.27%) ~ 16.89s 17.02s p=0.360 n=6
Bind Time 5.13s (± 0.20%) 5.12s (± 0.23%) ~ 5.10s 5.13s p=0.241 n=6
Check Time 90.02s (± 0.24%) 89.70s (± 0.37%) ~ 89.46s 90.33s p=0.128 n=6
Emit Time 29.20s (± 0.56%) 29.11s (± 0.51%) ~ 28.97s 29.36s p=0.377 n=6
Total Time 141.29s (± 0.13%) 140.86s (± 0.26%) ~ 140.48s 141.47s p=0.078 n=6
webpack - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 267,239 267,239 ~ ~ ~ p=1.000 n=6
Types 108,815 108,815 ~ ~ ~ p=1.000 n=6
Memory used 411,817k (± 0.03%) 411,817k (± 0.02%) ~ 411,754k 411,961k p=0.936 n=6
Parse Time 4.74s (± 0.46%) 4.76s (± 0.56%) ~ 4.72s 4.79s p=0.089 n=6
Bind Time 2.08s (± 0.66%) 2.09s (± 0.56%) ~ 2.07s 2.10s p=0.740 n=6
Check Time 20.78s (± 0.31%) 20.74s (± 0.32%) ~ 20.67s 20.83s p=0.336 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 27.61s (± 0.29%) 27.60s (± 0.31%) ~ 27.48s 27.71s p=0.936 n=6
xstate-main - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 510,479 510,479 ~ ~ ~ p=1.000 n=6
Types 161,600 161,600 ~ ~ ~ p=1.000 n=6
Memory used 447,986k (± 0.10%) 448,326k (± 0.04%) ~ 448,075k 448,513k p=0.298 n=6
Parse Time 3.15s (± 1.20%) 3.15s (± 0.81%) ~ 3.12s 3.18s p=1.000 n=6
Bind Time 1.18s (± 0.89%) 1.18s (± 0.44%) ~ 1.17s 1.18s p=0.794 n=6
Check Time 16.99s (± 0.20%) 16.98s (± 0.42%) ~ 16.85s 17.05s p=1.000 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 21.32s (± 0.24%) 21.31s (± 0.29%) ~ 21.21s 21.39s p=0.748 n=6
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • Compiler-Unions - node (v18.15.0, x64)
  • angular-1 - node (v18.15.0, x64)
  • mui-docs - node (v18.15.0, x64)
  • self-build-src - node (v18.15.0, x64)
  • self-build-src-public-api - node (v18.15.0, x64)
  • self-compiler - node (v18.15.0, x64)
  • ts-pre-modules - node (v18.15.0, x64)
  • vscode - node (v18.15.0, x64)
  • webpack - node (v18.15.0, x64)
  • xstate-main - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

Developer Information:

Download Benchmarks

@typescript-bot
Copy link
Collaborator

@gabritto Here are the results of running the top 400 repos with tsc comparing main and refs/pull/59232/merge:

Everything looks good!

@Andarist Andarist requested a review from gabritto July 12, 2024 20:56
Copy link
Member

@gabritto gabritto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My review counts just for the parts of the PR I didn't write, but the original fix makes sense.

@gabritto
Copy link
Member

@typescript-bot cherry-pick to release-5.5

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 12, 2024

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
cherry-pick to release-5.5 ✅ Started ✅ Results

@typescript-bot
Copy link
Collaborator

Hey, @gabritto! I've created #59258 for you.

@gabritto gabritto merged commit 6d3be98 into microsoft:main Jul 12, 2024
29 checks passed
@Andarist Andarist deleted the fix/reverse-mapped-inference-same-source branch July 15, 2024 12:28
DanielRosenwasser pushed a commit that referenced this pull request Jul 16, 2024
…e-5.5 (#59258)

Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
@sandersn sandersn removed this from PR Backlog Apr 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
For Uncommitted Bug PR for untriaged, rejected, closed or missing bug
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants