From bfd7397dde994e7cc611f7f2d9aedecd64e7fd04 Mon Sep 17 00:00:00 2001 From: Josh Vlk Date: Mon, 3 Aug 2026 16:55:26 -0400 Subject: [PATCH] refactor: establish Observers folder feature --- rescript.json | 29 +++++++------------ .../IntersectionObserver.res | 0 .../IntersectionObserverRoot.res | 4 ++- .../IntersectionObserverTypes.res | 0 .../MutationObserver.res | 0 .../ResizeObserver.res | 0 .../ResizeObserverTypes.res | 0 7 files changed, 13 insertions(+), 20 deletions(-) rename src/{IntersectionObserver => observers}/IntersectionObserver.res (100%) rename src/{IntersectionObserver => observers}/IntersectionObserverRoot.res (87%) rename src/{IntersectionObserver => observers}/IntersectionObserverTypes.res (100%) rename src/{MutationObserver => observers}/MutationObserver.res (100%) rename src/{ResizeObserver => observers}/ResizeObserver.res (100%) rename src/{ResizeObserver => observers}/ResizeObserverTypes.res (100%) diff --git a/rescript.json b/rescript.json index 681e79eb..65672937 100644 --- a/rescript.json +++ b/rescript.json @@ -19,6 +19,11 @@ "WebAPI.Media": ["WebAPI.HTML", "Media"], "WebAPI.WebAudio": ["WebAPI.Media", "WebAPI.Messaging", "WebAudio"], "WebAPI.SVG": ["WebAPI.DOMNodes", "WebAPI.Geometry", "SVG"], + "WebAPI.Observers": [ + "WebAPI.DOMNodes", + "WebAPI.Geometry", + "Observers" + ], "WebAPI.File": ["WebAPI.Event", "File"], "WebAPI.URL": ["WebAPI.DOM", "URL"], "WebAPI.Fetch": ["WebAPI.Event", "WebAPI.File", "WebAPI.URL", "Fetch"], @@ -361,12 +366,14 @@ ] }, { - "dir": "src/IntersectionObserver", + "dir": "src/observers", "subdirs": true, - "feature": "WebAPI.IntersectionObserver", + "feature": "Observers", "public": [ "IntersectionObserver", - "IntersectionObserverRoot" + "IntersectionObserverRoot", + "MutationObserver", + "ResizeObserver" ] }, { @@ -402,14 +409,6 @@ "VideoPlaybackQuality" ] }, - { - "dir": "src/MutationObserver", - "subdirs": true, - "feature": "WebAPI.MutationObserver", - "public": [ - "MutationObserver" - ] - }, { "dir": "src/performance", "subdirs": true, @@ -428,14 +427,6 @@ "Permissions" ] }, - { - "dir": "src/ResizeObserver", - "subdirs": true, - "feature": "WebAPI.ResizeObserver", - "public": [ - "ResizeObserver" - ] - }, { "dir": "src/ServiceWorker", "subdirs": true, diff --git a/src/IntersectionObserver/IntersectionObserver.res b/src/observers/IntersectionObserver.res similarity index 100% rename from src/IntersectionObserver/IntersectionObserver.res rename to src/observers/IntersectionObserver.res diff --git a/src/IntersectionObserver/IntersectionObserverRoot.res b/src/observers/IntersectionObserverRoot.res similarity index 87% rename from src/IntersectionObserver/IntersectionObserverRoot.res rename to src/observers/IntersectionObserverRoot.res index ea99dd53..1d5c88f7 100644 --- a/src/IntersectionObserver/IntersectionObserverRoot.res +++ b/src/observers/IntersectionObserverRoot.res @@ -10,10 +10,12 @@ type decoded = | Document(DOM.document) | Null +let isDocument = (_: 't): bool => %raw(`param instanceof Document`) + let decode = (t: IntersectionObserverTypes.root): decoded => { if Element.isInstanceOf(t) { Element(t->toElement) - } else if Document.isInstanceOf(t) { + } else if isDocument(t) { Document(t->toDocument) } else { Null diff --git a/src/IntersectionObserver/IntersectionObserverTypes.res b/src/observers/IntersectionObserverTypes.res similarity index 100% rename from src/IntersectionObserver/IntersectionObserverTypes.res rename to src/observers/IntersectionObserverTypes.res diff --git a/src/MutationObserver/MutationObserver.res b/src/observers/MutationObserver.res similarity index 100% rename from src/MutationObserver/MutationObserver.res rename to src/observers/MutationObserver.res diff --git a/src/ResizeObserver/ResizeObserver.res b/src/observers/ResizeObserver.res similarity index 100% rename from src/ResizeObserver/ResizeObserver.res rename to src/observers/ResizeObserver.res diff --git a/src/ResizeObserver/ResizeObserverTypes.res b/src/observers/ResizeObserverTypes.res similarity index 100% rename from src/ResizeObserver/ResizeObserverTypes.res rename to src/observers/ResizeObserverTypes.res