diff --git a/src/DOMAPI/Document.res b/src/DOMAPI/Document.res index dd33ab26..590ef40f 100644 --- a/src/DOMAPI/Document.res +++ b/src/DOMAPI/Document.res @@ -2,6 +2,8 @@ open DOMTypes open EventTypes open ViewTransitionsTypes +type t = document = {...document} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Document) */ diff --git a/src/DOMAPI/Element.res b/src/DOMAPI/Element.res index b8281fa2..b94c0698 100644 --- a/src/DOMAPI/Element.res +++ b/src/DOMAPI/Element.res @@ -1,6 +1,8 @@ open DOMTypes open Prelude +type t = element = {...element} + module Impl = ( T: { type t diff --git a/src/DOMAPI/HTMLCanvasElement.res b/src/DOMAPI/HTMLCanvasElement.res index 4ff3901c..e0efa1f1 100644 --- a/src/DOMAPI/HTMLCanvasElement.res +++ b/src/DOMAPI/HTMLCanvasElement.res @@ -2,6 +2,8 @@ open DOMTypes open CanvasTypes open MediaCaptureAndStreamsTypes +type t = htmlCanvasElement = {...htmlCanvasElement} + include HTMLElement.Impl({type t = htmlCanvasElement}) /** diff --git a/src/DOMAPI/HTMLElement.res b/src/DOMAPI/HTMLElement.res index 26813d70..f6715659 100644 --- a/src/DOMAPI/HTMLElement.res +++ b/src/DOMAPI/HTMLElement.res @@ -1,5 +1,7 @@ open DOMTypes +type t = htmlElement = {...htmlElement} + module Impl = ( T: { type t diff --git a/src/DOMAPI/HTMLImageElement.res b/src/DOMAPI/HTMLImageElement.res index 0567f367..3df72a2c 100644 --- a/src/DOMAPI/HTMLImageElement.res +++ b/src/DOMAPI/HTMLImageElement.res @@ -1,5 +1,7 @@ open DOMTypes +type t = htmlImageElement = {...htmlImageElement} + include HTMLElement.Impl({type t = htmlImageElement}) /** diff --git a/src/DOMAPI/HTMLInputElement.res b/src/DOMAPI/HTMLInputElement.res index 19a90eda..51c7c1e5 100644 --- a/src/DOMAPI/HTMLInputElement.res +++ b/src/DOMAPI/HTMLInputElement.res @@ -1,5 +1,7 @@ open DOMTypes +type t = htmlInputElement = {...htmlInputElement} + include HTMLElement.Impl({type t = htmlInputElement}) /** diff --git a/src/DOMAPI/Location.res b/src/DOMAPI/Location.res index 30ea3bb3..b172544c 100644 --- a/src/DOMAPI/Location.res +++ b/src/DOMAPI/Location.res @@ -1,5 +1,7 @@ open DOMTypes +type t = location = {...location} + /** Navigates to the given URL. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Location/assign) diff --git a/src/DOMAPI/Node.res b/src/DOMAPI/Node.res index aa456ae4..0eef1fd3 100644 --- a/src/DOMAPI/Node.res +++ b/src/DOMAPI/Node.res @@ -1,5 +1,7 @@ open DOMTypes +type t = node = {...node} + module Impl = ( T: { type t diff --git a/src/DOMAPI/Window.res b/src/DOMAPI/Window.res index 00654288..dd49e477 100644 --- a/src/DOMAPI/Window.res +++ b/src/DOMAPI/Window.res @@ -66,7 +66,7 @@ external clearInterval: (window, int) => unit = "clearInterval" [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Window/queueMicrotask) */ @send -external queueMicrotask: (window, voidFunction) => unit = "queueMicrotask" +external queueMicrotask: (window, unit => unit) => unit = "queueMicrotask" /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Window/createImageBitmap) diff --git a/src/EventAPI/AbortController.res b/src/EventAPI/AbortController.res index 4a171c43..e7258175 100644 --- a/src/EventAPI/AbortController.res +++ b/src/EventAPI/AbortController.res @@ -1,5 +1,7 @@ open EventTypes +type t = abortController = {...abortController} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AbortController) */ diff --git a/src/EventAPI/AbortSignal.res b/src/EventAPI/AbortSignal.res index 960b2559..d0e05f8f 100644 --- a/src/EventAPI/AbortSignal.res +++ b/src/EventAPI/AbortSignal.res @@ -1,5 +1,7 @@ open EventTypes +type t = abortSignal = {...abortSignal} + include EventTarget.Impl({type t = abortSignal}) /** diff --git a/src/EventAPI/Event.res b/src/EventAPI/Event.res index 9233f649..d5e491c2 100644 --- a/src/EventAPI/Event.res +++ b/src/EventAPI/Event.res @@ -1,5 +1,7 @@ open EventTypes +type t = event = {...event} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Event) */ diff --git a/src/EventAPI/EventTarget.res b/src/EventAPI/EventTarget.res index eb86f698..d5125e5e 100644 --- a/src/EventAPI/EventTarget.res +++ b/src/EventAPI/EventTarget.res @@ -1,5 +1,7 @@ open EventTypes +type t = eventTarget = {...eventTarget} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/EventTarget) */ diff --git a/src/EventAPI/ExtendableEvent.res b/src/EventAPI/ExtendableEvent.res index df7bd5ff..b4f747e4 100644 --- a/src/EventAPI/ExtendableEvent.res +++ b/src/EventAPI/ExtendableEvent.res @@ -1,5 +1,7 @@ open EventTypes +type t = extendableEvent = {...extendableEvent} + module Impl = ( T: { type t diff --git a/src/IntersectionObserverAPI/IntersectionObserver.res b/src/IntersectionObserverAPI/IntersectionObserver.res index 5f403ae6..9f922c37 100644 --- a/src/IntersectionObserverAPI/IntersectionObserver.res +++ b/src/IntersectionObserverAPI/IntersectionObserver.res @@ -1,6 +1,8 @@ open DOMTypes open IntersectionObserverTypes +type t = intersectionObserver = {...intersectionObserver} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/IntersectionObserver) */ diff --git a/src/IntersectionObserverAPI/IntersectionObserverRoot.res b/src/IntersectionObserverAPI/IntersectionObserverRoot.res index f8306ff8..add32fe4 100644 --- a/src/IntersectionObserverAPI/IntersectionObserverRoot.res +++ b/src/IntersectionObserverAPI/IntersectionObserverRoot.res @@ -1,6 +1,8 @@ open DOMTypes open IntersectionObserverTypes +type t = root + external fromDocument: document => root = "%identity" external fromElement: element => root = "%identity" external fromNull: root = "null" diff --git a/src/MutationObserverAPI/MutationObserver.res b/src/MutationObserverAPI/MutationObserver.res index 207de406..16187897 100644 --- a/src/MutationObserverAPI/MutationObserver.res +++ b/src/MutationObserverAPI/MutationObserver.res @@ -1,6 +1,8 @@ open DOMTypes open MutationObserverTypes +type t = mutationObserver + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MutationObserver) */ diff --git a/src/ResizeObserverAPI/ResizeObserver.res b/src/ResizeObserverAPI/ResizeObserver.res index 0ab126af..851ae3cd 100644 --- a/src/ResizeObserverAPI/ResizeObserver.res +++ b/src/ResizeObserverAPI/ResizeObserver.res @@ -1,6 +1,8 @@ open DOMTypes open ResizeObserverTypes +type t = resizeObserver = {...resizeObserver} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/ResizeObserver) */ diff --git a/src/UIEventsAPI/CompositionEvent.res b/src/UIEventsAPI/CompositionEvent.res index 65315f23..249a01ba 100644 --- a/src/UIEventsAPI/CompositionEvent.res +++ b/src/UIEventsAPI/CompositionEvent.res @@ -1,5 +1,7 @@ open UIEventsTypes +type t = compositionEvent = {...compositionEvent} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/CompositionEvent) */ diff --git a/src/UIEventsAPI/DataTransfer.res b/src/UIEventsAPI/DataTransfer.res index 8ff834dc..d3d9a8e4 100644 --- a/src/UIEventsAPI/DataTransfer.res +++ b/src/UIEventsAPI/DataTransfer.res @@ -1,6 +1,8 @@ open UIEventsTypes open DOMTypes +type t = dataTransfer = {...dataTransfer} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/DataTransfer) */ diff --git a/src/UIEventsAPI/DataTransferItem.res b/src/UIEventsAPI/DataTransferItem.res index 4948d1c2..8c994b66 100644 --- a/src/UIEventsAPI/DataTransferItem.res +++ b/src/UIEventsAPI/DataTransferItem.res @@ -2,6 +2,8 @@ open UIEventsTypes open FileTypes open FileAndDirectoryEntriesTypes +type t = dataTransferItem = {...dataTransferItem} + /** Invokes the callback with the string data as the argument, if the drag data item kind is text. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/DataTransferItem/getAsString) diff --git a/src/UIEventsAPI/DataTransferItemList.res b/src/UIEventsAPI/DataTransferItemList.res index 786a7674..c6c5ae53 100644 --- a/src/UIEventsAPI/DataTransferItemList.res +++ b/src/UIEventsAPI/DataTransferItemList.res @@ -1,6 +1,8 @@ open UIEventsTypes open FileTypes +type t = dataTransferItemList = {...dataTransferItemList} + /** Adds a new entry for the given data to the drag data store. If the data is plain text then a type string has to be provided also. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/DataTransferItemList/add) diff --git a/src/UIEventsAPI/FocusEvent.res b/src/UIEventsAPI/FocusEvent.res index 26fa2fc9..f66640d6 100644 --- a/src/UIEventsAPI/FocusEvent.res +++ b/src/UIEventsAPI/FocusEvent.res @@ -1,5 +1,7 @@ open UIEventsTypes +type t = focusEvent = {...focusEvent} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/FocusEvent) */ diff --git a/src/UIEventsAPI/InputEvent.res b/src/UIEventsAPI/InputEvent.res index ec522566..04c36d56 100644 --- a/src/UIEventsAPI/InputEvent.res +++ b/src/UIEventsAPI/InputEvent.res @@ -1,6 +1,8 @@ open UIEventsTypes open DOMTypes +type t = inputEvent = {...inputEvent} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/InputEvent) */ diff --git a/src/UIEventsAPI/KeyboardEvent.res b/src/UIEventsAPI/KeyboardEvent.res index 36c071c1..6909a532 100644 --- a/src/UIEventsAPI/KeyboardEvent.res +++ b/src/UIEventsAPI/KeyboardEvent.res @@ -1,5 +1,7 @@ open UIEventsTypes +type t = keyboardEvent = {...keyboardEvent} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/KeyboardEvent) */ diff --git a/src/UIEventsAPI/MouseEvent.res b/src/UIEventsAPI/MouseEvent.res index d8fb714a..5ce15ac6 100644 --- a/src/UIEventsAPI/MouseEvent.res +++ b/src/UIEventsAPI/MouseEvent.res @@ -1,5 +1,7 @@ open UIEventsTypes +type t = mouseEvent = {...mouseEvent} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MouseEvent) */ diff --git a/src/UIEventsAPI/PointerEvent.res b/src/UIEventsAPI/PointerEvent.res index 91d10b3c..0900be40 100644 --- a/src/UIEventsAPI/PointerEvent.res +++ b/src/UIEventsAPI/PointerEvent.res @@ -1,5 +1,7 @@ open UIEventsTypes +type t = pointerEvent = {...pointerEvent} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/PointerEvent) */ diff --git a/src/UIEventsAPI/Touch.res b/src/UIEventsAPI/Touch.res index 4e7627cc..38b341fe 100644 --- a/src/UIEventsAPI/Touch.res +++ b/src/UIEventsAPI/Touch.res @@ -1,5 +1,7 @@ open UIEventsTypes +type t = touch = {...touch} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Touch) */ diff --git a/src/UIEventsAPI/TouchEvent.res b/src/UIEventsAPI/TouchEvent.res index be40c70a..ff1c4482 100644 --- a/src/UIEventsAPI/TouchEvent.res +++ b/src/UIEventsAPI/TouchEvent.res @@ -1,5 +1,7 @@ open UIEventsTypes +type t = touchEvent = {...touchEvent} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/TouchEvent) */ diff --git a/src/UIEventsAPI/TouchList.res b/src/UIEventsAPI/TouchList.res index 03bc9ad4..3a6a7d6e 100644 --- a/src/UIEventsAPI/TouchList.res +++ b/src/UIEventsAPI/TouchList.res @@ -1,5 +1,7 @@ open UIEventsTypes +type t = touchList = {...touchList} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/TouchList/item) */ diff --git a/src/UIEventsAPI/UIEvent.res b/src/UIEventsAPI/UIEvent.res index 58a0628b..adc0cb2a 100644 --- a/src/UIEventsAPI/UIEvent.res +++ b/src/UIEventsAPI/UIEvent.res @@ -1,5 +1,7 @@ open UIEventsTypes +type t = uiEvent = {...uiEvent} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/UIEvent) */ diff --git a/src/UIEventsAPI/WheelEvent.res b/src/UIEventsAPI/WheelEvent.res index 4534ecdf..d9bc6993 100644 --- a/src/UIEventsAPI/WheelEvent.res +++ b/src/UIEventsAPI/WheelEvent.res @@ -1,5 +1,7 @@ open UIEventsTypes +type t = wheelEvent = {...wheelEvent} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/WheelEvent) */ diff --git a/src/ViewTransitionsAPI/ViewTransition.res b/src/ViewTransitionsAPI/ViewTransition.res index 9d7d387d..c9560df2 100644 --- a/src/ViewTransitionsAPI/ViewTransition.res +++ b/src/ViewTransitionsAPI/ViewTransition.res @@ -1,5 +1,7 @@ open ViewTransitionsTypes +type t = viewTransition = {...viewTransition} + /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/ViewTransition/skipTransition) */ diff --git a/tests/DOMAPI/AddEventListener__test.res b/tests/DOMAPI/AddEventListener__test.res index eb491ae3..3e68b08e 100644 --- a/tests/DOMAPI/AddEventListener__test.res +++ b/tests/DOMAPI/AddEventListener__test.res @@ -1,12 +1,10 @@ open WebAPI -open WebAPI.Global - -let button = document->Document.querySelector("button")->Null.toOption -let h2 = document->Document.querySelector("h2")->Null.toOption +let button = Window.current.document->Document.querySelector("button")->Null.toOption +let h2 = Window.current.document->Document.querySelector("h2")->Null.toOption switch (button, h2) { | (Some(button), Some(h2)) => - button->Element.addEventListener(EventTypes.Click, (e: UIEventsTypes.mouseEvent) => { + button->Element.addEventListener(EventTypes.Click, (e: MouseEvent.t) => { Console.log(`Button clicked, ${Int.toString(e.button)}`) switch h2.textContent { | Null => h2.textContent = Value("1") diff --git a/tests/DOMAPI/Element__test.res b/tests/DOMAPI/Element__test.res index 4d637266..e03fd581 100644 --- a/tests/DOMAPI/Element__test.res +++ b/tests/DOMAPI/Element__test.res @@ -1,4 +1,4 @@ -external myElement: DOMTypes.element = "myElement" +external myElement: Element.t = "myElement" switch myElement->Element.getAttribute("foo") { | Null.Value(value) => value->Console.log diff --git a/tests/DOMAPI/HTMLCanvasElement__test.res b/tests/DOMAPI/HTMLCanvasElement__test.res index 6c089f33..48fdc9f8 100644 --- a/tests/DOMAPI/HTMLCanvasElement__test.res +++ b/tests/DOMAPI/HTMLCanvasElement__test.res @@ -1,7 +1,5 @@ -open WebAPI.Global - -let myCanvas: DOMTypes.htmlCanvasElement = - document->Document.getElementById("myCanvas")->Prelude.unsafeConversation +let myCanvas: HTMLCanvasElement.t = + Window.current.document->Document.getElementById("myCanvas")->Prelude.unsafeConversation let ctx = myCanvas->HTMLCanvasElement.getContext2D ctx.fillStyle = FillStyle.fromString("red") @@ -18,7 +16,7 @@ switch ctx.fillStyle->FillStyle.decode { | FillStyle.CanvasPattern(_) => Console.log("CanvasPattern") } -let img: DOMTypes.htmlImageElement = document->Document.createElement("img")->Obj.magic +let img: HTMLImageElement.t = Window.current.document->Document.createElement("img")->Obj.magic ctx->CanvasRenderingContext2D.drawImageWithDimensions( ~image=img, ~dx=0., diff --git a/tests/DOMAPI/HTMLElement__test.res b/tests/DOMAPI/HTMLElement__test.res index daf349ae..bb2e3c3f 100644 --- a/tests/DOMAPI/HTMLElement__test.res +++ b/tests/DOMAPI/HTMLElement__test.res @@ -1,7 +1,6 @@ open WebAPI -open WebAPI.Global -document +Window.current.document ->Document.querySelector("form") ->Null.toOption ->Option.forEach(form => { diff --git a/tests/DOMAPI/HTMLInputElement__test.res b/tests/DOMAPI/HTMLInputElement__test.res index 3cdd8f2b..d3ac6292 100644 --- a/tests/DOMAPI/HTMLInputElement__test.res +++ b/tests/DOMAPI/HTMLInputElement__test.res @@ -1,5 +1,3 @@ -open Global - -let input: DOMTypes.htmlInputElement = - document->Document.createElement("input")->Prelude.unsafeConversation +let input: HTMLInputElement.t = + Window.current.document->Document.createElement("input")->Prelude.unsafeConversation let value = input.value diff --git a/tests/DOMAPI/Location__test.res b/tests/DOMAPI/Location__test.res index fa2d12f8..7ba304eb 100644 --- a/tests/DOMAPI/Location__test.res +++ b/tests/DOMAPI/Location__test.res @@ -1,7 +1,4 @@ -open Global - -// Note that this only works when you added the `-open Global` bsc flag. -let location = window.location +let location = Window.current.location // Access properties using `.` let href = location.href diff --git a/tests/IntersectionObserverAPI/IntersectionObserver__test.res b/tests/IntersectionObserverAPI/IntersectionObserver__test.res index 051d82ee..02175145 100644 --- a/tests/IntersectionObserverAPI/IntersectionObserver__test.res +++ b/tests/IntersectionObserverAPI/IntersectionObserver__test.res @@ -1,10 +1,10 @@ -let observer = IntersectionObserver.make(~callback=(entry, observer) => { +let observer: IntersectionObserver.t = IntersectionObserver.make(~callback=(entry, observer) => { Console.log2(entry, observer) }) -let root = Global.document->Document.querySelector("#root")->Null.getUnsafe +let root = Window.current.document->Document.querySelector("#root")->Null.getUnsafe -let observer2 = IntersectionObserver.make( +let observer2: IntersectionObserver.t = IntersectionObserver.make( ~callback=(entry, observer) => { Console.log2(entry, observer) }, @@ -22,7 +22,7 @@ switch observer2.root->IntersectionObserverRoot.decode { } let rootMargin2 = observer2.rootMargin -let targetElement = Global.document->Document.querySelector("#targetElement")->Null.toOption +let targetElement = Window.current.document->Document.querySelector("#targetElement")->Null.toOption switch targetElement { | Some(e) => { observer2->IntersectionObserver.observe(e) diff --git a/tests/MutationObserverAPI/MutationObserver__test.res b/tests/MutationObserverAPI/MutationObserver__test.res index 7ae06621..3de033ba 100644 --- a/tests/MutationObserverAPI/MutationObserver__test.res +++ b/tests/MutationObserverAPI/MutationObserver__test.res @@ -1,5 +1,5 @@ -let observer = MutationObserver.make((mutations, obs) => { - let button = Global.document->Document.querySelector("button") +let observer: MutationObserver.t = MutationObserver.make((mutations, obs) => { + let button = Window.current.document->Document.querySelector("button") switch button->Null.toOption { | Some(button) => { Console.log(button) @@ -11,7 +11,7 @@ let observer = MutationObserver.make((mutations, obs) => { }) observer->MutationObserver.observe( - ~target=Global.document->Document.asNode, + ~target=Window.current.document->Document.asNode, ~options={childList: true, subtree: true}, )