From f6fc4a31340d26c48f00d1da50abfdb6fbeac736 Mon Sep 17 00:00:00 2001 From: Bashamega Date: Wed, 23 Jul 2025 16:45:12 +0300 Subject: [PATCH 1/2] feat: Simplify collections Co-authored-by: Ingvar Stepanyan --- baselines/audioworklet.generated.d.ts | 16 +- baselines/dom.generated.d.ts | 109 ++++++------- baselines/dom.iterable.generated.d.ts | 6 +- baselines/serviceworker.generated.d.ts | 18 ++- baselines/sharedworker.generated.d.ts | 20 +-- baselines/ts5.5/audioworklet.generated.d.ts | 16 +- baselines/ts5.5/dom.generated.d.ts | 109 ++++++------- baselines/ts5.5/dom.iterable.generated.d.ts | 6 +- baselines/ts5.5/serviceworker.generated.d.ts | 18 ++- baselines/ts5.5/sharedworker.generated.d.ts | 20 +-- baselines/ts5.5/webworker.generated.d.ts | 22 +-- baselines/ts5.6/audioworklet.generated.d.ts | 16 +- baselines/ts5.6/dom.generated.d.ts | 109 ++++++------- baselines/ts5.6/dom.iterable.generated.d.ts | 6 +- baselines/ts5.6/serviceworker.generated.d.ts | 18 ++- baselines/ts5.6/sharedworker.generated.d.ts | 20 +-- baselines/ts5.6/webworker.generated.d.ts | 22 +-- baselines/webworker.generated.d.ts | 22 +-- inputfiles/addedTypes.jsonc | 52 ++---- inputfiles/knownTypes.json | 1 + inputfiles/overridingTypes.jsonc | 89 +++++++--- src/build/emitter.ts | 162 +++++-------------- 22 files changed, 397 insertions(+), 480 deletions(-) diff --git a/baselines/audioworklet.generated.d.ts b/baselines/audioworklet.generated.d.ts index f72aed98b..8ec349977 100644 --- a/baselines/audioworklet.generated.d.ts +++ b/baselines/audioworklet.generated.d.ts @@ -789,7 +789,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -1880,7 +1880,7 @@ interface QueuingStrategySize { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; + (controller: TransformStreamDefaultController): Promise; } interface TransformerStartCallback { @@ -1888,15 +1888,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + (chunk: I, controller: TransformStreamDefaultController): Promise; } interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; + (): Promise; } interface UnderlyingSinkStartCallback { @@ -1904,15 +1904,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + (chunk: W, controller: WritableStreamDefaultController): Promise; } interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; + (controller: ReadableStreamController): Promise; } interface UnderlyingSourceStartCallback { diff --git a/baselines/dom.generated.d.ts b/baselines/dom.generated.d.ts index ed0f93dfd..0e0eed63b 100644 --- a/baselines/dom.generated.d.ts +++ b/baselines/dom.generated.d.ts @@ -10035,7 +10035,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/anchors) */ - readonly anchors: HTMLCollectionOf; + readonly anchors: HTMLCollection; /** * The **`applets`** property of the Document returns an empty HTMLCollection. * @deprecated @@ -10140,7 +10140,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/embeds) */ - readonly embeds: HTMLCollectionOf; + readonly embeds: HTMLCollection; /** * **`fgColor`** gets/sets the foreground color, or text color, of the current document. * @deprecated @@ -10153,7 +10153,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/forms) */ - readonly forms: HTMLCollectionOf; + readonly forms: HTMLCollection; /** * The **`fragmentDirective`** read-only property of the Document interface returns the FragmentDirective for the current document. * @@ -10190,7 +10190,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/images) */ - readonly images: HTMLCollectionOf; + readonly images: HTMLCollection; /** * The **`Document.implementation`** property returns a A DOMImplementation object. * @@ -10221,7 +10221,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/links) */ - readonly links: HTMLCollectionOf; + readonly links: HTMLCollection; /** * The **`Document.location`** read-only property returns a and provides methods for changing that URL and loading another URL. * @@ -10253,7 +10253,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/plugins) */ - readonly plugins: HTMLCollectionOf; + readonly plugins: HTMLCollection; /** * The **`Document.readyState`** property describes the loading state of the document. * @@ -10278,7 +10278,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/scripts) */ - readonly scripts: HTMLCollectionOf; + readonly scripts: HTMLCollection; /** * The **`scrollingElement`** read-only property of the scrolls the document. * @@ -10525,7 +10525,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByClassName) */ - getElementsByClassName(classNames: string): HTMLCollectionOf; + getElementsByClassName(classNames: string): HTMLCollection; /** * The **`getElementsByName()`** method of the Document object returns a NodeList Collection of elements with a given `name` attribute in the document. * @@ -10537,21 +10537,21 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByTagName) */ - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: K): HTMLCollection; /** @deprecated */ - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: string): HTMLCollectionOf; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: string): HTMLCollection; /** * Returns a list of elements with the given tag name belonging to the given namespace. * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByTagNameNS) */ - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollection; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollection; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollection; + getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollection; /** * The **`getSelection()`** method of the Document interface returns the Selection object associated with this document, representing the range of text selected by the user, or the current position of the caret. * @@ -11159,27 +11159,27 @@ interface Element extends Node, ARIAMixin, Animatable, ChildNode, NonDocumentTyp * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getElementsByClassName) */ - getElementsByClassName(classNames: string): HTMLCollectionOf; + getElementsByClassName(classNames: string): HTMLCollection; /** * The **`Element.getElementsByTagName()`** method returns a live All descendants of the specified element are searched, but not the element itself. * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getElementsByTagName) */ - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: K): HTMLCollection; /** @deprecated */ - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: string): HTMLCollectionOf; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: string): HTMLCollection; /** * The **`Element.getElementsByTagNameNS()`** method returns a live HTMLCollection of elements with the given tag name belonging to the given namespace. * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getElementsByTagNameNS) */ - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollection; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollection; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollection; + getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollection; /** * The **`getHTML()`** method of the Element interface is used to serialize an element's DOM to an HTML string. * @@ -13688,7 +13688,7 @@ declare var HTMLCanvasElement: { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection) */ -interface HTMLCollectionBase { +interface HTMLCollection { /** * The **`HTMLCollection.length`** property returns the number of items in a HTMLCollection. * @@ -13700,17 +13700,14 @@ interface HTMLCollectionBase { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection/item) */ - item(index: number): Element | null; - [index: number]: Element; -} - -interface HTMLCollection extends HTMLCollectionBase { + item(index: number): E | null; /** * The **`namedItem()`** method of the HTMLCollection interface returns the first Element in the collection whose `id` or `name` attribute match the specified name, or `null` if no element matches. * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection/namedItem) */ - namedItem(name: string): Element | null; + namedItem(name: string): E | N | null; + [index: number]: E; } declare var HTMLCollection: { @@ -13718,12 +13715,6 @@ declare var HTMLCollection: { new(): HTMLCollection; }; -interface HTMLCollectionOf extends HTMLCollectionBase { - item(index: number): T | null; - namedItem(name: string): T | null; - [index: number]: T; -} - /** * The **`HTMLDListElement`** interface provides special properties (beyond those of the regular HTMLElement interface it also has available to it by inheritance) for manipulating definition list (dl) elements. * @@ -13782,7 +13773,7 @@ interface HTMLDataListElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLDataListElement/options) */ - readonly options: HTMLCollectionOf; + readonly options: HTMLCollection; addEventListener(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -14284,7 +14275,7 @@ declare var HTMLFontElement: { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLFormControlsCollection) */ -interface HTMLFormControlsCollection extends HTMLCollectionBase { +interface HTMLFormControlsCollection extends HTMLCollection { /** * The **`HTMLFormControlsCollection.namedItem()`** method returns the RadioNodeList or the Element in the collection whose `name` or `id` match the specified name, or `null` if no node matches. * @@ -15522,7 +15513,7 @@ interface HTMLMapElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMapElement/areas) */ - readonly areas: HTMLCollection; + readonly areas: HTMLCollection; /** * The **`name`** property of the HTMLMapElement represents the unique name `` element. * @@ -16296,7 +16287,7 @@ declare var HTMLOptionElement: { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLOptionsCollection) */ -interface HTMLOptionsCollection extends HTMLCollectionOf { +interface HTMLOptionsCollection extends HTMLCollection { /** * The **`length`** property of the HTMLOptionsCollection interface returns the number of option elements in the collection. * @@ -16752,7 +16743,7 @@ interface HTMLSelectElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/selectedOptions) */ - readonly selectedOptions: HTMLCollectionOf; + readonly selectedOptions: HTMLCollection; /** * The **`size`** property of the HTMLSelectElement interface specifies the number of options, or rows, that should be visible at one time. * @@ -17255,7 +17246,7 @@ interface HTMLTableElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLTableElement/rows) */ - readonly rows: HTMLCollectionOf; + readonly rows: HTMLCollection; /** * The **`HTMLTableElement.rules`** property indicates which cell borders to render in the table. * @deprecated @@ -17275,7 +17266,7 @@ interface HTMLTableElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tBodies) */ - readonly tBodies: HTMLCollectionOf; + readonly tBodies: HTMLCollection; /** * The **`HTMLTableElement.tFoot`** property represents the `null` if there is no such element. * @@ -17393,7 +17384,7 @@ interface HTMLTableRowElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/cells) */ - readonly cells: HTMLCollectionOf; + readonly cells: HTMLCollection; /** * The **`ch`** property of the HTMLTableRowElement interface does nothing. * @deprecated @@ -17482,7 +17473,7 @@ interface HTMLTableSectionElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/rows) */ - readonly rows: HTMLCollectionOf; + readonly rows: HTMLCollection; /** * The **`vAlign`** property of the HTMLTableSectionElement interface is a string indicating how to vertically align text in a thead, tbody or tfoot table section. * @deprecated @@ -21121,7 +21112,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -37383,7 +37374,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -38578,7 +38569,7 @@ interface ResizeObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; + (controller: TransformStreamDefaultController): Promise; } interface TransformerStartCallback { @@ -38586,15 +38577,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + (chunk: I, controller: TransformStreamDefaultController): Promise; } interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; + (): Promise; } interface UnderlyingSinkStartCallback { @@ -38602,15 +38593,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + (chunk: W, controller: WritableStreamDefaultController): Promise; } interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; + (controller: ReadableStreamController): Promise; } interface UnderlyingSourceStartCallback { @@ -38626,7 +38617,7 @@ interface VideoFrameRequestCallback { } interface ViewTransitionUpdateCallback { - (): any; + (): Promise; } interface VoidFunction { diff --git a/baselines/dom.iterable.generated.d.ts b/baselines/dom.iterable.generated.d.ts index 1c7b0f4eb..0810b415c 100644 --- a/baselines/dom.iterable.generated.d.ts +++ b/baselines/dom.iterable.generated.d.ts @@ -146,14 +146,10 @@ interface HTMLAllCollection { [Symbol.iterator](): ArrayIterator; } -interface HTMLCollectionBase { +interface HTMLCollection { [Symbol.iterator](): ArrayIterator; } -interface HTMLCollectionOf { - [Symbol.iterator](): ArrayIterator; -} - interface HTMLFormElement { [Symbol.iterator](): ArrayIterator; } diff --git a/baselines/serviceworker.generated.d.ts b/baselines/serviceworker.generated.d.ts index c4b8089df..b98c6506b 100644 --- a/baselines/serviceworker.generated.d.ts +++ b/baselines/serviceworker.generated.d.ts @@ -5107,7 +5107,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -11271,7 +11271,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; + (controller: TransformStreamDefaultController): Promise; } interface TransformerStartCallback { @@ -11279,15 +11279,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + (chunk: I, controller: TransformStreamDefaultController): Promise; } interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; + (): Promise; } interface UnderlyingSinkStartCallback { @@ -11295,15 +11295,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + (chunk: W, controller: WritableStreamDefaultController): Promise; } interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; + (controller: ReadableStreamController): Promise; } interface UnderlyingSourceStartCallback { @@ -11489,6 +11489,8 @@ type GLsizei = number; type GLsizeiptr = number; type GLuint = number; type GLuint64 = number; +/** @deprecated */ +type HTMLCollectionOf = HTMLCollection; type HashAlgorithmIdentifier = AlgorithmIdentifier; type HeadersInit = [string, string][] | Record | Headers; type IDBValidKey = number | string | Date | BufferSource | IDBValidKey[]; diff --git a/baselines/sharedworker.generated.d.ts b/baselines/sharedworker.generated.d.ts index b72ab2c8f..306c124e3 100644 --- a/baselines/sharedworker.generated.d.ts +++ b/baselines/sharedworker.generated.d.ts @@ -4790,7 +4790,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -10140,7 +10140,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -10997,7 +10997,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; + (controller: TransformStreamDefaultController): Promise; } interface TransformerStartCallback { @@ -11005,15 +11005,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + (chunk: I, controller: TransformStreamDefaultController): Promise; } interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; + (): Promise; } interface UnderlyingSinkStartCallback { @@ -11021,15 +11021,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + (chunk: W, controller: WritableStreamDefaultController): Promise; } interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; + (controller: ReadableStreamController): Promise; } interface UnderlyingSourceStartCallback { @@ -11178,6 +11178,8 @@ type GLsizei = number; type GLsizeiptr = number; type GLuint = number; type GLuint64 = number; +/** @deprecated */ +type HTMLCollectionOf = HTMLCollection; type HashAlgorithmIdentifier = AlgorithmIdentifier; type HeadersInit = [string, string][] | Record | Headers; type IDBValidKey = number | string | Date | BufferSource | IDBValidKey[]; diff --git a/baselines/ts5.5/audioworklet.generated.d.ts b/baselines/ts5.5/audioworklet.generated.d.ts index ac598321d..f3a5117b5 100644 --- a/baselines/ts5.5/audioworklet.generated.d.ts +++ b/baselines/ts5.5/audioworklet.generated.d.ts @@ -789,7 +789,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -1880,7 +1880,7 @@ interface QueuingStrategySize { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; + (controller: TransformStreamDefaultController): Promise; } interface TransformerStartCallback { @@ -1888,15 +1888,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + (chunk: I, controller: TransformStreamDefaultController): Promise; } interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; + (): Promise; } interface UnderlyingSinkStartCallback { @@ -1904,15 +1904,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + (chunk: W, controller: WritableStreamDefaultController): Promise; } interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; + (controller: ReadableStreamController): Promise; } interface UnderlyingSourceStartCallback { diff --git a/baselines/ts5.5/dom.generated.d.ts b/baselines/ts5.5/dom.generated.d.ts index b94da6da0..b83c4d1d3 100644 --- a/baselines/ts5.5/dom.generated.d.ts +++ b/baselines/ts5.5/dom.generated.d.ts @@ -10027,7 +10027,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/anchors) */ - readonly anchors: HTMLCollectionOf; + readonly anchors: HTMLCollection; /** * The **`applets`** property of the Document returns an empty HTMLCollection. * @deprecated @@ -10132,7 +10132,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/embeds) */ - readonly embeds: HTMLCollectionOf; + readonly embeds: HTMLCollection; /** * **`fgColor`** gets/sets the foreground color, or text color, of the current document. * @deprecated @@ -10145,7 +10145,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/forms) */ - readonly forms: HTMLCollectionOf; + readonly forms: HTMLCollection; /** * The **`fragmentDirective`** read-only property of the Document interface returns the FragmentDirective for the current document. * @@ -10182,7 +10182,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/images) */ - readonly images: HTMLCollectionOf; + readonly images: HTMLCollection; /** * The **`Document.implementation`** property returns a A DOMImplementation object. * @@ -10213,7 +10213,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/links) */ - readonly links: HTMLCollectionOf; + readonly links: HTMLCollection; /** * The **`Document.location`** read-only property returns a and provides methods for changing that URL and loading another URL. * @@ -10245,7 +10245,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/plugins) */ - readonly plugins: HTMLCollectionOf; + readonly plugins: HTMLCollection; /** * The **`Document.readyState`** property describes the loading state of the document. * @@ -10270,7 +10270,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/scripts) */ - readonly scripts: HTMLCollectionOf; + readonly scripts: HTMLCollection; /** * The **`scrollingElement`** read-only property of the scrolls the document. * @@ -10517,7 +10517,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByClassName) */ - getElementsByClassName(classNames: string): HTMLCollectionOf; + getElementsByClassName(classNames: string): HTMLCollection; /** * The **`getElementsByName()`** method of the Document object returns a NodeList Collection of elements with a given `name` attribute in the document. * @@ -10529,21 +10529,21 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByTagName) */ - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: K): HTMLCollection; /** @deprecated */ - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: string): HTMLCollectionOf; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: string): HTMLCollection; /** * Returns a list of elements with the given tag name belonging to the given namespace. * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByTagNameNS) */ - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollection; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollection; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollection; + getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollection; /** * The **`getSelection()`** method of the Document interface returns the Selection object associated with this document, representing the range of text selected by the user, or the current position of the caret. * @@ -11149,27 +11149,27 @@ interface Element extends Node, ARIAMixin, Animatable, ChildNode, NonDocumentTyp * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getElementsByClassName) */ - getElementsByClassName(classNames: string): HTMLCollectionOf; + getElementsByClassName(classNames: string): HTMLCollection; /** * The **`Element.getElementsByTagName()`** method returns a live All descendants of the specified element are searched, but not the element itself. * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getElementsByTagName) */ - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: K): HTMLCollection; /** @deprecated */ - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: string): HTMLCollectionOf; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: string): HTMLCollection; /** * The **`Element.getElementsByTagNameNS()`** method returns a live HTMLCollection of elements with the given tag name belonging to the given namespace. * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getElementsByTagNameNS) */ - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollection; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollection; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollection; + getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollection; /** * The **`getHTML()`** method of the Element interface is used to serialize an element's DOM to an HTML string. * @@ -13675,7 +13675,7 @@ declare var HTMLCanvasElement: { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection) */ -interface HTMLCollectionBase { +interface HTMLCollection { /** * The **`HTMLCollection.length`** property returns the number of items in a HTMLCollection. * @@ -13687,17 +13687,14 @@ interface HTMLCollectionBase { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection/item) */ - item(index: number): Element | null; - [index: number]: Element; -} - -interface HTMLCollection extends HTMLCollectionBase { + item(index: number): E | null; /** * The **`namedItem()`** method of the HTMLCollection interface returns the first Element in the collection whose `id` or `name` attribute match the specified name, or `null` if no element matches. * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection/namedItem) */ - namedItem(name: string): Element | null; + namedItem(name: string): E | N | null; + [index: number]: E; } declare var HTMLCollection: { @@ -13705,12 +13702,6 @@ declare var HTMLCollection: { new(): HTMLCollection; }; -interface HTMLCollectionOf extends HTMLCollectionBase { - item(index: number): T | null; - namedItem(name: string): T | null; - [index: number]: T; -} - /** * The **`HTMLDListElement`** interface provides special properties (beyond those of the regular HTMLElement interface it also has available to it by inheritance) for manipulating definition list (dl) elements. * @@ -13769,7 +13760,7 @@ interface HTMLDataListElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLDataListElement/options) */ - readonly options: HTMLCollectionOf; + readonly options: HTMLCollection; addEventListener(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -14271,7 +14262,7 @@ declare var HTMLFontElement: { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLFormControlsCollection) */ -interface HTMLFormControlsCollection extends HTMLCollectionBase { +interface HTMLFormControlsCollection extends HTMLCollection { /** * The **`HTMLFormControlsCollection.namedItem()`** method returns the RadioNodeList or the Element in the collection whose `name` or `id` match the specified name, or `null` if no node matches. * @@ -15504,7 +15495,7 @@ interface HTMLMapElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMapElement/areas) */ - readonly areas: HTMLCollection; + readonly areas: HTMLCollection; /** * The **`name`** property of the HTMLMapElement represents the unique name `` element. * @@ -16278,7 +16269,7 @@ declare var HTMLOptionElement: { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLOptionsCollection) */ -interface HTMLOptionsCollection extends HTMLCollectionOf { +interface HTMLOptionsCollection extends HTMLCollection { /** * The **`length`** property of the HTMLOptionsCollection interface returns the number of option elements in the collection. * @@ -16732,7 +16723,7 @@ interface HTMLSelectElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/selectedOptions) */ - readonly selectedOptions: HTMLCollectionOf; + readonly selectedOptions: HTMLCollection; /** * The **`size`** property of the HTMLSelectElement interface specifies the number of options, or rows, that should be visible at one time. * @@ -17234,7 +17225,7 @@ interface HTMLTableElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLTableElement/rows) */ - readonly rows: HTMLCollectionOf; + readonly rows: HTMLCollection; /** * The **`HTMLTableElement.rules`** property indicates which cell borders to render in the table. * @deprecated @@ -17254,7 +17245,7 @@ interface HTMLTableElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tBodies) */ - readonly tBodies: HTMLCollectionOf; + readonly tBodies: HTMLCollection; /** * The **`HTMLTableElement.tFoot`** property represents the `null` if there is no such element. * @@ -17372,7 +17363,7 @@ interface HTMLTableRowElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/cells) */ - readonly cells: HTMLCollectionOf; + readonly cells: HTMLCollection; /** * The **`ch`** property of the HTMLTableRowElement interface does nothing. * @deprecated @@ -17461,7 +17452,7 @@ interface HTMLTableSectionElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/rows) */ - readonly rows: HTMLCollectionOf; + readonly rows: HTMLCollection; /** * The **`vAlign`** property of the HTMLTableSectionElement interface is a string indicating how to vertically align text in a thead, tbody or tfoot table section. * @deprecated @@ -21100,7 +21091,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -37360,7 +37351,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -38555,7 +38546,7 @@ interface ResizeObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; + (controller: TransformStreamDefaultController): Promise; } interface TransformerStartCallback { @@ -38563,15 +38554,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + (chunk: I, controller: TransformStreamDefaultController): Promise; } interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; + (): Promise; } interface UnderlyingSinkStartCallback { @@ -38579,15 +38570,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + (chunk: W, controller: WritableStreamDefaultController): Promise; } interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; + (controller: ReadableStreamController): Promise; } interface UnderlyingSourceStartCallback { @@ -38603,7 +38594,7 @@ interface VideoFrameRequestCallback { } interface ViewTransitionUpdateCallback { - (): any; + (): Promise; } interface VoidFunction { diff --git a/baselines/ts5.5/dom.iterable.generated.d.ts b/baselines/ts5.5/dom.iterable.generated.d.ts index 3bf93bb9a..f6d0d95cb 100644 --- a/baselines/ts5.5/dom.iterable.generated.d.ts +++ b/baselines/ts5.5/dom.iterable.generated.d.ts @@ -142,14 +142,10 @@ interface HTMLAllCollection { [Symbol.iterator](): IterableIterator; } -interface HTMLCollectionBase { +interface HTMLCollection { [Symbol.iterator](): IterableIterator; } -interface HTMLCollectionOf { - [Symbol.iterator](): IterableIterator; -} - interface HTMLFormElement { [Symbol.iterator](): IterableIterator; } diff --git a/baselines/ts5.5/serviceworker.generated.d.ts b/baselines/ts5.5/serviceworker.generated.d.ts index 42749c941..51a81db8e 100644 --- a/baselines/ts5.5/serviceworker.generated.d.ts +++ b/baselines/ts5.5/serviceworker.generated.d.ts @@ -5107,7 +5107,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -11271,7 +11271,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; + (controller: TransformStreamDefaultController): Promise; } interface TransformerStartCallback { @@ -11279,15 +11279,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + (chunk: I, controller: TransformStreamDefaultController): Promise; } interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; + (): Promise; } interface UnderlyingSinkStartCallback { @@ -11295,15 +11295,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + (chunk: W, controller: WritableStreamDefaultController): Promise; } interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; + (controller: ReadableStreamController): Promise; } interface UnderlyingSourceStartCallback { @@ -11489,6 +11489,8 @@ type GLsizei = number; type GLsizeiptr = number; type GLuint = number; type GLuint64 = number; +/** @deprecated */ +type HTMLCollectionOf = HTMLCollection; type HashAlgorithmIdentifier = AlgorithmIdentifier; type HeadersInit = [string, string][] | Record | Headers; type IDBValidKey = number | string | Date | BufferSource | IDBValidKey[]; diff --git a/baselines/ts5.5/sharedworker.generated.d.ts b/baselines/ts5.5/sharedworker.generated.d.ts index e1dd7e2be..ab535660b 100644 --- a/baselines/ts5.5/sharedworker.generated.d.ts +++ b/baselines/ts5.5/sharedworker.generated.d.ts @@ -4790,7 +4790,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -10140,7 +10140,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -10997,7 +10997,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; + (controller: TransformStreamDefaultController): Promise; } interface TransformerStartCallback { @@ -11005,15 +11005,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + (chunk: I, controller: TransformStreamDefaultController): Promise; } interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; + (): Promise; } interface UnderlyingSinkStartCallback { @@ -11021,15 +11021,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + (chunk: W, controller: WritableStreamDefaultController): Promise; } interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; + (controller: ReadableStreamController): Promise; } interface UnderlyingSourceStartCallback { @@ -11178,6 +11178,8 @@ type GLsizei = number; type GLsizeiptr = number; type GLuint = number; type GLuint64 = number; +/** @deprecated */ +type HTMLCollectionOf = HTMLCollection; type HashAlgorithmIdentifier = AlgorithmIdentifier; type HeadersInit = [string, string][] | Record | Headers; type IDBValidKey = number | string | Date | BufferSource | IDBValidKey[]; diff --git a/baselines/ts5.5/webworker.generated.d.ts b/baselines/ts5.5/webworker.generated.d.ts index be3f9748b..2cf64fd35 100644 --- a/baselines/ts5.5/webworker.generated.d.ts +++ b/baselines/ts5.5/webworker.generated.d.ts @@ -3543,7 +3543,7 @@ interface DedicatedWorkerGlobalScopeEventMap extends WorkerGlobalScopeEventMap, * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope) */ -interface DedicatedWorkerGlobalScope extends WorkerGlobalScope, AnimationFrameProvider, MessageEventTarget { +interface DedicatedWorkerGlobalScope extends WorkerGlobalScope, AnimationFrameProvider, MessageEventTarget { /** * The **`name`** read-only property of the the Worker.Worker constructor can pass to get a reference to the DedicatedWorkerGlobalScope. * @@ -5968,7 +5968,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -12068,7 +12068,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -12941,7 +12941,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; + (controller: TransformStreamDefaultController): Promise; } interface TransformerStartCallback { @@ -12949,15 +12949,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + (chunk: I, controller: TransformStreamDefaultController): Promise; } interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; + (): Promise; } interface UnderlyingSinkStartCallback { @@ -12965,15 +12965,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + (chunk: W, controller: WritableStreamDefaultController): Promise; } interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; + (controller: ReadableStreamController): Promise; } interface UnderlyingSourceStartCallback { @@ -13146,6 +13146,8 @@ type GLsizei = number; type GLsizeiptr = number; type GLuint = number; type GLuint64 = number; +/** @deprecated */ +type HTMLCollectionOf = HTMLCollection; type HashAlgorithmIdentifier = AlgorithmIdentifier; type HeadersInit = [string, string][] | Record | Headers; type IDBValidKey = number | string | Date | BufferSource | IDBValidKey[]; diff --git a/baselines/ts5.6/audioworklet.generated.d.ts b/baselines/ts5.6/audioworklet.generated.d.ts index ac598321d..f3a5117b5 100644 --- a/baselines/ts5.6/audioworklet.generated.d.ts +++ b/baselines/ts5.6/audioworklet.generated.d.ts @@ -789,7 +789,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -1880,7 +1880,7 @@ interface QueuingStrategySize { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; + (controller: TransformStreamDefaultController): Promise; } interface TransformerStartCallback { @@ -1888,15 +1888,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + (chunk: I, controller: TransformStreamDefaultController): Promise; } interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; + (): Promise; } interface UnderlyingSinkStartCallback { @@ -1904,15 +1904,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + (chunk: W, controller: WritableStreamDefaultController): Promise; } interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; + (controller: ReadableStreamController): Promise; } interface UnderlyingSourceStartCallback { diff --git a/baselines/ts5.6/dom.generated.d.ts b/baselines/ts5.6/dom.generated.d.ts index 14a864267..9a64005b3 100644 --- a/baselines/ts5.6/dom.generated.d.ts +++ b/baselines/ts5.6/dom.generated.d.ts @@ -10035,7 +10035,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/anchors) */ - readonly anchors: HTMLCollectionOf; + readonly anchors: HTMLCollection; /** * The **`applets`** property of the Document returns an empty HTMLCollection. * @deprecated @@ -10140,7 +10140,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/embeds) */ - readonly embeds: HTMLCollectionOf; + readonly embeds: HTMLCollection; /** * **`fgColor`** gets/sets the foreground color, or text color, of the current document. * @deprecated @@ -10153,7 +10153,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/forms) */ - readonly forms: HTMLCollectionOf; + readonly forms: HTMLCollection; /** * The **`fragmentDirective`** read-only property of the Document interface returns the FragmentDirective for the current document. * @@ -10190,7 +10190,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/images) */ - readonly images: HTMLCollectionOf; + readonly images: HTMLCollection; /** * The **`Document.implementation`** property returns a A DOMImplementation object. * @@ -10221,7 +10221,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/links) */ - readonly links: HTMLCollectionOf; + readonly links: HTMLCollection; /** * The **`Document.location`** read-only property returns a and provides methods for changing that URL and loading another URL. * @@ -10253,7 +10253,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/plugins) */ - readonly plugins: HTMLCollectionOf; + readonly plugins: HTMLCollection; /** * The **`Document.readyState`** property describes the loading state of the document. * @@ -10278,7 +10278,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/scripts) */ - readonly scripts: HTMLCollectionOf; + readonly scripts: HTMLCollection; /** * The **`scrollingElement`** read-only property of the scrolls the document. * @@ -10525,7 +10525,7 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByClassName) */ - getElementsByClassName(classNames: string): HTMLCollectionOf; + getElementsByClassName(classNames: string): HTMLCollection; /** * The **`getElementsByName()`** method of the Document object returns a NodeList Collection of elements with a given `name` attribute in the document. * @@ -10537,21 +10537,21 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByTagName) */ - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: K): HTMLCollection; /** @deprecated */ - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: string): HTMLCollectionOf; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: string): HTMLCollection; /** * Returns a list of elements with the given tag name belonging to the given namespace. * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByTagNameNS) */ - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollection; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollection; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollection; + getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollection; /** * The **`getSelection()`** method of the Document interface returns the Selection object associated with this document, representing the range of text selected by the user, or the current position of the caret. * @@ -11159,27 +11159,27 @@ interface Element extends Node, ARIAMixin, Animatable, ChildNode, NonDocumentTyp * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getElementsByClassName) */ - getElementsByClassName(classNames: string): HTMLCollectionOf; + getElementsByClassName(classNames: string): HTMLCollection; /** * The **`Element.getElementsByTagName()`** method returns a live All descendants of the specified element are searched, but not the element itself. * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getElementsByTagName) */ - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: K): HTMLCollection; /** @deprecated */ - getElementsByTagName(qualifiedName: K): HTMLCollectionOf; - getElementsByTagName(qualifiedName: string): HTMLCollectionOf; + getElementsByTagName(qualifiedName: K): HTMLCollection; + getElementsByTagName(qualifiedName: string): HTMLCollection; /** * The **`Element.getElementsByTagNameNS()`** method returns a live HTMLCollection of elements with the given tag name belonging to the given namespace. * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getElementsByTagNameNS) */ - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollectionOf; - getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollection; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollection; + getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollection; + getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollection; /** * The **`getHTML()`** method of the Element interface is used to serialize an element's DOM to an HTML string. * @@ -13688,7 +13688,7 @@ declare var HTMLCanvasElement: { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection) */ -interface HTMLCollectionBase { +interface HTMLCollection { /** * The **`HTMLCollection.length`** property returns the number of items in a HTMLCollection. * @@ -13700,17 +13700,14 @@ interface HTMLCollectionBase { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection/item) */ - item(index: number): Element | null; - [index: number]: Element; -} - -interface HTMLCollection extends HTMLCollectionBase { + item(index: number): E | null; /** * The **`namedItem()`** method of the HTMLCollection interface returns the first Element in the collection whose `id` or `name` attribute match the specified name, or `null` if no element matches. * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection/namedItem) */ - namedItem(name: string): Element | null; + namedItem(name: string): E | N | null; + [index: number]: E; } declare var HTMLCollection: { @@ -13718,12 +13715,6 @@ declare var HTMLCollection: { new(): HTMLCollection; }; -interface HTMLCollectionOf extends HTMLCollectionBase { - item(index: number): T | null; - namedItem(name: string): T | null; - [index: number]: T; -} - /** * The **`HTMLDListElement`** interface provides special properties (beyond those of the regular HTMLElement interface it also has available to it by inheritance) for manipulating definition list (dl) elements. * @@ -13782,7 +13773,7 @@ interface HTMLDataListElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLDataListElement/options) */ - readonly options: HTMLCollectionOf; + readonly options: HTMLCollection; addEventListener(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: HTMLDataListElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; @@ -14284,7 +14275,7 @@ declare var HTMLFontElement: { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLFormControlsCollection) */ -interface HTMLFormControlsCollection extends HTMLCollectionBase { +interface HTMLFormControlsCollection extends HTMLCollection { /** * The **`HTMLFormControlsCollection.namedItem()`** method returns the RadioNodeList or the Element in the collection whose `name` or `id` match the specified name, or `null` if no node matches. * @@ -15522,7 +15513,7 @@ interface HTMLMapElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMapElement/areas) */ - readonly areas: HTMLCollection; + readonly areas: HTMLCollection; /** * The **`name`** property of the HTMLMapElement represents the unique name `` element. * @@ -16296,7 +16287,7 @@ declare var HTMLOptionElement: { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLOptionsCollection) */ -interface HTMLOptionsCollection extends HTMLCollectionOf { +interface HTMLOptionsCollection extends HTMLCollection { /** * The **`length`** property of the HTMLOptionsCollection interface returns the number of option elements in the collection. * @@ -16752,7 +16743,7 @@ interface HTMLSelectElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/selectedOptions) */ - readonly selectedOptions: HTMLCollectionOf; + readonly selectedOptions: HTMLCollection; /** * The **`size`** property of the HTMLSelectElement interface specifies the number of options, or rows, that should be visible at one time. * @@ -17255,7 +17246,7 @@ interface HTMLTableElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLTableElement/rows) */ - readonly rows: HTMLCollectionOf; + readonly rows: HTMLCollection; /** * The **`HTMLTableElement.rules`** property indicates which cell borders to render in the table. * @deprecated @@ -17275,7 +17266,7 @@ interface HTMLTableElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tBodies) */ - readonly tBodies: HTMLCollectionOf; + readonly tBodies: HTMLCollection; /** * The **`HTMLTableElement.tFoot`** property represents the `null` if there is no such element. * @@ -17393,7 +17384,7 @@ interface HTMLTableRowElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/cells) */ - readonly cells: HTMLCollectionOf; + readonly cells: HTMLCollection; /** * The **`ch`** property of the HTMLTableRowElement interface does nothing. * @deprecated @@ -17482,7 +17473,7 @@ interface HTMLTableSectionElement extends HTMLElement { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/rows) */ - readonly rows: HTMLCollectionOf; + readonly rows: HTMLCollection; /** * The **`vAlign`** property of the HTMLTableSectionElement interface is a string indicating how to vertically align text in a thead, tbody or tfoot table section. * @deprecated @@ -21121,7 +21112,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -37383,7 +37374,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -38578,7 +38569,7 @@ interface ResizeObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; + (controller: TransformStreamDefaultController): Promise; } interface TransformerStartCallback { @@ -38586,15 +38577,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + (chunk: I, controller: TransformStreamDefaultController): Promise; } interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; + (): Promise; } interface UnderlyingSinkStartCallback { @@ -38602,15 +38593,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + (chunk: W, controller: WritableStreamDefaultController): Promise; } interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; + (controller: ReadableStreamController): Promise; } interface UnderlyingSourceStartCallback { @@ -38626,7 +38617,7 @@ interface VideoFrameRequestCallback { } interface ViewTransitionUpdateCallback { - (): any; + (): Promise; } interface VoidFunction { diff --git a/baselines/ts5.6/dom.iterable.generated.d.ts b/baselines/ts5.6/dom.iterable.generated.d.ts index f26da3b31..76cc88620 100644 --- a/baselines/ts5.6/dom.iterable.generated.d.ts +++ b/baselines/ts5.6/dom.iterable.generated.d.ts @@ -146,14 +146,10 @@ interface HTMLAllCollection { [Symbol.iterator](): ArrayIterator; } -interface HTMLCollectionBase { +interface HTMLCollection { [Symbol.iterator](): ArrayIterator; } -interface HTMLCollectionOf { - [Symbol.iterator](): ArrayIterator; -} - interface HTMLFormElement { [Symbol.iterator](): ArrayIterator; } diff --git a/baselines/ts5.6/serviceworker.generated.d.ts b/baselines/ts5.6/serviceworker.generated.d.ts index 42749c941..51a81db8e 100644 --- a/baselines/ts5.6/serviceworker.generated.d.ts +++ b/baselines/ts5.6/serviceworker.generated.d.ts @@ -5107,7 +5107,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -11271,7 +11271,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; + (controller: TransformStreamDefaultController): Promise; } interface TransformerStartCallback { @@ -11279,15 +11279,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + (chunk: I, controller: TransformStreamDefaultController): Promise; } interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; + (): Promise; } interface UnderlyingSinkStartCallback { @@ -11295,15 +11295,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + (chunk: W, controller: WritableStreamDefaultController): Promise; } interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; + (controller: ReadableStreamController): Promise; } interface UnderlyingSourceStartCallback { @@ -11489,6 +11489,8 @@ type GLsizei = number; type GLsizeiptr = number; type GLuint = number; type GLuint64 = number; +/** @deprecated */ +type HTMLCollectionOf = HTMLCollection; type HashAlgorithmIdentifier = AlgorithmIdentifier; type HeadersInit = [string, string][] | Record | Headers; type IDBValidKey = number | string | Date | BufferSource | IDBValidKey[]; diff --git a/baselines/ts5.6/sharedworker.generated.d.ts b/baselines/ts5.6/sharedworker.generated.d.ts index e1dd7e2be..ab535660b 100644 --- a/baselines/ts5.6/sharedworker.generated.d.ts +++ b/baselines/ts5.6/sharedworker.generated.d.ts @@ -4790,7 +4790,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -10140,7 +10140,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -10997,7 +10997,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; + (controller: TransformStreamDefaultController): Promise; } interface TransformerStartCallback { @@ -11005,15 +11005,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + (chunk: I, controller: TransformStreamDefaultController): Promise; } interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; + (): Promise; } interface UnderlyingSinkStartCallback { @@ -11021,15 +11021,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + (chunk: W, controller: WritableStreamDefaultController): Promise; } interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; + (controller: ReadableStreamController): Promise; } interface UnderlyingSourceStartCallback { @@ -11178,6 +11178,8 @@ type GLsizei = number; type GLsizeiptr = number; type GLuint = number; type GLuint64 = number; +/** @deprecated */ +type HTMLCollectionOf = HTMLCollection; type HashAlgorithmIdentifier = AlgorithmIdentifier; type HeadersInit = [string, string][] | Record | Headers; type IDBValidKey = number | string | Date | BufferSource | IDBValidKey[]; diff --git a/baselines/ts5.6/webworker.generated.d.ts b/baselines/ts5.6/webworker.generated.d.ts index be3f9748b..2cf64fd35 100644 --- a/baselines/ts5.6/webworker.generated.d.ts +++ b/baselines/ts5.6/webworker.generated.d.ts @@ -3543,7 +3543,7 @@ interface DedicatedWorkerGlobalScopeEventMap extends WorkerGlobalScopeEventMap, * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope) */ -interface DedicatedWorkerGlobalScope extends WorkerGlobalScope, AnimationFrameProvider, MessageEventTarget { +interface DedicatedWorkerGlobalScope extends WorkerGlobalScope, AnimationFrameProvider, MessageEventTarget { /** * The **`name`** read-only property of the the Worker.Worker constructor can pass to get a reference to the DedicatedWorkerGlobalScope. * @@ -5968,7 +5968,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -12068,7 +12068,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -12941,7 +12941,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; + (controller: TransformStreamDefaultController): Promise; } interface TransformerStartCallback { @@ -12949,15 +12949,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + (chunk: I, controller: TransformStreamDefaultController): Promise; } interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; + (): Promise; } interface UnderlyingSinkStartCallback { @@ -12965,15 +12965,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + (chunk: W, controller: WritableStreamDefaultController): Promise; } interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; + (controller: ReadableStreamController): Promise; } interface UnderlyingSourceStartCallback { @@ -13146,6 +13146,8 @@ type GLsizei = number; type GLsizeiptr = number; type GLuint = number; type GLuint64 = number; +/** @deprecated */ +type HTMLCollectionOf = HTMLCollection; type HashAlgorithmIdentifier = AlgorithmIdentifier; type HeadersInit = [string, string][] | Record | Headers; type IDBValidKey = number | string | Date | BufferSource | IDBValidKey[]; diff --git a/baselines/webworker.generated.d.ts b/baselines/webworker.generated.d.ts index b8a2a5c53..14c72a2d2 100644 --- a/baselines/webworker.generated.d.ts +++ b/baselines/webworker.generated.d.ts @@ -3543,7 +3543,7 @@ interface DedicatedWorkerGlobalScopeEventMap extends WorkerGlobalScopeEventMap, * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope) */ -interface DedicatedWorkerGlobalScope extends WorkerGlobalScope, AnimationFrameProvider, MessageEventTarget { +interface DedicatedWorkerGlobalScope extends WorkerGlobalScope, AnimationFrameProvider, MessageEventTarget { /** * The **`name`** read-only property of the the Worker.Worker constructor can pass to get a reference to the DedicatedWorkerGlobalScope. * @@ -5968,7 +5968,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -12068,7 +12068,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -12941,7 +12941,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): void | PromiseLike; + (controller: TransformStreamDefaultController): Promise; } interface TransformerStartCallback { @@ -12949,15 +12949,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; + (chunk: I, controller: TransformStreamDefaultController): Promise; } interface UnderlyingSinkAbortCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSinkCloseCallback { - (): void | PromiseLike; + (): Promise; } interface UnderlyingSinkStartCallback { @@ -12965,15 +12965,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; + (chunk: W, controller: WritableStreamDefaultController): Promise; } interface UnderlyingSourceCancelCallback { - (reason?: any): void | PromiseLike; + (reason?: any): Promise; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): void | PromiseLike; + (controller: ReadableStreamController): Promise; } interface UnderlyingSourceStartCallback { @@ -13146,6 +13146,8 @@ type GLsizei = number; type GLsizeiptr = number; type GLuint = number; type GLuint64 = number; +/** @deprecated */ +type HTMLCollectionOf = HTMLCollection; type HashAlgorithmIdentifier = AlgorithmIdentifier; type HeadersInit = [string, string][] | Record | Headers; type IDBValidKey = number | string | Date | BufferSource | IDBValidKey[]; diff --git a/inputfiles/addedTypes.jsonc b/inputfiles/addedTypes.jsonc index fbc48d8dd..d7d4ae852 100644 --- a/inputfiles/addedTypes.jsonc +++ b/inputfiles/addedTypes.jsonc @@ -695,45 +695,6 @@ ] } }, - "HTMLCollectionOf": { - "name": "HTMLCollectionOf", - "typeParameters": [ - { - "name": "T", - "extends": "Element" - } - ], - "exposed": "Window", - "extends": "HTMLCollection", - "methods": { - "method": { - "item": { - "getter": true, - "signature": [ - { - "nullable": true, - "overrideType": "T", - "param": [ - { - "name": "index", - "type": "unsigned long" - } - ] - } - ], - "specs": "html5", - "name": "item" - }, - "namedItem": { - "name": "namedItem", - "overrideSignatures": [ - "namedItem(name: string): T | null" - ] - } - } - }, - "noInterfaceObject": true - }, "Element": { "name": "Element", "methods": { @@ -742,7 +703,7 @@ "name": "getElementsByClassName", "signature": { "0": { - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" } } }, @@ -1618,6 +1579,17 @@ } ] }, + { + "name": "HTMLCollectionOf", + "deprecated": true, + "typeParameters": [ + { + "name": "T", + "extends": "Element" + } + ], + "overrideType": "HTMLCollection" + }, { "name": "ReadableStreamReadResult", "typeParameters": [ diff --git a/inputfiles/knownTypes.json b/inputfiles/knownTypes.json index d0ba44099..9746c695f 100644 --- a/inputfiles/knownTypes.json +++ b/inputfiles/knownTypes.json @@ -83,6 +83,7 @@ "HkdfParams", "HmacImportParams", "HmacKeyGenParams", + "HTMLCollectionOf", "ImageBitmapRenderingContextSettings", "NamedCurve", "Pbkdf2Params", diff --git a/inputfiles/overridingTypes.jsonc b/inputfiles/overridingTypes.jsonc index 8a5a30d30..11f025e6e 100644 --- a/inputfiles/overridingTypes.jsonc +++ b/inputfiles/overridingTypes.jsonc @@ -824,13 +824,13 @@ "getElementsByTagNameNS": { "name": "getElementsByTagNameNS", "additionalSignatures": [ - "getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1999/xhtml\", localName: string): HTMLCollectionOf", - "getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/2000/svg\", localName: string): HTMLCollectionOf", - "getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1998/Math/MathML\", localName: string): HTMLCollectionOf" + "getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1999/xhtml\", localName: string): HTMLCollection", + "getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/2000/svg\", localName: string): HTMLCollection", + "getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1998/Math/MathML\", localName: string): HTMLCollection" ], "signature": { "0": { - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" } } }, @@ -838,7 +838,7 @@ "name": "getElementsByClassName", "signature": { "0": { - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" } } }, @@ -874,31 +874,31 @@ }, "anchors": { "name": "anchors", - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" }, "embeds": { "name": "embeds", - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" }, "forms": { "name": "forms", - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" }, "images": { "name": "images", - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" }, "links": { "name": "links", - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" }, "plugins": { "name": "plugins", - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" }, "scripts": { "name": "scripts", - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" }, "location": { // Pre-TS-5.1 hack to make document.location assignable @@ -1506,7 +1506,7 @@ }, "selectedOptions": { "name": "selectedOptions", - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" }, "labels": { "name": "labels", @@ -1523,7 +1523,7 @@ "property": { "options": { "name": "options", - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" } } } @@ -1570,11 +1570,11 @@ "property": { "rows": { "name": "rows", - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" }, "tBodies": { "name": "tBodies", - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" } } } @@ -1584,7 +1584,7 @@ "property": { "rows": { "name": "rows", - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" } } } @@ -1595,13 +1595,13 @@ "getElementsByTagNameNS": { "name": "getElementsByTagNameNS", "additionalSignatures": [ - "getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1999/xhtml\", localName: string): HTMLCollectionOf", - "getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/2000/svg\", localName: string): HTMLCollectionOf", - "getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1998/Math/MathML\", localName: string): HTMLCollectionOf" + "getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1999/xhtml\", localName: string): HTMLCollection", + "getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/2000/svg\", localName: string): HTMLCollection", + "getElementsByTagNameNS(namespaceURI: \"http://www.w3.org/1998/Math/MathML\", localName: string): HTMLCollection" ], "signature": { "0": { - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" } } } @@ -1717,7 +1717,7 @@ ] }, "HTMLOptionsCollection": { - "extends": "HTMLCollectionOf" + "extends": "HTMLCollection" }, "SubtleCrypto": { "methods": { @@ -2137,7 +2137,7 @@ "property": { "cells": { "name": "cells", - "overrideType": "HTMLCollectionOf" + "overrideType": "HTMLCollection" } } } @@ -2567,6 +2567,16 @@ } } }, + "HTMLMapElement": { + "properties": { + "property": { + "areas": { + "name": "areas", + "overrideType": "HTMLCollection" + } + } + } + }, "HTMLMarqueeElement": { "element": [ { @@ -3550,6 +3560,39 @@ "ContactAddress": { "name": "PaymentAddress" }, + "HTMLCollection": { + "typeParameters": [ + { + "name": "E", + "extends": "Element", + "default": "Element" + }, + { + "name": "N", + "default": "never" + } + ], + "methods": { + "method": { + "item": { + "overrideSignatures": [ + "item(index: number): E | null" + ] + }, + "namedItem": { + "overrideSignatures": [ + "namedItem(name: string): E | N | null" + ] + } + } + }, + "overrideIndexSignatures": [ + "[index: number]: E" + ] + }, + "HTMLFormControlsCollection": { + "extends": "HTMLCollection" + }, "HTMLMediaElement": { "properties": { "property": { diff --git a/src/build/emitter.ts b/src/build/emitter.ts index 14189ed17..46c312310 100644 --- a/src/build/emitter.ts +++ b/src/build/emitter.ts @@ -21,15 +21,6 @@ enum EmitScope { } const tsKeywords = new Set(["default", "delete", "continue"]); -const extendConflictsBaseTypes: Record< - string, - { extendType: string[]; memberNames: Set } -> = { - HTMLCollection: { - extendType: ["HTMLFormControlsCollection"], - memberNames: new Set(["namedItem"]), - }, -}; // Namespaces that have been in form of interfaces for years // and can't be converted to namespaces without breaking type packages @@ -59,8 +50,6 @@ function createTextWriter(newLine: string) { let output: string; let indent: number; let lineStart: boolean; - /** print declarations conflicting with base interface to a side list to write them under a different name later */ - let stack: { content: string; indent: number }[] = []; function getIndentString(level: number) { return " ".repeat(level); @@ -78,7 +67,6 @@ function createTextWriter(newLine: string) { output = ""; indent = 0; lineStart = true; - stack = []; } function endLine() { @@ -104,25 +92,6 @@ function createTextWriter(newLine: string) { write(c); endLine(); }, - - clearStack() { - stack = []; - }, - stackIsEmpty() { - return stack.length === 0; - }, - printLineToStack(content: string) { - stack.push({ content, indent }); - }, - printStackContent() { - stack.forEach((e) => { - const oldIndent = indent; - indent = e.indent; - this.printLine(e.content); - indent = oldIndent; - }); - }, - getResult() { return output; }, @@ -511,7 +480,7 @@ export function emitWebIdl( } function emitConstant(c: Browser.Constant) { - emitComments(c, printer.printLine); + emitComments(c); printer.printLine(`readonly ${c.name}: ${c.value};`); } @@ -543,7 +512,7 @@ export function emitWebIdl( } function getName(i: Browser.Interface) { - return extendConflictsBaseTypes[i.name] ? `${i.name}Base` : i.name; + return i.name; } function getNameWithTypeParameters( @@ -600,15 +569,15 @@ export function emitWebIdl( const paramName = m.signature[0].param![0].name; for (const mapName of tagNameMapNames) { printer.printLine( - `getElementsByTagName(${paramName}: K): HTMLCollectionOf<${mapName}[K]>;`, + `getElementsByTagName(${paramName}: K): HTMLCollection<${mapName}[K]>;`, ); } printer.printLine("/** @deprecated */"); printer.printLine( - `getElementsByTagName(${paramName}: K): HTMLCollectionOf;`, + `getElementsByTagName(${paramName}: K): HTMLCollection;`, ); printer.printLine( - `getElementsByTagName(${paramName}: string): HTMLCollectionOf;`, + `getElementsByTagName(${paramName}: string): HTMLCollection;`, ); } } @@ -781,7 +750,7 @@ export function emitWebIdl( `interface ${getNameWithTypeParameters(cb.typeParameters, cb.name)} {`, ); printer.increaseIndent(); - emitSignatures(cb, "", "", printer.printLine, true); + emitSignatures(cb, "", ""); printer.decreaseIndent(); printer.printLine("}"); printer.printLine(""); @@ -848,7 +817,7 @@ export function emitWebIdl( emitScope: EmitScope, p: Browser.Property, ) { - emitComments(p, printer.printLine); + emitComments(p); // Treat window.name specially because of // - https://github.com/Microsoft/TypeScript/issues/9850 @@ -916,15 +885,12 @@ export function emitWebIdl( } } - function emitComments( - entity: { - comment?: string; - deprecated?: boolean | string; - secureContext?: boolean; - mdnUrl?: string; - }, - print: (s: string) => void, - ) { + function emitComments(entity: { + comment?: string; + deprecated?: boolean | string; + secureContext?: boolean; + mdnUrl?: string; + }) { const comments = entity.comment?.split("\n") ?? []; const deprecated = typeof entity.deprecated === "string" @@ -944,11 +910,11 @@ export function emitWebIdl( } if (comments.length > 1) { - print("/**"); - comments.forEach((l) => print(` * ${l}`.trimEnd())); - print(" */"); + printer.printLine("/**"); + comments.forEach((l) => printer.printLine(` * ${l}`.trimEnd())); + printer.printLine(" */"); } else if (comments.length == 1) { - print(`/** ${comments[0]} */`); + printer.printLine(`/** ${comments[0]} */`); } } @@ -966,20 +932,8 @@ export function emitWebIdl( } } - function emitMethod( - prefix: string, - m: Browser.Method, - conflictedMembers: Set, - ) { - function printLine(content: string) { - if (m.name && conflictedMembers.has(m.name)) { - printer.printLineToStack(content); - } else { - printer.printLine(content); - } - } - - emitComments(m, printLine); + function emitMethod(prefix: string, m: Browser.Method) { + emitComments(m); switch (m.name) { case "createElement": @@ -994,21 +948,20 @@ export function emitWebIdl( return emitQuerySelectorAllOverloads(m); } - emitSignatures(m, prefix, m.name, printLine); + emitSignatures(m, prefix, m.name); } function emitSignature( s: Browser.Signature, prefix: string | undefined, name: string | undefined, - printLine: (s: string) => void, shouldResolvePromise?: boolean, ) { const paramsString = s.param ? paramsToString(s.param) : ""; const resolved = shouldResolvePromise ? resolvePromise(s) : s; const returnType = convertDomTypeToTsReturnType(resolved); - emitComments(s, printLine); - printLine( + emitComments(s); + printer.printLine( `${prefix || ""}${getNameWithTypeParameters( s.typeParameters, name || "", @@ -1020,15 +973,18 @@ export function emitWebIdl( method: Browser.AnonymousMethod, prefix: string, name: string, - printLine: (s: string) => void, shouldResolvePromise?: boolean, ) { if (method.overrideSignatures) { - method.overrideSignatures!.forEach((s) => printLine(`${prefix}${s};`)); + method.overrideSignatures!.forEach((s) => + printer.printLine(`${prefix}${s};`), + ); } else if (method.signature) { - method.additionalSignatures?.forEach((s) => printLine(`${prefix}${s};`)); + method.additionalSignatures?.forEach((s) => + printer.printLine(`${prefix}${s};`), + ); method.signature.forEach((sig) => - emitSignature(sig, prefix, name, printLine, shouldResolvePromise), + emitSignature(sig, prefix, name, shouldResolvePromise), ); } } @@ -1037,7 +993,6 @@ export function emitWebIdl( prefix: string, emitScope: EmitScope, i: Browser.Interface, - conflictedMembers: Set, ) { // If prefix is not empty, then this is the global declare function addEventListener, we want to override this // Otherwise, this is EventTarget.addEventListener, we want to keep that. @@ -1064,7 +1019,7 @@ export function emitWebIdl( } }) .sort(compareName) - .forEach((m) => emitMethod(prefix, m, conflictedMembers)); + .forEach((m) => emitMethod(prefix, m)); } if (i.anonymousMethods && emitScope === EmitScope.InstanceOnly) { const stringifier = i.anonymousMethods.method.find((m) => m.stringifier); @@ -1107,14 +1062,11 @@ export function emitWebIdl( emitScope: EmitScope, i: Browser.Interface, ) { - const conflictedMembers = extendConflictsBaseTypes[i.name] - ? extendConflictsBaseTypes[i.name].memberNames - : new Set(); emitProperties(prefix, emitScope, i); const methodPrefix = prefix.startsWith("declare var") ? "declare function " : ""; - emitMethods(methodPrefix, emitScope, i, conflictedMembers); + emitMethods(methodPrefix, emitScope, i); if (emitScope === EmitScope.InstanceOnly) { emitIteratorForEach(i); } @@ -1202,8 +1154,8 @@ export function emitWebIdl( // Emit constructor signature if (constructor) { - emitComments(constructor, printer.print); - emitSignatures(constructor, "", "new", printer.printLine); + emitComments(constructor); + emitSignatures(constructor, "", "new"); } else { printer.printLine(`new(): ${i.name};`); } @@ -1265,38 +1217,15 @@ export function emitWebIdl( } function emitInterfaceDeclaration(i: Browser.Interface) { - function processIName(iName: string) { - return extendConflictsBaseTypes[iName] ? `${iName}Base` : iName; - } - - function processMixinName(mixinName: string) { - if (allInterfacesMap[mixinName].typeParameters?.length === 1) { - return `${mixinName}<${i.name}>`; - } - return mixinName; - } - - const processedIName = processIName(i.name); - - if (processedIName !== i.name) { - printer.printLineToStack( - `interface ${getNameWithTypeParameters( - i.typeParameters, - i.name, - )} extends ${processedIName} {`, - ); - } - - emitComments(i, printer.printLine); + emitComments(i); printer.print( - `interface ${getNameWithTypeParameters(i.typeParameters, processedIName)}`, + `interface ${getNameWithTypeParameters(i.typeParameters, i.name)}`, ); const finalExtends = [i.extends || "Object"] - .concat(getImplementList(i.name).map(processMixinName)) - .filter((i) => i !== "Object") - .map(processIName); + .concat(getImplementList(i.name)) + .filter((i) => i !== "Object"); if (finalExtends.length) { printer.print(` extends ${assertUnique(finalExtends).join(", ")}`); @@ -1428,7 +1357,6 @@ export function emitWebIdl( } function emitInterface(i: Browser.Interface) { - printer.clearStack(); emitInterfaceEventMap(i); emitInterfaceDeclaration(i); @@ -1442,12 +1370,6 @@ export function emitWebIdl( printer.decreaseIndent(); printer.printLine("}"); printer.printLine(""); - - if (!printer.stackIsEmpty()) { - printer.printStackContent(); - printer.printLine("}"); - printer.printLine(""); - } } function emitNonCallbackInterfaces() { @@ -1490,7 +1412,7 @@ export function emitWebIdl( } emitProperties("var ", EmitScope.InstanceOnly, namespace); - emitMethods("function ", EmitScope.InstanceOnly, namespace, new Set()); + emitMethods("function ", EmitScope.InstanceOnly, namespace); printer.decreaseIndent(); printer.printLine("}"); @@ -1518,7 +1440,7 @@ export function emitWebIdl( mapToArray(dict.members.member) .sort(compareName) .forEach((m) => { - emitComments(m, printer.printLine); + emitComments(m); printer.printLine( `${m.name}${m.required ? "" : "?"}: ${convertDomTypeToTsType(m)};`, ); @@ -1540,7 +1462,7 @@ export function emitWebIdl( } function emitTypeDef(typeDef: Browser.TypeDef) { - emitComments(typeDef, printer.printLine); + emitComments(typeDef); printer.printLine( `type ${getNameWithTypeParameters( typeDef.typeParameters, @@ -1690,7 +1612,7 @@ export function emitWebIdl( : ""; methods.forEach((m) => { - emitComments({ comment: comments?.[m.name] }, printer.printLine); + emitComments({ comment: comments?.[m.name] }); printer.printLine( `${m.name}(${paramsString}): ${iteratorType}<${m.type}>;`, ); @@ -1836,7 +1758,7 @@ export function emitWebIdl( ); printer.increaseIndent(); - methodsWithSequence.forEach((m) => emitMethod("", m, new Set())); + methodsWithSequence.forEach((m) => emitMethod("", m)); if (subtypes) { emitIterableMethods(i, name, subtypes); From 8acd7f46dcd9402430c53f9487e77e60f07dc4ee Mon Sep 17 00:00:00 2001 From: Bashamega Date: Sun, 27 Jul 2025 13:41:29 +0300 Subject: [PATCH 2/2] - --- baselines/audioworklet.generated.d.ts | 16 +- baselines/dom.generated.d.ts | 27 ++-- baselines/dom.iterable.generated.d.ts | 2 +- baselines/serviceworker.generated.d.ts | 16 +- baselines/sharedworker.generated.d.ts | 18 +-- baselines/ts5.5/audioworklet.generated.d.ts | 16 +- baselines/ts5.5/dom.generated.d.ts | 27 ++-- baselines/ts5.5/dom.iterable.generated.d.ts | 2 +- baselines/ts5.5/serviceworker.generated.d.ts | 16 +- baselines/ts5.5/sharedworker.generated.d.ts | 18 +-- baselines/ts5.5/webworker.generated.d.ts | 20 +-- baselines/ts5.6/audioworklet.generated.d.ts | 16 +- baselines/ts5.6/dom.generated.d.ts | 27 ++-- baselines/ts5.6/dom.iterable.generated.d.ts | 2 +- baselines/ts5.6/serviceworker.generated.d.ts | 16 +- baselines/ts5.6/sharedworker.generated.d.ts | 18 +-- baselines/ts5.6/webworker.generated.d.ts | 20 +-- baselines/webworker.generated.d.ts | 20 +-- src/build/emitter.ts | 156 ++++++++++++++----- 19 files changed, 270 insertions(+), 183 deletions(-) diff --git a/baselines/audioworklet.generated.d.ts b/baselines/audioworklet.generated.d.ts index 8ec349977..f72aed98b 100644 --- a/baselines/audioworklet.generated.d.ts +++ b/baselines/audioworklet.generated.d.ts @@ -789,7 +789,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -1880,7 +1880,7 @@ interface QueuingStrategySize { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): Promise; + (controller: TransformStreamDefaultController): void | PromiseLike; } interface TransformerStartCallback { @@ -1888,15 +1888,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): Promise; + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; } interface UnderlyingSinkAbortCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSinkCloseCallback { - (): Promise; + (): void | PromiseLike; } interface UnderlyingSinkStartCallback { @@ -1904,15 +1904,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): Promise; + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; } interface UnderlyingSourceCancelCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): Promise; + (controller: ReadableStreamController): void | PromiseLike; } interface UnderlyingSourceStartCallback { diff --git a/baselines/dom.generated.d.ts b/baselines/dom.generated.d.ts index 0e0eed63b..5c8d9e791 100644 --- a/baselines/dom.generated.d.ts +++ b/baselines/dom.generated.d.ts @@ -13688,7 +13688,7 @@ declare var HTMLCanvasElement: { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection) */ -interface HTMLCollection { +interface HTMLCollectionBase { /** * The **`HTMLCollection.length`** property returns the number of items in a HTMLCollection. * @@ -13701,13 +13701,16 @@ interface HTMLCollection { * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection/item) */ item(index: number): E | null; + [index: number]: E; +} + +interface HTMLCollection extends HTMLCollectionBase { /** * The **`namedItem()`** method of the HTMLCollection interface returns the first Element in the collection whose `id` or `name` attribute match the specified name, or `null` if no element matches. * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection/namedItem) */ namedItem(name: string): E | N | null; - [index: number]: E; } declare var HTMLCollection: { @@ -21112,7 +21115,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -37374,7 +37377,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -38569,7 +38572,7 @@ interface ResizeObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): Promise; + (controller: TransformStreamDefaultController): void | PromiseLike; } interface TransformerStartCallback { @@ -38577,15 +38580,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): Promise; + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; } interface UnderlyingSinkAbortCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSinkCloseCallback { - (): Promise; + (): void | PromiseLike; } interface UnderlyingSinkStartCallback { @@ -38593,15 +38596,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): Promise; + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; } interface UnderlyingSourceCancelCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): Promise; + (controller: ReadableStreamController): void | PromiseLike; } interface UnderlyingSourceStartCallback { @@ -38617,7 +38620,7 @@ interface VideoFrameRequestCallback { } interface ViewTransitionUpdateCallback { - (): Promise; + (): any; } interface VoidFunction { diff --git a/baselines/dom.iterable.generated.d.ts b/baselines/dom.iterable.generated.d.ts index 0810b415c..d7e82303e 100644 --- a/baselines/dom.iterable.generated.d.ts +++ b/baselines/dom.iterable.generated.d.ts @@ -146,7 +146,7 @@ interface HTMLAllCollection { [Symbol.iterator](): ArrayIterator; } -interface HTMLCollection { +interface HTMLCollectionBase { [Symbol.iterator](): ArrayIterator; } diff --git a/baselines/serviceworker.generated.d.ts b/baselines/serviceworker.generated.d.ts index b98c6506b..c60f37977 100644 --- a/baselines/serviceworker.generated.d.ts +++ b/baselines/serviceworker.generated.d.ts @@ -5107,7 +5107,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -11271,7 +11271,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): Promise; + (controller: TransformStreamDefaultController): void | PromiseLike; } interface TransformerStartCallback { @@ -11279,15 +11279,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): Promise; + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; } interface UnderlyingSinkAbortCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSinkCloseCallback { - (): Promise; + (): void | PromiseLike; } interface UnderlyingSinkStartCallback { @@ -11295,15 +11295,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): Promise; + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; } interface UnderlyingSourceCancelCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): Promise; + (controller: ReadableStreamController): void | PromiseLike; } interface UnderlyingSourceStartCallback { diff --git a/baselines/sharedworker.generated.d.ts b/baselines/sharedworker.generated.d.ts index 306c124e3..35af05efd 100644 --- a/baselines/sharedworker.generated.d.ts +++ b/baselines/sharedworker.generated.d.ts @@ -4790,7 +4790,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -10140,7 +10140,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -10997,7 +10997,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): Promise; + (controller: TransformStreamDefaultController): void | PromiseLike; } interface TransformerStartCallback { @@ -11005,15 +11005,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): Promise; + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; } interface UnderlyingSinkAbortCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSinkCloseCallback { - (): Promise; + (): void | PromiseLike; } interface UnderlyingSinkStartCallback { @@ -11021,15 +11021,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): Promise; + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; } interface UnderlyingSourceCancelCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): Promise; + (controller: ReadableStreamController): void | PromiseLike; } interface UnderlyingSourceStartCallback { diff --git a/baselines/ts5.5/audioworklet.generated.d.ts b/baselines/ts5.5/audioworklet.generated.d.ts index f3a5117b5..ac598321d 100644 --- a/baselines/ts5.5/audioworklet.generated.d.ts +++ b/baselines/ts5.5/audioworklet.generated.d.ts @@ -789,7 +789,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -1880,7 +1880,7 @@ interface QueuingStrategySize { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): Promise; + (controller: TransformStreamDefaultController): void | PromiseLike; } interface TransformerStartCallback { @@ -1888,15 +1888,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): Promise; + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; } interface UnderlyingSinkAbortCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSinkCloseCallback { - (): Promise; + (): void | PromiseLike; } interface UnderlyingSinkStartCallback { @@ -1904,15 +1904,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): Promise; + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; } interface UnderlyingSourceCancelCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): Promise; + (controller: ReadableStreamController): void | PromiseLike; } interface UnderlyingSourceStartCallback { diff --git a/baselines/ts5.5/dom.generated.d.ts b/baselines/ts5.5/dom.generated.d.ts index b83c4d1d3..7ea6e39a2 100644 --- a/baselines/ts5.5/dom.generated.d.ts +++ b/baselines/ts5.5/dom.generated.d.ts @@ -13675,7 +13675,7 @@ declare var HTMLCanvasElement: { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection) */ -interface HTMLCollection { +interface HTMLCollectionBase { /** * The **`HTMLCollection.length`** property returns the number of items in a HTMLCollection. * @@ -13688,13 +13688,16 @@ interface HTMLCollection { * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection/item) */ item(index: number): E | null; + [index: number]: E; +} + +interface HTMLCollection extends HTMLCollectionBase { /** * The **`namedItem()`** method of the HTMLCollection interface returns the first Element in the collection whose `id` or `name` attribute match the specified name, or `null` if no element matches. * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection/namedItem) */ namedItem(name: string): E | N | null; - [index: number]: E; } declare var HTMLCollection: { @@ -21091,7 +21094,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -37351,7 +37354,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -38546,7 +38549,7 @@ interface ResizeObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): Promise; + (controller: TransformStreamDefaultController): void | PromiseLike; } interface TransformerStartCallback { @@ -38554,15 +38557,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): Promise; + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; } interface UnderlyingSinkAbortCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSinkCloseCallback { - (): Promise; + (): void | PromiseLike; } interface UnderlyingSinkStartCallback { @@ -38570,15 +38573,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): Promise; + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; } interface UnderlyingSourceCancelCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): Promise; + (controller: ReadableStreamController): void | PromiseLike; } interface UnderlyingSourceStartCallback { @@ -38594,7 +38597,7 @@ interface VideoFrameRequestCallback { } interface ViewTransitionUpdateCallback { - (): Promise; + (): any; } interface VoidFunction { diff --git a/baselines/ts5.5/dom.iterable.generated.d.ts b/baselines/ts5.5/dom.iterable.generated.d.ts index f6d0d95cb..ddab3c71f 100644 --- a/baselines/ts5.5/dom.iterable.generated.d.ts +++ b/baselines/ts5.5/dom.iterable.generated.d.ts @@ -142,7 +142,7 @@ interface HTMLAllCollection { [Symbol.iterator](): IterableIterator; } -interface HTMLCollection { +interface HTMLCollectionBase { [Symbol.iterator](): IterableIterator; } diff --git a/baselines/ts5.5/serviceworker.generated.d.ts b/baselines/ts5.5/serviceworker.generated.d.ts index 51a81db8e..1a68b35a1 100644 --- a/baselines/ts5.5/serviceworker.generated.d.ts +++ b/baselines/ts5.5/serviceworker.generated.d.ts @@ -5107,7 +5107,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -11271,7 +11271,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): Promise; + (controller: TransformStreamDefaultController): void | PromiseLike; } interface TransformerStartCallback { @@ -11279,15 +11279,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): Promise; + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; } interface UnderlyingSinkAbortCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSinkCloseCallback { - (): Promise; + (): void | PromiseLike; } interface UnderlyingSinkStartCallback { @@ -11295,15 +11295,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): Promise; + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; } interface UnderlyingSourceCancelCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): Promise; + (controller: ReadableStreamController): void | PromiseLike; } interface UnderlyingSourceStartCallback { diff --git a/baselines/ts5.5/sharedworker.generated.d.ts b/baselines/ts5.5/sharedworker.generated.d.ts index ab535660b..827716a1a 100644 --- a/baselines/ts5.5/sharedworker.generated.d.ts +++ b/baselines/ts5.5/sharedworker.generated.d.ts @@ -4790,7 +4790,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -10140,7 +10140,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -10997,7 +10997,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): Promise; + (controller: TransformStreamDefaultController): void | PromiseLike; } interface TransformerStartCallback { @@ -11005,15 +11005,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): Promise; + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; } interface UnderlyingSinkAbortCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSinkCloseCallback { - (): Promise; + (): void | PromiseLike; } interface UnderlyingSinkStartCallback { @@ -11021,15 +11021,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): Promise; + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; } interface UnderlyingSourceCancelCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): Promise; + (controller: ReadableStreamController): void | PromiseLike; } interface UnderlyingSourceStartCallback { diff --git a/baselines/ts5.5/webworker.generated.d.ts b/baselines/ts5.5/webworker.generated.d.ts index 2cf64fd35..6ab5bf35d 100644 --- a/baselines/ts5.5/webworker.generated.d.ts +++ b/baselines/ts5.5/webworker.generated.d.ts @@ -3543,7 +3543,7 @@ interface DedicatedWorkerGlobalScopeEventMap extends WorkerGlobalScopeEventMap, * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope) */ -interface DedicatedWorkerGlobalScope extends WorkerGlobalScope, AnimationFrameProvider, MessageEventTarget { +interface DedicatedWorkerGlobalScope extends WorkerGlobalScope, AnimationFrameProvider, MessageEventTarget { /** * The **`name`** read-only property of the the Worker.Worker constructor can pass to get a reference to the DedicatedWorkerGlobalScope. * @@ -5968,7 +5968,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -12068,7 +12068,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -12941,7 +12941,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): Promise; + (controller: TransformStreamDefaultController): void | PromiseLike; } interface TransformerStartCallback { @@ -12949,15 +12949,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): Promise; + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; } interface UnderlyingSinkAbortCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSinkCloseCallback { - (): Promise; + (): void | PromiseLike; } interface UnderlyingSinkStartCallback { @@ -12965,15 +12965,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): Promise; + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; } interface UnderlyingSourceCancelCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): Promise; + (controller: ReadableStreamController): void | PromiseLike; } interface UnderlyingSourceStartCallback { diff --git a/baselines/ts5.6/audioworklet.generated.d.ts b/baselines/ts5.6/audioworklet.generated.d.ts index f3a5117b5..ac598321d 100644 --- a/baselines/ts5.6/audioworklet.generated.d.ts +++ b/baselines/ts5.6/audioworklet.generated.d.ts @@ -789,7 +789,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -1880,7 +1880,7 @@ interface QueuingStrategySize { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): Promise; + (controller: TransformStreamDefaultController): void | PromiseLike; } interface TransformerStartCallback { @@ -1888,15 +1888,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): Promise; + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; } interface UnderlyingSinkAbortCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSinkCloseCallback { - (): Promise; + (): void | PromiseLike; } interface UnderlyingSinkStartCallback { @@ -1904,15 +1904,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): Promise; + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; } interface UnderlyingSourceCancelCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): Promise; + (controller: ReadableStreamController): void | PromiseLike; } interface UnderlyingSourceStartCallback { diff --git a/baselines/ts5.6/dom.generated.d.ts b/baselines/ts5.6/dom.generated.d.ts index 9a64005b3..053c4e930 100644 --- a/baselines/ts5.6/dom.generated.d.ts +++ b/baselines/ts5.6/dom.generated.d.ts @@ -13688,7 +13688,7 @@ declare var HTMLCanvasElement: { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection) */ -interface HTMLCollection { +interface HTMLCollectionBase { /** * The **`HTMLCollection.length`** property returns the number of items in a HTMLCollection. * @@ -13701,13 +13701,16 @@ interface HTMLCollection { * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection/item) */ item(index: number): E | null; + [index: number]: E; +} + +interface HTMLCollection extends HTMLCollectionBase { /** * The **`namedItem()`** method of the HTMLCollection interface returns the first Element in the collection whose `id` or `name` attribute match the specified name, or `null` if no element matches. * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection/namedItem) */ namedItem(name: string): E | N | null; - [index: number]: E; } declare var HTMLCollection: { @@ -21112,7 +21115,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -37374,7 +37377,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -38569,7 +38572,7 @@ interface ResizeObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): Promise; + (controller: TransformStreamDefaultController): void | PromiseLike; } interface TransformerStartCallback { @@ -38577,15 +38580,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): Promise; + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; } interface UnderlyingSinkAbortCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSinkCloseCallback { - (): Promise; + (): void | PromiseLike; } interface UnderlyingSinkStartCallback { @@ -38593,15 +38596,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): Promise; + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; } interface UnderlyingSourceCancelCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): Promise; + (controller: ReadableStreamController): void | PromiseLike; } interface UnderlyingSourceStartCallback { @@ -38617,7 +38620,7 @@ interface VideoFrameRequestCallback { } interface ViewTransitionUpdateCallback { - (): Promise; + (): any; } interface VoidFunction { diff --git a/baselines/ts5.6/dom.iterable.generated.d.ts b/baselines/ts5.6/dom.iterable.generated.d.ts index 76cc88620..688a76f01 100644 --- a/baselines/ts5.6/dom.iterable.generated.d.ts +++ b/baselines/ts5.6/dom.iterable.generated.d.ts @@ -146,7 +146,7 @@ interface HTMLAllCollection { [Symbol.iterator](): ArrayIterator; } -interface HTMLCollection { +interface HTMLCollectionBase { [Symbol.iterator](): ArrayIterator; } diff --git a/baselines/ts5.6/serviceworker.generated.d.ts b/baselines/ts5.6/serviceworker.generated.d.ts index 51a81db8e..1a68b35a1 100644 --- a/baselines/ts5.6/serviceworker.generated.d.ts +++ b/baselines/ts5.6/serviceworker.generated.d.ts @@ -5107,7 +5107,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -11271,7 +11271,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): Promise; + (controller: TransformStreamDefaultController): void | PromiseLike; } interface TransformerStartCallback { @@ -11279,15 +11279,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): Promise; + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; } interface UnderlyingSinkAbortCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSinkCloseCallback { - (): Promise; + (): void | PromiseLike; } interface UnderlyingSinkStartCallback { @@ -11295,15 +11295,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): Promise; + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; } interface UnderlyingSourceCancelCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): Promise; + (controller: ReadableStreamController): void | PromiseLike; } interface UnderlyingSourceStartCallback { diff --git a/baselines/ts5.6/sharedworker.generated.d.ts b/baselines/ts5.6/sharedworker.generated.d.ts index ab535660b..827716a1a 100644 --- a/baselines/ts5.6/sharedworker.generated.d.ts +++ b/baselines/ts5.6/sharedworker.generated.d.ts @@ -4790,7 +4790,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -10140,7 +10140,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -10997,7 +10997,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): Promise; + (controller: TransformStreamDefaultController): void | PromiseLike; } interface TransformerStartCallback { @@ -11005,15 +11005,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): Promise; + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; } interface UnderlyingSinkAbortCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSinkCloseCallback { - (): Promise; + (): void | PromiseLike; } interface UnderlyingSinkStartCallback { @@ -11021,15 +11021,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): Promise; + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; } interface UnderlyingSourceCancelCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): Promise; + (controller: ReadableStreamController): void | PromiseLike; } interface UnderlyingSourceStartCallback { diff --git a/baselines/ts5.6/webworker.generated.d.ts b/baselines/ts5.6/webworker.generated.d.ts index 2cf64fd35..6ab5bf35d 100644 --- a/baselines/ts5.6/webworker.generated.d.ts +++ b/baselines/ts5.6/webworker.generated.d.ts @@ -3543,7 +3543,7 @@ interface DedicatedWorkerGlobalScopeEventMap extends WorkerGlobalScopeEventMap, * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope) */ -interface DedicatedWorkerGlobalScope extends WorkerGlobalScope, AnimationFrameProvider, MessageEventTarget { +interface DedicatedWorkerGlobalScope extends WorkerGlobalScope, AnimationFrameProvider, MessageEventTarget { /** * The **`name`** read-only property of the the Worker.Worker constructor can pass to get a reference to the DedicatedWorkerGlobalScope. * @@ -5968,7 +5968,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -12068,7 +12068,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -12941,7 +12941,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): Promise; + (controller: TransformStreamDefaultController): void | PromiseLike; } interface TransformerStartCallback { @@ -12949,15 +12949,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): Promise; + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; } interface UnderlyingSinkAbortCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSinkCloseCallback { - (): Promise; + (): void | PromiseLike; } interface UnderlyingSinkStartCallback { @@ -12965,15 +12965,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): Promise; + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; } interface UnderlyingSourceCancelCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): Promise; + (controller: ReadableStreamController): void | PromiseLike; } interface UnderlyingSourceStartCallback { diff --git a/baselines/webworker.generated.d.ts b/baselines/webworker.generated.d.ts index 14c72a2d2..14d582beb 100644 --- a/baselines/webworker.generated.d.ts +++ b/baselines/webworker.generated.d.ts @@ -3543,7 +3543,7 @@ interface DedicatedWorkerGlobalScopeEventMap extends WorkerGlobalScopeEventMap, * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope) */ -interface DedicatedWorkerGlobalScope extends WorkerGlobalScope, AnimationFrameProvider, MessageEventTarget { +interface DedicatedWorkerGlobalScope extends WorkerGlobalScope, AnimationFrameProvider, MessageEventTarget { /** * The **`name`** read-only property of the the Worker.Worker constructor can pass to get a reference to the DedicatedWorkerGlobalScope. * @@ -5968,7 +5968,7 @@ interface MessagePortEventMap extends MessageEventTargetEventMap { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/MessagePort) */ -interface MessagePort extends EventTarget, MessageEventTarget { +interface MessagePort extends EventTarget, MessageEventTarget { /** * The **`close()`** method of the MessagePort interface disconnects the port, so it is no longer active. * @@ -12068,7 +12068,7 @@ interface WorkerEventMap extends AbstractWorkerEventMap, MessageEventTargetEvent * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Worker) */ -interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { +interface Worker extends EventTarget, AbstractWorker, MessageEventTarget { /** * The **`postMessage()`** method of the Worker interface sends a message to the worker. * @@ -12941,7 +12941,7 @@ interface ReportingObserverCallback { } interface TransformerFlushCallback { - (controller: TransformStreamDefaultController): Promise; + (controller: TransformStreamDefaultController): void | PromiseLike; } interface TransformerStartCallback { @@ -12949,15 +12949,15 @@ interface TransformerStartCallback { } interface TransformerTransformCallback { - (chunk: I, controller: TransformStreamDefaultController): Promise; + (chunk: I, controller: TransformStreamDefaultController): void | PromiseLike; } interface UnderlyingSinkAbortCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSinkCloseCallback { - (): Promise; + (): void | PromiseLike; } interface UnderlyingSinkStartCallback { @@ -12965,15 +12965,15 @@ interface UnderlyingSinkStartCallback { } interface UnderlyingSinkWriteCallback { - (chunk: W, controller: WritableStreamDefaultController): Promise; + (chunk: W, controller: WritableStreamDefaultController): void | PromiseLike; } interface UnderlyingSourceCancelCallback { - (reason?: any): Promise; + (reason?: any): void | PromiseLike; } interface UnderlyingSourcePullCallback { - (controller: ReadableStreamController): Promise; + (controller: ReadableStreamController): void | PromiseLike; } interface UnderlyingSourceStartCallback { diff --git a/src/build/emitter.ts b/src/build/emitter.ts index 46c312310..f19c8cc4f 100644 --- a/src/build/emitter.ts +++ b/src/build/emitter.ts @@ -21,6 +21,15 @@ enum EmitScope { } const tsKeywords = new Set(["default", "delete", "continue"]); +const extendConflictsBaseTypes: Record< + string, + { extendType: string[]; memberNames: Set } +> = { + HTMLCollection: { + extendType: ["HTMLFormControlsCollection"], + memberNames: new Set(["namedItem"]), + }, +}; // Namespaces that have been in form of interfaces for years // and can't be converted to namespaces without breaking type packages @@ -50,6 +59,8 @@ function createTextWriter(newLine: string) { let output: string; let indent: number; let lineStart: boolean; + /** print declarations conflicting with base interface to a side list to write them under a different name later */ + let stack: { content: string; indent: number }[] = []; function getIndentString(level: number) { return " ".repeat(level); @@ -67,6 +78,7 @@ function createTextWriter(newLine: string) { output = ""; indent = 0; lineStart = true; + stack = []; } function endLine() { @@ -92,6 +104,25 @@ function createTextWriter(newLine: string) { write(c); endLine(); }, + + clearStack() { + stack = []; + }, + stackIsEmpty() { + return stack.length === 0; + }, + printLineToStack(content: string) { + stack.push({ content, indent }); + }, + printStackContent() { + stack.forEach((e) => { + const oldIndent = indent; + indent = e.indent; + this.printLine(e.content); + indent = oldIndent; + }); + }, + getResult() { return output; }, @@ -480,7 +511,7 @@ export function emitWebIdl( } function emitConstant(c: Browser.Constant) { - emitComments(c); + emitComments(c, printer.printLine); printer.printLine(`readonly ${c.name}: ${c.value};`); } @@ -512,7 +543,7 @@ export function emitWebIdl( } function getName(i: Browser.Interface) { - return i.name; + return extendConflictsBaseTypes[i.name] ? `${i.name}Base` : i.name; } function getNameWithTypeParameters( @@ -750,7 +781,7 @@ export function emitWebIdl( `interface ${getNameWithTypeParameters(cb.typeParameters, cb.name)} {`, ); printer.increaseIndent(); - emitSignatures(cb, "", ""); + emitSignatures(cb, "", "", printer.printLine, true); printer.decreaseIndent(); printer.printLine("}"); printer.printLine(""); @@ -817,7 +848,7 @@ export function emitWebIdl( emitScope: EmitScope, p: Browser.Property, ) { - emitComments(p); + emitComments(p, printer.printLine); // Treat window.name specially because of // - https://github.com/Microsoft/TypeScript/issues/9850 @@ -885,12 +916,15 @@ export function emitWebIdl( } } - function emitComments(entity: { - comment?: string; - deprecated?: boolean | string; - secureContext?: boolean; - mdnUrl?: string; - }) { + function emitComments( + entity: { + comment?: string; + deprecated?: boolean | string; + secureContext?: boolean; + mdnUrl?: string; + }, + print: (s: string) => void, + ) { const comments = entity.comment?.split("\n") ?? []; const deprecated = typeof entity.deprecated === "string" @@ -910,11 +944,11 @@ export function emitWebIdl( } if (comments.length > 1) { - printer.printLine("/**"); - comments.forEach((l) => printer.printLine(` * ${l}`.trimEnd())); - printer.printLine(" */"); + print("/**"); + comments.forEach((l) => print(` * ${l}`.trimEnd())); + print(" */"); } else if (comments.length == 1) { - printer.printLine(`/** ${comments[0]} */`); + print(`/** ${comments[0]} */`); } } @@ -932,8 +966,20 @@ export function emitWebIdl( } } - function emitMethod(prefix: string, m: Browser.Method) { - emitComments(m); + function emitMethod( + prefix: string, + m: Browser.Method, + conflictedMembers: Set, + ) { + function printLine(content: string) { + if (m.name && conflictedMembers.has(m.name)) { + printer.printLineToStack(content); + } else { + printer.printLine(content); + } + } + + emitComments(m, printLine); switch (m.name) { case "createElement": @@ -948,20 +994,21 @@ export function emitWebIdl( return emitQuerySelectorAllOverloads(m); } - emitSignatures(m, prefix, m.name); + emitSignatures(m, prefix, m.name, printLine); } function emitSignature( s: Browser.Signature, prefix: string | undefined, name: string | undefined, + printLine: (s: string) => void, shouldResolvePromise?: boolean, ) { const paramsString = s.param ? paramsToString(s.param) : ""; const resolved = shouldResolvePromise ? resolvePromise(s) : s; const returnType = convertDomTypeToTsReturnType(resolved); - emitComments(s); - printer.printLine( + emitComments(s, printLine); + printLine( `${prefix || ""}${getNameWithTypeParameters( s.typeParameters, name || "", @@ -973,18 +1020,15 @@ export function emitWebIdl( method: Browser.AnonymousMethod, prefix: string, name: string, + printLine: (s: string) => void, shouldResolvePromise?: boolean, ) { if (method.overrideSignatures) { - method.overrideSignatures!.forEach((s) => - printer.printLine(`${prefix}${s};`), - ); + method.overrideSignatures!.forEach((s) => printLine(`${prefix}${s};`)); } else if (method.signature) { - method.additionalSignatures?.forEach((s) => - printer.printLine(`${prefix}${s};`), - ); + method.additionalSignatures?.forEach((s) => printLine(`${prefix}${s};`)); method.signature.forEach((sig) => - emitSignature(sig, prefix, name, shouldResolvePromise), + emitSignature(sig, prefix, name, printLine, shouldResolvePromise), ); } } @@ -993,6 +1037,7 @@ export function emitWebIdl( prefix: string, emitScope: EmitScope, i: Browser.Interface, + conflictedMembers: Set, ) { // If prefix is not empty, then this is the global declare function addEventListener, we want to override this // Otherwise, this is EventTarget.addEventListener, we want to keep that. @@ -1019,7 +1064,7 @@ export function emitWebIdl( } }) .sort(compareName) - .forEach((m) => emitMethod(prefix, m)); + .forEach((m) => emitMethod(prefix, m, conflictedMembers)); } if (i.anonymousMethods && emitScope === EmitScope.InstanceOnly) { const stringifier = i.anonymousMethods.method.find((m) => m.stringifier); @@ -1062,11 +1107,14 @@ export function emitWebIdl( emitScope: EmitScope, i: Browser.Interface, ) { + const conflictedMembers = extendConflictsBaseTypes[i.name] + ? extendConflictsBaseTypes[i.name].memberNames + : new Set(); emitProperties(prefix, emitScope, i); const methodPrefix = prefix.startsWith("declare var") ? "declare function " : ""; - emitMethods(methodPrefix, emitScope, i); + emitMethods(methodPrefix, emitScope, i, conflictedMembers); if (emitScope === EmitScope.InstanceOnly) { emitIteratorForEach(i); } @@ -1154,8 +1202,8 @@ export function emitWebIdl( // Emit constructor signature if (constructor) { - emitComments(constructor); - emitSignatures(constructor, "", "new"); + emitComments(constructor, printer.print); + emitSignatures(constructor, "", "new", printer.printLine); } else { printer.printLine(`new(): ${i.name};`); } @@ -1217,15 +1265,38 @@ export function emitWebIdl( } function emitInterfaceDeclaration(i: Browser.Interface) { - emitComments(i); + function processIName(iName: string) { + return extendConflictsBaseTypes[iName] ? `${iName}Base` : iName; + } + + function processMixinName(mixinName: string) { + if (allInterfacesMap[mixinName].typeParameters?.length === 1) { + return `${mixinName}<${i.name}>`; + } + return mixinName; + } + + const processedIName = processIName(i.name); + + if (processedIName !== i.name) { + printer.printLineToStack( + `interface ${getNameWithTypeParameters( + i.typeParameters, + i.name, + )} extends ${processedIName} {`, + ); + } + + emitComments(i, printer.printLine); printer.print( - `interface ${getNameWithTypeParameters(i.typeParameters, i.name)}`, + `interface ${getNameWithTypeParameters(i.typeParameters, processedIName)}`, ); const finalExtends = [i.extends || "Object"] - .concat(getImplementList(i.name)) - .filter((i) => i !== "Object"); + .concat(getImplementList(i.name).map(processMixinName)) + .filter((i) => i !== "Object") + .map(processIName); if (finalExtends.length) { printer.print(` extends ${assertUnique(finalExtends).join(", ")}`); @@ -1357,6 +1428,7 @@ export function emitWebIdl( } function emitInterface(i: Browser.Interface) { + printer.clearStack(); emitInterfaceEventMap(i); emitInterfaceDeclaration(i); @@ -1370,6 +1442,12 @@ export function emitWebIdl( printer.decreaseIndent(); printer.printLine("}"); printer.printLine(""); + + if (!printer.stackIsEmpty()) { + printer.printStackContent(); + printer.printLine("}"); + printer.printLine(""); + } } function emitNonCallbackInterfaces() { @@ -1412,7 +1490,7 @@ export function emitWebIdl( } emitProperties("var ", EmitScope.InstanceOnly, namespace); - emitMethods("function ", EmitScope.InstanceOnly, namespace); + emitMethods("function ", EmitScope.InstanceOnly, namespace, new Set()); printer.decreaseIndent(); printer.printLine("}"); @@ -1440,7 +1518,7 @@ export function emitWebIdl( mapToArray(dict.members.member) .sort(compareName) .forEach((m) => { - emitComments(m); + emitComments(m, printer.printLine); printer.printLine( `${m.name}${m.required ? "" : "?"}: ${convertDomTypeToTsType(m)};`, ); @@ -1462,7 +1540,7 @@ export function emitWebIdl( } function emitTypeDef(typeDef: Browser.TypeDef) { - emitComments(typeDef); + emitComments(typeDef, printer.printLine); printer.printLine( `type ${getNameWithTypeParameters( typeDef.typeParameters, @@ -1612,7 +1690,7 @@ export function emitWebIdl( : ""; methods.forEach((m) => { - emitComments({ comment: comments?.[m.name] }); + emitComments({ comment: comments?.[m.name] }, printer.printLine); printer.printLine( `${m.name}(${paramsString}): ${iteratorType}<${m.type}>;`, ); @@ -1758,7 +1836,7 @@ export function emitWebIdl( ); printer.increaseIndent(); - methodsWithSequence.forEach((m) => emitMethod("", m)); + methodsWithSequence.forEach((m) => emitMethod("", m, new Set())); if (subtypes) { emitIterableMethods(i, name, subtypes);