From a42309e21159af127964ee1561c8508affaeb33a Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 1 Jul 2025 10:29:59 +0200 Subject: [PATCH 1/2] Add URL API --- src/CSSFontLoadingAPI.res | 1 - src/CSSFontLoadingAPI/FontFaceSet.res | 4 +- src/CanvasAPI/OffscreenCanvas.res | 4 +- src/ChannelMessagingAPI/MessagePort.res | 4 +- src/ClipboardAPI/Clipboard.res | 4 +- src/DOMAPI.res | 105 ++++++------------ src/DOMAPI/Animation.res | 4 +- src/DOMAPI/CharacterData.res | 8 +- src/DOMAPI/Comment.res | 4 +- src/DOMAPI/Document.res | 4 +- src/DOMAPI/DocumentFragment.res | 8 +- src/DOMAPI/Element.res | 8 +- src/DOMAPI/HTMLAnchorElement.res | 4 +- src/DOMAPI/HTMLAreaElement.res | 4 +- src/DOMAPI/HTMLAudioElement.res | 4 +- src/DOMAPI/HTMLBRElement.res | 4 +- src/DOMAPI/HTMLBaseElement.res | 4 +- src/DOMAPI/HTMLBodyElement.res | 4 +- src/DOMAPI/HTMLButtonElement.res | 4 +- src/DOMAPI/HTMLCanvasElement.res | 4 +- src/DOMAPI/HTMLDListElement.res | 4 +- src/DOMAPI/HTMLDataElement.res | 4 +- src/DOMAPI/HTMLDataListElement.res | 4 +- src/DOMAPI/HTMLDialogElement.res | 4 +- src/DOMAPI/HTMLDivElement.res | 4 +- src/DOMAPI/HTMLElement.res | 8 +- src/DOMAPI/HTMLEmbedElement.res | 4 +- src/DOMAPI/HTMLFieldSetElement.res | 4 +- src/DOMAPI/HTMLFormElement.res | 4 +- src/DOMAPI/HTMLFrameSetElement.res | 4 +- src/DOMAPI/HTMLHRElement.res | 4 +- src/DOMAPI/HTMLHeadElement.res | 4 +- src/DOMAPI/HTMLHeadingElement.res | 4 +- src/DOMAPI/HTMLHtmlElement.res | 4 +- src/DOMAPI/HTMLIFrameElement.res | 4 +- src/DOMAPI/HTMLImageElement.res | 4 +- src/DOMAPI/HTMLInputElement.res | 4 +- src/DOMAPI/HTMLLIElement.res | 4 +- src/DOMAPI/HTMLLabelElement.res | 4 +- src/DOMAPI/HTMLLegendElement.res | 4 +- src/DOMAPI/HTMLLinkElement.res | 4 +- src/DOMAPI/HTMLMapElement.res | 4 +- src/DOMAPI/HTMLMediaElement.res | 8 +- src/DOMAPI/HTMLMenuElement.res | 4 +- src/DOMAPI/HTMLMetaElement.res | 4 +- src/DOMAPI/HTMLMeterElement.res | 4 +- src/DOMAPI/HTMLModElement.res | 4 +- src/DOMAPI/HTMLOListElement.res | 4 +- src/DOMAPI/HTMLObjectElement.res | 4 +- src/DOMAPI/HTMLOptGroupElement.res | 4 +- src/DOMAPI/HTMLOptionElement.res | 4 +- src/DOMAPI/HTMLOutputElement.res | 4 +- src/DOMAPI/HTMLParagraphElement.res | 4 +- src/DOMAPI/HTMLPictureElement.res | 4 +- src/DOMAPI/HTMLPreElement.res | 4 +- src/DOMAPI/HTMLProgressElement.res | 4 +- src/DOMAPI/HTMLQuoteElement.res | 4 +- src/DOMAPI/HTMLScriptElement.res | 4 +- src/DOMAPI/HTMLSelectElement.res | 4 +- src/DOMAPI/HTMLSlotElement.res | 4 +- src/DOMAPI/HTMLSourceElement.res | 4 +- src/DOMAPI/HTMLSpanElement.res | 4 +- src/DOMAPI/HTMLStyleElement.res | 4 +- src/DOMAPI/HTMLTableCaptionElement.res | 4 +- src/DOMAPI/HTMLTableCellElement.res | 4 +- src/DOMAPI/HTMLTableElement.res | 4 +- src/DOMAPI/HTMLTableRowElement.res | 4 +- src/DOMAPI/HTMLTableSectionElement.res | 4 +- src/DOMAPI/HTMLTemplateElement.res | 4 +- src/DOMAPI/HTMLTextAreaElement.res | 4 +- src/DOMAPI/HTMLTimeElement.res | 4 +- src/DOMAPI/HTMLTitleElement.res | 4 +- src/DOMAPI/HTMLTrackElement.res | 4 +- src/DOMAPI/HTMLUListElement.res | 4 +- src/DOMAPI/HTMLVideoElement.res | 4 +- src/DOMAPI/MediaQueryList.res | 4 +- src/DOMAPI/Navigator.res | 1 + src/DOMAPI/Node.res | 8 +- src/DOMAPI/SVGGraphicsElement.res | 4 +- src/DOMAPI/ScreenOrientation.res | 4 +- src/DOMAPI/ShadowRoot.res | 4 +- src/DOMAPI/Text.res | 4 +- src/DOMAPI/TextTrackList.res | 4 +- src/DOMAPI/Window.res | 4 +- .../MediaKeySession.res | 4 +- src/EventAPI.res | 3 +- src/EventAPI/AbortSignal.res | 4 +- src/EventAPI/Event.res | 4 +- src/EventAPI/EventTarget.res | 4 +- src/EventAPI/ExtendableEvent.res | 8 +- src/FetchAPI.res | 11 -- src/FetchAPI/BodyInit.res | 1 + src/FetchAPI/Response.res | 1 + src/FileAPI/Blob.res | 4 +- src/FileAPI/File.res | 4 +- src/FileAndDirectoryEntriesAPI.res | 3 +- src/IndexedDBAPI/IDBDatabase.res | 4 +- src/IndexedDBAPI/IDBTransaction.res | 4 +- .../MediaDevices.res | 4 +- src/MediaCaptureAndStreamsAPI/MediaStream.res | 4 +- .../MediaStreamTrack.res | 4 +- src/NotificationAPI/Notification.res | 7 +- src/PerformanceAPI/Performance.res | 4 +- src/PushAPI/PushEvent.res | 4 +- src/RemotePlaybackAPI/RemotePlayback.res | 4 +- src/ScreenWakeLockAPI/WakeLockSentinel.res | 4 +- src/ServiceWorkerAPI/ServiceWorker.res | 4 +- .../ServiceWorkerContainer.res | 4 +- .../ServiceWorkerGlobalScope.res | 4 +- .../ServiceWorkerRegistration.res | 4 +- src/UIEventsAPI/CompositionEvent.res | 4 +- src/UIEventsAPI/FocusEvent.res | 4 +- src/UIEventsAPI/InputEvent.res | 4 +- src/UIEventsAPI/KeyboardEvent.res | 4 +- src/UIEventsAPI/MouseEvent.res | 8 +- src/UIEventsAPI/PointerEvent.res | 4 +- src/UIEventsAPI/TouchEvent.res | 4 +- src/UIEventsAPI/UIEvent.res | 8 +- src/UIEventsAPI/WheelEvent.res | 4 +- src/URLAPI.js | 2 + src/URLAPI.res | 68 ++++++++++++ src/URLAPI/URL.js | 2 + src/URLAPI/URL.res | 37 ++++++ src/URLAPI/URLSearchParams.js | 2 + src/{FetchAPI => URLAPI}/URLSearchParams.res | 2 +- src/WebAudioAPI.res | 45 +++----- src/WebAudioAPI/AnalyserNode.res | 4 +- src/WebAudioAPI/AudioBufferSourceNode.res | 4 +- src/WebAudioAPI/AudioContext.res | 4 +- src/WebAudioAPI/AudioDestinationNode.res | 4 +- src/WebAudioAPI/AudioNode.res | 4 +- src/WebAudioAPI/AudioProcessingEvent.res | 4 +- src/WebAudioAPI/AudioScheduledSourceNode.res | 8 +- src/WebAudioAPI/AudioWorkletNode.res | 4 +- src/WebAudioAPI/BaseAudioContext.res | 4 +- src/WebAudioAPI/BiquadFilterNode.res | 4 +- src/WebAudioAPI/ChannelMergerNode.res | 4 +- src/WebAudioAPI/ChannelSplitterNode.res | 4 +- src/WebAudioAPI/ConstantSourceNode.res | 4 +- src/WebAudioAPI/ConvolverNode.res | 4 +- src/WebAudioAPI/DelayNode.res | 4 +- src/WebAudioAPI/DynamicsCompressorNode.res | 4 +- src/WebAudioAPI/GainNode.res | 4 +- src/WebAudioAPI/IIRFilterNode.res | 4 +- .../MediaElementAudioSourceNode.res | 4 +- .../MediaStreamAudioDestinationNode.res | 4 +- .../MediaStreamAudioSourceNode.res | 4 +- .../OfflineAudioCompletionEvent.res | 4 +- src/WebAudioAPI/OfflineAudioContext.res | 4 +- src/WebAudioAPI/OscillatorNode.res | 4 +- src/WebAudioAPI/PannerNode.res | 4 +- src/WebAudioAPI/StereoPannerNode.res | 4 +- src/WebAudioAPI/WaveShaperNode.res | 4 +- src/WebSocketsAPI/CloseEvent.res | 4 +- src/WebSocketsAPI/WebSocket.res | 4 +- src/WebSpeechAPI/SpeechSynthesis.res | 4 +- src/WebSpeechAPI/SpeechSynthesisUtterance.res | 4 +- src/WebStorageAPI/StorageEvent.res | 4 +- src/WebVTTAPI.res | 3 +- src/WebVTTAPI/TextTrack.res | 4 +- src/WebWorkersAPI/WorkerGlobalScope.res | 8 +- 161 files changed, 325 insertions(+), 589 deletions(-) create mode 100644 src/URLAPI.js create mode 100644 src/URLAPI.res create mode 100644 src/URLAPI/URL.js create mode 100644 src/URLAPI/URL.res create mode 100644 src/URLAPI/URLSearchParams.js rename src/{FetchAPI => URLAPI}/URLSearchParams.res (99%) diff --git a/src/CSSFontLoadingAPI.res b/src/CSSFontLoadingAPI.res index 5232bbf..1cda217 100644 --- a/src/CSSFontLoadingAPI.res +++ b/src/CSSFontLoadingAPI.res @@ -77,7 +77,6 @@ type rec fontFace = { /** [See FontFaceSet on MDN](https://developer.mozilla.org/docs/Web/API/FontFaceSet) */ -@editor.completeFrom(FontFace) @editor.completeFrom(FontFaceSet) type rec fontFaceSet = { ...eventTarget, diff --git a/src/CSSFontLoadingAPI/FontFaceSet.res b/src/CSSFontLoadingAPI/FontFaceSet.res index 7421730..9d6d178 100644 --- a/src/CSSFontLoadingAPI/FontFaceSet.res +++ b/src/CSSFontLoadingAPI/FontFaceSet.res @@ -1,8 +1,6 @@ open CSSFontLoadingAPI -include EventTarget.Impl({ - type t = fontFaceSet -}) +include EventTarget.Impl({type t = fontFaceSet}) /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/FontFaceSet/add) diff --git a/src/CanvasAPI/OffscreenCanvas.res b/src/CanvasAPI/OffscreenCanvas.res index 1afe538..d563649 100644 --- a/src/CanvasAPI/OffscreenCanvas.res +++ b/src/CanvasAPI/OffscreenCanvas.res @@ -7,9 +7,7 @@ open FileAPI @new external make: (~width: int, ~height: int) => offscreenCanvas = "OffscreenCanvas" -include EventTarget.Impl({ - type t = offscreenCanvas -}) +include EventTarget.Impl({type t = offscreenCanvas}) /** Returns an object that exposes an API for drawing on the OffscreenCanvas object. contextId specifies the desired API: "2d", "bitmaprenderer", "webgl", or "webgl2". options is handled by that API. diff --git a/src/ChannelMessagingAPI/MessagePort.res b/src/ChannelMessagingAPI/MessagePort.res index c444cca..c0e3e78 100644 --- a/src/ChannelMessagingAPI/MessagePort.res +++ b/src/ChannelMessagingAPI/MessagePort.res @@ -1,8 +1,6 @@ open ChannelMessagingAPI -include EventTarget.Impl({ - type t = messagePort -}) +include EventTarget.Impl({type t = messagePort}) /** Posts a message through the channel. Objects listed in transfer are transferred, not just cloned, meaning that they are no longer usable on the sending side. diff --git a/src/ClipboardAPI/Clipboard.res b/src/ClipboardAPI/Clipboard.res index dbd9b3f..690ae19 100644 --- a/src/ClipboardAPI/Clipboard.res +++ b/src/ClipboardAPI/Clipboard.res @@ -1,8 +1,6 @@ open ClipboardAPI -include EventTarget.Impl({ - type t = clipboard -}) +include EventTarget.Impl({type t = clipboard}) /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Clipboard/read) diff --git a/src/DOMAPI.res b/src/DOMAPI.res index 36d016c..be217f4 100644 --- a/src/DOMAPI.res +++ b/src/DOMAPI.res @@ -506,8 +506,7 @@ type rec animationTimeline = { /** [See DocumentTimeline on MDN](https://developer.mozilla.org/docs/Web/API/DocumentTimeline) */ -@editor.completeFrom(DocumentTimeline) -and documentTimeline = { +@editor.completeFrom(DocumentTimeline) and documentTimeline = { // Base properties from AnimationTimeline /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AnimationTimeline/currentTime) @@ -608,8 +607,7 @@ and styleSheet = { A single CSS style sheet. It inherits properties and methods from its parent, StyleSheet. [See CSSStyleSheet on MDN](https://developer.mozilla.org/docs/Web/API/CSSStyleSheet) */ -@editor.completeFrom(CSSStyleSheet) -and cssStyleSheet = { +@editor.completeFrom(CSSStyleSheet) and cssStyleSheet = { // Base properties from StyleSheet /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/StyleSheet/type) @@ -675,8 +673,7 @@ and cssRule = { A CSSRuleList is an (indirect-modify only) array-like object containing an ordered collection of CSSRule objects. [See CSSRuleList on MDN](https://developer.mozilla.org/docs/Web/API/CSSRuleList) */ -@editor.completeFrom(CSSRuleList) -and cssRuleList = { +@editor.completeFrom(CSSRuleList) and cssRuleList = { /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/CSSRuleList/length) */ @@ -687,8 +684,7 @@ and cssRuleList = { An object that is a CSS declaration block, and exposes style information and various style-related methods and properties. [See CSSStyleDeclaration on MDN](https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration) */ -@editor.completeFrom(CSSStyleDeclaration) -and cssStyleDeclaration = { +@editor.completeFrom(CSSStyleDeclaration) and cssStyleDeclaration = { /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/cssText) */ @@ -2472,8 +2468,7 @@ type rec node = { NodeList objects are collections of nodes, usually returned by properties such as Node.childNodes and methods such as document.querySelectorAll(). [See NodeList on MDN](https://developer.mozilla.org/docs/Web/API/NodeList) */ -@editor.completeFrom(NodeList) -and nodeList = { +@editor.completeFrom(NodeList) and nodeList = { /** Returns the number of nodes in the collection. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/NodeList/length) @@ -2495,8 +2490,7 @@ and nodeListOf<'tNode> = { Element is the most general base class from which all objects in a Document inherit. It only has methods and properties common to all kinds of elements. More specific classes inherit from Element. [See Element on MDN](https://developer.mozilla.org/docs/Web/API/Element) */ -@editor.completeFrom(Element) -and element = { +@editor.completeFrom(Element) and element = { // Base properties from Node /** Returns the type of node. @@ -2867,8 +2861,7 @@ and element = { /** [See ShadowRoot on MDN](https://developer.mozilla.org/docs/Web/API/ShadowRoot) */ -@editor.completeFrom(ShadowRoot) -and shadowRoot = { +@editor.completeFrom(ShadowRoot) and shadowRoot = { // Base properties from DocumentFragment // End base properties from DocumentFragment @@ -3008,8 +3001,7 @@ Similarly, when the focused element is in a different node tree than documentOrS A generic collection (array-like object similar to arguments) of elements (in document order) and offers methods and properties for selecting from the list. [See HTMLCollection on MDN](https://developer.mozilla.org/docs/Web/API/HTMLCollection) */ -@editor.completeFrom(HTMLCollection) -and htmlCollection = { +@editor.completeFrom(HTMLCollection) and htmlCollection = { /** Sets or retrieves the number of objects in a collection. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLCollection/length) @@ -3031,8 +3023,7 @@ and htmlCollectionOf<'t> = { A collection of HTML form control elements. [See HTMLFormControlsCollection on MDN](https://developer.mozilla.org/docs/Web/API/HTMLFormControlsCollection) */ -@editor.completeFrom(HTMLFormControlsCollection) -and htmlFormControlsCollection = { +@editor.completeFrom(HTMLFormControlsCollection) and htmlFormControlsCollection = { // Base properties from HTMLCollection /** Sets or retrieves the number of objects in a collection. @@ -3046,8 +3037,7 @@ and htmlFormControlsCollection = { Any HTML element. Some elements directly implement this interface, while others implement it via an interface that inherits it. [See HTMLElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLElement) */ -@editor.completeFrom(HTMLElement) -and htmlElement = { +@editor.completeFrom(HTMLElement) and htmlElement = { // Base properties from Element /** Returns the namespace. @@ -3341,8 +3331,7 @@ and htmlElement = { Contains the descriptive information, or metadata, for a document. This object inherits all of the properties and methods described in the HTMLElement interface. [See HTMLHeadElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLHeadElement) */ -@editor.completeFrom(HTMLHeadElement) -and htmlHeadElement = { +@editor.completeFrom(HTMLHeadElement) and htmlHeadElement = { // Base properties from HTMLElement /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLElement/title) @@ -3598,8 +3587,7 @@ and htmlHeadElement = { A
element in the DOM; it allows access to and in some cases modification of aspects of the form, as well as access to its component elements. [See HTMLFormElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLFormElement) */ -@editor.completeFrom(HTMLFormElement) -and htmlFormElement = { +@editor.completeFrom(HTMLFormElement) and htmlFormElement = { // Base properties from HTMLElement /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLElement/title) @@ -3906,8 +3894,7 @@ and htmlFormElement = { Provides special properties and methods for manipulating elements. [See HTMLImageElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLImageElement) */ -@editor.completeFrom(HTMLImageElement) -and htmlImageElement = { +@editor.completeFrom(HTMLImageElement) and htmlImageElement = { // Base properties from HTMLElement /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLElement/title) @@ -4250,8 +4237,7 @@ and htmlImageElement = { Provides special properties (beyond the regular HTMLElement interface it also has available to it by inheritance) for manipulating elements. [See HTMLEmbedElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement) */ -@editor.completeFrom(HTMLEmbedElement) -and htmlEmbedElement = { +@editor.completeFrom(HTMLEmbedElement) and htmlEmbedElement = { // Base properties from HTMLElement /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLElement/title) @@ -4523,8 +4509,7 @@ and htmlEmbedElement = { Hyperlink elements and provides special properties and methods (beyond those of the regular HTMLElement object interface that they inherit from) for manipulating the layout and presentation of such elements. [See HTMLAnchorElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement) */ -@editor.completeFrom(HTMLAnchorElement) -and htmlAnchorElement = { +@editor.completeFrom(HTMLAnchorElement) and htmlAnchorElement = { // Base properties from HTMLElement /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLElement/title) @@ -4897,8 +4882,7 @@ Can be set, to change the URL's fragment (ignores leading "#"). Provides special properties and methods (beyond those of the regular object HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of elements. [See HTMLAreaElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLAreaElement) */ -@editor.completeFrom(HTMLAreaElement) -and htmlAreaElement = { +@editor.completeFrom(HTMLAreaElement) and htmlAreaElement = { // Base properties from HTMLElement /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLElement/title) @@ -5251,8 +5235,7 @@ Can be set, to change the URL's fragment (ignores leading "#"). HTML