diff --git a/libraries/stdlib/wasm/src/org.w3c/org.khronos.webgl.kt b/libraries/stdlib/wasm/src/org.w3c/org.khronos.webgl.kt index 664a0e86364..fa434a77cf0 100644 --- a/libraries/stdlib/wasm/src/org.w3c/org.khronos.webgl.kt +++ b/libraries/stdlib/wasm/src/org.w3c/org.khronos.webgl.kt @@ -243,13 +243,17 @@ public external interface WebGLRenderingContextBase : JsAny { fun useProgram(program: WebGLProgram?) fun validateProgram(program: WebGLProgram?) fun vertexAttrib1f(index: Int, x: Float) - fun vertexAttrib1fv(index: Int, values: JsAny?) + fun vertexAttrib1fv(index: Int, values: Float32Array) + fun vertexAttrib1fv(index: Int, values: JsArray) fun vertexAttrib2f(index: Int, x: Float, y: Float) - fun vertexAttrib2fv(index: Int, values: JsAny?) + fun vertexAttrib2fv(index: Int, values: Float32Array) + fun vertexAttrib2fv(index: Int, values: JsArray) fun vertexAttrib3f(index: Int, x: Float, y: Float, z: Float) - fun vertexAttrib3fv(index: Int, values: JsAny?) + fun vertexAttrib3fv(index: Int, values: Float32Array) + fun vertexAttrib3fv(index: Int, values: JsArray) fun vertexAttrib4f(index: Int, x: Float, y: Float, z: Float, w: Float) - fun vertexAttrib4fv(index: Int, values: JsAny?) + fun vertexAttrib4fv(index: Int, values: Float32Array) + fun vertexAttrib4fv(index: Int, values: JsArray) fun vertexAttribPointer(index: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int) fun viewport(x: Int, y: Int, width: Int, height: Int) diff --git a/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.events.kt b/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.events.kt index be76523340a..c2f83d5405e 100644 --- a/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.events.kt +++ b/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.events.kt @@ -343,10 +343,18 @@ public external open class Event(type: String, eventInitDict: EventInit = define * Exposes the JavaScript [EventTarget](https://developer.mozilla.org/en/docs/Web/API/EventTarget) to Kotlin */ public external abstract class EventTarget : JsAny { - fun addEventListener(type: String, callback: EventListener?, options: JsAny? = definedExternally) - fun addEventListener(type: String, callback: ((Event) -> Unit)?, options: JsAny? = definedExternally) - fun removeEventListener(type: String, callback: EventListener?, options: JsAny? = definedExternally) - fun removeEventListener(type: String, callback: ((Event) -> Unit)?, options: JsAny? = definedExternally) + fun addEventListener(type: String, callback: EventListener?, options: AddEventListenerOptions) + fun addEventListener(type: String, callback: ((Event) -> Unit)?, options: AddEventListenerOptions) + fun addEventListener(type: String, callback: EventListener?, options: Boolean) + fun addEventListener(type: String, callback: ((Event) -> Unit)?, options: Boolean) + fun addEventListener(type: String, callback: EventListener?) + fun addEventListener(type: String, callback: ((Event) -> Unit)?) + fun removeEventListener(type: String, callback: EventListener?, options: EventListenerOptions) + fun removeEventListener(type: String, callback: ((Event) -> Unit)?, options: EventListenerOptions) + fun removeEventListener(type: String, callback: EventListener?, options: Boolean) + fun removeEventListener(type: String, callback: ((Event) -> Unit)?, options: Boolean) + fun removeEventListener(type: String, callback: EventListener?) + fun removeEventListener(type: String, callback: ((Event) -> Unit)?) fun dispatchEvent(event: Event): Boolean } diff --git a/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.kt b/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.kt index 94fa40cff42..7bfd16430dc 100644 --- a/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.kt +++ b/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.kt @@ -58,7 +58,9 @@ public external abstract class RadioNodeList : NodeList, UnionElementOrRadioNode public external abstract class HTMLOptionsCollection : HTMLCollection, JsAny { override var length: Int open var selectedIndex: Int - fun add(element: UnionHTMLOptGroupElementOrHTMLOptionElement, before: JsAny? = definedExternally) + fun add(element: UnionHTMLOptGroupElementOrHTMLOptionElement, before: HTMLElement) + fun add(element: UnionHTMLOptGroupElementOrHTMLOptionElement, before: Int) + fun add(element: UnionHTMLOptGroupElementOrHTMLOptionElement) fun remove(index: Int) } @@ -2034,7 +2036,9 @@ public external abstract class HTMLSelectElement : HTMLElement, ItemArrayLike Unit)? get() = definedExternally set(value) = definedExternally - var onerror: ((JsAny?, String, Int, Int, JsAny?) -> JsAny?)? + var onerror: ((JsAny? /* Event|String */, String, Int, Int, JsAny?) -> JsAny?)? get() = definedExternally set(value) = definedExternally var onfocus: ((FocusEvent) -> Unit)? @@ -3653,13 +3657,16 @@ public external interface WindowOrWorkerGlobalScope : JsAny { val caches: CacheStorage fun btoa(data: String): String fun atob(data: String): String - fun setTimeout(handler: JsAny?, timeout: Int = definedExternally, vararg arguments: JsAny?): Int + fun setTimeout(handler: String, timeout: Int = definedExternally, vararg arguments: JsAny?): Int + fun setTimeout(handler: () -> JsAny?, timeout: Int = definedExternally, vararg arguments: JsAny?): Int fun clearTimeout(handle: Int = definedExternally) - fun setInterval(handler: JsAny?, timeout: Int = definedExternally, vararg arguments: JsAny?): Int + fun setInterval(handler: String, timeout: Int = definedExternally, vararg arguments: JsAny?): Int + fun setInterval(handler: () -> JsAny?, timeout: Int = definedExternally, vararg arguments: JsAny?): Int fun clearInterval(handle: Int = definedExternally) fun createImageBitmap(image: ImageBitmapSource, options: ImageBitmapOptions = definedExternally): Promise fun createImageBitmap(image: ImageBitmapSource, sx: Int, sy: Int, sw: Int, sh: Int, options: ImageBitmapOptions = definedExternally): Promise - fun fetch(input: JsAny?, init: RequestInit = definedExternally): Promise + fun fetch(input: Request, init: RequestInit = definedExternally): Promise + fun fetch(input: String, init: RequestInit = definedExternally): Promise } /** @@ -3672,7 +3679,8 @@ public external abstract class Navigator : NavigatorID, NavigatorLanguage, Navig open val serviceWorker: ServiceWorkerContainer fun requestMediaKeySystemAccess(keySystem: String, supportedConfigurations: JsArray): Promise fun getUserMedia(constraints: MediaStreamConstraints, successCallback: (MediaStream) -> Unit, errorCallback: (JsAny) -> Unit) - fun vibrate(pattern: JsAny?): Boolean + fun vibrate(pattern: Int): Boolean + fun vibrate(pattern: JsArray): Boolean } /** @@ -3894,7 +3902,7 @@ public fun EventSourceInit(withCredentials: Boolean? = false): EventSourceInit { /** * Exposes the JavaScript [WebSocket](https://developer.mozilla.org/en/docs/Web/API/WebSocket) to Kotlin */ -public external open class WebSocket(url: String, protocols: JsAny? = definedExternally) : EventTarget, JsAny { +public external open class WebSocket(url: String, protocols: JsAny? /* String|JsArray */ = definedExternally) : EventTarget, JsAny { open val url: String open val readyState: Short open val bufferedAmount: JsNumber @@ -3985,7 +3993,7 @@ public external abstract class WorkerGlobalScope : EventTarget, WindowOrWorkerGl open val self: WorkerGlobalScope open val location: WorkerLocation open val navigator: WorkerNavigator - open var onerror: ((JsAny?, String, Int, Int, JsAny?) -> JsAny?)? + open var onerror: ((JsAny? /* Event|String */, String, Int, Int, JsAny?) -> JsAny?)? open var onlanguagechange: ((Event) -> Unit)? open var onoffline: ((Event) -> Unit)? open var ononline: ((Event) -> Unit)? @@ -4439,8 +4447,10 @@ public external interface ParentNode : JsAny { val lastElementChild: Element? get() = definedExternally val childElementCount: Int - fun prepend(vararg nodes: JsAny?) - fun append(vararg nodes: JsAny?) + fun prepend(vararg nodes: Node) + fun prepend(vararg nodes: String) + fun append(vararg nodes: Node) + fun append(vararg nodes: String) fun querySelector(selectors: String): Element? fun querySelectorAll(selectors: String): NodeList } @@ -4459,9 +4469,12 @@ public external interface NonDocumentTypeChildNode : JsAny { * Exposes the JavaScript [ChildNode](https://developer.mozilla.org/en/docs/Web/API/ChildNode) to Kotlin */ public external interface ChildNode : JsAny { - fun before(vararg nodes: JsAny?) - fun after(vararg nodes: JsAny?) - fun replaceWith(vararg nodes: JsAny?) + fun before(vararg nodes: Node) + fun before(vararg nodes: String) + fun after(vararg nodes: Node) + fun after(vararg nodes: String) + fun replaceWith(vararg nodes: Node) + fun replaceWith(vararg nodes: String) fun remove() } @@ -4695,7 +4708,7 @@ public external open class Document : Node, GlobalEventHandlers, DocumentAndElem override var ondurationchange: ((Event) -> Unit)? override var onemptied: ((Event) -> Unit)? override var onended: ((Event) -> Unit)? - override var onerror: ((JsAny?, String, Int, Int, JsAny?) -> JsAny?)? + override var onerror: ((JsAny? /* Event|String */, String, Int, Int, JsAny?) -> JsAny?)? override var onfocus: ((FocusEvent) -> Unit)? override var oninput: ((InputEvent) -> Unit)? override var oninvalid: ((Event) -> Unit)? @@ -4795,14 +4808,22 @@ public external open class Document : Node, GlobalEventHandlers, DocumentAndElem fun createTouchList(vararg touches: Touch): TouchList fun exitFullscreen(): Promise override fun getElementById(elementId: String): Element? - override fun prepend(vararg nodes: JsAny?) - override fun append(vararg nodes: JsAny?) + override fun prepend(vararg nodes: Node) + override fun prepend(vararg nodes: String) + override fun append(vararg nodes: Node) + override fun append(vararg nodes: String) override fun querySelector(selectors: String): Element? override fun querySelectorAll(selectors: String): NodeList override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): JsArray - override fun convertQuadFromNode(quad: JsAny?, from: JsAny?, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad - override fun convertRectFromNode(rect: DOMRectReadOnly, from: JsAny?, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad - override fun convertPointFromNode(point: DOMPointInit, from: JsAny?, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint + override fun convertQuadFromNode(quad: JsAny?, from: Text, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertQuadFromNode(quad: JsAny?, from: Element, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertQuadFromNode(quad: JsAny?, from: Document, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertRectFromNode(rect: DOMRectReadOnly, from: Text, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertRectFromNode(rect: DOMRectReadOnly, from: Element, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertRectFromNode(rect: DOMRectReadOnly, from: Document, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertPointFromNode(point: DOMPointInit, from: Text, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint + override fun convertPointFromNode(point: DOMPointInit, from: Element, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint + override fun convertPointFromNode(point: DOMPointInit, from: Document, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint companion object { val ELEMENT_NODE: Short @@ -4915,8 +4936,10 @@ public external open class DocumentFragment : Node, NonElementParentNode, Parent override val lastElementChild: Element? override val childElementCount: Int override fun getElementById(elementId: String): Element? - override fun prepend(vararg nodes: JsAny?) - override fun append(vararg nodes: JsAny?) + override fun prepend(vararg nodes: Node) + override fun prepend(vararg nodes: String) + override fun append(vararg nodes: Node) + override fun append(vararg nodes: String) override fun querySelector(selectors: String): Element? override fun querySelectorAll(selectors: String): NodeList @@ -5023,7 +5046,8 @@ public external abstract class Element : Node, ParentNode, NonDocumentTypeChildN fun getClientRects(): JsArray fun getBoundingClientRect(): DOMRect fun scrollIntoView() - fun scrollIntoView(arg: JsAny?) + fun scrollIntoView(arg: Boolean) + fun scrollIntoView(arg: JsAny) fun scroll(options: ScrollToOptions = definedExternally) fun scroll(x: Double, y: Double) fun scrollTo(options: ScrollToOptions = definedExternally) @@ -5166,12 +5190,21 @@ public external open class Text(data: String = definedExternally) : CharacterDat override val nextElementSibling: Element? fun splitText(offset: Int): Text override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): JsArray - override fun convertQuadFromNode(quad: JsAny?, from: JsAny?, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad - override fun convertRectFromNode(rect: DOMRectReadOnly, from: JsAny?, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad - override fun convertPointFromNode(point: DOMPointInit, from: JsAny?, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint - override fun before(vararg nodes: JsAny?) - override fun after(vararg nodes: JsAny?) - override fun replaceWith(vararg nodes: JsAny?) + override fun convertQuadFromNode(quad: JsAny?, from: Text, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertQuadFromNode(quad: JsAny?, from: Element, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertQuadFromNode(quad: JsAny?, from: Document, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertRectFromNode(rect: DOMRectReadOnly, from: Text, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertRectFromNode(rect: DOMRectReadOnly, from: Element, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertRectFromNode(rect: DOMRectReadOnly, from: Document, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertPointFromNode(point: DOMPointInit, from: Text, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint + override fun convertPointFromNode(point: DOMPointInit, from: Element, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint + override fun convertPointFromNode(point: DOMPointInit, from: Document, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint + override fun before(vararg nodes: Node) + override fun before(vararg nodes: String) + override fun after(vararg nodes: Node) + override fun after(vararg nodes: String) + override fun replaceWith(vararg nodes: Node) + override fun replaceWith(vararg nodes: String) override fun remove() companion object { @@ -5256,9 +5289,12 @@ public external abstract class ProcessingInstruction : CharacterData, LinkStyle, public external open class Comment(data: String = definedExternally) : CharacterData, JsAny { override val previousElementSibling: Element? override val nextElementSibling: Element? - override fun before(vararg nodes: JsAny?) - override fun after(vararg nodes: JsAny?) - override fun replaceWith(vararg nodes: JsAny?) + override fun before(vararg nodes: Node) + override fun before(vararg nodes: String) + override fun after(vararg nodes: Node) + override fun after(vararg nodes: String) + override fun replaceWith(vararg nodes: Node) + override fun replaceWith(vararg nodes: String) override fun remove() companion object { @@ -5703,13 +5739,13 @@ public external interface BoxQuadOptions : JsAny { var box: CSSBoxType? /* = CSSBoxType.BORDER */ get() = definedExternally set(value) = definedExternally - var relativeTo: JsAny? + var relativeTo: JsAny? /* Text|Element|CSSPseudoElement|Document */ get() = definedExternally set(value) = definedExternally } @Suppress("UNUSED_PARAMETER") -public fun BoxQuadOptions(box: CSSBoxType? = CSSBoxType.BORDER, relativeTo: JsAny? = undefined): BoxQuadOptions { js("return { box, relativeTo };") } +public fun BoxQuadOptions(box: CSSBoxType? = CSSBoxType.BORDER, relativeTo: JsAny? /* Text|Element|CSSPseudoElement|Document */ = undefined): BoxQuadOptions { js("return { box, relativeTo };") } public external interface ConvertCoordinateOptions : JsAny { var fromBox: CSSBoxType? /* = CSSBoxType.BORDER */ @@ -5728,9 +5764,15 @@ public fun ConvertCoordinateOptions(fromBox: CSSBoxType? = CSSBoxType.BORDER, to */ public external interface GeometryUtils : JsAny { fun getBoxQuads(options: BoxQuadOptions = definedExternally): JsArray - fun convertQuadFromNode(quad: JsAny?, from: JsAny?, options: ConvertCoordinateOptions = definedExternally): DOMQuad - fun convertRectFromNode(rect: DOMRectReadOnly, from: JsAny?, options: ConvertCoordinateOptions = definedExternally): DOMQuad - fun convertPointFromNode(point: DOMPointInit, from: JsAny?, options: ConvertCoordinateOptions = definedExternally): DOMPoint + fun convertQuadFromNode(quad: JsAny?, from: Text, options: ConvertCoordinateOptions = definedExternally): DOMQuad + fun convertQuadFromNode(quad: JsAny?, from: Element, options: ConvertCoordinateOptions = definedExternally): DOMQuad + fun convertQuadFromNode(quad: JsAny?, from: Document, options: ConvertCoordinateOptions = definedExternally): DOMQuad + fun convertRectFromNode(rect: DOMRectReadOnly, from: Text, options: ConvertCoordinateOptions = definedExternally): DOMQuad + fun convertRectFromNode(rect: DOMRectReadOnly, from: Element, options: ConvertCoordinateOptions = definedExternally): DOMQuad + fun convertRectFromNode(rect: DOMRectReadOnly, from: Document, options: ConvertCoordinateOptions = definedExternally): DOMQuad + fun convertPointFromNode(point: DOMPointInit, from: Text, options: ConvertCoordinateOptions = definedExternally): DOMPoint + fun convertPointFromNode(point: DOMPointInit, from: Element, options: ConvertCoordinateOptions = definedExternally): DOMPoint + fun convertPointFromNode(point: DOMPointInit, from: Document, options: ConvertCoordinateOptions = definedExternally): DOMPoint } /** @@ -5800,7 +5842,7 @@ public external open class Image(width: Int = definedExternally, height: Int = d override var ondurationchange: ((Event) -> Unit)? override var onemptied: ((Event) -> Unit)? override var onended: ((Event) -> Unit)? - override var onerror: ((JsAny?, String, Int, Int, JsAny?) -> JsAny?)? + override var onerror: ((JsAny? /* Event|String */, String, Int, Int, JsAny?) -> JsAny?)? override var onfocus: ((FocusEvent) -> Unit)? override var oninput: ((InputEvent) -> Unit)? override var oninvalid: ((Event) -> Unit)? @@ -5862,18 +5904,29 @@ public external open class Image(width: Int = definedExternally, height: Int = d override val previousElementSibling: Element? override val nextElementSibling: Element? override val assignedSlot: HTMLSlotElement? - override fun prepend(vararg nodes: JsAny?) - override fun append(vararg nodes: JsAny?) + override fun prepend(vararg nodes: Node) + override fun prepend(vararg nodes: String) + override fun append(vararg nodes: Node) + override fun append(vararg nodes: String) override fun querySelector(selectors: String): Element? override fun querySelectorAll(selectors: String): NodeList - override fun before(vararg nodes: JsAny?) - override fun after(vararg nodes: JsAny?) - override fun replaceWith(vararg nodes: JsAny?) + override fun before(vararg nodes: Node) + override fun before(vararg nodes: String) + override fun after(vararg nodes: Node) + override fun after(vararg nodes: String) + override fun replaceWith(vararg nodes: Node) + override fun replaceWith(vararg nodes: String) override fun remove() override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): JsArray - override fun convertQuadFromNode(quad: JsAny?, from: JsAny?, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad - override fun convertRectFromNode(rect: DOMRectReadOnly, from: JsAny?, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad - override fun convertPointFromNode(point: DOMPointInit, from: JsAny?, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint + override fun convertQuadFromNode(quad: JsAny?, from: Text, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertQuadFromNode(quad: JsAny?, from: Element, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertQuadFromNode(quad: JsAny?, from: Document, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertRectFromNode(rect: DOMRectReadOnly, from: Text, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertRectFromNode(rect: DOMRectReadOnly, from: Element, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertRectFromNode(rect: DOMRectReadOnly, from: Document, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertPointFromNode(point: DOMPointInit, from: Text, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint + override fun convertPointFromNode(point: DOMPointInit, from: Element, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint + override fun convertPointFromNode(point: DOMPointInit, from: Document, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint companion object { val ELEMENT_NODE: Short @@ -5920,7 +5973,7 @@ public external open class Audio(src: String = definedExternally) : HTMLAudioEle override var ondurationchange: ((Event) -> Unit)? override var onemptied: ((Event) -> Unit)? override var onended: ((Event) -> Unit)? - override var onerror: ((JsAny?, String, Int, Int, JsAny?) -> JsAny?)? + override var onerror: ((JsAny? /* Event|String */, String, Int, Int, JsAny?) -> JsAny?)? override var onfocus: ((FocusEvent) -> Unit)? override var oninput: ((InputEvent) -> Unit)? override var oninvalid: ((Event) -> Unit)? @@ -5982,18 +6035,29 @@ public external open class Audio(src: String = definedExternally) : HTMLAudioEle override val previousElementSibling: Element? override val nextElementSibling: Element? override val assignedSlot: HTMLSlotElement? - override fun prepend(vararg nodes: JsAny?) - override fun append(vararg nodes: JsAny?) + override fun prepend(vararg nodes: Node) + override fun prepend(vararg nodes: String) + override fun append(vararg nodes: Node) + override fun append(vararg nodes: String) override fun querySelector(selectors: String): Element? override fun querySelectorAll(selectors: String): NodeList - override fun before(vararg nodes: JsAny?) - override fun after(vararg nodes: JsAny?) - override fun replaceWith(vararg nodes: JsAny?) + override fun before(vararg nodes: Node) + override fun before(vararg nodes: String) + override fun after(vararg nodes: Node) + override fun after(vararg nodes: String) + override fun replaceWith(vararg nodes: Node) + override fun replaceWith(vararg nodes: String) override fun remove() override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): JsArray - override fun convertQuadFromNode(quad: JsAny?, from: JsAny?, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad - override fun convertRectFromNode(rect: DOMRectReadOnly, from: JsAny?, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad - override fun convertPointFromNode(point: DOMPointInit, from: JsAny?, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint + override fun convertQuadFromNode(quad: JsAny?, from: Text, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertQuadFromNode(quad: JsAny?, from: Element, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertQuadFromNode(quad: JsAny?, from: Document, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertRectFromNode(rect: DOMRectReadOnly, from: Text, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertRectFromNode(rect: DOMRectReadOnly, from: Element, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertRectFromNode(rect: DOMRectReadOnly, from: Document, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertPointFromNode(point: DOMPointInit, from: Text, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint + override fun convertPointFromNode(point: DOMPointInit, from: Element, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint + override fun convertPointFromNode(point: DOMPointInit, from: Document, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint companion object { val NETWORK_EMPTY: Short @@ -6052,7 +6116,7 @@ public external open class Option(text: String = definedExternally, value: Strin override var ondurationchange: ((Event) -> Unit)? override var onemptied: ((Event) -> Unit)? override var onended: ((Event) -> Unit)? - override var onerror: ((JsAny?, String, Int, Int, JsAny?) -> JsAny?)? + override var onerror: ((JsAny? /* Event|String */, String, Int, Int, JsAny?) -> JsAny?)? override var onfocus: ((FocusEvent) -> Unit)? override var oninput: ((InputEvent) -> Unit)? override var oninvalid: ((Event) -> Unit)? @@ -6114,18 +6178,29 @@ public external open class Option(text: String = definedExternally, value: Strin override val previousElementSibling: Element? override val nextElementSibling: Element? override val assignedSlot: HTMLSlotElement? - override fun prepend(vararg nodes: JsAny?) - override fun append(vararg nodes: JsAny?) + override fun prepend(vararg nodes: Node) + override fun prepend(vararg nodes: String) + override fun append(vararg nodes: Node) + override fun append(vararg nodes: String) override fun querySelector(selectors: String): Element? override fun querySelectorAll(selectors: String): NodeList - override fun before(vararg nodes: JsAny?) - override fun after(vararg nodes: JsAny?) - override fun replaceWith(vararg nodes: JsAny?) + override fun before(vararg nodes: Node) + override fun before(vararg nodes: String) + override fun after(vararg nodes: Node) + override fun after(vararg nodes: String) + override fun replaceWith(vararg nodes: Node) + override fun replaceWith(vararg nodes: String) override fun remove() override fun getBoxQuads(options: BoxQuadOptions /* = definedExternally */): JsArray - override fun convertQuadFromNode(quad: JsAny?, from: JsAny?, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad - override fun convertRectFromNode(rect: DOMRectReadOnly, from: JsAny?, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad - override fun convertPointFromNode(point: DOMPointInit, from: JsAny?, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint + override fun convertQuadFromNode(quad: JsAny?, from: Text, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertQuadFromNode(quad: JsAny?, from: Element, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertQuadFromNode(quad: JsAny?, from: Document, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertRectFromNode(rect: DOMRectReadOnly, from: Text, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertRectFromNode(rect: DOMRectReadOnly, from: Element, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertRectFromNode(rect: DOMRectReadOnly, from: Document, options: ConvertCoordinateOptions /* = definedExternally */): DOMQuad + override fun convertPointFromNode(point: DOMPointInit, from: Text, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint + override fun convertPointFromNode(point: DOMPointInit, from: Element, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint + override fun convertPointFromNode(point: DOMPointInit, from: Document, options: ConvertCoordinateOptions /* = definedExternally */): DOMPoint companion object { val ELEMENT_NODE: Short diff --git a/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.mediacapture.kt b/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.mediacapture.kt index 9880a9a6265..815bbef1dcc 100644 --- a/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.mediacapture.kt +++ b/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.mediacapture.kt @@ -175,61 +175,61 @@ public external interface MediaTrackConstraints : MediaTrackConstraintSet, JsAny } @Suppress("UNUSED_PARAMETER") -public fun MediaTrackConstraints(advanced: JsArray? = undefined, width: JsAny? = undefined, height: JsAny? = undefined, aspectRatio: JsAny? = undefined, frameRate: JsAny? = undefined, facingMode: JsAny? = undefined, resizeMode: JsAny? = undefined, volume: JsAny? = undefined, sampleRate: JsAny? = undefined, sampleSize: JsAny? = undefined, echoCancellation: JsAny? = undefined, autoGainControl: JsAny? = undefined, noiseSuppression: JsAny? = undefined, latency: JsAny? = undefined, channelCount: JsAny? = undefined, deviceId: JsAny? = undefined, groupId: JsAny? = undefined): MediaTrackConstraints { js("return { advanced, width, height, aspectRatio, frameRate, facingMode, resizeMode, volume, sampleRate, sampleSize, echoCancellation, autoGainControl, noiseSuppression, latency, channelCount, deviceId, groupId };") } +public fun MediaTrackConstraints(advanced: JsArray? = undefined, width: JsAny? /* Int|ConstrainULongRange */ = undefined, height: JsAny? /* Int|ConstrainULongRange */ = undefined, aspectRatio: JsAny? /* Double|ConstrainDoubleRange */ = undefined, frameRate: JsAny? /* Double|ConstrainDoubleRange */ = undefined, facingMode: JsAny? /* String|JsArray|ConstrainDOMStringParameters */ = undefined, resizeMode: JsAny? /* String|JsArray|ConstrainDOMStringParameters */ = undefined, volume: JsAny? /* Double|ConstrainDoubleRange */ = undefined, sampleRate: JsAny? /* Int|ConstrainULongRange */ = undefined, sampleSize: JsAny? /* Int|ConstrainULongRange */ = undefined, echoCancellation: JsAny? /* Boolean|ConstrainBooleanParameters */ = undefined, autoGainControl: JsAny? /* Boolean|ConstrainBooleanParameters */ = undefined, noiseSuppression: JsAny? /* Boolean|ConstrainBooleanParameters */ = undefined, latency: JsAny? /* Double|ConstrainDoubleRange */ = undefined, channelCount: JsAny? /* Int|ConstrainULongRange */ = undefined, deviceId: JsAny? /* String|JsArray|ConstrainDOMStringParameters */ = undefined, groupId: JsAny? /* String|JsArray|ConstrainDOMStringParameters */ = undefined): MediaTrackConstraints { js("return { advanced, width, height, aspectRatio, frameRate, facingMode, resizeMode, volume, sampleRate, sampleSize, echoCancellation, autoGainControl, noiseSuppression, latency, channelCount, deviceId, groupId };") } public external interface MediaTrackConstraintSet : JsAny { - var width: JsAny? + var width: JsAny? /* Int|ConstrainULongRange */ get() = definedExternally set(value) = definedExternally - var height: JsAny? + var height: JsAny? /* Int|ConstrainULongRange */ get() = definedExternally set(value) = definedExternally - var aspectRatio: JsAny? + var aspectRatio: JsAny? /* Double|ConstrainDoubleRange */ get() = definedExternally set(value) = definedExternally - var frameRate: JsAny? + var frameRate: JsAny? /* Double|ConstrainDoubleRange */ get() = definedExternally set(value) = definedExternally - var facingMode: JsAny? + var facingMode: JsAny? /* String|JsArray|ConstrainDOMStringParameters */ get() = definedExternally set(value) = definedExternally - var resizeMode: JsAny? + var resizeMode: JsAny? /* String|JsArray|ConstrainDOMStringParameters */ get() = definedExternally set(value) = definedExternally - var volume: JsAny? + var volume: JsAny? /* Double|ConstrainDoubleRange */ get() = definedExternally set(value) = definedExternally - var sampleRate: JsAny? + var sampleRate: JsAny? /* Int|ConstrainULongRange */ get() = definedExternally set(value) = definedExternally - var sampleSize: JsAny? + var sampleSize: JsAny? /* Int|ConstrainULongRange */ get() = definedExternally set(value) = definedExternally - var echoCancellation: JsAny? + var echoCancellation: JsAny? /* Boolean|ConstrainBooleanParameters */ get() = definedExternally set(value) = definedExternally - var autoGainControl: JsAny? + var autoGainControl: JsAny? /* Boolean|ConstrainBooleanParameters */ get() = definedExternally set(value) = definedExternally - var noiseSuppression: JsAny? + var noiseSuppression: JsAny? /* Boolean|ConstrainBooleanParameters */ get() = definedExternally set(value) = definedExternally - var latency: JsAny? + var latency: JsAny? /* Double|ConstrainDoubleRange */ get() = definedExternally set(value) = definedExternally - var channelCount: JsAny? + var channelCount: JsAny? /* Int|ConstrainULongRange */ get() = definedExternally set(value) = definedExternally - var deviceId: JsAny? + var deviceId: JsAny? /* String|JsArray|ConstrainDOMStringParameters */ get() = definedExternally set(value) = definedExternally - var groupId: JsAny? + var groupId: JsAny? /* String|JsArray|ConstrainDOMStringParameters */ get() = definedExternally set(value) = definedExternally } @Suppress("UNUSED_PARAMETER") -public fun MediaTrackConstraintSet(width: JsAny? = undefined, height: JsAny? = undefined, aspectRatio: JsAny? = undefined, frameRate: JsAny? = undefined, facingMode: JsAny? = undefined, resizeMode: JsAny? = undefined, volume: JsAny? = undefined, sampleRate: JsAny? = undefined, sampleSize: JsAny? = undefined, echoCancellation: JsAny? = undefined, autoGainControl: JsAny? = undefined, noiseSuppression: JsAny? = undefined, latency: JsAny? = undefined, channelCount: JsAny? = undefined, deviceId: JsAny? = undefined, groupId: JsAny? = undefined): MediaTrackConstraintSet { js("return { width, height, aspectRatio, frameRate, facingMode, resizeMode, volume, sampleRate, sampleSize, echoCancellation, autoGainControl, noiseSuppression, latency, channelCount, deviceId, groupId };") } +public fun MediaTrackConstraintSet(width: JsAny? /* Int|ConstrainULongRange */ = undefined, height: JsAny? /* Int|ConstrainULongRange */ = undefined, aspectRatio: JsAny? /* Double|ConstrainDoubleRange */ = undefined, frameRate: JsAny? /* Double|ConstrainDoubleRange */ = undefined, facingMode: JsAny? /* String|JsArray|ConstrainDOMStringParameters */ = undefined, resizeMode: JsAny? /* String|JsArray|ConstrainDOMStringParameters */ = undefined, volume: JsAny? /* Double|ConstrainDoubleRange */ = undefined, sampleRate: JsAny? /* Int|ConstrainULongRange */ = undefined, sampleSize: JsAny? /* Int|ConstrainULongRange */ = undefined, echoCancellation: JsAny? /* Boolean|ConstrainBooleanParameters */ = undefined, autoGainControl: JsAny? /* Boolean|ConstrainBooleanParameters */ = undefined, noiseSuppression: JsAny? /* Boolean|ConstrainBooleanParameters */ = undefined, latency: JsAny? /* Double|ConstrainDoubleRange */ = undefined, channelCount: JsAny? /* Int|ConstrainULongRange */ = undefined, deviceId: JsAny? /* String|JsArray|ConstrainDOMStringParameters */ = undefined, groupId: JsAny? /* String|JsArray|ConstrainDOMStringParameters */ = undefined): MediaTrackConstraintSet { js("return { width, height, aspectRatio, frameRate, facingMode, resizeMode, volume, sampleRate, sampleSize, echoCancellation, autoGainControl, noiseSuppression, latency, channelCount, deviceId, groupId };") } /** * Exposes the JavaScript [MediaTrackSettings](https://developer.mozilla.org/en/docs/Web/API/MediaTrackSettings) to Kotlin @@ -358,16 +358,16 @@ public external abstract class InputDeviceInfo : MediaDeviceInfo, JsAny { * Exposes the JavaScript [MediaStreamConstraints](https://developer.mozilla.org/en/docs/Web/API/MediaStreamConstraints) to Kotlin */ public external interface MediaStreamConstraints : JsAny { - var video: JsAny? /* = false */ + var video: JsAny? /* Boolean|MediaTrackConstraints */ get() = definedExternally set(value) = definedExternally - var audio: JsAny? /* = false */ + var audio: JsAny? /* Boolean|MediaTrackConstraints */ get() = definedExternally set(value) = definedExternally } @Suppress("UNUSED_PARAMETER") -public fun MediaStreamConstraints(video: JsAny? = false.toJsBoolean(), audio: JsAny? = false.toJsBoolean()): MediaStreamConstraints { js("return { video, audio };") } +public fun MediaStreamConstraints(video: JsAny? /* Boolean|MediaTrackConstraints */ = false.toJsBoolean(), audio: JsAny? /* Boolean|MediaTrackConstraints */ = false.toJsBoolean()): MediaStreamConstraints { js("return { video, audio };") } public external interface ConstrainablePattern : JsAny { var onoverconstrained: ((Event) -> Unit)? @@ -449,16 +449,16 @@ public fun ConstrainBooleanParameters(exact: Boolean? = undefined, ideal: Boolea * Exposes the JavaScript [ConstrainDOMStringParameters](https://developer.mozilla.org/en/docs/Web/API/ConstrainDOMStringParameters) to Kotlin */ public external interface ConstrainDOMStringParameters : JsAny { - var exact: JsAny? + var exact: JsAny? /* String|JsArray */ get() = definedExternally set(value) = definedExternally - var ideal: JsAny? + var ideal: JsAny? /* String|JsArray */ get() = definedExternally set(value) = definedExternally } @Suppress("UNUSED_PARAMETER") -public fun ConstrainDOMStringParameters(exact: JsAny? = undefined, ideal: JsAny? = undefined): ConstrainDOMStringParameters { js("return { exact, ideal };") } +public fun ConstrainDOMStringParameters(exact: JsAny? /* String|JsArray */ = undefined, ideal: JsAny? /* String|JsArray */ = undefined): ConstrainDOMStringParameters { js("return { exact, ideal };") } public external interface Capabilities : JsAny diff --git a/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.url.kt b/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.url.kt index e5ee9c14dd3..8c57b3e8891 100644 --- a/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.url.kt +++ b/libraries/stdlib/wasm/src/org.w3c/org.w3c.dom.url.kt @@ -43,7 +43,7 @@ public external open class URL(url: String, base: String = definedExternally) : /** * Exposes the JavaScript [URLSearchParams](https://developer.mozilla.org/en/docs/Web/API/URLSearchParams) to Kotlin */ -public external open class URLSearchParams(init: JsAny? = definedExternally) : JsAny { +public external open class URLSearchParams(init: JsAny? /* String|URLSearchParams */ = definedExternally) : JsAny { fun append(name: String, value: String) fun delete(name: String) fun get(name: String): String? diff --git a/libraries/stdlib/wasm/src/org.w3c/org.w3c.fetch.kt b/libraries/stdlib/wasm/src/org.w3c/org.w3c.fetch.kt index fb7970d8b2a..e8a4dc9a4ce 100644 --- a/libraries/stdlib/wasm/src/org.w3c/org.w3c.fetch.kt +++ b/libraries/stdlib/wasm/src/org.w3c/org.w3c.fetch.kt @@ -16,7 +16,7 @@ import org.w3c.xhr.* /** * Exposes the JavaScript [Headers](https://developer.mozilla.org/en/docs/Web/API/Headers) to Kotlin */ -public external open class Headers(init: JsAny? = definedExternally) : JsAny { +public external open class Headers(init: JsAny? /* Headers|JsArray>|OpenEndedDictionary */ = definedExternally) : JsAny { fun append(name: String, value: String) fun delete(name: String) fun get(name: String): String? @@ -39,7 +39,7 @@ public external interface Body : JsAny { /** * Exposes the JavaScript [Request](https://developer.mozilla.org/en/docs/Web/API/Request) to Kotlin */ -public external open class Request(input: JsAny?, init: RequestInit = definedExternally) : Body, JsAny { +public external open class Request(input: JsAny? /* Request|String */, init: RequestInit = definedExternally) : Body, JsAny { open val method: String open val url: String open val headers: Headers @@ -66,10 +66,10 @@ public external interface RequestInit : JsAny { var method: String? get() = definedExternally set(value) = definedExternally - var headers: JsAny? + var headers: JsAny? /* Headers|JsArray>|OpenEndedDictionary */ get() = definedExternally set(value) = definedExternally - var body: JsAny? + var body: JsAny? /* Blob|BufferSource|FormData|URLSearchParams|String */ get() = definedExternally set(value) = definedExternally var referrer: String? @@ -102,12 +102,12 @@ public external interface RequestInit : JsAny { } @Suppress("UNUSED_PARAMETER") -public fun RequestInit(method: String? = undefined, headers: JsAny? = undefined, body: JsAny? = undefined, referrer: String? = undefined, referrerPolicy: JsAny? = undefined, mode: RequestMode? = undefined, credentials: RequestCredentials? = undefined, cache: RequestCache? = undefined, redirect: RequestRedirect? = undefined, integrity: String? = undefined, keepalive: Boolean? = undefined, window: JsAny? = undefined): RequestInit { js("return { method, headers, body, referrer, referrerPolicy, mode, credentials, cache, redirect, integrity, keepalive, window };") } +public fun RequestInit(method: String? = undefined, headers: JsAny? /* Headers|JsArray>|OpenEndedDictionary */ = undefined, body: JsAny? /* Blob|BufferSource|FormData|URLSearchParams|String */ = undefined, referrer: String? = undefined, referrerPolicy: JsAny? = undefined, mode: RequestMode? = undefined, credentials: RequestCredentials? = undefined, cache: RequestCache? = undefined, redirect: RequestRedirect? = undefined, integrity: String? = undefined, keepalive: Boolean? = undefined, window: JsAny? = undefined): RequestInit { js("return { method, headers, body, referrer, referrerPolicy, mode, credentials, cache, redirect, integrity, keepalive, window };") } /** * Exposes the JavaScript [Response](https://developer.mozilla.org/en/docs/Web/API/Response) to Kotlin */ -public external open class Response(body: JsAny? = definedExternally, init: ResponseInit = definedExternally) : Body, JsAny { +public external open class Response(body: JsAny? /* JsAny?|ReadableStream */ = definedExternally, init: ResponseInit = definedExternally) : Body, JsAny { open val type: ResponseType open val url: String open val redirected: Boolean @@ -138,13 +138,13 @@ public external interface ResponseInit : JsAny { var statusText: String? /* = "OK" */ get() = definedExternally set(value) = definedExternally - var headers: JsAny? + var headers: JsAny? /* Headers|JsArray>|OpenEndedDictionary */ get() = definedExternally set(value) = definedExternally } @Suppress("UNUSED_PARAMETER") -public fun ResponseInit(status: Short? = 200, statusText: String? = "OK", headers: JsAny? = undefined): ResponseInit { js("return { status, statusText, headers };") } +public fun ResponseInit(status: Short? = 200, statusText: String? = "OK", headers: JsAny? /* Headers|JsArray>|OpenEndedDictionary */ = undefined): ResponseInit { js("return { status, statusText, headers };") } /* please, don't implement this interface! */ @JsName("null") diff --git a/libraries/stdlib/wasm/src/org.w3c/org.w3c.files.kt b/libraries/stdlib/wasm/src/org.w3c/org.w3c.files.kt index 4a9504d3018..94a1db875d9 100644 --- a/libraries/stdlib/wasm/src/org.w3c/org.w3c.files.kt +++ b/libraries/stdlib/wasm/src/org.w3c/org.w3c.files.kt @@ -17,7 +17,7 @@ import org.w3c.xhr.* /** * Exposes the JavaScript [Blob](https://developer.mozilla.org/en/docs/Web/API/Blob) to Kotlin */ -public external open class Blob(blobParts: JsArray = definedExternally, options: BlobPropertyBag = definedExternally) : MediaProvider, ImageBitmapSource, JsAny { +public external open class Blob(blobParts: JsArray = definedExternally, options: BlobPropertyBag = definedExternally) : MediaProvider, ImageBitmapSource, JsAny { open val size: JsNumber open val type: String open val isClosed: Boolean @@ -37,7 +37,7 @@ public fun BlobPropertyBag(type: String? = ""): BlobPropertyBag { js("return { t /** * Exposes the JavaScript [File](https://developer.mozilla.org/en/docs/Web/API/File) to Kotlin */ -public external open class File(fileBits: JsArray, fileName: String, options: FilePropertyBag = definedExternally) : Blob, JsAny { +public external open class File(fileBits: JsArray, fileName: String, options: FilePropertyBag = definedExternally) : Blob, JsAny { open val name: String open val lastModified: Int } @@ -68,7 +68,7 @@ public operator fun FileList.get(index: Int): File? = getMethodImplForFileList(t */ public external open class FileReader : EventTarget, JsAny { open val readyState: Short - open val result: JsAny? + open val result: JsAny? /* String|ArrayBuffer */ open val error: JsAny? var onloadstart: ((ProgressEvent) -> Unit)? var onprogress: ((ProgressEvent) -> Unit)? diff --git a/libraries/stdlib/wasm/src/org.w3c/org.w3c.notifications.kt b/libraries/stdlib/wasm/src/org.w3c/org.w3c.notifications.kt index 7b519cad06d..39e812e65eb 100644 --- a/libraries/stdlib/wasm/src/org.w3c/org.w3c.notifications.kt +++ b/libraries/stdlib/wasm/src/org.w3c/org.w3c.notifications.kt @@ -71,7 +71,7 @@ public external interface NotificationOptions : JsAny { var sound: String? get() = definedExternally set(value) = definedExternally - var vibrate: JsAny? + var vibrate: JsAny? /* Int|JsArray */ get() = definedExternally set(value) = definedExternally var timestamp: JsNumber? @@ -101,7 +101,7 @@ public external interface NotificationOptions : JsAny { } @Suppress("UNUSED_PARAMETER") -public fun NotificationOptions(dir: NotificationDirection? = NotificationDirection.AUTO, lang: String? = "", body: String? = "", tag: String? = "", image: String? = undefined, icon: String? = undefined, badge: String? = undefined, sound: String? = undefined, vibrate: JsAny? = undefined, timestamp: JsNumber? = undefined, renotify: Boolean? = false, silent: Boolean? = false, noscreen: Boolean? = false, requireInteraction: Boolean? = false, sticky: Boolean? = false, data: JsAny? = null, actions: JsArray? = JsArray()): NotificationOptions { js("return { dir, lang, body, tag, image, icon, badge, sound, vibrate, timestamp, renotify, silent, noscreen, requireInteraction, sticky, data, actions };") } +public fun NotificationOptions(dir: NotificationDirection? = NotificationDirection.AUTO, lang: String? = "", body: String? = "", tag: String? = "", image: String? = undefined, icon: String? = undefined, badge: String? = undefined, sound: String? = undefined, vibrate: JsAny? /* Int|JsArray */ = undefined, timestamp: JsNumber? = undefined, renotify: Boolean? = false, silent: Boolean? = false, noscreen: Boolean? = false, requireInteraction: Boolean? = false, sticky: Boolean? = false, data: JsAny? = null, actions: JsArray? = JsArray()): NotificationOptions { js("return { dir, lang, body, tag, image, icon, badge, sound, vibrate, timestamp, renotify, silent, noscreen, requireInteraction, sticky, data, actions };") } public external interface NotificationAction : JsAny { var action: String? diff --git a/libraries/stdlib/wasm/src/org.w3c/org.w3c.workers.kt b/libraries/stdlib/wasm/src/org.w3c/org.w3c.workers.kt index a95cdb07c1f..a2965cadc2b 100644 --- a/libraries/stdlib/wasm/src/org.w3c/org.w3c.workers.kt +++ b/libraries/stdlib/wasm/src/org.w3c/org.w3c.workers.kt @@ -316,13 +316,21 @@ public fun ExtendableMessageEventInit(data: JsAny? = undefined, origin: String? * Exposes the JavaScript [Cache](https://developer.mozilla.org/en/docs/Web/API/Cache) to Kotlin */ public external abstract class Cache : JsAny { - fun match(request: JsAny?, options: CacheQueryOptions = definedExternally): Promise - fun matchAll(request: JsAny? = definedExternally, options: CacheQueryOptions = definedExternally): Promise> - fun add(request: JsAny?): Promise - fun addAll(requests: JsArray): Promise - fun put(request: JsAny?, response: Response): Promise - fun delete(request: JsAny?, options: CacheQueryOptions = definedExternally): Promise - fun keys(request: JsAny? = definedExternally, options: CacheQueryOptions = definedExternally): Promise> + fun match(request: Request, options: CacheQueryOptions = definedExternally): Promise + fun match(request: String, options: CacheQueryOptions = definedExternally): Promise + fun matchAll(request: Request, options: CacheQueryOptions = definedExternally): Promise> + fun matchAll(request: String, options: CacheQueryOptions = definedExternally): Promise> + fun matchAll(): Promise> + fun add(request: Request): Promise + fun add(request: String): Promise + fun addAll(requests: JsArray): Promise + fun put(request: Request, response: Response): Promise + fun put(request: String, response: Response): Promise + fun delete(request: Request, options: CacheQueryOptions = definedExternally): Promise + fun delete(request: String, options: CacheQueryOptions = definedExternally): Promise + fun keys(request: Request, options: CacheQueryOptions = definedExternally): Promise> + fun keys(request: String, options: CacheQueryOptions = definedExternally): Promise> + fun keys(): Promise> } public external interface CacheQueryOptions : JsAny { @@ -365,7 +373,8 @@ public fun CacheBatchOperation(type: String? = undefined, request: Request? = un * Exposes the JavaScript [CacheStorage](https://developer.mozilla.org/en/docs/Web/API/CacheStorage) to Kotlin */ public external abstract class CacheStorage : JsAny { - fun match(request: JsAny?, options: CacheQueryOptions = definedExternally): Promise + fun match(request: Request, options: CacheQueryOptions = definedExternally): Promise + fun match(request: String, options: CacheQueryOptions = definedExternally): Promise fun has(cacheName: String): Promise fun open(cacheName: String): Promise fun delete(cacheName: String): Promise diff --git a/libraries/stdlib/wasm/src/org.w3c/org.w3c.xhr.kt b/libraries/stdlib/wasm/src/org.w3c/org.w3c.xhr.kt index bce47f36701..c3f09448038 100644 --- a/libraries/stdlib/wasm/src/org.w3c/org.w3c.xhr.kt +++ b/libraries/stdlib/wasm/src/org.w3c/org.w3c.xhr.kt @@ -12,6 +12,7 @@ import kotlin.js.* import org.khronos.webgl.* import org.w3c.dom.* import org.w3c.dom.events.* +import org.w3c.dom.url.* import org.w3c.files.* /** @@ -48,7 +49,12 @@ public external open class XMLHttpRequest : XMLHttpRequestEventTarget, JsAny { fun open(method: String, url: String) fun open(method: String, url: String, async: Boolean, username: String? = definedExternally, password: String? = definedExternally) fun setRequestHeader(name: String, value: String) - fun send(body: JsAny? = definedExternally) + fun send(body: Document) + fun send(body: Blob) + fun send(body: FormData) + fun send(body: URLSearchParams) + fun send(body: String) + fun send() fun abort() fun getResponseHeader(name: String): String? fun getAllResponseHeaders(): String @@ -70,8 +76,8 @@ public external open class FormData(form: HTMLFormElement = definedExternally) : fun append(name: String, value: String) fun append(name: String, value: Blob, filename: String = definedExternally) fun delete(name: String) - fun get(name: String): JsAny? - fun getAll(name: String): JsArray + fun get(name: String): JsAny? /* File|String */ + fun getAll(name: String): JsArray fun has(name: String): Boolean fun set(name: String, value: String) fun set(name: String, value: Blob, filename: String = definedExternally) diff --git a/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/wasm/addOverloadsForUnions.kt b/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/wasm/addOverloadsForUnions.kt new file mode 100644 index 00000000000..25fff150e4c --- /dev/null +++ b/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/wasm/addOverloadsForUnions.kt @@ -0,0 +1,73 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.tools.dukat.wasm + +import org.jetbrains.dukat.idlDeclarations.* +import org.jetbrains.dukat.idlLowerings.IDLLowering + +class UnionParametersOverloadsLowering : IDLLowering { + // Types that are present as union components, but somehow missing IDL declarations. Should be ignored. + private val typesMissingFromIDL: Set = + setOf("CSSPseudoElement", "BufferSource") + + override fun lowerInterfaceDeclaration(declaration: IDLInterfaceDeclaration, owner: IDLFileDeclaration): IDLInterfaceDeclaration { + return declaration.copy( + operations = declaration.operations.flatMap(::generateOverloads) + ) + } + + private fun generateOverloads(op: IDLOperationDeclaration): List { + val numUnionTypes = op.arguments.count { it.type is IDLUnionTypeDeclaration } + if (numUnionTypes == 0) + return listOf(op) + + if (numUnionTypes > 1) + TODO( + """ + Not supported in current implementation to keep it simple. + If updated IDL contains multiple union arguments and this check fails, + consider updating the algorithm or return listOf(op) as a fallback. + """ + ) + + val unionTypedArgumentIndex = op.arguments.indexOfFirst { it.type is IDLUnionTypeDeclaration } + val unionTypedArgument = op.arguments[unionTypedArgumentIndex] + val unionType = unionTypedArgument.type as IDLUnionTypeDeclaration + + var unionMembersFlattened = unionType.unionMembers + while (unionMembersFlattened.any { it is IDLUnionTypeDeclaration }) { + unionMembersFlattened = unionMembersFlattened.flatMap { + if (it is IDLUnionTypeDeclaration) it.unionMembers else listOf(it) + } + } + + val result = unionMembersFlattened.mapNotNull { unionMember -> + if (unionMember.name in typesMissingFromIDL) + return@mapNotNull null + + op.copy( + arguments = op.arguments.mapIndexed { argumentIndex, argument: IDLArgumentDeclaration -> + if (argumentIndex == unionTypedArgumentIndex) { + argument.copy(type = unionMember, defaultValue = null, optional = false) + } else { + argument.copy() + } + } + ) + } + + // If union typed argument is optional - create an overload without union argument. + if (unionTypedArgument.optional || unionTypedArgument.defaultValue != null) { + return result + op.copy(arguments = op.arguments.subList(0, unionTypedArgumentIndex)) + } + + return result + } +} + +fun IDLSourceSetDeclaration.addOverloadsForUnions(): IDLSourceSetDeclaration { + return UnionParametersOverloadsLowering().lowerSourceSetDeclaration(this) +} \ No newline at end of file diff --git a/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/wasm/convertToModel.kt b/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/wasm/convertToModel.kt index 489a3b4b19c..9ecc3bfa587 100644 --- a/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/wasm/convertToModel.kt +++ b/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/wasm/convertToModel.kt @@ -50,6 +50,7 @@ import org.jetbrains.dukat.panic.raiseConcern import org.jetbrains.dukat.stdlib.TSLIBROOT import org.jetbrains.dukat.stdlib.isTsStdlibPrefixed import org.jetbrains.dukat.translator.ROOT_PACKAGENAME +import org.jetbrains.dukat.translatorString.translate import java.io.File private val jsAnyHeritageModel: HeritageModel = HeritageModel( @@ -224,6 +225,13 @@ private class IdlFileConverter( return when (this) { is IDLSingleTypeDeclaration -> convertToModel(isTypeParameter) is IDLFunctionTypeDeclaration -> convertToModel() + is IDLUnionTypeDeclaration -> TypeValueModel( + IdentifierEntity("JsAny"), + listOf(), + metaDescription = this.unionMembers.joinToString("|") { it.convertToModel(false).translate() }, + null, + nullable = true, + ) //there shouldn't be any UnionTypeDeclarations at this stage else -> raiseConcern("unprocessed type declaration: ${this}") { TypeValueModel( diff --git a/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/wasm/resolveTypes.kt b/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/wasm/resolveTypes.kt index 39cd9c40600..653eb21830f 100644 --- a/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/wasm/resolveTypes.kt +++ b/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/wasm/resolveTypes.kt @@ -98,12 +98,8 @@ private class TypeResolver : IDLLowering { nullable = declaration.nullable, comment = declaration.comment ) - in failedToResolveUnionTypes -> IDLSingleTypeDeclaration( - name = "\$dynamic", - typeParameter = null, - nullable = false, - comment = declaration.comment - ) + // Keeping unresolved union types as-is to process later + in failedToResolveUnionTypes -> declaration else -> raiseConcern("unprocessed UnionTypeDeclaration: $this") { declaration } } } @@ -203,7 +199,7 @@ private class DependencyResolver(val typeResolver: TypeResolver) : IDLLowering { } } -fun IDLSourceSetDeclaration.resolveTypes(): IDLSourceSetDeclaration { +fun IDLSourceSetDeclaration.resolveTypesKeepingUnions(): IDLSourceSetDeclaration { val typeResolver = TypeResolver() val dependencyResolver = DependencyResolver(typeResolver) val declarationAdder = DeclarationAdder(typeResolver) diff --git a/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/wasm/translator.kt b/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/wasm/translator.kt index 62c6034c7cd..18364eb390c 100644 --- a/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/wasm/translator.kt +++ b/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/wasm/translator.kt @@ -27,7 +27,8 @@ fun translateIdlToSourceSet(fileName: String): SourceSetModel { .resolveImplementsStatements() .resolveMixins() .addItemArrayLike() - .resolveTypes() + .resolveTypesKeepingUnions() + .addOverloadsForUnions() .markAbstractOrOpen() .addMissingMembers() .addOverloadsForCallbacks()