From 8b4c4a8bf8904f9b7a2035779fc6f5ff6d02ee6e Mon Sep 17 00:00:00 2001 From: Josh Vlk Date: Sun, 19 Apr 2026 04:06:10 -0400 Subject: [PATCH] refactor(DOM): remove numeric scroll overloads Drop scroll2/scrollTo2/scrollBy2 and keep the descriptive *XY overload names requested in review. Co-authored-by: Codex --- packages/DOM/src/Window.res | 24 ------------------- packages/Fetch/src/FormDataEntryValue.res | 15 ++++-------- .../src/MediaStream.res | 4 ++-- packages/WebSockets/src/MessageEvent.res | 19 ++------------- tests/FetchAPI/Request__test.res | 22 ++++++++--------- tests/FetchAPI/Response__test.res | 12 +++++----- tests/Global__test.res | 6 ----- 7 files changed, 26 insertions(+), 76 deletions(-) diff --git a/packages/DOM/src/Window.res b/packages/DOM/src/Window.res index 4b1c25d..049dddb 100644 --- a/packages/DOM/src/Window.res +++ b/packages/DOM/src/Window.res @@ -408,12 +408,6 @@ external open_: ( @send external alert: Types.window => unit = "alert" -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Window/alert) -*/ -@send -external alert2: (Types.window, string) => unit = "alert" - /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Window/alert) */ @@ -532,12 +526,6 @@ external resizeBy: (Types.window, ~x: int, ~y: int) => unit = "resizeBy" @send external scroll: (Types.window, ~options: Types.scrollToOptions=?) => unit = "scroll" -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Window/scroll) -*/ -@send -external scroll2: (Types.window, ~x: float, ~y: float) => unit = "scroll" - /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Window/scroll) */ @@ -550,12 +538,6 @@ external scrollXY: (Types.window, ~x: float, ~y: float) => unit = "scroll" @send external scrollTo: (Types.window, ~options: Types.scrollToOptions=?) => unit = "scrollTo" -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Window/scrollTo) -*/ -@send -external scrollTo2: (Types.window, ~x: float, ~y: float) => unit = "scrollTo" - /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Window/scrollTo) */ @@ -568,12 +550,6 @@ external scrollToXY: (Types.window, ~x: float, ~y: float) => unit = "scrollTo" @send external scrollBy: (Types.window, ~options: Types.scrollToOptions=?) => unit = "scrollBy" -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Window/scrollBy) -*/ -@send -external scrollBy2: (Types.window, ~x: float, ~y: float) => unit = "scrollBy" - /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Window/scrollBy) */ diff --git a/packages/Fetch/src/FormDataEntryValue.res b/packages/Fetch/src/FormDataEntryValue.res index b586894..257941b 100644 --- a/packages/Fetch/src/FormDataEntryValue.res +++ b/packages/Fetch/src/FormDataEntryValue.res @@ -1,14 +1,9 @@ -type t = Types.formDataEntryValue +@unboxed +type t = + | String(string) + | File(WebApiFile.File.t) external fromString: string => t = "%identity" external fromFile: WebApiFile.File.t => t = "%identity" -type decoded = - | String(string) - | File(WebApiFile.File.t) - -let decode = (t: t): decoded => - switch t { - | Types.String(value) => String(value) - | Types.File(file) => File(file) - } +let decode = (value: t): t => value diff --git a/packages/MediaCaptureAndStreams/src/MediaStream.res b/packages/MediaCaptureAndStreams/src/MediaStream.res index e03899c..3ff71d3 100644 --- a/packages/MediaCaptureAndStreams/src/MediaStream.res +++ b/packages/MediaCaptureAndStreams/src/MediaStream.res @@ -10,13 +10,13 @@ external make: unit => t = "MediaStream" [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream) */ @new -external make2: t => t = "MediaStream" +external makeFromMediaStream: t => t = "MediaStream" /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaStream) */ @new -external make3: array => t = "MediaStream" +external makeFromMediaStreams: array => t = "MediaStream" include WebApiEvent.EventTarget.Impl({type t = t}) diff --git a/packages/WebSockets/src/MessageEvent.res b/packages/WebSockets/src/MessageEvent.res index 3fa763e..28ba714 100644 --- a/packages/WebSockets/src/MessageEvent.res +++ b/packages/WebSockets/src/MessageEvent.res @@ -2,23 +2,8 @@ type event = WebApiEvent.Types.event type eventTarget = WebApiEvent.Types.eventTarget type messageEventSource = Types.messageEventSource -type messageEvent<'t> = { - ...event, - data: 't, - origin: string, - lastEventId: string, - source: Null.t, - ports: array, -} - -type messageEventInit<'t> = { - ...WebApiEvent.Types.eventInit, - mutable data?: 't, - mutable origin?: string, - mutable lastEventId?: string, - mutable source?: Null.t, - mutable ports?: array, -} +type messageEvent<'t> = Types.messageEvent<'t> +type messageEventInit<'t> = Types.messageEventInit<'t> type t<'t> = messageEvent<'t> diff --git a/tests/FetchAPI/Request__test.res b/tests/FetchAPI/Request__test.res index 801bcd1..7c8a45d 100644 --- a/tests/FetchAPI/Request__test.res +++ b/tests/FetchAPI/Request__test.res @@ -1,17 +1,17 @@ let req = WebApiFetch.Request.fromURL("https://example.com") -let blob: WebApiFile.Blob.t = WebApiFile.Blob.make(~blobParts=[]) -let file: WebApiFile.File.t = WebApiFile.File.make(~fileBits=[], ~fileName="hello.txt") -let params: WebApiURL.URLSearchParams.t = WebApiURL.URLSearchParams.fromString("greeting=hello") -let formData: WebApiFetch.FormData.t = WebApiFetch.FormData.make() -let stream: WebApiFile.ReadableStream.t> = WebApiFile.ReadableStream.make() +let blob = WebApiFile.Blob.make(~blobParts=[]) +let file = WebApiFile.File.make(~fileBits=[], ~fileName="hello.txt") +let params = WebApiURL.URLSearchParams.fromString("greeting=hello") +let formData = WebApiFetch.FormData.make() +let stream = WebApiFile.ReadableStream.make() -let stringBody: WebApiFetch.BodyInit.t = WebApiFetch.BodyInit.fromString("hello") -let blobBody: WebApiFetch.BodyInit.t = WebApiFetch.BodyInit.fromBlob(blob) -let fileBody: WebApiFetch.BodyInit.t = WebApiFetch.BodyInit.fromFile(file) -let paramsBody: WebApiFetch.BodyInit.t = WebApiFetch.BodyInit.fromURLSearchParams(params) -let formDataBody: WebApiFetch.BodyInit.t = WebApiFetch.BodyInit.fromFormData(formData) -let streamBody: WebApiFetch.BodyInit.t = WebApiFetch.BodyInit.fromReadableStream(stream) +let stringBody = WebApiFetch.BodyInit.fromString("hello") +let blobBody = WebApiFetch.BodyInit.fromBlob(blob) +let fileBody = WebApiFetch.BodyInit.fromFile(file) +let paramsBody = WebApiFetch.BodyInit.fromURLSearchParams(params) +let formDataBody = WebApiFetch.BodyInit.fromFormData(formData) +let streamBody = WebApiFetch.BodyInit.fromReadableStream(stream) let req1 = WebApiFetch.Request.fromURL( "https://example.com/api", diff --git a/tests/FetchAPI/Response__test.res b/tests/FetchAPI/Response__test.res index 8609261..02ee030 100644 --- a/tests/FetchAPI/Response__test.res +++ b/tests/FetchAPI/Response__test.res @@ -1,9 +1,9 @@ -let headers: WebApiFetch.HeadersInit.t = WebApiFetch.HeadersInit.fromDict(dict{"X-Fruit": "Peach"}) -let blob: WebApiFile.Blob.t = WebApiFile.Blob.make(~blobParts=[]) -let file: WebApiFile.File.t = WebApiFile.File.make(~fileBits=[], ~fileName="pong.txt") -let params: WebApiURL.URLSearchParams.t = WebApiURL.URLSearchParams.fromString("fruit=peach") -let formData: WebApiFetch.FormData.t = WebApiFetch.FormData.make() -let stream: WebApiFile.ReadableStream.t> = WebApiFile.ReadableStream.make() +let headers = WebApiFetch.HeadersInit.fromDict(dict{"X-Fruit": "Peach"}) +let blob = WebApiFile.Blob.make(~blobParts=[]) +let file = WebApiFile.File.make(~fileBits=[], ~fileName="pong.txt") +let params = WebApiURL.URLSearchParams.fromString("fruit=peach") +let formData = WebApiFetch.FormData.make() +let stream = WebApiFile.ReadableStream.make() let response = WebApiFetch.Response.fromNull(~init={status: 204, headers}) diff --git a/tests/Global__test.res b/tests/Global__test.res index 338708f..400a39f 100644 --- a/tests/Global__test.res +++ b/tests/Global__test.res @@ -50,9 +50,3 @@ let (auth, p256dh) = switch pushSubscriptionJSON.keys { } Console.log(`For subscription ${subscription.endpoint}, auth is ${auth} and p256dh is ${p256dh}`) -let _setIntervalWithCallback = WebApiDOM.Window.setIntervalWithCallback -let _alertWithMessage = WebApiDOM.Window.alertWithMessage -let _postMessageWithOptions = WebApiDOM.Window.postMessageWithOptions -let _scrollXY = WebApiDOM.Window.scrollXY -let _scrollToXY = WebApiDOM.Window.scrollToXY -let _scrollByXY = WebApiDOM.Window.scrollByXY