From bbaa1384e727710e346ec97fc07cb2e27a727f2e Mon Sep 17 00:00:00 2001 From: Josh Vlk Date: Wed, 22 Apr 2026 12:24:45 -0400 Subject: [PATCH 01/13] docs: add unmonorepo WebApi design spec --- .../2026-04-22-unmonorepo-webapi-design.md | 246 ++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 docs/superpowers/specs/2026-04-22-unmonorepo-webapi-design.md diff --git a/docs/superpowers/specs/2026-04-22-unmonorepo-webapi-design.md b/docs/superpowers/specs/2026-04-22-unmonorepo-webapi-design.md new file mode 100644 index 00000000..761808db --- /dev/null +++ b/docs/superpowers/specs/2026-04-22-unmonorepo-webapi-design.md @@ -0,0 +1,246 @@ +# Unmonorepo WebApi Design + +**Date:** 2026-04-22 +**Status:** Approved in conversation, written for review before implementation + +## Context + +The repository was split into npm workspaces so each Web API area could build and publish independently from `packages/*`. The ReScript compiler now supports feature-gated source directories and feature-gated dependencies, so the package split is no longer required to support partial builds. + +The new target is a single published npm package, `@rescript/webapi`, with a unified internal build and an external API that still preserves feature-level boundaries such as `WebApi.DOM`, `WebApi.Fetch`, and `WebApi.Base`. + +## Goals + +- Remove the monorepo/workspace package split. +- Move all feature sources from `packages//src` to `src/`. +- Delete every subpackage `package.json` and `rescript.json`. +- Make the root `rescript.json` the single source of truth for sources, features, and ReScript dependencies. +- Preserve the logical public API boundaries as `WebApi.`. +- Keep internal helper modules private through the new `public` source setting. +- Publish one npm package: `@rescript/webapi`. +- Let internal builds and downstream consumers compile only the features they need. + +## Non-Goals + +- This change does not redesign the feature taxonomy. +- This change does not flatten the public API into one global namespace. +- This change does not preserve the old multi-package publish flow. + +## Repository Structure + +### Before + +- `packages/Base/src` +- `packages/DOM/src` +- `packages/Fetch/src` +- One `package.json` and one `rescript.json` per package +- Root npm workspaces pointing at `packages/*` + +### After + +- `src/Base` +- `src/DOM` +- `src/Fetch` +- One root `package.json` +- One root `rescript.json` +- No npm workspaces + +Each former package directory remains a logical feature boundary, but only as source layout and public API grouping, not as an npm workspace. + +## Root `rescript.json` + +The root `rescript.json` becomes the canonical build definition for the entire repo. + +### Sources + +Each former package source directory is listed as its own source entry. Example shape: + +```json +{ + "name": "@rescript/webapi", + "sources": [ + { + "dir": "src/DOM", + "subdirs": true, + "feature": "WebApi.DOM", + "public": ["DOM"] + }, + { + "dir": "src/Fetch", + "subdirs": true, + "feature": "WebApi.Fetch", + "public": ["Fetch"] + }, + { + "dir": "tests", + "subdirs": true, + "type": "dev" + } + ] +} +``` + +Rules: + +- Every former package gets one root source entry. +- The `feature` value matches the public module name, for example `"WebApi.DOM"` and `"WebApi.Fetch"`. +- The `public` list exposes only the feature entry module for that source directory. +- Helper modules such as `DomTypes` and `DomGlobal` stay internal because they are not listed in `public`. +- `tests` remains a dev-only source. + +### Dependencies + +The root `dependencies` section in `rescript.json` should only describe real package dependencies after the unmonorepo migration. + +The current per-package `rescript.json` files mostly depend on other workspace packages from the same repository. Once everything lives inside one ReScript package, those internal relationships should become normal module references inside the unified package rather than package dependencies. + +Feature-gated dependency objects are still available when the unified package needs to depend on an external ReScript package only for a subset of features, but that is not the primary migration mechanism for replacing the old workspace graph. + +Example: + +```json +{ + "dependencies": [ + "@plain/dep", + { "name": "@other/heavy", "features": ["WebApi.WebCrypto"] } + ] +} +``` + +Migration rule: + +- Remove internal package-to-package dependencies that only existed because of the workspace split. +- Keep or add root `dependencies` entries only for actual external ReScript packages. +- Use feature-gated dependency objects only when an external dependency truly belongs to a subset of the unified API surface. + +## Public API Shape + +The public API remains feature-oriented: + +- `WebApi.Base` +- `WebApi.DOM` +- `WebApi.Fetch` +- `WebApi.WebCrypto` +- and the rest of the former package surfaces + +The unified build must not expose raw internal file modules as first-class public API. Consumers should interact with a curated surface through the feature entry modules only. + +Each feature directory therefore needs one public entry module whose filename matches the feature name: + +- `src/DOM/DOM.res` +- `src/Fetch/Fetch.res` +- `src/Base/Base.res` + +Those entry modules are the only modules exported from their source directory through `public`. + +## Internal Module Naming + +The current workspace layout relied on per-package namespaces, which allowed repeated generic file names such as: + +- `Types.res` +- `Global.res` +- `Event.res` +- `File.res` +- `HTMLMediaElement.res` + +In a unified package these names would collide, so the migration must rename generic internal modules to feature-qualified names. + +Examples: + +- `src/DOM/Types.res` -> `src/DOM/DomTypes.res` +- `src/DOM/Global.res` -> `src/DOM/DomGlobal.res` +- `src/Fetch/Global.res` -> `src/Fetch/FetchGlobal.res` +- `src/Base/Event.res` -> `src/Base/BaseEvent.res` +- `src/File/Types.res` -> `src/File/FileTypes.res` + +Naming rule: + +- Prefix internal modules with the feature’s public module stem. +- Keep the public entry module itself unprefixed when it is the exported surface module, for example `DOM.res` and `Fetch.res`. + +This keeps the public API stable while making the unified internal module graph collision-free. + +## Publishing And Package Metadata + +The root `package.json` becomes the only published npm package definition. + +Required changes: + +- Rename the package to `@rescript/webapi`. +- Remove the `workspaces` field. +- Remove workspace-oriented scripts such as `build:packages`. +- Replace multi-workspace publishing with a single-package publish flow from the repo root. +- Replace any placeholder-package tooling that exists only to reserve or publish subpackage names. + +The published package contents should include the files needed for one ReScript package rather than many workspace packages. + +## Tooling And CI Updates + +Any tooling that assumes the workspace layout must be updated to the new unified structure. + +Known affected areas: + +- `scripts/create-npm-packages.js` +- `.github/workflows/ci.yml` +- `docs/llm.js` +- Documentation that references multiple packages or workspace publishing + +Expected changes: + +- CI should build and package only the root package. +- Publish jobs should run one `npm publish` from the root package, not loop over `packages/*`. +- Source discovery scripts should read from `src/*` instead of `packages/*/src`. +- Documentation should instruct consumers to install `@rescript/webapi`. + +## Data Flow And Build Model + +The build becomes unified at the repository level: + +1. ReScript reads the root `rescript.json`. +2. Each feature source directory is included in the build graph. +3. Feature gating determines which source directories and gated dependencies participate in a given build. +4. Only the explicitly public feature entry modules are exposed to consumers. +5. Internal helper modules remain compile-time implementation details. + +This provides one coherent package without losing the ability to compile narrower slices of the API surface. + +## Migration Strategy + +Implementation should proceed in this order: + +1. Add the new root `src/` layout. +2. Move source files out of `packages/*/src`. +3. Rename internal generic modules to feature-qualified names. +4. Update intra-feature and cross-feature references to the new module names. +5. Rewrite the root `rescript.json` sources and dependencies. +6. Remove subpackage `rescript.json` and `package.json` files. +7. Rewrite root npm metadata and publish scripts for a single package. +8. Update docs and CI for the new layout. + +This order minimizes the time spent in a partially migrated state with broken module references. + +## Testing And Verification + +Implementation should verify: + +- Full repo build succeeds from the root package. +- Tests still run successfully from the root package. +- Feature-gated builds can compile selected features without pulling the entire surface area. +- Internal helper modules are not exposed through source `public` settings. +- Packaging and publish dry-run operate on the single root package. + +The most important regression risks are: + +- Broken module references after internal renames +- Leaving stale internal package dependencies in root `rescript.json` +- Accidentally public helper modules +- CI or publish logic still assuming workspaces + +## Open Decisions Already Resolved + +- Use a single package instead of npm workspaces. +- Preserve feature boundaries in the external API. +- Use `WebApi.*` spelling, not `WebAPI.*`. +- Map feature names to public module names such as `"WebApi.DOM"`. +- Rename generic internal modules to feature-qualified names. +- Use source-level `public` settings so only the feature entry module is exposed. From d164c9786bc528f29aca92e1c14f1db33ab14979 Mon Sep 17 00:00:00 2001 From: Josh Vlk Date: Wed, 22 Apr 2026 12:50:21 -0400 Subject: [PATCH 02/13] chore: ignore local worktrees --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 80164aa8..e06fc861 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ dist/ tmp/ docs/public/llm.txt *~ +.worktrees/ **/lib/bs/ **/lib/ocaml @@ -14,4 +15,4 @@ docs/public/llm.txt rescript.lock -**/*.res.js \ No newline at end of file +**/*.res.js From daaa3bebab9dc51626679a61d3750f8ff750d735 Mon Sep 17 00:00:00 2001 From: Josh Vlk Date: Wed, 22 Apr 2026 12:51:43 -0400 Subject: [PATCH 03/13] test: add unmonorepo feature spec helpers --- scripts/unmonorepo/feature-spec.mjs | 105 +++++++++++++++++++++++++ tests/unmonorepo/feature-spec.test.mjs | 46 +++++++++++ 2 files changed, 151 insertions(+) create mode 100644 scripts/unmonorepo/feature-spec.mjs create mode 100644 tests/unmonorepo/feature-spec.test.mjs diff --git a/scripts/unmonorepo/feature-spec.mjs b/scripts/unmonorepo/feature-spec.mjs new file mode 100644 index 00000000..30f16d29 --- /dev/null +++ b/scripts/unmonorepo/feature-spec.mjs @@ -0,0 +1,105 @@ +import fs from "node:fs"; +import path from "node:path"; + +export function namespaceToPublicModule(namespace) { + if (!namespace.startsWith("WebApi")) { + throw new Error(`Unsupported namespace: ${namespace}`); + } + + return namespace.slice("WebApi".length); +} + +export function publicModuleToInternalPrefix(publicModule) { + return publicModule.replace(/[A-Z]+(?=[A-Z][a-z]|$)|[A-Z][a-z]*/g, (part) => { + return part[0] + part.slice(1).toLowerCase(); + }); +} + +export function publicNameForLeafModule(leafName, internalPrefix) { + const duplicatedSuffixes = ["Types", "Global", "Event", "File", "HTMLMediaElement"]; + + for (const suffix of duplicatedSuffixes) { + if (leafName === `${internalPrefix}${suffix}`) { + return suffix; + } + } + + return leafName; +} + +export const featureSpecs = [ + ["Base", "WebApiBase"], + ["CSSFontLoading", "WebApiCSSFontLoading"], + ["Canvas", "WebApiCanvas"], + ["ChannelMessaging", "WebApiChannelMessaging"], + ["Clipboard", "WebApiClipboard"], + ["CredentialManagement", "WebApiCredentialManagement"], + ["DOM", "WebApiDOM"], + ["EncryptedMediaExtensions", "WebApiEncryptedMediaExtensions"], + ["Event", "WebApiEvent"], + ["Fetch", "WebApiFetch"], + ["File", "WebApiFile"], + ["FileAndDirectoryEntries", "WebApiFileAndDirectoryEntries"], + ["Gamepad", "WebApiGamepad"], + ["Geolocation", "WebApiGeolocation"], + ["History", "WebApiHistory"], + ["IndexedDB", "WebApiIndexedDB"], + ["IntersectionObserver", "WebApiIntersectionObserver"], + ["MediaCapabilities", "WebApiMediaCapabilities"], + ["MediaCaptureAndStreams", "WebApiMediaCaptureAndStreams"], + ["MediaSession", "WebApiMediaSession"], + ["MutationObserver", "WebApiMutationObserver"], + ["Notification", "WebApiNotification"], + ["Performance", "WebApiPerformance"], + ["Permissions", "WebApiPermissions"], + ["PictureInPicture", "WebApiPictureInPicture"], + ["Push", "WebApiPush"], + ["RemotePlayback", "WebApiRemotePlayback"], + ["ResizeObserver", "WebApiResizeObserver"], + ["ScreenWakeLock", "WebApiScreenWakeLock"], + ["ServiceWorker", "WebApiServiceWorker"], + ["Storage", "WebApiStorage"], + ["UIEvents", "WebApiUIEvents"], + ["URL", "WebApiURL"], + ["ViewTransitions", "WebApiViewTransitions"], + ["VisualViewport", "WebApiVisualViewport"], + ["WebAudio", "WebApiWebAudio"], + ["WebCrypto", "WebApiWebCrypto"], + ["WebLocks", "WebApiWebLocks"], + ["WebMIDI", "WebApiWebMIDI"], + ["WebSockets", "WebApiWebSockets"], + ["WebSpeech", "WebApiWebSpeech"], + ["WebStorage", "WebApiWebStorage"], + ["WebVTT", "WebApiWebVTT"], + ["WebWorkers", "WebApiWebWorkers"], +].map(([dirName, legacyNamespace]) => { + const publicModule = namespaceToPublicModule(legacyNamespace); + + return { + dirName, + legacyNamespace, + publicModule, + featureName: `WebApi.${publicModule}`, + internalPrefix: publicModuleToInternalPrefix(publicModule), + sourceDir: `src/${dirName}`, + entryModulePath: `src/${dirName}/${publicModule}.res`, + }; +}); + +export function findDuplicateLeafModules(rootDir, specs = featureSpecs) { + const counts = new Map(); + + for (const spec of specs) { + const legacySourceDir = path.join(rootDir, "packages", spec.dirName, "src"); + if (!fs.existsSync(legacySourceDir)) continue; + + for (const entry of fs.readdirSync(legacySourceDir, { withFileTypes: true })) { + if (!entry.isFile() || !entry.name.endsWith(".res")) continue; + + const leafName = path.basename(entry.name, ".res"); + counts.set(leafName, (counts.get(leafName) ?? 0) + 1); + } + } + + return new Set([...counts.entries()].filter(([, count]) => count > 1).map(([leafName]) => leafName)); +} diff --git a/tests/unmonorepo/feature-spec.test.mjs b/tests/unmonorepo/feature-spec.test.mjs new file mode 100644 index 00000000..0df72b9f --- /dev/null +++ b/tests/unmonorepo/feature-spec.test.mjs @@ -0,0 +1,46 @@ +import test from "node:test"; +import assert from "node:assert/strict"; +import { + featureSpecs, + publicModuleToInternalPrefix, + publicNameForLeafModule, +} from "../../scripts/unmonorepo/feature-spec.mjs"; + +test("defines all legacy feature mappings used by the unmonorepo migration", () => { + assert.deepEqual( + featureSpecs + .filter(({ dirName }) => dirName === "Base" || dirName === "DOM") + .map(({ dirName, legacyNamespace, publicModule, featureName, internalPrefix }) => ({ + dirName, + legacyNamespace, + publicModule, + featureName, + internalPrefix, + })), + [ + { + dirName: "Base", + legacyNamespace: "WebApiBase", + publicModule: "Base", + featureName: "WebApi.Base", + internalPrefix: "Base", + }, + { + dirName: "DOM", + legacyNamespace: "WebApiDOM", + publicModule: "DOM", + featureName: "WebApi.DOM", + internalPrefix: "Dom", + }, + ], + ); + + assert.equal(featureSpecs.length, 44); +}); + +test("normalizes internal prefixes and public duplicate names", () => { + assert.equal(publicModuleToInternalPrefix("DOM"), "Dom"); + assert.equal(publicModuleToInternalPrefix("URL"), "Url"); + assert.equal(publicNameForLeafModule("DomTypes", "Dom"), "Types"); + assert.equal(publicNameForLeafModule("Document", "Dom"), "Document"); +}); From fca0d50ffcc2f92c061572d03f1d2f5795b31859 Mon Sep 17 00:00:00 2001 From: Josh Vlk Date: Wed, 22 Apr 2026 12:53:16 -0400 Subject: [PATCH 04/13] test: add layout migration codemod --- scripts/unmonorepo/migrate-layout.mjs | 52 +++++++++++++++++++++ tests/unmonorepo/migrate-layout.test.mjs | 59 ++++++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 scripts/unmonorepo/migrate-layout.mjs create mode 100644 tests/unmonorepo/migrate-layout.test.mjs diff --git a/scripts/unmonorepo/migrate-layout.mjs b/scripts/unmonorepo/migrate-layout.mjs new file mode 100644 index 00000000..f70ffe60 --- /dev/null +++ b/scripts/unmonorepo/migrate-layout.mjs @@ -0,0 +1,52 @@ +import fs from "node:fs"; +import path from "node:path"; +import { featureSpecs, findDuplicateLeafModules } from "./feature-spec.mjs"; + +function moveFile(fromPath, toPath) { + fs.mkdirSync(path.dirname(toPath), { recursive: true }); + fs.renameSync(fromPath, toPath); +} + +export function migrateLayout(rootDir) { + const duplicateLeaves = findDuplicateLeafModules(rootDir, featureSpecs); + + for (const spec of featureSpecs) { + const legacySourceDir = path.join(rootDir, "packages", spec.dirName, "src"); + if (!fs.existsSync(legacySourceDir)) continue; + + const nextSourceDir = path.join(rootDir, "src", spec.dirName); + fs.mkdirSync(nextSourceDir, { recursive: true }); + + for (const entry of fs.readdirSync(legacySourceDir, { withFileTypes: true })) { + if (!entry.isFile() || !entry.name.endsWith(".res")) continue; + + const leafName = path.basename(entry.name, ".res"); + const nextLeafName = duplicateLeaves.has(leafName) + ? `${spec.internalPrefix}${leafName}` + : leafName; + + moveFile( + path.join(legacySourceDir, entry.name), + path.join(nextSourceDir, `${nextLeafName}.res`), + ); + } + + for (const removable of ["package.json", "rescript.json", "lib"]) { + fs.rmSync(path.join(rootDir, "packages", spec.dirName, removable), { + recursive: true, + force: true, + }); + } + + fs.rmSync(path.join(rootDir, "packages", spec.dirName), { + recursive: true, + force: true, + }); + } + + fs.rmSync(path.join(rootDir, "packages", "Prelude"), { recursive: true, force: true }); +} + +if (process.argv.includes("--write")) { + migrateLayout(process.cwd()); +} diff --git a/tests/unmonorepo/migrate-layout.test.mjs b/tests/unmonorepo/migrate-layout.test.mjs new file mode 100644 index 00000000..7796c28b --- /dev/null +++ b/tests/unmonorepo/migrate-layout.test.mjs @@ -0,0 +1,59 @@ +import test from "node:test"; +import assert from "node:assert/strict"; +import { mkdtempSync, mkdirSync, readFileSync, writeFileSync, existsSync } from "node:fs"; +import { tmpdir } from "node:os"; +import path from "node:path"; +import { migrateLayout } from "../../scripts/unmonorepo/migrate-layout.mjs"; + +function writePackage(root, dir, namespace, files) { + const packageDir = path.join(root, "packages", dir); + mkdirSync(path.join(packageDir, "src"), { recursive: true }); + writeFileSync(path.join(packageDir, "rescript.json"), JSON.stringify({ namespace })); + writeFileSync(path.join(packageDir, "package.json"), JSON.stringify({ name: dir })); + + for (const [name, contents] of Object.entries(files)) { + writeFileSync(path.join(packageDir, "src", name), contents); + } +} + +test("moves legacy sources into src/, renames duplicate leaves, and removes workspace metadata", () => { + const root = mkdtempSync(path.join(tmpdir(), "webapi-layout-")); + + writePackage(root, "DOM", "WebApiDOM", { + "Document.res": "let current = WebApiDOM.Global.document", + "Types.res": "type element", + "Global.res": "let document = 1", + }); + + writePackage(root, "Fetch", "WebApiFetch", { + "Global.res": "let fetch = 1", + "Types.res": "type request", + "Headers.res": "type t", + }); + + mkdirSync(path.join(root, "packages", "Prelude", "lib"), { recursive: true }); + + migrateLayout(root); + + assert.equal( + readFileSync(path.join(root, "src", "DOM", "Document.res"), "utf8"), + "let current = WebApiDOM.Global.document", + ); + assert.equal(readFileSync(path.join(root, "src", "DOM", "DomTypes.res"), "utf8"), "type element"); + assert.equal( + readFileSync(path.join(root, "src", "DOM", "DomGlobal.res"), "utf8"), + "let document = 1", + ); + assert.equal( + readFileSync(path.join(root, "src", "Fetch", "FetchGlobal.res"), "utf8"), + "let fetch = 1", + ); + assert.equal( + readFileSync(path.join(root, "src", "Fetch", "FetchTypes.res"), "utf8"), + "type request", + ); + assert.ok(!existsSync(path.join(root, "packages", "DOM", "rescript.json"))); + assert.ok(!existsSync(path.join(root, "packages", "DOM", "package.json"))); + assert.ok(!existsSync(path.join(root, "packages", "DOM"))); + assert.ok(!existsSync(path.join(root, "packages", "Prelude"))); +}); From 2e1b99711d8018e28fd2870bf6617efd611f1b97 Mon Sep 17 00:00:00 2001 From: Josh Vlk Date: Wed, 22 Apr 2026 13:10:51 -0400 Subject: [PATCH 05/13] refactor: migrate sources to unified feature layout --- packages/Base/package.json | 21 -- packages/Base/rescript.json | 16 -- packages/CSSFontLoading/package.json | 23 -- packages/CSSFontLoading/rescript.json | 19 -- packages/Canvas/package.json | 27 --- packages/Canvas/rescript.json | 22 -- packages/Canvas/src/VideoFrame.res | 140 ----------- packages/ChannelMessaging/package.json | 23 -- packages/ChannelMessaging/rescript.json | 18 -- packages/Clipboard/package.json | 24 -- packages/Clipboard/rescript.json | 19 -- packages/CredentialManagement/package.json | 24 -- packages/CredentialManagement/rescript.json | 19 -- packages/DOM/package.json | 55 ----- packages/DOM/rescript.json | 50 ---- packages/DOM/src/MediaQueryList.res | 1 - packages/DOM/src/TextTrackList.res | 8 - .../EncryptedMediaExtensions/package.json | 25 -- .../EncryptedMediaExtensions/rescript.json | 20 -- packages/Event/package.json | 23 -- packages/Event/rescript.json | 19 -- packages/Fetch/package.json | 26 -- packages/Fetch/rescript.json | 21 -- packages/File/package.json | 23 -- packages/File/rescript.json | 19 -- packages/FileAndDirectoryEntries/package.json | 23 -- .../FileAndDirectoryEntries/rescript.json | 18 -- packages/Gamepad/package.json | 23 -- packages/Gamepad/rescript.json | 18 -- packages/Geolocation/package.json | 21 -- packages/Geolocation/rescript.json | 16 -- packages/History/package.json | 21 -- packages/History/rescript.json | 16 -- packages/IndexedDB/package.json | 24 -- packages/IndexedDB/rescript.json | 19 -- packages/IntersectionObserver/package.json | 23 -- packages/IntersectionObserver/rescript.json | 18 -- .../src/IntersectionObserverRoot.res | 21 -- packages/MediaCapabilities/package.json | 21 -- packages/MediaCapabilities/rescript.json | 16 -- packages/MediaCaptureAndStreams/package.json | 23 -- packages/MediaCaptureAndStreams/rescript.json | 18 -- packages/MediaSession/package.json | 21 -- packages/MediaSession/rescript.json | 16 -- packages/MutationObserver/package.json | 23 -- packages/MutationObserver/rescript.json | 19 -- packages/Notification/package.json | 23 -- packages/Notification/rescript.json | 18 -- packages/Performance/package.json | 23 -- packages/Performance/rescript.json | 18 -- packages/Permissions/package.json | 23 -- packages/Permissions/rescript.json | 18 -- packages/PictureInPicture/package.json | 23 -- packages/PictureInPicture/rescript.json | 18 -- .../PictureInPicture/src/PictureInPicture.res | 3 - packages/Push/package.json | 23 -- packages/Push/rescript.json | 18 -- packages/RemotePlayback/package.json | 23 -- packages/RemotePlayback/rescript.json | 18 -- packages/ResizeObserver/package.json | 23 -- packages/ResizeObserver/rescript.json | 18 -- packages/ScreenWakeLock/package.json | 23 -- packages/ScreenWakeLock/rescript.json | 18 -- packages/ServiceWorker/package.json | 29 --- packages/ServiceWorker/rescript.json | 24 -- packages/ServiceWorker/src/Cache.res | 120 ---------- packages/Storage/package.json | 23 -- packages/Storage/rescript.json | 18 -- packages/UIEvents/package.json | 27 --- packages/UIEvents/rescript.json | 22 -- packages/URL/package.json | 21 -- packages/URL/rescript.json | 16 -- packages/ViewTransitions/package.json | 21 -- packages/ViewTransitions/rescript.json | 16 -- packages/VisualViewport/package.json | 23 -- packages/VisualViewport/rescript.json | 18 -- packages/WebAudio/package.json | 27 --- packages/WebAudio/rescript.json | 22 -- packages/WebCrypto/package.json | 23 -- packages/WebCrypto/rescript.json | 18 -- packages/WebLocks/package.json | 23 -- packages/WebLocks/rescript.json | 18 -- packages/WebMIDI/package.json | 24 -- packages/WebMIDI/rescript.json | 19 -- packages/WebSockets/package.json | 25 -- packages/WebSockets/rescript.json | 20 -- packages/WebSpeech/package.json | 23 -- packages/WebSpeech/rescript.json | 18 -- packages/WebStorage/package.json | 23 -- packages/WebStorage/rescript.json | 18 -- packages/WebVTT/package.json | 23 -- packages/WebVTT/rescript.json | 18 -- packages/WebWorkers/package.json | 26 -- packages/WebWorkers/rescript.json | 21 -- scripts/unmonorepo/feature-spec.mjs | 7 + scripts/unmonorepo/generate-entry-modules.mjs | 43 ++++ scripts/unmonorepo/migrate-layout.mjs | 4 +- scripts/unmonorepo/rewrite-references.mjs | 79 ++++++ .../Base}/ArrayBufferTypedArrayOrDataView.res | 0 src/Base/Base.res | 7 + .../Base/BaseCSSFontLoading.res | 2 +- .../Base/src/DOM.res => src/Base/BaseDOM.res | 184 +++++++------- .../Base/BaseEncryptedMediaExtensions.res | 6 +- .../src/Event.res => src/Base/BaseEvent.res | 2 +- .../src/File.res => src/Base/BaseFile.res | 4 +- .../Base/BaseFileAndDirectoryEntries.res | 4 +- src/CSSFontLoading/CSSFontLoading.res | 3 + .../CSSFontLoading/CssFontLoadingTypes.res | 6 +- .../src => src/CSSFontLoading}/FontFace.res | 0 .../CSSFontLoading}/FontFaceSet.res | 2 +- src/Canvas/Canvas.res | 12 + .../Global.res => src/Canvas/CanvasGlobal.res | 64 ++--- .../src => src/Canvas}/CanvasGradient.res | 0 .../src => src/Canvas}/CanvasPattern.res | 2 +- .../Canvas}/CanvasRenderingContext2D.res | 226 +++++++++--------- .../Types.res => src/Canvas/CanvasTypes.res | 2 +- .../Canvas/src => src/Canvas}/FillStyle.res | 0 .../src => src/Canvas}/HTMLCanvasElement.res | 24 +- .../Canvas/src => src/Canvas}/ImageBitmap.res | 0 .../Canvas}/ImageBitmapRenderingContext.res | 0 .../src => src/Canvas}/OffscreenCanvas.res | 4 +- .../Canvas/src => src/Canvas}/Path2D.res | 2 +- src/Canvas/VideoFrame.res | 140 +++++++++++ src/ChannelMessaging/ChannelMessaging.res | 2 + .../ChannelMessagingTypes.res | 2 +- .../ChannelMessaging}/MessagePort.res | 2 +- .../src => src/Clipboard}/Clipboard.res | 5 +- .../src => src/Clipboard}/ClipboardItem.res | 2 +- .../Clipboard/ClipboardTypes.res | 2 +- .../CredentialManagement.res | 2 + .../CredentialManagementTypes.res | 16 +- .../CredentialsContainer.res | 0 {packages/DOM/src => src/DOM}/Animation.res | 2 +- .../DOM/src => src/DOM}/AnimationEffect.res | 0 {packages/DOM/src => src/DOM}/CSSRuleList.res | 0 .../src => src/DOM}/CSSStyleDeclaration.res | 0 .../DOM/src => src/DOM}/CSSStyleSheet.res | 0 .../DOM/src => src/DOM}/CSSStyleValue.res | 0 .../DOM/src => src/DOM}/CaretPosition.res | 0 .../DOM/src => src/DOM}/CharacterData.res | 0 {packages/DOM/src => src/DOM}/Comment.res | 0 .../src => src/DOM}/CustomElementRegistry.res | 0 src/DOM/DOM.res | 122 ++++++++++ .../DOM/src => src/DOM}/DOMException.res | 2 +- .../DOM/src => src/DOM}/DOMImplementation.res | 0 {packages/DOM/src => src/DOM}/DOMMatrix.res | 0 .../DOM/src => src/DOM}/DOMMatrixReadOnly.res | 0 {packages/DOM/src => src/DOM}/DOMPoint.res | 0 .../DOM/src => src/DOM}/DOMPointReadOnly.res | 0 {packages/DOM/src => src/DOM}/DOMRect.res | 0 {packages/DOM/src => src/DOM}/DOMRectList.res | 0 .../DOM/src => src/DOM}/DOMRectReadOnly.res | 0 .../DOM/src => src/DOM}/DOMStringList.res | 2 +- .../DOM/src => src/DOM}/DOMTokenList.res | 0 {packages/DOM/src => src/DOM}/Document.res | 10 +- .../DOM/src => src/DOM}/DocumentFragment.res | 0 .../DOM/src => src/DOM}/DocumentTimeline.res | 0 .../src/Global.res => src/DOM/DomGlobal.res | 42 ++-- .../DOM/DomHTMLMediaElement.res | 4 +- .../DOM/src/Types.res => src/DOM/DomTypes.res | 160 ++++++------- {packages/DOM/src => src/DOM}/Element.res | 0 .../DOM/src => src/DOM}/ElementInternals.res | 0 {packages/DOM/src => src/DOM}/FileList.res | 2 +- .../DOM/src => src/DOM}/HTMLAnchorElement.res | 0 .../DOM/src => src/DOM}/HTMLAreaElement.res | 0 .../DOM/src => src/DOM}/HTMLAudioElement.res | 0 .../DOM/src => src/DOM}/HTMLBRElement.res | 0 .../DOM/src => src/DOM}/HTMLBaseElement.res | 0 .../DOM/src => src/DOM}/HTMLBodyElement.res | 0 .../DOM/src => src/DOM}/HTMLButtonElement.res | 0 .../DOM/src => src/DOM}/HTMLCollection.res | 0 .../DOM/src => src/DOM}/HTMLDListElement.res | 0 .../DOM/src => src/DOM}/HTMLDataElement.res | 0 .../src => src/DOM}/HTMLDataListElement.res | 0 .../DOM/src => src/DOM}/HTMLDialogElement.res | 0 .../DOM/src => src/DOM}/HTMLDivElement.res | 0 {packages/DOM/src => src/DOM}/HTMLElement.res | 0 .../DOM/src => src/DOM}/HTMLEmbedElement.res | 0 .../src => src/DOM}/HTMLFieldSetElement.res | 0 .../DOM}/HTMLFormControlsCollection.res | 0 .../DOM/src => src/DOM}/HTMLFormElement.res | 2 +- .../src => src/DOM}/HTMLFrameSetElement.res | 0 .../DOM/src => src/DOM}/HTMLHRElement.res | 0 .../DOM/src => src/DOM}/HTMLHeadElement.res | 0 .../src => src/DOM}/HTMLHeadingElement.res | 0 .../DOM/src => src/DOM}/HTMLHtmlElement.res | 0 .../DOM/src => src/DOM}/HTMLIFrameElement.res | 0 .../DOM/src => src/DOM}/HTMLImageElement.res | 0 .../DOM/src => src/DOM}/HTMLInputElement.res | 0 .../DOM/src => src/DOM}/HTMLLIElement.res | 0 .../DOM/src => src/DOM}/HTMLLabelElement.res | 0 .../DOM/src => src/DOM}/HTMLLegendElement.res | 0 .../DOM/src => src/DOM}/HTMLLinkElement.res | 0 .../DOM/src => src/DOM}/HTMLMapElement.res | 0 .../DOM/src => src/DOM}/HTMLMenuElement.res | 0 .../DOM/src => src/DOM}/HTMLMetaElement.res | 0 .../DOM/src => src/DOM}/HTMLMeterElement.res | 0 .../DOM/src => src/DOM}/HTMLModElement.res | 0 .../DOM/src => src/DOM}/HTMLOListElement.res | 0 .../DOM/src => src/DOM}/HTMLObjectElement.res | 0 .../src => src/DOM}/HTMLOptGroupElement.res | 0 .../DOM/src => src/DOM}/HTMLOptionElement.res | 0 .../src => src/DOM}/HTMLOptionsCollection.res | 0 .../DOM/src => src/DOM}/HTMLOutputElement.res | 0 .../src => src/DOM}/HTMLParagraphElement.res | 0 .../src => src/DOM}/HTMLPictureElement.res | 0 .../DOM/src => src/DOM}/HTMLPreElement.res | 0 .../src => src/DOM}/HTMLProgressElement.res | 0 .../DOM/src => src/DOM}/HTMLQuoteElement.res | 0 .../DOM/src => src/DOM}/HTMLScriptElement.res | 0 .../DOM/src => src/DOM}/HTMLSelectElement.res | 0 .../DOM/src => src/DOM}/HTMLSlotElement.res | 0 .../DOM/src => src/DOM}/HTMLSourceElement.res | 0 .../DOM/src => src/DOM}/HTMLSpanElement.res | 0 .../DOM/src => src/DOM}/HTMLStyleElement.res | 0 .../DOM}/HTMLTableCaptionElement.res | 0 .../src => src/DOM}/HTMLTableCellElement.res | 0 .../DOM/src => src/DOM}/HTMLTableElement.res | 0 .../src => src/DOM}/HTMLTableRowElement.res | 0 .../DOM}/HTMLTableSectionElement.res | 0 .../src => src/DOM}/HTMLTemplateElement.res | 0 .../src => src/DOM}/HTMLTextAreaElement.res | 0 .../DOM/src => src/DOM}/HTMLTimeElement.res | 0 .../DOM/src => src/DOM}/HTMLTitleElement.res | 0 .../DOM/src => src/DOM}/HTMLTrackElement.res | 0 .../DOM/src => src/DOM}/HTMLUListElement.res | 0 .../DOM/src => src/DOM}/HTMLVideoElement.res | 2 +- .../DOM/src => src/DOM}/IdleDeadline.res | 0 {packages/DOM/src => src/DOM}/ImageData.res | 0 {packages/DOM/src => src/DOM}/Location.res | 4 +- {packages/DOM/src => src/DOM}/MediaList.res | 0 src/DOM/MediaQueryList.res | 1 + .../DOM/src => src/DOM}/NamedNodeMap.res | 0 {packages/DOM/src => src/DOM}/Navigator.res | 36 +-- {packages/DOM/src => src/DOM}/Node.res | 2 +- {packages/DOM/src => src/DOM}/NodeFilter.res | 0 .../DOM/src => src/DOM}/NodeIterator.res | 0 {packages/DOM/src => src/DOM}/NodeList.res | 0 {packages/DOM/src => src/DOM}/Range.res | 0 .../src => src/DOM}/SVGGraphicsElement.res | 0 {packages/DOM/src => src/DOM}/SVGLength.res | 0 .../DOM/src => src/DOM}/ScreenOrientation.res | 2 +- {packages/DOM/src => src/DOM}/Selection.res | 0 {packages/DOM/src => src/DOM}/ShadowRoot.res | 0 .../DOM/src => src/DOM}/StylePropertyMap.res | 0 .../DOM}/StylePropertyMapReadOnly.res | 0 .../DOM/src => src/DOM}/StyleSheetList.res | 0 {packages/DOM/src => src/DOM}/Text.res | 0 src/DOM/TextTrackList.res | 8 + {packages/DOM/src => src/DOM}/TimeRanges.res | 0 {packages/DOM/src => src/DOM}/TreeWalker.res | 0 .../DOM/src => src/DOM}/VideoColorSpace.res | 0 {packages/DOM/src => src/DOM}/Window.res | 22 +- .../DOM/src => src/DOM}/XPathExpression.res | 0 {packages/DOM/src => src/DOM}/XPathResult.res | 0 .../EncryptedMediaExtensions.res | 6 + ...cryptedMediaExtensionsHTMLMediaElement.res | 4 +- .../EncryptedMediaExtensionsTypes.res | 20 +- .../MediaKeySession.res | 2 +- .../MediaKeyStatusMap.res | 0 .../MediaKeySystemAccess.res | 0 .../EncryptedMediaExtensions}/MediaKeys.res | 0 .../src => src/Event}/AbortController.res | 0 .../Event/src => src/Event}/AbortSignal.res | 0 src/Event/Event.res | 6 + .../src/Event.res => src/Event/EventEvent.res | 0 .../Event/src => src/Event}/EventTarget.res | 0 .../src/Types.res => src/Event/EventTypes.res | 4 +- .../src => src/Event}/ExtendableEvent.res | 0 .../Fetch/src => src/Fetch}/BodyInit.res | 8 +- src/Fetch/Fetch.res | 9 + .../Global.res => src/Fetch/FetchGlobal.res | 0 .../src/Types.res => src/Fetch/FetchTypes.res | 14 +- .../Fetch/src => src/Fetch}/FormData.res | 4 +- .../src => src/Fetch}/FormDataEntryValue.res | 0 {packages/Fetch/src => src/Fetch}/Headers.res | 0 .../Fetch/src => src/Fetch}/HeadersInit.res | 0 {packages/Fetch/src => src/Fetch}/Request.res | 2 +- .../Fetch/src => src/Fetch}/Response.res | 10 +- {packages/File/src => src/File}/Blob.res | 0 src/File/File.res | 10 + .../src/File.res => src/File/FileFile.res | 0 .../File}/FileSystemDirectoryHandle.res | 0 .../src => src/File}/FileSystemFileHandle.res | 0 .../src => src/File}/FileSystemHandle.res | 0 .../File}/FileSystemWritableFileStream.res | 0 .../src/Types.res => src/File/FileTypes.res | 10 +- .../File/src => src/File}/ReadableStream.res | 0 .../File/src => src/File}/WritableStream.res | 0 .../File}/WritableStreamDefaultController.res | 0 .../FileAndDirectoryEntries.res | 4 + .../FileAndDirectoryEntriesTypes.res | 8 +- .../FileSystemDirectoryEntry.res | 0 .../FileSystemDirectoryReader.res | 0 .../FileSystemEntry.res | 0 src/Gamepad/Gamepad.res | 2 + .../Gamepad}/GamepadHapticActuator.res | 0 .../Types.res => src/Gamepad/GamepadTypes.res | 0 .../src => src/Geolocation}/Geolocation.res | 4 + .../Geolocation}/GeolocationCoordinates.res | 0 .../Geolocation}/GeolocationPosition.res | 0 .../Geolocation/GeolocationTypes.res | 0 .../History/src => src/History}/History.res | 2 + .../Types.res => src/History/HistoryTypes.res | 0 .../src => src/IndexedDB}/IDBDatabase.res | 2 +- .../src => src/IndexedDB}/IDBFactory.res | 0 .../src => src/IndexedDB}/IDBIndex.res | 0 .../src => src/IndexedDB}/IDBObjectStore.res | 0 .../src => src/IndexedDB}/IDBTransaction.res | 2 +- src/IndexedDB/IndexedDB.res | 6 + .../IndexedDB/IndexedDbTypes.res | 18 +- .../IntersectionObserver.res | 7 +- .../IntersectionObserverRoot.res | 21 ++ .../IntersectionObserverTypes.res | 8 +- .../MediaCapabilities}/MediaCapabilities.res | 2 + .../MediaCapabilitiesTypes.res | 0 .../MediaCaptureAndStreams.res | 5 + .../MediaCaptureAndStreamsTypes.res | 6 +- .../MediaDeviceInfo.res | 0 .../MediaCaptureAndStreams}/MediaDevices.res | 2 +- .../MediaCaptureAndStreams}/MediaStream.res | 2 +- .../MediaStreamTrack.res | 2 +- .../MediaSession}/MediaMetadata.res | 0 .../src => src/MediaSession}/MediaSession.res | 3 + .../MediaSession/MediaSessionTypes.res | 0 .../MutationObserver}/MutationObserver.res | 6 +- .../MutationObserverTypes.res | 2 +- .../src => src/Notification}/Notification.res | 4 +- .../Notification/NotificationTypes.res | 4 +- .../src => src/Performance}/Performance.res | 6 +- .../Performance}/PerformanceEntry.res | 0 .../Performance}/PerformanceMark.res | 0 .../Performance/PerformanceTypes.res | 2 +- .../src => src/Permissions}/Permissions.res | 2 + .../Permissions/PermissionsTypes.res | 2 +- src/PictureInPicture/PictureInPicture.res | 5 + .../PictureInPictureTypes.res | 2 +- .../src => src/Push}/ApplicationServerKey.res | 0 src/Push/Push.res | 6 + {packages/Push/src => src/Push}/PushEvent.res | 2 +- .../Push/src => src/Push}/PushManager.res | 0 .../Push/src => src/Push}/PushMessageData.res | 0 .../src => src/Push}/PushSubscription.res | 0 .../src/Types.res => src/Push/PushTypes.res | 2 +- .../RemotePlayback}/RemotePlayback.res | 4 +- .../RemotePlayback/RemotePlaybackTypes.res | 2 +- .../ResizeObserver}/ResizeObserver.res | 6 +- .../ResizeObserver/ResizeObserverTypes.res | 4 +- src/ScreenWakeLock/ScreenWakeLock.res | 3 + .../ScreenWakeLock/ScreenWakeLockTypes.res | 2 +- .../src => src/ScreenWakeLock}/WakeLock.res | 0 .../ScreenWakeLock}/WakeLockSentinel.res | 2 +- src/ServiceWorker/Cache.res | 120 ++++++++++ .../src => src/ServiceWorker}/Clients.res | 0 .../NavigationPreloadManager.res | 0 .../ServiceWorker}/ServiceWorker.res | 14 +- .../ServiceWorker}/ServiceWorkerContainer.res | 2 +- .../ServiceWorkerGlobalScope.res | 2 +- .../ServiceWorkerRegistration.res | 8 +- .../ServiceWorker/ServiceWorkerTypes.res | 14 +- src/Storage/Storage.res | 2 + .../src => src/Storage}/StorageManager.res | 2 +- .../Types.res => src/Storage/StorageTypes.res | 0 .../src => src/UIEvents}/CompositionEvent.res | 0 .../src => src/UIEvents}/DataTransfer.res | 2 +- .../src => src/UIEvents}/DataTransferItem.res | 6 +- .../UIEvents}/DataTransferItemList.res | 2 +- .../src => src/UIEvents}/FocusEvent.res | 0 .../src => src/UIEvents}/InputEvent.res | 2 +- .../src => src/UIEvents}/KeyboardEvent.res | 0 .../src => src/UIEvents}/MouseEvent.res | 0 .../src => src/UIEvents}/PointerEvent.res | 0 .../UIEvents/src => src/UIEvents}/Touch.res | 0 .../src => src/UIEvents}/TouchEvent.res | 0 .../src => src/UIEvents}/TouchList.res | 0 .../UIEvents/src => src/UIEvents}/UIEvent.res | 2 +- src/UIEvents/UIEvents.res | 15 ++ .../UIEvents/UiEventsTypes.res | 24 +- .../src => src/UIEvents}/WheelEvent.res | 0 {packages/URL/src => src/URL}/URL.res | 3 + .../URL/src => src/URL}/URLSearchParams.res | 0 .../URL/src/Types.res => src/URL/UrlTypes.res | 0 .../ViewTransitions}/ViewTransition.res | 0 src/ViewTransitions/ViewTransitions.res | 2 + .../ViewTransitions/ViewTransitionsTypes.res | 0 src/VisualViewport/VisualViewport.res | 1 + .../VisualViewport/VisualViewportTypes.res | 2 +- .../src => src/WebAudio}/AnalyserNode.res | 0 .../src => src/WebAudio}/AudioBuffer.res | 0 .../WebAudio}/AudioBufferSourceNode.res | 0 .../src => src/WebAudio}/AudioContext.res | 4 +- .../WebAudio}/AudioDestinationNode.res | 0 .../src => src/WebAudio}/AudioNode.res | 2 +- .../src => src/WebAudio}/AudioParam.res | 0 .../WebAudio}/AudioProcessingEvent.res | 2 +- .../WebAudio}/AudioScheduledSourceNode.res | 0 .../src => src/WebAudio}/AudioWorkletNode.res | 0 .../src => src/WebAudio}/BaseAudioContext.res | 2 +- .../src => src/WebAudio}/BiquadFilterNode.res | 0 .../WebAudio}/ChannelMergerNode.res | 0 .../WebAudio}/ChannelSplitterNode.res | 0 .../WebAudio}/ConstantSourceNode.res | 0 .../src => src/WebAudio}/ConvolverNode.res | 0 .../src => src/WebAudio}/DelayNode.res | 0 .../WebAudio}/DynamicsCompressorNode.res | 0 .../src => src/WebAudio}/GainNode.res | 0 .../src => src/WebAudio}/IIRFilterNode.res | 0 .../WebAudio}/MediaElementAudioSourceNode.res | 0 .../MediaStreamAudioDestinationNode.res | 0 .../WebAudio}/MediaStreamAudioSourceNode.res | 0 .../WebAudio}/OfflineAudioCompletionEvent.res | 2 +- .../WebAudio}/OfflineAudioContext.res | 0 .../src => src/WebAudio}/OscillatorNode.res | 0 .../src => src/WebAudio}/PannerNode.res | 0 .../src => src/WebAudio}/PeriodicWave.res | 0 .../src => src/WebAudio}/StereoPannerNode.res | 0 .../src => src/WebAudio}/WaveShaperNode.res | 0 src/WebAudio/WebAudio.res | 32 +++ .../WebAudio/WebAudioTypes.res | 44 ++-- .../WebAudio/src => src/WebAudio}/Worklet.res | 0 .../src => src/WebCrypto}/Crypto.res | 0 .../src => src/WebCrypto}/SubtleCrypto.res | 16 +- src/WebCrypto/WebCrypto.res | 3 + .../WebCrypto/WebCryptoTypes.res | 0 .../src => src/WebLocks}/LockManager.res | 0 src/WebLocks/WebLocks.res | 2 + .../WebLocks/WebLocksTypes.res | 2 +- .../WebMIDI/src => src/WebMIDI}/WebMIDI.res | 4 +- .../Types.res => src/WebMIDI/WebMidiTypes.res | 2 +- .../src => src/WebSockets}/CloseEvent.res | 2 +- .../src => src/WebSockets}/MessageEvent.res | 4 +- .../src => src/WebSockets}/WebSocket.res | 4 +- src/WebSockets/WebSockets.res | 4 + .../WebSockets/WebSocketsTypes.res | 14 +- .../src => src/WebSpeech}/SpeechSynthesis.res | 2 +- .../WebSpeech}/SpeechSynthesisUtterance.res | 2 +- src/WebSpeech/WebSpeech.res | 3 + .../WebSpeech/WebSpeechTypes.res | 4 +- .../src => src/WebStorage}/StorageEvent.res | 2 +- src/WebStorage/WebStorage.res | 3 + .../WebStorage/WebStorageStorage.res | 0 .../WebStorage/WebStorageTypes.res | 4 +- .../WebVTT/src => src/WebVTT}/TextTrack.res | 2 +- .../src => src/WebVTT}/TextTrackCueList.res | 0 src/WebVTT/WebVTT.res | 3 + .../Types.res => src/WebVTT/WebVttTypes.res | 6 +- .../src => src/WebWorkers}/CacheStorage.res | 6 +- .../src => src/WebWorkers}/SharedWorker.res | 10 +- .../WebWorkers}/SharedWorkerGlobalScope.res | 0 src/WebWorkers/WebWorkers.res | 5 + .../WebWorkers/WebWorkersTypes.res | 4 +- .../WebWorkers}/WorkerGlobalScope.res | 12 +- tests/DOMAPI/AddEventListener__test.res | 8 +- tests/DOMAPI/Element__test.res | 4 +- tests/DOMAPI/HTMLCanvasElement__test.res | 44 ++-- tests/DOMAPI/HTMLElement__test.res | 6 +- tests/DOMAPI/HTMLInputElement__test.res | 6 +- tests/DOMAPI/ImageData__test.res | 2 +- tests/DOMAPI/Location__test.res | 4 +- tests/FetchAPI/FormData__test.res | 10 +- tests/FetchAPI/Headers__test.res | 10 +- tests/FetchAPI/Request__test.res | 36 +-- tests/FetchAPI/Response__test.res | 34 +-- tests/FetchAPI/URLSearchParams__test.res | 14 +- tests/Global__test.res | 36 +-- .../IntersectionObserver__test.res | 8 +- .../MutationObserver__test.res | 6 +- tests/NotificationsAPI/Notification__test.res | 4 +- .../ServiceWorkerAPI/ServiceWorker__test.res | 24 +- tests/URLAPI/URL__test.res | 2 +- .../AudioDestinationNode__.test.res | 22 +- tests/WebStorageAPI/Storage__test.res | 12 +- .../SharedWorkerGlobalScope__test.res | 4 +- tests/WebWorkersAPI/SharedWorker__test.res | 14 +- tests/unmonorepo/feature-spec.test.mjs | 2 + .../generate-entry-modules.test.mjs | 30 +++ tests/unmonorepo/migrate-layout.test.mjs | 5 + tests/unmonorepo/rewrite-references.test.mjs | 26 ++ 478 files changed, 1597 insertions(+), 2985 deletions(-) delete mode 100644 packages/Base/package.json delete mode 100644 packages/Base/rescript.json delete mode 100644 packages/CSSFontLoading/package.json delete mode 100644 packages/CSSFontLoading/rescript.json delete mode 100644 packages/Canvas/package.json delete mode 100644 packages/Canvas/rescript.json delete mode 100644 packages/Canvas/src/VideoFrame.res delete mode 100644 packages/ChannelMessaging/package.json delete mode 100644 packages/ChannelMessaging/rescript.json delete mode 100644 packages/Clipboard/package.json delete mode 100644 packages/Clipboard/rescript.json delete mode 100644 packages/CredentialManagement/package.json delete mode 100644 packages/CredentialManagement/rescript.json delete mode 100644 packages/DOM/package.json delete mode 100644 packages/DOM/rescript.json delete mode 100644 packages/DOM/src/MediaQueryList.res delete mode 100644 packages/DOM/src/TextTrackList.res delete mode 100644 packages/EncryptedMediaExtensions/package.json delete mode 100644 packages/EncryptedMediaExtensions/rescript.json delete mode 100644 packages/Event/package.json delete mode 100644 packages/Event/rescript.json delete mode 100644 packages/Fetch/package.json delete mode 100644 packages/Fetch/rescript.json delete mode 100644 packages/File/package.json delete mode 100644 packages/File/rescript.json delete mode 100644 packages/FileAndDirectoryEntries/package.json delete mode 100644 packages/FileAndDirectoryEntries/rescript.json delete mode 100644 packages/Gamepad/package.json delete mode 100644 packages/Gamepad/rescript.json delete mode 100644 packages/Geolocation/package.json delete mode 100644 packages/Geolocation/rescript.json delete mode 100644 packages/History/package.json delete mode 100644 packages/History/rescript.json delete mode 100644 packages/IndexedDB/package.json delete mode 100644 packages/IndexedDB/rescript.json delete mode 100644 packages/IntersectionObserver/package.json delete mode 100644 packages/IntersectionObserver/rescript.json delete mode 100644 packages/IntersectionObserver/src/IntersectionObserverRoot.res delete mode 100644 packages/MediaCapabilities/package.json delete mode 100644 packages/MediaCapabilities/rescript.json delete mode 100644 packages/MediaCaptureAndStreams/package.json delete mode 100644 packages/MediaCaptureAndStreams/rescript.json delete mode 100644 packages/MediaSession/package.json delete mode 100644 packages/MediaSession/rescript.json delete mode 100644 packages/MutationObserver/package.json delete mode 100644 packages/MutationObserver/rescript.json delete mode 100644 packages/Notification/package.json delete mode 100644 packages/Notification/rescript.json delete mode 100644 packages/Performance/package.json delete mode 100644 packages/Performance/rescript.json delete mode 100644 packages/Permissions/package.json delete mode 100644 packages/Permissions/rescript.json delete mode 100644 packages/PictureInPicture/package.json delete mode 100644 packages/PictureInPicture/rescript.json delete mode 100644 packages/PictureInPicture/src/PictureInPicture.res delete mode 100644 packages/Push/package.json delete mode 100644 packages/Push/rescript.json delete mode 100644 packages/RemotePlayback/package.json delete mode 100644 packages/RemotePlayback/rescript.json delete mode 100644 packages/ResizeObserver/package.json delete mode 100644 packages/ResizeObserver/rescript.json delete mode 100644 packages/ScreenWakeLock/package.json delete mode 100644 packages/ScreenWakeLock/rescript.json delete mode 100644 packages/ServiceWorker/package.json delete mode 100644 packages/ServiceWorker/rescript.json delete mode 100644 packages/ServiceWorker/src/Cache.res delete mode 100644 packages/Storage/package.json delete mode 100644 packages/Storage/rescript.json delete mode 100644 packages/UIEvents/package.json delete mode 100644 packages/UIEvents/rescript.json delete mode 100644 packages/URL/package.json delete mode 100644 packages/URL/rescript.json delete mode 100644 packages/ViewTransitions/package.json delete mode 100644 packages/ViewTransitions/rescript.json delete mode 100644 packages/VisualViewport/package.json delete mode 100644 packages/VisualViewport/rescript.json delete mode 100644 packages/WebAudio/package.json delete mode 100644 packages/WebAudio/rescript.json delete mode 100644 packages/WebCrypto/package.json delete mode 100644 packages/WebCrypto/rescript.json delete mode 100644 packages/WebLocks/package.json delete mode 100644 packages/WebLocks/rescript.json delete mode 100644 packages/WebMIDI/package.json delete mode 100644 packages/WebMIDI/rescript.json delete mode 100644 packages/WebSockets/package.json delete mode 100644 packages/WebSockets/rescript.json delete mode 100644 packages/WebSpeech/package.json delete mode 100644 packages/WebSpeech/rescript.json delete mode 100644 packages/WebStorage/package.json delete mode 100644 packages/WebStorage/rescript.json delete mode 100644 packages/WebVTT/package.json delete mode 100644 packages/WebVTT/rescript.json delete mode 100644 packages/WebWorkers/package.json delete mode 100644 packages/WebWorkers/rescript.json create mode 100644 scripts/unmonorepo/generate-entry-modules.mjs create mode 100644 scripts/unmonorepo/rewrite-references.mjs rename {packages/Base/src => src/Base}/ArrayBufferTypedArrayOrDataView.res (100%) create mode 100644 src/Base/Base.res rename packages/Base/src/CSSFontLoading.res => src/Base/BaseCSSFontLoading.res (91%) rename packages/Base/src/DOM.res => src/Base/BaseDOM.res (97%) rename packages/Base/src/EncryptedMediaExtensions.res => src/Base/BaseEncryptedMediaExtensions.res (94%) rename packages/Base/src/Event.res => src/Base/BaseEvent.res (83%) rename packages/Base/src/File.res => src/Base/BaseFile.res (93%) rename packages/Base/src/FileAndDirectoryEntries.res => src/Base/BaseFileAndDirectoryEntries.res (94%) create mode 100644 src/CSSFontLoading/CSSFontLoading.res rename packages/CSSFontLoading/src/Types.res => src/CSSFontLoading/CssFontLoadingTypes.res (92%) rename {packages/CSSFontLoading/src => src/CSSFontLoading}/FontFace.res (100%) rename {packages/CSSFontLoading/src => src/CSSFontLoading}/FontFaceSet.res (92%) create mode 100644 src/Canvas/Canvas.res rename packages/Canvas/src/Global.res => src/Canvas/CanvasGlobal.res (71%) rename {packages/Canvas/src => src/Canvas}/CanvasGradient.res (100%) rename {packages/Canvas/src => src/Canvas}/CanvasPattern.res (87%) rename {packages/Canvas/src => src/Canvas}/CanvasRenderingContext2D.res (73%) rename packages/Canvas/src/Types.res => src/Canvas/CanvasTypes.res (99%) rename {packages/Canvas/src => src/Canvas}/FillStyle.res (100%) rename {packages/Canvas/src => src/Canvas}/HTMLCanvasElement.res (86%) rename {packages/Canvas/src => src/Canvas}/ImageBitmap.res (100%) rename {packages/Canvas/src => src/Canvas}/ImageBitmapRenderingContext.res (100%) rename {packages/Canvas/src => src/Canvas}/OffscreenCanvas.res (97%) rename {packages/Canvas/src => src/Canvas}/Path2D.res (98%) create mode 100644 src/Canvas/VideoFrame.res create mode 100644 src/ChannelMessaging/ChannelMessaging.res rename packages/ChannelMessaging/src/Types.res => src/ChannelMessaging/ChannelMessagingTypes.res (92%) rename {packages/ChannelMessaging/src => src/ChannelMessaging}/MessagePort.res (96%) rename {packages/Clipboard/src => src/Clipboard}/Clipboard.res (83%) rename {packages/Clipboard/src => src/Clipboard}/ClipboardItem.res (94%) rename packages/Clipboard/src/Types.res => src/Clipboard/ClipboardTypes.res (95%) create mode 100644 src/CredentialManagement/CredentialManagement.res rename packages/CredentialManagement/src/Types.res => src/CredentialManagement/CredentialManagementTypes.res (88%) rename {packages/CredentialManagement/src => src/CredentialManagement}/CredentialsContainer.res (100%) rename {packages/DOM/src => src/DOM}/Animation.res (95%) rename {packages/DOM/src => src/DOM}/AnimationEffect.res (100%) rename {packages/DOM/src => src/DOM}/CSSRuleList.res (100%) rename {packages/DOM/src => src/DOM}/CSSStyleDeclaration.res (100%) rename {packages/DOM/src => src/DOM}/CSSStyleSheet.res (100%) rename {packages/DOM/src => src/DOM}/CSSStyleValue.res (100%) rename {packages/DOM/src => src/DOM}/CaretPosition.res (100%) rename {packages/DOM/src => src/DOM}/CharacterData.res (100%) rename {packages/DOM/src => src/DOM}/Comment.res (100%) rename {packages/DOM/src => src/DOM}/CustomElementRegistry.res (100%) create mode 100644 src/DOM/DOM.res rename {packages/DOM/src => src/DOM}/DOMException.res (81%) rename {packages/DOM/src => src/DOM}/DOMImplementation.res (100%) rename {packages/DOM/src => src/DOM}/DOMMatrix.res (100%) rename {packages/DOM/src => src/DOM}/DOMMatrixReadOnly.res (100%) rename {packages/DOM/src => src/DOM}/DOMPoint.res (100%) rename {packages/DOM/src => src/DOM}/DOMPointReadOnly.res (100%) rename {packages/DOM/src => src/DOM}/DOMRect.res (100%) rename {packages/DOM/src => src/DOM}/DOMRectList.res (100%) rename {packages/DOM/src => src/DOM}/DOMRectReadOnly.res (100%) rename {packages/DOM/src => src/DOM}/DOMStringList.res (91%) rename {packages/DOM/src => src/DOM}/DOMTokenList.res (100%) rename {packages/DOM/src => src/DOM}/Document.res (97%) rename {packages/DOM/src => src/DOM}/DocumentFragment.res (100%) rename {packages/DOM/src => src/DOM}/DocumentTimeline.res (100%) rename packages/DOM/src/Global.res => src/DOM/DomGlobal.res (93%) rename packages/DOM/src/HTMLMediaElement.res => src/DOM/DomHTMLMediaElement.res (94%) rename packages/DOM/src/Types.res => src/DOM/DomTypes.res (94%) rename {packages/DOM/src => src/DOM}/Element.res (100%) rename {packages/DOM/src => src/DOM}/ElementInternals.res (100%) rename {packages/DOM/src => src/DOM}/FileList.res (82%) rename {packages/DOM/src => src/DOM}/HTMLAnchorElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLAreaElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLAudioElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLBRElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLBaseElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLBodyElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLButtonElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLCollection.res (100%) rename {packages/DOM/src => src/DOM}/HTMLDListElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLDataElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLDataListElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLDialogElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLDivElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLEmbedElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLFieldSetElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLFormControlsCollection.res (100%) rename {packages/DOM/src => src/DOM}/HTMLFormElement.res (90%) rename {packages/DOM/src => src/DOM}/HTMLFrameSetElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLHRElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLHeadElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLHeadingElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLHtmlElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLIFrameElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLImageElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLInputElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLLIElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLLabelElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLLegendElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLLinkElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLMapElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLMenuElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLMetaElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLMeterElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLModElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLOListElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLObjectElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLOptGroupElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLOptionElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLOptionsCollection.res (100%) rename {packages/DOM/src => src/DOM}/HTMLOutputElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLParagraphElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLPictureElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLPreElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLProgressElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLQuoteElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLScriptElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLSelectElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLSlotElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLSourceElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLSpanElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLStyleElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLTableCaptionElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLTableCellElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLTableElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLTableRowElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLTableSectionElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLTemplateElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLTextAreaElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLTimeElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLTitleElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLTrackElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLUListElement.res (100%) rename {packages/DOM/src => src/DOM}/HTMLVideoElement.res (94%) rename {packages/DOM/src => src/DOM}/IdleDeadline.res (100%) rename {packages/DOM/src => src/DOM}/ImageData.res (100%) rename {packages/DOM/src => src/DOM}/Location.res (90%) rename {packages/DOM/src => src/DOM}/MediaList.res (100%) create mode 100644 src/DOM/MediaQueryList.res rename {packages/DOM/src => src/DOM}/NamedNodeMap.res (100%) rename {packages/DOM/src => src/DOM}/Navigator.res (73%) rename {packages/DOM/src => src/DOM}/Node.res (98%) rename {packages/DOM/src => src/DOM}/NodeFilter.res (100%) rename {packages/DOM/src => src/DOM}/NodeIterator.res (100%) rename {packages/DOM/src => src/DOM}/NodeList.res (100%) rename {packages/DOM/src => src/DOM}/Range.res (100%) rename {packages/DOM/src => src/DOM}/SVGGraphicsElement.res (100%) rename {packages/DOM/src => src/DOM}/SVGLength.res (100%) rename {packages/DOM/src => src/DOM}/ScreenOrientation.res (68%) rename {packages/DOM/src => src/DOM}/Selection.res (100%) rename {packages/DOM/src => src/DOM}/ShadowRoot.res (100%) rename {packages/DOM/src => src/DOM}/StylePropertyMap.res (100%) rename {packages/DOM/src => src/DOM}/StylePropertyMapReadOnly.res (100%) rename {packages/DOM/src => src/DOM}/StyleSheetList.res (100%) rename {packages/DOM/src => src/DOM}/Text.res (100%) create mode 100644 src/DOM/TextTrackList.res rename {packages/DOM/src => src/DOM}/TimeRanges.res (100%) rename {packages/DOM/src => src/DOM}/TreeWalker.res (100%) rename {packages/DOM/src => src/DOM}/VideoColorSpace.res (100%) rename {packages/DOM/src => src/DOM}/Window.res (94%) rename {packages/DOM/src => src/DOM}/XPathExpression.res (100%) rename {packages/DOM/src => src/DOM}/XPathResult.res (100%) create mode 100644 src/EncryptedMediaExtensions/EncryptedMediaExtensions.res rename packages/EncryptedMediaExtensions/src/HTMLMediaElement.res => src/EncryptedMediaExtensions/EncryptedMediaExtensionsHTMLMediaElement.res (54%) rename packages/EncryptedMediaExtensions/src/Types.res => src/EncryptedMediaExtensions/EncryptedMediaExtensionsTypes.res (59%) rename {packages/EncryptedMediaExtensions/src => src/EncryptedMediaExtensions}/MediaKeySession.res (95%) rename {packages/EncryptedMediaExtensions/src => src/EncryptedMediaExtensions}/MediaKeyStatusMap.res (100%) rename {packages/EncryptedMediaExtensions/src => src/EncryptedMediaExtensions}/MediaKeySystemAccess.res (100%) rename {packages/EncryptedMediaExtensions/src => src/EncryptedMediaExtensions}/MediaKeys.res (100%) rename {packages/Event/src => src/Event}/AbortController.res (100%) rename {packages/Event/src => src/Event}/AbortSignal.res (100%) create mode 100644 src/Event/Event.res rename packages/Event/src/Event.res => src/Event/EventEvent.res (100%) rename {packages/Event/src => src/Event}/EventTarget.res (100%) rename packages/Event/src/Types.res => src/Event/EventTypes.res (98%) rename {packages/Event/src => src/Event}/ExtendableEvent.res (100%) rename {packages/Fetch/src => src/Fetch}/BodyInit.res (82%) create mode 100644 src/Fetch/Fetch.res rename packages/Fetch/src/Global.res => src/Fetch/FetchGlobal.res (100%) rename packages/Fetch/src/Types.res => src/Fetch/FetchTypes.res (97%) rename {packages/Fetch/src => src/Fetch}/FormData.res (93%) rename {packages/Fetch/src => src/Fetch}/FormDataEntryValue.res (100%) rename {packages/Fetch/src => src/Fetch}/Headers.res (100%) rename {packages/Fetch/src => src/Fetch}/HeadersInit.res (100%) rename {packages/Fetch/src => src/Fetch}/Request.res (96%) rename {packages/Fetch/src => src/Fetch}/Response.res (87%) rename {packages/File/src => src/File}/Blob.res (100%) create mode 100644 src/File/File.res rename packages/File/src/File.res => src/File/FileFile.res (100%) rename {packages/File/src => src/File}/FileSystemDirectoryHandle.res (100%) rename {packages/File/src => src/File}/FileSystemFileHandle.res (100%) rename {packages/File/src => src/File}/FileSystemHandle.res (100%) rename {packages/File/src => src/File}/FileSystemWritableFileStream.res (100%) rename packages/File/src/Types.res => src/File/FileTypes.res (95%) rename {packages/File/src => src/File}/ReadableStream.res (100%) rename {packages/File/src => src/File}/WritableStream.res (100%) rename {packages/File/src => src/File}/WritableStreamDefaultController.res (100%) create mode 100644 src/FileAndDirectoryEntries/FileAndDirectoryEntries.res rename packages/FileAndDirectoryEntries/src/Types.res => src/FileAndDirectoryEntries/FileAndDirectoryEntriesTypes.res (73%) rename {packages/FileAndDirectoryEntries/src => src/FileAndDirectoryEntries}/FileSystemDirectoryEntry.res (100%) rename {packages/FileAndDirectoryEntries/src => src/FileAndDirectoryEntries}/FileSystemDirectoryReader.res (100%) rename {packages/FileAndDirectoryEntries/src => src/FileAndDirectoryEntries}/FileSystemEntry.res (100%) create mode 100644 src/Gamepad/Gamepad.res rename {packages/Gamepad/src => src/Gamepad}/GamepadHapticActuator.res (100%) rename packages/Gamepad/src/Types.res => src/Gamepad/GamepadTypes.res (100%) rename {packages/Geolocation/src => src/Geolocation}/Geolocation.res (85%) rename {packages/Geolocation/src => src/Geolocation}/GeolocationCoordinates.res (100%) rename {packages/Geolocation/src => src/Geolocation}/GeolocationPosition.res (100%) rename packages/Geolocation/src/Types.res => src/Geolocation/GeolocationTypes.res (100%) rename {packages/History/src => src/History}/History.res (96%) rename packages/History/src/Types.res => src/History/HistoryTypes.res (100%) rename {packages/IndexedDB/src => src/IndexedDB}/IDBDatabase.res (96%) rename {packages/IndexedDB/src => src/IndexedDB}/IDBFactory.res (100%) rename {packages/IndexedDB/src => src/IndexedDB}/IDBIndex.res (100%) rename {packages/IndexedDB/src => src/IndexedDB}/IDBObjectStore.res (100%) rename {packages/IndexedDB/src => src/IndexedDB}/IDBTransaction.res (90%) create mode 100644 src/IndexedDB/IndexedDB.res rename packages/IndexedDB/src/Types.res => src/IndexedDB/IndexedDbTypes.res (94%) rename {packages/IntersectionObserver/src => src/IntersectionObserver}/IntersectionObserver.res (75%) create mode 100644 src/IntersectionObserver/IntersectionObserverRoot.res rename packages/IntersectionObserver/src/Types.res => src/IntersectionObserver/IntersectionObserverTypes.res (91%) rename {packages/MediaCapabilities/src => src/MediaCapabilities}/MediaCapabilities.res (93%) rename packages/MediaCapabilities/src/Types.res => src/MediaCapabilities/MediaCapabilitiesTypes.res (100%) create mode 100644 src/MediaCaptureAndStreams/MediaCaptureAndStreams.res rename packages/MediaCaptureAndStreams/src/Types.res => src/MediaCaptureAndStreams/MediaCaptureAndStreamsTypes.res (98%) rename {packages/MediaCaptureAndStreams/src => src/MediaCaptureAndStreams}/MediaDeviceInfo.res (100%) rename {packages/MediaCaptureAndStreams/src => src/MediaCaptureAndStreams}/MediaDevices.res (95%) rename {packages/MediaCaptureAndStreams/src => src/MediaCaptureAndStreams}/MediaStream.res (96%) rename {packages/MediaCaptureAndStreams/src => src/MediaCaptureAndStreams}/MediaStreamTrack.res (96%) rename {packages/MediaSession/src => src/MediaSession}/MediaMetadata.res (100%) rename {packages/MediaSession/src => src/MediaSession}/MediaSession.res (90%) rename packages/MediaSession/src/Types.res => src/MediaSession/MediaSessionTypes.res (100%) rename {packages/MutationObserver/src => src/MutationObserver}/MutationObserver.res (79%) rename packages/MutationObserver/src/Types.res => src/MutationObserver/MutationObserverTypes.res (81%) rename {packages/Notification/src => src/Notification}/Notification.res (94%) rename packages/Notification/src/Types.res => src/Notification/NotificationTypes.res (97%) rename {packages/Performance/src => src/Performance}/Performance.res (93%) rename {packages/Performance/src => src/Performance}/PerformanceEntry.res (100%) rename {packages/Performance/src => src/Performance}/PerformanceMark.res (100%) rename packages/Performance/src/Types.res => src/Performance/PerformanceTypes.res (98%) rename {packages/Permissions/src => src/Permissions}/Permissions.res (86%) rename packages/Permissions/src/Types.res => src/Permissions/PermissionsTypes.res (96%) create mode 100644 src/PictureInPicture/PictureInPicture.res rename packages/PictureInPicture/src/Types.res => src/PictureInPicture/PictureInPictureTypes.res (91%) rename {packages/Push/src => src/Push}/ApplicationServerKey.res (100%) create mode 100644 src/Push/Push.res rename {packages/Push/src => src/Push}/PushEvent.res (50%) rename {packages/Push/src => src/Push}/PushManager.res (100%) rename {packages/Push/src => src/Push}/PushMessageData.res (100%) rename {packages/Push/src => src/Push}/PushSubscription.res (100%) rename packages/Push/src/Types.res => src/Push/PushTypes.res (98%) rename {packages/RemotePlayback/src => src/RemotePlayback}/RemotePlayback.res (89%) rename packages/RemotePlayback/src/Types.res => src/RemotePlayback/RemotePlaybackTypes.res (93%) rename {packages/ResizeObserver/src => src/ResizeObserver}/ResizeObserver.res (80%) rename packages/ResizeObserver/src/Types.res => src/ResizeObserver/ResizeObserverTypes.res (95%) create mode 100644 src/ScreenWakeLock/ScreenWakeLock.res rename packages/ScreenWakeLock/src/Types.res => src/ScreenWakeLock/ScreenWakeLockTypes.res (94%) rename {packages/ScreenWakeLock/src => src/ScreenWakeLock}/WakeLock.res (100%) rename {packages/ScreenWakeLock/src => src/ScreenWakeLock}/WakeLockSentinel.res (70%) create mode 100644 src/ServiceWorker/Cache.res rename {packages/ServiceWorker/src => src/ServiceWorker}/Clients.res (100%) rename {packages/ServiceWorker/src => src/ServiceWorker}/NavigationPreloadManager.res (100%) rename {packages/ServiceWorker/src => src/ServiceWorker}/ServiceWorker.res (55%) rename {packages/ServiceWorker/src => src/ServiceWorker}/ServiceWorkerContainer.res (92%) rename {packages/ServiceWorker/src => src/ServiceWorker}/ServiceWorkerGlobalScope.res (83%) rename {packages/ServiceWorker/src => src/ServiceWorker}/ServiceWorkerRegistration.res (73%) rename packages/ServiceWorker/src/Types.res => src/ServiceWorker/ServiceWorkerTypes.res (93%) create mode 100644 src/Storage/Storage.res rename {packages/Storage/src => src/Storage}/StorageManager.res (86%) rename packages/Storage/src/Types.res => src/Storage/StorageTypes.res (100%) rename {packages/UIEvents/src => src/UIEvents}/CompositionEvent.res (100%) rename {packages/UIEvents/src => src/UIEvents}/DataTransfer.res (97%) rename {packages/UIEvents/src => src/UIEvents}/DataTransferItem.res (74%) rename {packages/UIEvents/src => src/UIEvents}/DataTransferItemList.res (91%) rename {packages/UIEvents/src => src/UIEvents}/FocusEvent.res (100%) rename {packages/UIEvents/src => src/UIEvents}/InputEvent.res (77%) rename {packages/UIEvents/src => src/UIEvents}/KeyboardEvent.res (100%) rename {packages/UIEvents/src => src/UIEvents}/MouseEvent.res (100%) rename {packages/UIEvents/src => src/UIEvents}/PointerEvent.res (100%) rename {packages/UIEvents/src => src/UIEvents}/Touch.res (100%) rename {packages/UIEvents/src => src/UIEvents}/TouchEvent.res (100%) rename {packages/UIEvents/src => src/UIEvents}/TouchList.res (100%) rename {packages/UIEvents/src => src/UIEvents}/UIEvent.res (86%) create mode 100644 src/UIEvents/UIEvents.res rename packages/UIEvents/src/Types.res => src/UIEvents/UiEventsTypes.res (96%) rename {packages/UIEvents/src => src/UIEvents}/WheelEvent.res (100%) rename {packages/URL/src => src/URL}/URL.res (93%) rename {packages/URL/src => src/URL}/URLSearchParams.res (100%) rename packages/URL/src/Types.res => src/URL/UrlTypes.res (100%) rename {packages/ViewTransitions/src => src/ViewTransitions}/ViewTransition.res (100%) create mode 100644 src/ViewTransitions/ViewTransitions.res rename packages/ViewTransitions/src/Types.res => src/ViewTransitions/ViewTransitionsTypes.res (100%) create mode 100644 src/VisualViewport/VisualViewport.res rename packages/VisualViewport/src/Types.res => src/VisualViewport/VisualViewportTypes.res (96%) rename {packages/WebAudio/src => src/WebAudio}/AnalyserNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/AudioBuffer.res (100%) rename {packages/WebAudio/src => src/WebAudio}/AudioBufferSourceNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/AudioContext.res (94%) rename {packages/WebAudio/src => src/WebAudio}/AudioDestinationNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/AudioNode.res (97%) rename {packages/WebAudio/src => src/WebAudio}/AudioParam.res (100%) rename {packages/WebAudio/src => src/WebAudio}/AudioProcessingEvent.res (77%) rename {packages/WebAudio/src => src/WebAudio}/AudioScheduledSourceNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/AudioWorkletNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/BaseAudioContext.res (98%) rename {packages/WebAudio/src => src/WebAudio}/BiquadFilterNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/ChannelMergerNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/ChannelSplitterNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/ConstantSourceNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/ConvolverNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/DelayNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/DynamicsCompressorNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/GainNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/IIRFilterNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/MediaElementAudioSourceNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/MediaStreamAudioDestinationNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/MediaStreamAudioSourceNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/OfflineAudioCompletionEvent.res (77%) rename {packages/WebAudio/src => src/WebAudio}/OfflineAudioContext.res (100%) rename {packages/WebAudio/src => src/WebAudio}/OscillatorNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/PannerNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/PeriodicWave.res (100%) rename {packages/WebAudio/src => src/WebAudio}/StereoPannerNode.res (100%) rename {packages/WebAudio/src => src/WebAudio}/WaveShaperNode.res (100%) create mode 100644 src/WebAudio/WebAudio.res rename packages/WebAudio/src/Types.res => src/WebAudio/WebAudioTypes.res (97%) rename {packages/WebAudio/src => src/WebAudio}/Worklet.res (100%) rename {packages/WebCrypto/src => src/WebCrypto}/Crypto.res (100%) rename {packages/WebCrypto/src => src/WebCrypto}/SubtleCrypto.res (89%) create mode 100644 src/WebCrypto/WebCrypto.res rename packages/WebCrypto/src/Types.res => src/WebCrypto/WebCryptoTypes.res (100%) rename {packages/WebLocks/src => src/WebLocks}/LockManager.res (100%) create mode 100644 src/WebLocks/WebLocks.res rename packages/WebLocks/src/Types.res => src/WebLocks/WebLocksTypes.res (94%) rename {packages/WebMIDI/src => src/WebMIDI}/WebMIDI.res (58%) rename packages/WebMIDI/src/Types.res => src/WebMIDI/WebMidiTypes.res (95%) rename {packages/WebSockets/src => src/WebSockets}/CloseEvent.res (76%) rename {packages/WebSockets/src => src/WebSockets}/MessageEvent.res (95%) rename {packages/WebSockets/src => src/WebSockets}/WebSocket.res (95%) create mode 100644 src/WebSockets/WebSockets.res rename packages/WebSockets/src/Types.res => src/WebSockets/WebSocketsTypes.res (93%) rename {packages/WebSpeech/src => src/WebSpeech}/SpeechSynthesis.res (92%) rename {packages/WebSpeech/src => src/WebSpeech}/SpeechSynthesisUtterance.res (70%) create mode 100644 src/WebSpeech/WebSpeech.res rename packages/WebSpeech/src/Types.res => src/WebSpeech/WebSpeechTypes.res (97%) rename {packages/WebStorage/src => src/WebStorage}/StorageEvent.res (76%) create mode 100644 src/WebStorage/WebStorage.res rename packages/WebStorage/src/Storage.res => src/WebStorage/WebStorageStorage.res (100%) rename packages/WebStorage/src/Types.res => src/WebStorage/WebStorageTypes.res (96%) rename {packages/WebVTT/src => src/WebVTT}/TextTrack.res (87%) rename {packages/WebVTT/src => src/WebVTT}/TextTrackCueList.res (100%) create mode 100644 src/WebVTT/WebVTT.res rename packages/WebVTT/src/Types.res => src/WebVTT/WebVttTypes.res (96%) rename {packages/WebWorkers/src => src/WebWorkers}/CacheStorage.res (87%) rename {packages/WebWorkers/src => src/WebWorkers}/SharedWorker.res (80%) rename {packages/WebWorkers/src => src/WebWorkers}/SharedWorkerGlobalScope.res (100%) create mode 100644 src/WebWorkers/WebWorkers.res rename packages/WebWorkers/src/Types.res => src/WebWorkers/WebWorkersTypes.res (96%) rename {packages/WebWorkers/src => src/WebWorkers}/WorkerGlobalScope.res (79%) create mode 100644 tests/unmonorepo/generate-entry-modules.test.mjs create mode 100644 tests/unmonorepo/rewrite-references.test.mjs diff --git a/packages/Base/package.json b/packages/Base/package.json deleted file mode 100644 index f7dfed79..00000000 --- a/packages/Base/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@rescript-webapi/base", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": {} -} diff --git a/packages/Base/rescript.json b/packages/Base/rescript.json deleted file mode 100644 index a304e4c8..00000000 --- a/packages/Base/rescript.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "@rescript-webapi/base", - "namespace": "WebApiBase", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [] -} diff --git a/packages/CSSFontLoading/package.json b/packages/CSSFontLoading/package.json deleted file mode 100644 index e8b2ef7d..00000000 --- a/packages/CSSFontLoading/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/css-font-loading", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/CSSFontLoading/rescript.json b/packages/CSSFontLoading/rescript.json deleted file mode 100644 index d3825c04..00000000 --- a/packages/CSSFontLoading/rescript.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@rescript-webapi/css-font-loading", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event", - "@rescript-webapi/base" - ], - "namespace": "WebApiCSSFontLoading" -} diff --git a/packages/Canvas/package.json b/packages/Canvas/package.json deleted file mode 100644 index a877c5a6..00000000 --- a/packages/Canvas/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "@rescript-webapi/canvas", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/dom": "0.1.0", - "@rescript-webapi/event": "0.1.0", - "@rescript-webapi/file": "0.1.0", - "@rescript-webapi/media-capture-and-streams": "0.1.0", - "@rescript-webapi/base": "0.1.0" - } -} diff --git a/packages/Canvas/rescript.json b/packages/Canvas/rescript.json deleted file mode 100644 index a60ad2b0..00000000 --- a/packages/Canvas/rescript.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "@rescript-webapi/canvas", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/dom", - "@rescript-webapi/event", - "@rescript-webapi/file", - "@rescript-webapi/media-capture-and-streams", - "@rescript-webapi/base" - ], - "namespace": "WebApiCanvas" -} diff --git a/packages/Canvas/src/VideoFrame.res b/packages/Canvas/src/VideoFrame.res deleted file mode 100644 index 10fb9cdd..00000000 --- a/packages/Canvas/src/VideoFrame.res +++ /dev/null @@ -1,140 +0,0 @@ -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame) -*/ -@new -external make: ( - ~image: WebApiDOM.Types.htmlImageElement, - ~init: WebApiDOM.Types.videoFrameInit=?, -) => WebApiDOM.Types.videoFrame = "VideoFrame" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame) -*/ -@new -external make2: ( - ~image: WebApiDOM.Types.svgImageElement, - ~init: WebApiDOM.Types.videoFrameInit=?, -) => WebApiDOM.Types.videoFrame = "VideoFrame" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame) -*/ -@new -external make3: ( - ~image: WebApiDOM.Types.htmlVideoElement, - ~init: WebApiDOM.Types.videoFrameInit=?, -) => WebApiDOM.Types.videoFrame = "VideoFrame" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame) -*/ -@new -external make4: ( - ~image: WebApiDOM.Types.htmlCanvasElement, - ~init: WebApiDOM.Types.videoFrameInit=?, -) => WebApiDOM.Types.videoFrame = "VideoFrame" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame) -*/ -@new -external make5: ( - ~image: Types.imageBitmap, - ~init: WebApiDOM.Types.videoFrameInit=?, -) => WebApiDOM.Types.videoFrame = "VideoFrame" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame) -*/ -@new -external make6: ( - ~image: Types.offscreenCanvas, - ~init: WebApiDOM.Types.videoFrameInit=?, -) => WebApiDOM.Types.videoFrame = "VideoFrame" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame) -*/ -@new -external make7: ( - ~image: WebApiDOM.Types.videoFrame, - ~init: WebApiDOM.Types.videoFrameInit=?, -) => WebApiDOM.Types.videoFrame = "VideoFrame" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame) -*/ -@new -external make8: ( - ~data: ArrayBuffer.t, - ~init: WebApiDOM.Types.videoFrameBufferInit, -) => WebApiDOM.Types.videoFrame = "VideoFrame" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame) -*/ -@new -external make9: ( - ~data: WebApiBase.ArrayBufferTypedArrayOrDataView.t, - ~init: WebApiDOM.Types.videoFrameBufferInit, -) => WebApiDOM.Types.videoFrame = "VideoFrame" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame) -*/ -@new -external make10: ( - ~data: DataView.t, - ~init: WebApiDOM.Types.videoFrameBufferInit, -) => WebApiDOM.Types.videoFrame = "VideoFrame" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame/allocationSize) -*/ -@send -external allocationSize: ( - WebApiDOM.Types.videoFrame, - ~options: WebApiDOM.Types.videoFrameCopyToOptions=?, -) => int = "allocationSize" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame/copyTo) -*/ -@send -external copyTo: ( - WebApiDOM.Types.videoFrame, - ~destination: ArrayBuffer.t, - ~options: WebApiDOM.Types.videoFrameCopyToOptions=?, -) => promise> = "copyTo" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame/copyTo) -*/ -@send -external copyTo2: ( - WebApiDOM.Types.videoFrame, - ~destination: WebApiBase.ArrayBufferTypedArrayOrDataView.t, - ~options: WebApiDOM.Types.videoFrameCopyToOptions=?, -) => promise> = "copyTo" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame/copyTo) -*/ -@send -external copyTo3: ( - WebApiDOM.Types.videoFrame, - ~destination: DataView.t, - ~options: WebApiDOM.Types.videoFrameCopyToOptions=?, -) => promise> = "copyTo" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame/clone) -*/ -@send -external clone: WebApiDOM.Types.videoFrame => WebApiDOM.Types.videoFrame = "clone" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/VideoFrame/close) -*/ -@send -external close: WebApiDOM.Types.videoFrame => unit = "close" diff --git a/packages/ChannelMessaging/package.json b/packages/ChannelMessaging/package.json deleted file mode 100644 index 2c7cabef..00000000 --- a/packages/ChannelMessaging/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/channel-messaging", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/ChannelMessaging/rescript.json b/packages/ChannelMessaging/rescript.json deleted file mode 100644 index 5e80ca77..00000000 --- a/packages/ChannelMessaging/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/channel-messaging", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event" - ], - "namespace": "WebApiChannelMessaging" -} diff --git a/packages/Clipboard/package.json b/packages/Clipboard/package.json deleted file mode 100644 index 9843cba1..00000000 --- a/packages/Clipboard/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@rescript-webapi/clipboard", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0", - "@rescript-webapi/file": "0.1.0" - } -} diff --git a/packages/Clipboard/rescript.json b/packages/Clipboard/rescript.json deleted file mode 100644 index ae36d535..00000000 --- a/packages/Clipboard/rescript.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@rescript-webapi/clipboard", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event", - "@rescript-webapi/file" - ], - "namespace": "WebApiClipboard" -} diff --git a/packages/CredentialManagement/package.json b/packages/CredentialManagement/package.json deleted file mode 100644 index 7da6252c..00000000 --- a/packages/CredentialManagement/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@rescript-webapi/credential-management", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0", - "@rescript-webapi/base": "0.1.0" - } -} diff --git a/packages/CredentialManagement/rescript.json b/packages/CredentialManagement/rescript.json deleted file mode 100644 index 38484418..00000000 --- a/packages/CredentialManagement/rescript.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@rescript-webapi/credential-management", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event", - "@rescript-webapi/base" - ], - "namespace": "WebApiCredentialManagement" -} diff --git a/packages/DOM/package.json b/packages/DOM/package.json deleted file mode 100644 index 51abf8fd..00000000 --- a/packages/DOM/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "@rescript-webapi/dom", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/css-font-loading": "0.1.0", - "@rescript-webapi/channel-messaging": "0.1.0", - "@rescript-webapi/clipboard": "0.1.0", - "@rescript-webapi/credential-management": "0.1.0", - "@rescript-webapi/event": "0.1.0", - "@rescript-webapi/fetch": "0.1.0", - "@rescript-webapi/file": "0.1.0", - "@rescript-webapi/file-and-directory-entries": "0.1.0", - "@rescript-webapi/gamepad": "0.1.0", - "@rescript-webapi/geolocation": "0.1.0", - "@rescript-webapi/history": "0.1.0", - "@rescript-webapi/indexed-db": "0.1.0", - "@rescript-webapi/media-capabilities": "0.1.0", - "@rescript-webapi/media-capture-and-streams": "0.1.0", - "@rescript-webapi/media-session": "0.1.0", - "@rescript-webapi/performance": "0.1.0", - "@rescript-webapi/permissions": "0.1.0", - "@rescript-webapi/picture-in-picture": "0.1.0", - "@rescript-webapi/base": "0.1.0", - "@rescript-webapi/remote-playback": "0.1.0", - "@rescript-webapi/screen-wake-lock": "0.1.0", - "@rescript-webapi/service-worker": "0.1.0", - "@rescript-webapi/storage": "0.1.0", - "@rescript-webapi/url": "0.1.0", - "@rescript-webapi/view-transitions": "0.1.0", - "@rescript-webapi/visual-viewport": "0.1.0", - "@rescript-webapi/web-crypto": "0.1.0", - "@rescript-webapi/web-locks": "0.1.0", - "@rescript-webapi/web-midi": "0.1.0", - "@rescript-webapi/web-speech": "0.1.0", - "@rescript-webapi/web-storage": "0.1.0", - "@rescript-webapi/web-vtt": "0.1.0", - "@rescript-webapi/web-workers": "0.1.0" - } -} diff --git a/packages/DOM/rescript.json b/packages/DOM/rescript.json deleted file mode 100644 index f8860d5b..00000000 --- a/packages/DOM/rescript.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "@rescript-webapi/dom", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/css-font-loading", - "@rescript-webapi/channel-messaging", - "@rescript-webapi/clipboard", - "@rescript-webapi/credential-management", - "@rescript-webapi/event", - "@rescript-webapi/fetch", - "@rescript-webapi/file", - "@rescript-webapi/file-and-directory-entries", - "@rescript-webapi/gamepad", - "@rescript-webapi/geolocation", - "@rescript-webapi/history", - "@rescript-webapi/indexed-db", - "@rescript-webapi/media-capabilities", - "@rescript-webapi/media-capture-and-streams", - "@rescript-webapi/media-session", - "@rescript-webapi/performance", - "@rescript-webapi/permissions", - "@rescript-webapi/picture-in-picture", - "@rescript-webapi/base", - "@rescript-webapi/remote-playback", - "@rescript-webapi/screen-wake-lock", - "@rescript-webapi/service-worker", - "@rescript-webapi/storage", - "@rescript-webapi/url", - "@rescript-webapi/view-transitions", - "@rescript-webapi/visual-viewport", - "@rescript-webapi/web-crypto", - "@rescript-webapi/web-locks", - "@rescript-webapi/web-midi", - "@rescript-webapi/web-speech", - "@rescript-webapi/web-storage", - "@rescript-webapi/web-vtt", - "@rescript-webapi/web-workers" - ], - "namespace": "WebApiDOM" -} diff --git a/packages/DOM/src/MediaQueryList.res b/packages/DOM/src/MediaQueryList.res deleted file mode 100644 index cdea6dc7..00000000 --- a/packages/DOM/src/MediaQueryList.res +++ /dev/null @@ -1 +0,0 @@ -include WebApiEvent.EventTarget.Impl({type t = Types.mediaQueryList}) diff --git a/packages/DOM/src/TextTrackList.res b/packages/DOM/src/TextTrackList.res deleted file mode 100644 index ef88d2b2..00000000 --- a/packages/DOM/src/TextTrackList.res +++ /dev/null @@ -1,8 +0,0 @@ -include WebApiEvent.EventTarget.Impl({type t = Types.textTrackList}) - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/TextTrackList/getTrackById) -*/ -@send -external getTrackById: (Types.textTrackList, string) => WebApiWebVTT.Types.textTrack = - "getTrackById" diff --git a/packages/EncryptedMediaExtensions/package.json b/packages/EncryptedMediaExtensions/package.json deleted file mode 100644 index 32735685..00000000 --- a/packages/EncryptedMediaExtensions/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "@rescript-webapi/encrypted-media-extensions", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/dom": "0.1.0", - "@rescript-webapi/event": "0.1.0", - "@rescript-webapi/base": "0.1.0" - } -} diff --git a/packages/EncryptedMediaExtensions/rescript.json b/packages/EncryptedMediaExtensions/rescript.json deleted file mode 100644 index 2dd8c9c3..00000000 --- a/packages/EncryptedMediaExtensions/rescript.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "@rescript-webapi/encrypted-media-extensions", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/dom", - "@rescript-webapi/event", - "@rescript-webapi/base" - ], - "namespace": "WebApiEncryptedMediaExtensions" -} diff --git a/packages/Event/package.json b/packages/Event/package.json deleted file mode 100644 index 599fa4c5..00000000 --- a/packages/Event/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/event", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/dom": "0.1.0" - } -} diff --git a/packages/Event/rescript.json b/packages/Event/rescript.json deleted file mode 100644 index 7fb58767..00000000 --- a/packages/Event/rescript.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@rescript-webapi/event", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/dom", - "@rescript-webapi/base" - ], - "namespace": "WebApiEvent" -} diff --git a/packages/Fetch/package.json b/packages/Fetch/package.json deleted file mode 100644 index bd3a152e..00000000 --- a/packages/Fetch/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "@rescript-webapi/fetch", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/base": "0.1.0", - "@rescript-webapi/file": "0.1.0", - "@rescript-webapi/url": "0.1.0", - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/Fetch/rescript.json b/packages/Fetch/rescript.json deleted file mode 100644 index 302da0e9..00000000 --- a/packages/Fetch/rescript.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@rescript-webapi/fetch", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event", - "@rescript-webapi/file", - "@rescript-webapi/base", - "@rescript-webapi/url" - ], - "namespace": "WebApiFetch" -} diff --git a/packages/File/package.json b/packages/File/package.json deleted file mode 100644 index 4bddcc3f..00000000 --- a/packages/File/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/file", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/File/rescript.json b/packages/File/rescript.json deleted file mode 100644 index 56ebf96a..00000000 --- a/packages/File/rescript.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@rescript-webapi/file", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event", - "@rescript-webapi/base" - ], - "namespace": "WebApiFile" -} diff --git a/packages/FileAndDirectoryEntries/package.json b/packages/FileAndDirectoryEntries/package.json deleted file mode 100644 index 75887a75..00000000 --- a/packages/FileAndDirectoryEntries/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/file-and-directory-entries", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/base": "0.1.0" - } -} diff --git a/packages/FileAndDirectoryEntries/rescript.json b/packages/FileAndDirectoryEntries/rescript.json deleted file mode 100644 index adcb2533..00000000 --- a/packages/FileAndDirectoryEntries/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/file-and-directory-entries", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/base" - ], - "namespace": "WebApiFileAndDirectoryEntries" -} diff --git a/packages/Gamepad/package.json b/packages/Gamepad/package.json deleted file mode 100644 index a7061a26..00000000 --- a/packages/Gamepad/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/gamepad", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/base": "0.1.0" - } -} diff --git a/packages/Gamepad/rescript.json b/packages/Gamepad/rescript.json deleted file mode 100644 index c2cb0f87..00000000 --- a/packages/Gamepad/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/gamepad", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/base" - ], - "namespace": "WebApiGamepad" -} diff --git a/packages/Geolocation/package.json b/packages/Geolocation/package.json deleted file mode 100644 index 9a1bf73f..00000000 --- a/packages/Geolocation/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@rescript-webapi/geolocation", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": {} -} diff --git a/packages/Geolocation/rescript.json b/packages/Geolocation/rescript.json deleted file mode 100644 index 3860cd3d..00000000 --- a/packages/Geolocation/rescript.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "@rescript-webapi/geolocation", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [], - "namespace": "WebApiGeolocation" -} diff --git a/packages/History/package.json b/packages/History/package.json deleted file mode 100644 index 128ff317..00000000 --- a/packages/History/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@rescript-webapi/history", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": {} -} diff --git a/packages/History/rescript.json b/packages/History/rescript.json deleted file mode 100644 index 17c3e71b..00000000 --- a/packages/History/rescript.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "@rescript-webapi/history", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [], - "namespace": "WebApiHistory" -} diff --git a/packages/IndexedDB/package.json b/packages/IndexedDB/package.json deleted file mode 100644 index 5d1db379..00000000 --- a/packages/IndexedDB/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@rescript-webapi/indexed-db", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0", - "@rescript-webapi/base": "0.1.0" - } -} diff --git a/packages/IndexedDB/rescript.json b/packages/IndexedDB/rescript.json deleted file mode 100644 index b3419afd..00000000 --- a/packages/IndexedDB/rescript.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@rescript-webapi/indexed-db", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event", - "@rescript-webapi/base" - ], - "namespace": "WebApiIndexedDB" -} diff --git a/packages/IntersectionObserver/package.json b/packages/IntersectionObserver/package.json deleted file mode 100644 index f9842794..00000000 --- a/packages/IntersectionObserver/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/intersection-observer", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/dom": "0.1.0" - } -} diff --git a/packages/IntersectionObserver/rescript.json b/packages/IntersectionObserver/rescript.json deleted file mode 100644 index 3d7ae753..00000000 --- a/packages/IntersectionObserver/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/intersection-observer", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/dom" - ], - "namespace": "WebApiIntersectionObserver" -} diff --git a/packages/IntersectionObserver/src/IntersectionObserverRoot.res b/packages/IntersectionObserver/src/IntersectionObserverRoot.res deleted file mode 100644 index d92008f8..00000000 --- a/packages/IntersectionObserver/src/IntersectionObserverRoot.res +++ /dev/null @@ -1,21 +0,0 @@ -external fromDocument: WebApiDOM.Types.document => Types.root = "%identity" -external fromElement: WebApiDOM.Types.element => Types.root = "%identity" -external fromNull: Types.root = "null" - -external toElement: Types.root => WebApiDOM.Types.element = "%identity" -external toDocument: Types.root => WebApiDOM.Types.document = "%identity" - -type decoded = - | Element(WebApiDOM.Types.element) - | Document(WebApiDOM.Types.document) - | Null - -let decode = (t: Types.root): decoded => { - if WebApiDOM.Element.isInstanceOf(t) { - Element(t->toElement) - } else if WebApiDOM.Document.isInstanceOf(t) { - Document(t->toDocument) - } else { - Null - } -} diff --git a/packages/MediaCapabilities/package.json b/packages/MediaCapabilities/package.json deleted file mode 100644 index 637f51fc..00000000 --- a/packages/MediaCapabilities/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@rescript-webapi/media-capabilities", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": {} -} diff --git a/packages/MediaCapabilities/rescript.json b/packages/MediaCapabilities/rescript.json deleted file mode 100644 index aa7e6132..00000000 --- a/packages/MediaCapabilities/rescript.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "@rescript-webapi/media-capabilities", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [], - "namespace": "WebApiMediaCapabilities" -} diff --git a/packages/MediaCaptureAndStreams/package.json b/packages/MediaCaptureAndStreams/package.json deleted file mode 100644 index 1c16547a..00000000 --- a/packages/MediaCaptureAndStreams/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/media-capture-and-streams", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/MediaCaptureAndStreams/rescript.json b/packages/MediaCaptureAndStreams/rescript.json deleted file mode 100644 index 4cac4279..00000000 --- a/packages/MediaCaptureAndStreams/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/media-capture-and-streams", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event" - ], - "namespace": "WebApiMediaCaptureAndStreams" -} diff --git a/packages/MediaSession/package.json b/packages/MediaSession/package.json deleted file mode 100644 index 2cf71815..00000000 --- a/packages/MediaSession/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@rescript-webapi/media-session", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": {} -} diff --git a/packages/MediaSession/rescript.json b/packages/MediaSession/rescript.json deleted file mode 100644 index ce57fb37..00000000 --- a/packages/MediaSession/rescript.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "@rescript-webapi/media-session", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [], - "namespace": "WebApiMediaSession" -} diff --git a/packages/MutationObserver/package.json b/packages/MutationObserver/package.json deleted file mode 100644 index 20512d53..00000000 --- a/packages/MutationObserver/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/mutation-observer", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/dom": "0.1.0" - } -} diff --git a/packages/MutationObserver/rescript.json b/packages/MutationObserver/rescript.json deleted file mode 100644 index b67324b7..00000000 --- a/packages/MutationObserver/rescript.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@rescript-webapi/mutation-observer", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/dom", - "@rescript-webapi/base" - ], - "namespace": "WebApiMutationObserver" -} diff --git a/packages/Notification/package.json b/packages/Notification/package.json deleted file mode 100644 index ddfe8e68..00000000 --- a/packages/Notification/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/notification", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/Notification/rescript.json b/packages/Notification/rescript.json deleted file mode 100644 index ccea1ca3..00000000 --- a/packages/Notification/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/notification", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event" - ], - "namespace": "WebApiNotification" -} diff --git a/packages/Performance/package.json b/packages/Performance/package.json deleted file mode 100644 index 9a0cefc1..00000000 --- a/packages/Performance/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/performance", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/Performance/rescript.json b/packages/Performance/rescript.json deleted file mode 100644 index 47588862..00000000 --- a/packages/Performance/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/performance", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event" - ], - "namespace": "WebApiPerformance" -} diff --git a/packages/Permissions/package.json b/packages/Permissions/package.json deleted file mode 100644 index 5ac0d4b4..00000000 --- a/packages/Permissions/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/permissions", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/Permissions/rescript.json b/packages/Permissions/rescript.json deleted file mode 100644 index fe6b4956..00000000 --- a/packages/Permissions/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/permissions", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event" - ], - "namespace": "WebApiPermissions" -} diff --git a/packages/PictureInPicture/package.json b/packages/PictureInPicture/package.json deleted file mode 100644 index 3e4cb66f..00000000 --- a/packages/PictureInPicture/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/picture-in-picture", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/PictureInPicture/rescript.json b/packages/PictureInPicture/rescript.json deleted file mode 100644 index 91a9379f..00000000 --- a/packages/PictureInPicture/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/picture-in-picture", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event" - ], - "namespace": "WebApiPictureInPicture" -} diff --git a/packages/PictureInPicture/src/PictureInPicture.res b/packages/PictureInPicture/src/PictureInPicture.res deleted file mode 100644 index edc3fc51..00000000 --- a/packages/PictureInPicture/src/PictureInPicture.res +++ /dev/null @@ -1,3 +0,0 @@ -type t = Types.pictureInPictureWindow = {...Types.pictureInPictureWindow} - -include WebApiEvent.EventTarget.Impl({type t = t}) diff --git a/packages/Push/package.json b/packages/Push/package.json deleted file mode 100644 index a5871dd4..00000000 --- a/packages/Push/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/push", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/Push/rescript.json b/packages/Push/rescript.json deleted file mode 100644 index d71ce8c4..00000000 --- a/packages/Push/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/push", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event" - ], - "namespace": "WebApiPush" -} diff --git a/packages/RemotePlayback/package.json b/packages/RemotePlayback/package.json deleted file mode 100644 index de942d1a..00000000 --- a/packages/RemotePlayback/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/remote-playback", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/RemotePlayback/rescript.json b/packages/RemotePlayback/rescript.json deleted file mode 100644 index d129b428..00000000 --- a/packages/RemotePlayback/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/remote-playback", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event" - ], - "namespace": "WebApiRemotePlayback" -} diff --git a/packages/ResizeObserver/package.json b/packages/ResizeObserver/package.json deleted file mode 100644 index 9da54e85..00000000 --- a/packages/ResizeObserver/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/resize-observer", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/dom": "0.1.0" - } -} diff --git a/packages/ResizeObserver/rescript.json b/packages/ResizeObserver/rescript.json deleted file mode 100644 index 3df604cd..00000000 --- a/packages/ResizeObserver/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/resize-observer", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/dom" - ], - "namespace": "WebApiResizeObserver" -} diff --git a/packages/ScreenWakeLock/package.json b/packages/ScreenWakeLock/package.json deleted file mode 100644 index 905e8113..00000000 --- a/packages/ScreenWakeLock/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/screen-wake-lock", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/ScreenWakeLock/rescript.json b/packages/ScreenWakeLock/rescript.json deleted file mode 100644 index fd0672cf..00000000 --- a/packages/ScreenWakeLock/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/screen-wake-lock", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event" - ], - "namespace": "WebApiScreenWakeLock" -} diff --git a/packages/ServiceWorker/package.json b/packages/ServiceWorker/package.json deleted file mode 100644 index a69761c8..00000000 --- a/packages/ServiceWorker/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "@rescript-webapi/service-worker", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/channel-messaging": "0.1.0", - "@rescript-webapi/event": "0.1.0", - "@rescript-webapi/fetch": "0.1.0", - "@rescript-webapi/notification": "0.1.0", - "@rescript-webapi/base": "0.1.0", - "@rescript-webapi/push": "0.1.0", - "@rescript-webapi/web-workers": "0.1.0" - } -} diff --git a/packages/ServiceWorker/rescript.json b/packages/ServiceWorker/rescript.json deleted file mode 100644 index 4cd862b7..00000000 --- a/packages/ServiceWorker/rescript.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@rescript-webapi/service-worker", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/channel-messaging", - "@rescript-webapi/event", - "@rescript-webapi/fetch", - "@rescript-webapi/notification", - "@rescript-webapi/base", - "@rescript-webapi/push", - "@rescript-webapi/web-workers" - ], - "namespace": "WebApiServiceWorker" -} diff --git a/packages/ServiceWorker/src/Cache.res b/packages/ServiceWorker/src/Cache.res deleted file mode 100644 index cff60fa1..00000000 --- a/packages/ServiceWorker/src/Cache.res +++ /dev/null @@ -1,120 +0,0 @@ -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Cache/match) -*/ -@send -external match: ( - WebApiWebWorkers.Types.cache, - ~request: WebApiFetch.Types.request, - ~options: WebApiWebWorkers.Types.cacheQueryOptions=?, -) => Nullable.t = "match" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Cache/match) -*/ -@send -external match2: ( - WebApiWebWorkers.Types.cache, - ~request: string, - ~options: WebApiWebWorkers.Types.cacheQueryOptions=?, -) => Nullable.t = "match" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Cache/matchAll) -*/ -@send -external matchAll: ( - WebApiWebWorkers.Types.cache, - ~request: WebApiFetch.Types.request=?, - ~options: WebApiWebWorkers.Types.cacheQueryOptions=?, -) => promise> = "matchAll" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Cache/matchAll) -*/ -@send -external matchAll2: ( - WebApiWebWorkers.Types.cache, - ~request: string=?, - ~options: WebApiWebWorkers.Types.cacheQueryOptions=?, -) => promise> = "matchAll" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Cache/add) -*/ -@send -external add: (WebApiWebWorkers.Types.cache, WebApiFetch.Types.request) => promise = "add" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Cache/add) -*/ -@send -external add2: (WebApiWebWorkers.Types.cache, string) => promise = "add" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Cache/addAll) -*/ -@send -external addAll: ( - WebApiWebWorkers.Types.cache, - array, -) => promise = "addAll" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Cache/put) -*/ -@send -external put: ( - WebApiWebWorkers.Types.cache, - ~request: WebApiFetch.Types.request, - ~response: WebApiFetch.Types.response, -) => promise = "put" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Cache/put) -*/ -@send -external put2: ( - WebApiWebWorkers.Types.cache, - ~request: string, - ~response: WebApiFetch.Types.response, -) => promise = "put" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Cache/delete) -*/ -@send -external delete: ( - WebApiWebWorkers.Types.cache, - ~request: WebApiFetch.Types.request, - ~options: WebApiWebWorkers.Types.cacheQueryOptions=?, -) => promise = "delete" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Cache/delete) -*/ -@send -external delete2: ( - WebApiWebWorkers.Types.cache, - ~request: string, - ~options: WebApiWebWorkers.Types.cacheQueryOptions=?, -) => promise = "delete" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Cache/keys) -*/ -@send -external keys: ( - WebApiWebWorkers.Types.cache, - ~request: WebApiFetch.Types.request=?, - ~options: WebApiWebWorkers.Types.cacheQueryOptions=?, -) => promise> = "keys" - -/** -[Read more on MDN](https://developer.mozilla.org/docs/Web/API/Cache/keys) -*/ -@send -external keys2: ( - WebApiWebWorkers.Types.cache, - ~request: string=?, - ~options: WebApiWebWorkers.Types.cacheQueryOptions=?, -) => promise> = "keys" diff --git a/packages/Storage/package.json b/packages/Storage/package.json deleted file mode 100644 index b03c27e6..00000000 --- a/packages/Storage/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/storage", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/file": "0.1.0" - } -} diff --git a/packages/Storage/rescript.json b/packages/Storage/rescript.json deleted file mode 100644 index 5f3d17b5..00000000 --- a/packages/Storage/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/storage", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/file" - ], - "namespace": "WebApiStorage" -} diff --git a/packages/UIEvents/package.json b/packages/UIEvents/package.json deleted file mode 100644 index 67f55d04..00000000 --- a/packages/UIEvents/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "@rescript-webapi/ui-events", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/dom": "0.1.0", - "@rescript-webapi/event": "0.1.0", - "@rescript-webapi/file-and-directory-entries": "0.1.0", - "@rescript-webapi/file": "0.1.0", - "@rescript-webapi/base": "0.1.0" - } -} diff --git a/packages/UIEvents/rescript.json b/packages/UIEvents/rescript.json deleted file mode 100644 index dd97bf72..00000000 --- a/packages/UIEvents/rescript.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "@rescript-webapi/ui-events", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/dom", - "@rescript-webapi/event", - "@rescript-webapi/file-and-directory-entries", - "@rescript-webapi/file", - "@rescript-webapi/base" - ], - "namespace": "WebApiUIEvents" -} diff --git a/packages/URL/package.json b/packages/URL/package.json deleted file mode 100644 index 63a7ce33..00000000 --- a/packages/URL/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@rescript-webapi/url", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": {} -} diff --git a/packages/URL/rescript.json b/packages/URL/rescript.json deleted file mode 100644 index e0e3c0d0..00000000 --- a/packages/URL/rescript.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "@rescript-webapi/url", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [], - "namespace": "WebApiURL" -} diff --git a/packages/ViewTransitions/package.json b/packages/ViewTransitions/package.json deleted file mode 100644 index 43e5589d..00000000 --- a/packages/ViewTransitions/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@rescript-webapi/view-transitions", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": {} -} diff --git a/packages/ViewTransitions/rescript.json b/packages/ViewTransitions/rescript.json deleted file mode 100644 index c6faa347..00000000 --- a/packages/ViewTransitions/rescript.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "@rescript-webapi/view-transitions", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [], - "namespace": "WebApiViewTransitions" -} diff --git a/packages/VisualViewport/package.json b/packages/VisualViewport/package.json deleted file mode 100644 index a20e825e..00000000 --- a/packages/VisualViewport/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/visual-viewport", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/VisualViewport/rescript.json b/packages/VisualViewport/rescript.json deleted file mode 100644 index b3da60cf..00000000 --- a/packages/VisualViewport/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/visual-viewport", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event" - ], - "namespace": "WebApiVisualViewport" -} diff --git a/packages/WebAudio/package.json b/packages/WebAudio/package.json deleted file mode 100644 index 447b0f6b..00000000 --- a/packages/WebAudio/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "@rescript-webapi/web-audio", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/channel-messaging": "0.1.0", - "@rescript-webapi/dom": "0.1.0", - "@rescript-webapi/event": "0.1.0", - "@rescript-webapi/media-capture-and-streams": "0.1.0", - "@rescript-webapi/base": "0.1.0" - } -} diff --git a/packages/WebAudio/rescript.json b/packages/WebAudio/rescript.json deleted file mode 100644 index 12eddd22..00000000 --- a/packages/WebAudio/rescript.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "@rescript-webapi/web-audio", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/channel-messaging", - "@rescript-webapi/dom", - "@rescript-webapi/event", - "@rescript-webapi/media-capture-and-streams", - "@rescript-webapi/base" - ], - "namespace": "WebApiWebAudio" -} diff --git a/packages/WebCrypto/package.json b/packages/WebCrypto/package.json deleted file mode 100644 index d138ca9d..00000000 --- a/packages/WebCrypto/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/web-crypto", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/base": "0.1.0" - } -} diff --git a/packages/WebCrypto/rescript.json b/packages/WebCrypto/rescript.json deleted file mode 100644 index 2e73c9bc..00000000 --- a/packages/WebCrypto/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/web-crypto", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/base" - ], - "namespace": "WebApiWebCrypto" -} diff --git a/packages/WebLocks/package.json b/packages/WebLocks/package.json deleted file mode 100644 index 7704feb0..00000000 --- a/packages/WebLocks/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/web-locks", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/WebLocks/rescript.json b/packages/WebLocks/rescript.json deleted file mode 100644 index a1f5d5d0..00000000 --- a/packages/WebLocks/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/web-locks", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event" - ], - "namespace": "WebApiWebLocks" -} diff --git a/packages/WebMIDI/package.json b/packages/WebMIDI/package.json deleted file mode 100644 index 55846991..00000000 --- a/packages/WebMIDI/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@rescript-webapi/web-midi", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0", - "@rescript-webapi/base": "0.1.0" - } -} diff --git a/packages/WebMIDI/rescript.json b/packages/WebMIDI/rescript.json deleted file mode 100644 index 77f0e1c9..00000000 --- a/packages/WebMIDI/rescript.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@rescript-webapi/web-midi", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event", - "@rescript-webapi/base" - ], - "namespace": "WebApiWebMIDI" -} diff --git a/packages/WebSockets/package.json b/packages/WebSockets/package.json deleted file mode 100644 index be933ff0..00000000 --- a/packages/WebSockets/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "@rescript-webapi/web-sockets", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/channel-messaging": "0.1.0", - "@rescript-webapi/event": "0.1.0", - "@rescript-webapi/file": "0.1.0" - } -} diff --git a/packages/WebSockets/rescript.json b/packages/WebSockets/rescript.json deleted file mode 100644 index 0fded572..00000000 --- a/packages/WebSockets/rescript.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "@rescript-webapi/web-sockets", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/channel-messaging", - "@rescript-webapi/event", - "@rescript-webapi/file" - ], - "namespace": "WebApiWebSockets" -} diff --git a/packages/WebSpeech/package.json b/packages/WebSpeech/package.json deleted file mode 100644 index c413147a..00000000 --- a/packages/WebSpeech/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/web-speech", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/WebSpeech/rescript.json b/packages/WebSpeech/rescript.json deleted file mode 100644 index d8991897..00000000 --- a/packages/WebSpeech/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/web-speech", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event" - ], - "namespace": "WebApiWebSpeech" -} diff --git a/packages/WebStorage/package.json b/packages/WebStorage/package.json deleted file mode 100644 index 50b1dbd7..00000000 --- a/packages/WebStorage/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/web-storage", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/WebStorage/rescript.json b/packages/WebStorage/rescript.json deleted file mode 100644 index 7f17b48f..00000000 --- a/packages/WebStorage/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/web-storage", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event" - ], - "namespace": "WebApiWebStorage" -} diff --git a/packages/WebVTT/package.json b/packages/WebVTT/package.json deleted file mode 100644 index add73477..00000000 --- a/packages/WebVTT/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@rescript-webapi/web-vtt", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/event": "0.1.0" - } -} diff --git a/packages/WebVTT/rescript.json b/packages/WebVTT/rescript.json deleted file mode 100644 index 24694423..00000000 --- a/packages/WebVTT/rescript.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@rescript-webapi/web-vtt", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/event" - ], - "namespace": "WebApiWebVTT" -} diff --git a/packages/WebWorkers/package.json b/packages/WebWorkers/package.json deleted file mode 100644 index 35af9fc8..00000000 --- a/packages/WebWorkers/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "@rescript-webapi/web-workers", - "version": "0.1.0", - "license": "MIT", - "type": "module", - "files": [ - "rescript.json", - "src/**/*.res" - ], - "publishConfig": { - "access": "public", - "provenance": true - }, - "scripts": { - "build": "rescript" - }, - "peerDependencies": { - "rescript": ">=12.0.0 <13" - }, - "dependencies": { - "@rescript-webapi/channel-messaging": "0.1.0", - "@rescript-webapi/event": "0.1.0", - "@rescript-webapi/fetch": "0.1.0", - "@rescript-webapi/url": "0.1.0" - } -} diff --git a/packages/WebWorkers/rescript.json b/packages/WebWorkers/rescript.json deleted file mode 100644 index 963f7e4a..00000000 --- a/packages/WebWorkers/rescript.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@rescript-webapi/web-workers", - "sources": [ - { - "dir": "src", - "subdirs": true - } - ], - "package-specs": { - "module": "esmodule", - "in-source": true - }, - "suffix": ".js", - "dependencies": [ - "@rescript-webapi/channel-messaging", - "@rescript-webapi/event", - "@rescript-webapi/fetch", - "@rescript-webapi/url" - ], - "namespace": "WebApiWebWorkers" -} diff --git a/scripts/unmonorepo/feature-spec.mjs b/scripts/unmonorepo/feature-spec.mjs index 30f16d29..d8b49bd0 100644 --- a/scripts/unmonorepo/feature-spec.mjs +++ b/scripts/unmonorepo/feature-spec.mjs @@ -17,6 +17,9 @@ export function publicModuleToInternalPrefix(publicModule) { export function publicNameForLeafModule(leafName, internalPrefix) { const duplicatedSuffixes = ["Types", "Global", "Event", "File", "HTMLMediaElement"]; + const featureSuffix = featureSpecs + .map(({ publicModule }) => publicModule) + .find((publicModule) => leafName === `${internalPrefix}${publicModule}`); for (const suffix of duplicatedSuffixes) { if (leafName === `${internalPrefix}${suffix}`) { @@ -24,6 +27,10 @@ export function publicNameForLeafModule(leafName, internalPrefix) { } } + if (featureSuffix) { + return featureSuffix; + } + return leafName; } diff --git a/scripts/unmonorepo/generate-entry-modules.mjs b/scripts/unmonorepo/generate-entry-modules.mjs new file mode 100644 index 00000000..3f97e686 --- /dev/null +++ b/scripts/unmonorepo/generate-entry-modules.mjs @@ -0,0 +1,43 @@ +import fs from "node:fs"; +import path from "node:path"; +import { featureSpecs, publicNameForLeafModule } from "./feature-spec.mjs"; + +export function readModuleLeaves(featureDir) { + return fs + .readdirSync(featureDir) + .filter((name) => name.endsWith(".res")) + .map((name) => path.basename(name, ".res")) + .filter((leaf) => !featureSpecs.some((spec) => spec.publicModule === leaf)); +} + +export function renderEntryModule({ existingSource = "", internalPrefix, moduleLeaves }) { + const aliases = moduleLeaves + .sort() + .map((leaf) => `module ${publicNameForLeafModule(leaf, internalPrefix)} = ${leaf}`) + .join("\n"); + + return [existingSource.trimEnd(), aliases].filter(Boolean).join("\n\n"); +} + +export function generateEntryModules(rootDir) { + for (const spec of featureSpecs) { + const featureDir = path.join(rootDir, "src", spec.dirName); + if (!fs.existsSync(featureDir)) continue; + + const entryPath = path.join(featureDir, `${spec.publicModule}.res`); + const existingSource = fs.existsSync(entryPath) ? fs.readFileSync(entryPath, "utf8").trimEnd() : ""; + const moduleLeaves = readModuleLeaves(featureDir).filter((leaf) => leaf !== spec.publicModule); + const output = renderEntryModule({ + publicModule: spec.publicModule, + existingSource, + internalPrefix: spec.internalPrefix, + moduleLeaves, + }); + + fs.writeFileSync(entryPath, `${output}\n`); + } +} + +if (process.argv.includes("--write")) { + generateEntryModules(process.cwd()); +} diff --git a/scripts/unmonorepo/migrate-layout.mjs b/scripts/unmonorepo/migrate-layout.mjs index f70ffe60..9c7a6b97 100644 --- a/scripts/unmonorepo/migrate-layout.mjs +++ b/scripts/unmonorepo/migrate-layout.mjs @@ -9,6 +9,7 @@ function moveFile(fromPath, toPath) { export function migrateLayout(rootDir) { const duplicateLeaves = findDuplicateLeafModules(rootDir, featureSpecs); + const reservedPublicModules = new Set(featureSpecs.map((spec) => spec.publicModule)); for (const spec of featureSpecs) { const legacySourceDir = path.join(rootDir, "packages", spec.dirName, "src"); @@ -21,7 +22,8 @@ export function migrateLayout(rootDir) { if (!entry.isFile() || !entry.name.endsWith(".res")) continue; const leafName = path.basename(entry.name, ".res"); - const nextLeafName = duplicateLeaves.has(leafName) + const nextLeafName = + duplicateLeaves.has(leafName) || (reservedPublicModules.has(leafName) && leafName !== spec.publicModule) ? `${spec.internalPrefix}${leafName}` : leafName; diff --git a/scripts/unmonorepo/rewrite-references.mjs b/scripts/unmonorepo/rewrite-references.mjs new file mode 100644 index 00000000..f93eb238 --- /dev/null +++ b/scripts/unmonorepo/rewrite-references.mjs @@ -0,0 +1,79 @@ +import fs from "node:fs"; +import path from "node:path"; +import { featureSpecs, publicNameForLeafModule } from "./feature-spec.mjs"; + +export function rewriteSourceText(source, { currentFeature, specs, localLeaves }) { + const currentSpec = specs.find((spec) => spec.publicModule === currentFeature); + let next = source; + + for (const leaf of localLeaves) { + const publicLeaf = publicNameForLeafModule(leaf, currentSpec.internalPrefix); + next = next.replaceAll(`${currentSpec.legacyNamespace}.${publicLeaf}`, leaf); + } + + for (const spec of specs) { + next = next.replaceAll(`${spec.legacyNamespace}.`, `WebApi.${spec.publicModule}.`); + } + + return next; +} + +export function rewriteTestText(source, specs = featureSpecs) { + let next = source; + + for (const spec of specs) { + next = next.replaceAll(`${spec.legacyNamespace}.`, `WebApi.${spec.publicModule}.`); + } + + return next; +} + +function rewriteTestFilesInDirectory(directoryPath) { + for (const entry of fs.readdirSync(directoryPath, { withFileTypes: true })) { + const entryPath = path.join(directoryPath, entry.name); + + if (entry.isDirectory()) { + rewriteTestFilesInDirectory(entryPath); + continue; + } + + if (!entry.isFile() || !entry.name.endsWith(".res")) continue; + fs.writeFileSync(entryPath, rewriteTestText(fs.readFileSync(entryPath, "utf8"))); + } +} + +export function rewriteRepoReferences(rootDir) { + for (const spec of featureSpecs) { + const featureDir = path.join(rootDir, "src", spec.dirName); + if (!fs.existsSync(featureDir)) continue; + + const localLeaves = fs + .readdirSync(featureDir) + .filter((name) => name.endsWith(".res")) + .map((name) => path.basename(name, ".res")); + + for (const fileName of fs.readdirSync(featureDir)) { + if (!fileName.endsWith(".res")) continue; + + const filePath = path.join(featureDir, fileName); + const source = fs.readFileSync(filePath, "utf8"); + fs.writeFileSync( + filePath, + rewriteSourceText(source, { + currentFeature: spec.publicModule, + specs: featureSpecs, + localLeaves, + }), + ); + } + } + + const testsDir = path.join(rootDir, "tests"); + if (fs.existsSync(testsDir)) { + rewriteTestFilesInDirectory(testsDir); + } +} + +if (process.argv.includes("--write")) { + rewriteRepoReferences(process.cwd()); +} diff --git a/packages/Base/src/ArrayBufferTypedArrayOrDataView.res b/src/Base/ArrayBufferTypedArrayOrDataView.res similarity index 100% rename from packages/Base/src/ArrayBufferTypedArrayOrDataView.res rename to src/Base/ArrayBufferTypedArrayOrDataView.res diff --git a/src/Base/Base.res b/src/Base/Base.res new file mode 100644 index 00000000..84a24dbb --- /dev/null +++ b/src/Base/Base.res @@ -0,0 +1,7 @@ +module ArrayBufferTypedArrayOrDataView = ArrayBufferTypedArrayOrDataView +module CSSFontLoading = BaseCSSFontLoading +module DOM = BaseDOM +module EncryptedMediaExtensions = BaseEncryptedMediaExtensions +module Event = BaseEvent +module File = BaseFile +module FileAndDirectoryEntries = BaseFileAndDirectoryEntries diff --git a/packages/Base/src/CSSFontLoading.res b/src/Base/BaseCSSFontLoading.res similarity index 91% rename from packages/Base/src/CSSFontLoading.res rename to src/Base/BaseCSSFontLoading.res index dff65d9d..38105b05 100644 --- a/packages/Base/src/CSSFontLoading.res +++ b/src/Base/BaseCSSFontLoading.res @@ -11,7 +11,7 @@ type fontFaceSetLoadStatus = /** [See FontFaceSet on MDN](https://developer.mozilla.org/docs/Web/API/FontFaceSet) */ -@editor.completeFrom(WebApiCSSFontLoading.FontFaceSet) +@editor.completeFrom(WebApi.CSSFontLoading.FontFaceSet) type rec fontFaceSet = private { ...Event.eventTarget, /** diff --git a/packages/Base/src/DOM.res b/src/Base/BaseDOM.res similarity index 97% rename from packages/Base/src/DOM.res rename to src/Base/BaseDOM.res index 8a7c0068..e32f22dd 100644 --- a/packages/Base/src/DOM.res +++ b/src/Base/BaseDOM.res @@ -203,12 +203,12 @@ The location (WebApiURL) of the object it is linked to. Changes done on it are r [See Location on MDN](https://developer.mozilla.org/docs/Web/API/Location) TODO: mark as private once mutating fields of private records is allowed */ -@editor.completeFrom(WebApiDOM.Location) +@editor.completeFrom(WebApi.DOM.Location) type location = { /** - Returns the Location object's WebApiURL. + Returns the Location object's WebApi.URL. -Can be set, to navigate to the given WebApiURL. +Can be set, to navigate to the given WebApi.URL. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Location/href) */ mutable href: string, @@ -291,11 +291,11 @@ type userActivation = { The state and the identity of the user agent. It allows scripts to query it and to register themselves to carry on some activities. [See Navigator on MDN](https://developer.mozilla.org/docs/Web/API/Navigator) */ -@editor.completeFrom(WebApiDOM.Navigator) +@editor.completeFrom(WebApi.DOM.Navigator) type navigator // TODO: mark as private once mutating fields of private records is allowed -@editor.completeFrom(WebApiDOM.DOMTokenList) +@editor.completeFrom(WebApi.DOM.DOMTokenList) type domTokenList = { /** Returns the number of tokens. @@ -315,7 +315,7 @@ Can be set, to change the associated attribute. A collection of Attr objects. Objects inside a NamedNodeMap are not in any particular order, unlike NodeList, although they may be accessed by an index as in an array. [See NamedNodeMap on MDN](https://developer.mozilla.org/docs/Web/API/NamedNodeMap) */ -@editor.completeFrom(WebApiDOM.NamedNodeMap) +@editor.completeFrom(WebApi.DOM.NamedNodeMap) type namedNodeMap = private { /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/NamedNodeMap/length) @@ -331,7 +331,7 @@ type fragmentDirective = {} /** [See CustomElementRegistry on MDN](https://developer.mozilla.org/docs/Web/API/CustomElementRegistry) */ -@editor.completeFrom(WebApiDOM.CustomElementRegistry) +@editor.completeFrom(WebApi.DOM.CustomElementRegistry) type customElementRegistry = private {} /** @@ -347,7 +347,7 @@ type barProp = { /** [See ScreenOrientation on MDN](https://developer.mozilla.org/docs/Web/API/ScreenOrientation) */ -@editor.completeFrom(WebApiDOM.ScreenOrientation) +@editor.completeFrom(WebApi.DOM.ScreenOrientation) type screenOrientation = private { ...Event.eventTarget, /** @@ -408,7 +408,7 @@ type offscreenRenderingContext = unknown /** [See AnimationTimeline on MDN](https://developer.mozilla.org/docs/Web/API/AnimationTimeline) */ -@editor.completeFrom(WebApiDOM.Animation) +@editor.completeFrom(WebApi.DOM.Animation) type rec animationTimeline = private { /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AnimationTimeline/currentTime) @@ -419,7 +419,7 @@ type rec animationTimeline = private { /** [See DocumentTimeline on MDN](https://developer.mozilla.org/docs/Web/API/DocumentTimeline) */ -@editor.completeFrom(WebApiDOM.DocumentTimeline) and documentTimeline = private { +@editor.completeFrom(WebApi.DOM.DocumentTimeline) and documentTimeline = private { // Base properties from AnimationTimeline /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/AnimationTimeline/currentTime) @@ -432,7 +432,7 @@ type rec animationTimeline = private { [See MediaList on MDN](https://developer.mozilla.org/docs/Web/API/MediaList) TODO: mark as private once mutating fields of private records is allowed */ -@editor.completeFrom(WebApiDOM.MediaList) +@editor.completeFrom(WebApi.DOM.MediaList) type mediaList = { /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/MediaList/mediaText) @@ -447,7 +447,7 @@ type mediaList = { /** [See StylePropertyMapReadOnly on MDN](https://developer.mozilla.org/docs/Web/API/StylePropertyMapReadOnly) */ -@editor.completeFrom(WebApiDOM.StylePropertyMapReadOnly) +@editor.completeFrom(WebApi.DOM.StylePropertyMapReadOnly) type stylePropertyMapReadOnly = private { /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/StylePropertyMapReadOnly/size) @@ -458,7 +458,7 @@ type stylePropertyMapReadOnly = private { /** [See StylePropertyMap on MDN](https://developer.mozilla.org/docs/Web/API/StylePropertyMap) */ -@editor.completeFrom(WebApiDOM.StylePropertyMap) +@editor.completeFrom(WebApi.DOM.StylePropertyMap) type stylePropertyMap = private { ...stylePropertyMapReadOnly, } @@ -473,7 +473,7 @@ type domStringMap = {} A list of StyleSheet. [See StyleSheetList on MDN](https://developer.mozilla.org/docs/Web/API/StyleSheetList) */ -@editor.completeFrom(WebApiDOM.StyleSheetList) +@editor.completeFrom(WebApi.DOM.StyleSheetList) type rec styleSheetList = private { /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/StyleSheetList/length) @@ -522,7 +522,7 @@ A single CSS style sheet. It inherits properties and methods from its parent, St [See CSSStyleSheet on MDN](https://developer.mozilla.org/docs/Web/API/CSSStyleSheet) TODO: mark as private once mutating fields of private records is allowed */ -@editor.completeFrom(WebApiDOM.CSSStyleSheet) and cssStyleSheet = { +@editor.completeFrom(WebApi.DOM.CSSStyleSheet) and cssStyleSheet = { // Base properties from StyleSheet /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/StyleSheet/type) @@ -588,7 +588,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(WebApiDOM.CSSRuleList) and cssRuleList = private { +@editor.completeFrom(WebApi.DOM.CSSRuleList) and cssRuleList = private { /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/CSSRuleList/length) */ @@ -600,7 +600,7 @@ An object that is a CSS declaration block, and exposes style information and var [See CSSStyleDeclaration on MDN](https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration) TODO: mark as private once mutating fields of private records is allowed */ -@editor.completeFrom(WebApiDOM.CSSStyleDeclaration) and cssStyleDeclaration = { +@editor.completeFrom(WebApi.DOM.CSSStyleDeclaration) and cssStyleDeclaration = { /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/cssText) */ @@ -2308,7 +2308,7 @@ Node is an interface from which a number of WebApiDOM API object types inherit. [See Node on MDN](https://developer.mozilla.org/docs/Web/API/Node) TODO: mark as private once mutating fields of private records is allowed */ -@editor.completeFrom(WebApiDOM.Node) +@editor.completeFrom(WebApi.DOM.Node) type rec node = { ...Event.eventTarget, /** @@ -2322,7 +2322,7 @@ type rec node = { */ nodeName: string, /** - Returns node's node document's document base WebApiURL. + Returns node's node document's document base WebApi.URL. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Node/baseURI) */ baseURI: string, @@ -2385,7 +2385,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(WebApiDOM.NodeList) and nodeList<'tNode> = private { +@editor.completeFrom(WebApi.DOM.NodeList) and nodeList<'tNode> = private { /** Returns the number of nodes in the collection. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/NodeList/length) @@ -2398,7 +2398,7 @@ Element is the most general base class from which all objects in a Document inhe [See Element on MDN](https://developer.mozilla.org/docs/Web/API/Element) TODO: mark as private once mutating fields of private records is allowed */ -@editor.completeFrom(WebApiDOM.Element) and element = { +@editor.completeFrom(WebApi.DOM.Element) and element = { // Base properties from Node /** Returns the type of node. @@ -2411,7 +2411,7 @@ TODO: mark as private once mutating fields of private records is allowed */ nodeName: string, /** - Returns node's node document's document base WebApiURL. + Returns node's node document's document base WebApi.URL. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Node/baseURI) */ baseURI: string, @@ -2770,7 +2770,7 @@ TODO: mark as private once mutating fields of private records is allowed [See ShadowRoot on MDN](https://developer.mozilla.org/docs/Web/API/ShadowRoot) TODO: mark as private once mutating fields of private records is allowed */ -@editor.completeFrom(WebApiDOM.ShadowRoot) and shadowRoot = { +@editor.completeFrom(WebApi.DOM.ShadowRoot) and shadowRoot = { // Base properties from DocumentFragment // End base properties from DocumentFragment @@ -2786,7 +2786,7 @@ TODO: mark as private once mutating fields of private records is allowed */ nodeName: string, /** - Returns node's node document's document base WebApiURL. + Returns node's node document's document base WebApi.URL. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Node/baseURI) */ baseURI: string, @@ -2910,7 +2910,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(WebApiDOM.HTMLCollection) and htmlCollection<'t> = private { +@editor.completeFrom(WebApi.DOM.HTMLCollection) and htmlCollection<'t> = private { /** Sets or retrieves the number of objects in a collection. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLCollection/length) @@ -2923,7 +2923,7 @@ A collection of HTML form control elements. [See HTMLFormControlsCollection on MDN](https://developer.mozilla.org/docs/Web/API/HTMLFormControlsCollection) */ @editor.completeFrom( - WebApiDOM.DOM.HTMLFormControlsCollection + WebApi.DOM.DOM.HTMLFormControlsCollection ) and htmlFormControlsCollection = private { // Base properties from HTMLCollection /** @@ -2939,7 +2939,7 @@ Any HTML element. Some elements directly implement this interface, while others [See HTMLElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLElement) TODO: mark as private once mutating fields of private records is allowed */ -@editor.completeFrom(WebApiDOM.HTMLElement) and htmlElement = { +@editor.completeFrom(WebApi.DOM.HTMLElement) and htmlElement = { // Base properties from Element /** Returns the namespace. @@ -3052,7 +3052,7 @@ TODO: mark as private once mutating fields of private records is allowed */ nodeName: string, /** - Returns node's node document's document base WebApiURL. + Returns node's node document's document base WebApi.URL. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Node/baseURI) */ baseURI: string, @@ -3234,7 +3234,7 @@ Contains the descriptive information, or metadata, for a document. This object i [See HTMLHeadElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLHeadElement) TODO: mark as private once mutating fields of private records is allowed */ -@editor.completeFrom(WebApiDOM.HTMLHeadElement) and htmlHeadElement = { +@editor.completeFrom(WebApi.DOM.HTMLHeadElement) and htmlHeadElement = { // Base properties from HTMLElement /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLElement/title) @@ -3426,7 +3426,7 @@ TODO: mark as private once mutating fields of private records is allowed */ nodeName: string, /** - Returns node's node document's document base WebApiURL. + Returns node's node document's document base WebApi.URL. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Node/baseURI) */ baseURI: string, @@ -3491,7 +3491,7 @@ A
element in the WebApiDOM; it allows access to and in some cases modific [See HTMLFormElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLFormElement) TODO: mark as private once mutating fields of private records is allowed */ -@editor.completeFrom(WebApiDOM.HTMLFormElement) and htmlFormElement = { +@editor.completeFrom(WebApi.DOM.HTMLFormElement) and htmlFormElement = { // Base properties from HTMLElement /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLElement/title) @@ -3683,7 +3683,7 @@ TODO: mark as private once mutating fields of private records is allowed */ nodeName: string, /** - Returns node's node document's document base WebApiURL. + Returns node's node document's document base WebApi.URL. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Node/baseURI) */ baseURI: string, @@ -3799,7 +3799,7 @@ Provides special properties and methods for manipulating elements. [See HTMLImageElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLImageElement) TODO: mark as private once mutating fields of private records is allowed */ -@editor.completeFrom(WebApiDOM.HTMLImageElement) and htmlImageElement = { +@editor.completeFrom(WebApi.DOM.HTMLImageElement) and htmlImageElement = { // Base properties from HTMLElement /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLElement/title) @@ -3991,7 +3991,7 @@ TODO: mark as private once mutating fields of private records is allowed */ nodeName: string, /** - Returns node's node document's document base WebApiURL. + Returns node's node document's document base WebApi.URL. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Node/baseURI) */ baseURI: string, @@ -4143,7 +4143,7 @@ Provides special properties (beyond the regular HTMLElement interface it also ha [See HTMLEmbedElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement) TODO: mark as private once mutating fields of private records is allowed */ -@editor.completeFrom(WebApiDOM.HTMLEmbedElement) and htmlEmbedElement = { +@editor.completeFrom(WebApi.DOM.HTMLEmbedElement) and htmlEmbedElement = { // Base properties from HTMLElement /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLElement/title) @@ -4335,7 +4335,7 @@ TODO: mark as private once mutating fields of private records is allowed */ nodeName: string, /** - Returns node's node document's document base WebApiURL. + Returns node's node document's document base WebApi.URL. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Node/baseURI) */ baseURI: string, @@ -4416,7 +4416,7 @@ Hyperlink elements and provides special properties and methods (beyond those of [See HTMLAnchorElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement) TODO: mark as private once mutating fields of private records is allowed */ -@editor.completeFrom(WebApiDOM.HTMLAnchorElement) and htmlAnchorElement = { +@editor.completeFrom(WebApi.DOM.HTMLAnchorElement) and htmlAnchorElement = { // Base properties from HTMLElement /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLElement/title) @@ -4608,7 +4608,7 @@ TODO: mark as private once mutating fields of private records is allowed */ nodeName: string, /** - Returns node's node document's document base WebApiURL. + Returns node's node document's document base WebApi.URL. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Node/baseURI) */ baseURI: string, @@ -4709,9 +4709,9 @@ TODO: mark as private once mutating fields of private records is allowed */ mutable referrerPolicy: string, /** - Returns the hyperlink's WebApiURL. + Returns the hyperlink's WebApi.URL. -Can be set, to change the WebApiURL. +Can be set, to change the WebApi.URL. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/href) */ mutable href: string, @@ -4790,7 +4790,7 @@ Provides special properties and methods (beyond those of the regular object HTML [See HTMLAreaElement on MDN](https://developer.mozilla.org/docs/Web/API/HTMLAreaElement) TODO: mark as private once mutating fields of private records is allowed */ -@editor.completeFrom(WebApiDOM.HTMLAreaElement) and htmlAreaElement = { +@editor.completeFrom(WebApi.DOM.HTMLAreaElement) and htmlAreaElement = { // Base properties from HTMLElement /** [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLElement/title) @@ -4982,7 +4982,7 @@ TODO: mark as private once mutating fields of private records is allowed */ nodeName: string, /** - Returns node's node document's document base WebApiURL. + Returns node's node document's document base WebApi.URL. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/Node/baseURI) */ baseURI: string, @@ -5063,9 +5063,9 @@ TODO: mark as private once mutating fields of private records is allowed */ mutable referrerPolicy: string, /** - Returns the hyperlink's WebApiURL. + Returns the hyperlink's WebApi.URL. -Can be set, to change the WebApiURL. +Can be set, to change the WebApi.URL. [Read more on MDN](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/href) */ mutable href: string, @@ -5144,7 +5144,7 @@ HTML