@nifrajs/web 4.0.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/build-vite.d.ts +19 -0
- package/dist/build-vite.d.ts.map +1 -1
- package/dist/build-vite.js +31 -10
- package/dist/build-vite.js.map +1 -1
- package/dist/build.d.ts +8 -10
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +90 -31
- package/dist/build.js.map +1 -1
- package/dist/cdn.d.ts +8 -0
- package/dist/cdn.d.ts.map +1 -1
- package/dist/cdn.js +14 -15
- package/dist/cdn.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +49 -26
- package/dist/client.js.map +1 -1
- package/dist/deferred.d.ts +2 -2
- package/dist/deferred.d.ts.map +1 -1
- package/dist/deferred.js +28 -7
- package/dist/deferred.js.map +1 -1
- package/dist/dev-feed.d.ts.map +1 -1
- package/dist/dev-feed.js +24 -5
- package/dist/dev-feed.js.map +1 -1
- package/dist/dev-session.d.ts.map +1 -1
- package/dist/dev-session.js +4 -14
- package/dist/dev-session.js.map +1 -1
- package/dist/dev.d.ts +7 -17
- package/dist/dev.d.ts.map +1 -1
- package/dist/dev.js +13 -1
- package/dist/dev.js.map +1 -1
- package/dist/draft.d.ts +8 -5
- package/dist/draft.d.ts.map +1 -1
- package/dist/draft.js +30 -13
- package/dist/draft.js.map +1 -1
- package/dist/fonts-google.d.ts.map +1 -1
- package/dist/fonts-google.js +7 -0
- package/dist/fonts-google.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internal/codegen.d.ts +1 -0
- package/dist/internal/codegen.d.ts.map +1 -1
- package/dist/internal/codegen.js +56 -29
- package/dist/internal/codegen.js.map +1 -1
- package/dist/internal/disposable-dir.d.ts +8 -0
- package/dist/internal/disposable-dir.d.ts.map +1 -0
- package/dist/internal/disposable-dir.js +25 -0
- package/dist/internal/disposable-dir.js.map +1 -0
- package/dist/internal/entry-chunks.d.ts +9 -0
- package/dist/internal/entry-chunks.d.ts.map +1 -0
- package/dist/internal/entry-chunks.js +15 -0
- package/dist/internal/entry-chunks.js.map +1 -0
- package/dist/internal/evidence-traversal.d.ts +12 -0
- package/dist/internal/evidence-traversal.d.ts.map +1 -0
- package/dist/internal/evidence-traversal.js +48 -0
- package/dist/internal/evidence-traversal.js.map +1 -0
- package/dist/internal/head-merge.d.ts +6 -0
- package/dist/internal/head-merge.d.ts.map +1 -1
- package/dist/internal/head-merge.js +9 -0
- package/dist/internal/head-merge.js.map +1 -1
- package/dist/internal/js-string.d.ts +2 -0
- package/dist/internal/js-string.d.ts.map +1 -1
- package/dist/internal/js-string.js +5 -1
- package/dist/internal/js-string.js.map +1 -1
- package/dist/internal/mount-shadow.js +1 -1
- package/dist/internal/mount-shadow.js.map +1 -1
- package/dist/internal/output-guard.d.ts +7 -0
- package/dist/internal/output-guard.d.ts.map +1 -1
- package/dist/internal/output-guard.js +80 -8
- package/dist/internal/output-guard.js.map +1 -1
- package/dist/internal/page-execution.d.ts +6 -0
- package/dist/internal/page-execution.d.ts.map +1 -1
- package/dist/internal/page-execution.js +377 -108
- package/dist/internal/page-execution.js.map +1 -1
- package/dist/internal/progressive-cookies.d.ts +14 -0
- package/dist/internal/progressive-cookies.d.ts.map +1 -0
- package/dist/internal/progressive-cookies.js +43 -0
- package/dist/internal/progressive-cookies.js.map +1 -0
- package/dist/internal/public-env.d.ts +2 -0
- package/dist/internal/public-env.d.ts.map +1 -0
- package/dist/internal/public-env.js +13 -0
- package/dist/internal/public-env.js.map +1 -0
- package/dist/internal/render-document.d.ts +1 -0
- package/dist/internal/render-document.d.ts.map +1 -1
- package/dist/internal/render-document.js +28 -5
- package/dist/internal/render-document.js.map +1 -1
- package/dist/internal/response-controls.d.ts +2 -0
- package/dist/internal/response-controls.d.ts.map +1 -1
- package/dist/internal/response-controls.js +26 -16
- package/dist/internal/response-controls.js.map +1 -1
- package/dist/internal/revive-dates.d.ts +16 -0
- package/dist/internal/revive-dates.d.ts.map +1 -0
- package/dist/internal/revive-dates.js +32 -0
- package/dist/internal/revive-dates.js.map +1 -0
- package/dist/internal/route-path.d.ts +8 -0
- package/dist/internal/route-path.d.ts.map +1 -0
- package/dist/internal/route-path.js +8 -0
- package/dist/internal/route-path.js.map +1 -0
- package/dist/internal/secret-scan.d.ts.map +1 -1
- package/dist/internal/secret-scan.js +105 -19
- package/dist/internal/secret-scan.js.map +1 -1
- package/dist/internal/server-boundary.d.ts.map +1 -1
- package/dist/internal/server-boundary.js +33 -5
- package/dist/internal/server-boundary.js.map +1 -1
- package/dist/internal/web-app.d.ts +21 -16
- package/dist/internal/web-app.d.ts.map +1 -1
- package/dist/internal/web-app.js +73 -21
- package/dist/internal/web-app.js.map +1 -1
- package/dist/internal/wire-date.d.ts +3 -0
- package/dist/internal/wire-date.d.ts.map +1 -0
- package/dist/internal/wire-date.js +14 -0
- package/dist/internal/wire-date.js.map +1 -0
- package/dist/internal/zone-graph.d.ts +4 -0
- package/dist/internal/zone-graph.d.ts.map +1 -1
- package/dist/internal/zone-graph.js +54 -14
- package/dist/internal/zone-graph.js.map +1 -1
- package/dist/isr.d.ts +58 -2
- package/dist/isr.d.ts.map +1 -1
- package/dist/isr.js +296 -39
- package/dist/isr.js.map +1 -1
- package/dist/llms-txt.d.ts +2 -0
- package/dist/llms-txt.d.ts.map +1 -1
- package/dist/llms-txt.js +29 -3
- package/dist/llms-txt.js.map +1 -1
- package/dist/manifest.d.ts +28 -4
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +14 -3
- package/dist/manifest.js.map +1 -1
- package/dist/open-resolved.d.ts +18 -0
- package/dist/open-resolved.d.ts.map +1 -0
- package/dist/open-resolved.js +62 -0
- package/dist/open-resolved.js.map +1 -0
- package/dist/plugins/kit.d.ts +1 -0
- package/dist/plugins/kit.d.ts.map +1 -1
- package/dist/plugins/kit.js +26 -11
- package/dist/plugins/kit.js.map +1 -1
- package/dist/plugins/vite-leak-guard.d.ts +3 -1
- package/dist/plugins/vite-leak-guard.d.ts.map +1 -1
- package/dist/plugins/vite-leak-guard.js +4 -0
- package/dist/plugins/vite-leak-guard.js.map +1 -1
- package/dist/plugins/zone-guard.d.ts.map +1 -1
- package/dist/plugins/zone-guard.js +10 -2
- package/dist/plugins/zone-guard.js.map +1 -1
- package/dist/public-dir.d.ts +8 -1
- package/dist/public-dir.d.ts.map +1 -1
- package/dist/public-dir.js +17 -6
- package/dist/public-dir.js.map +1 -1
- package/dist/query.d.ts +13 -4
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +89 -26
- package/dist/query.js.map +1 -1
- package/dist/render-seam.d.ts +2 -0
- package/dist/render-seam.d.ts.map +1 -1
- package/dist/render-seam.js +1 -0
- package/dist/render-seam.js.map +1 -1
- package/dist/route-types.d.ts.map +1 -1
- package/dist/route-types.js +20 -9
- package/dist/route-types.js.map +1 -1
- package/dist/router.d.ts +9 -2
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +39 -46
- package/dist/router.js.map +1 -1
- package/dist/server-components/build-info.d.ts +3 -0
- package/dist/server-components/build-info.d.ts.map +1 -0
- package/dist/server-components/build-info.js +7 -0
- package/dist/server-components/build-info.js.map +1 -0
- package/dist/server-components/build-target.d.ts +12 -0
- package/dist/server-components/build-target.d.ts.map +1 -0
- package/dist/server-components/build-target.js +153 -0
- package/dist/server-components/build-target.js.map +1 -0
- package/dist/server-components/build.d.ts +24 -0
- package/dist/server-components/build.d.ts.map +1 -0
- package/dist/server-components/build.js +366 -0
- package/dist/server-components/build.js.map +1 -0
- package/dist/server-components/bundle-proof.d.ts +3 -0
- package/dist/server-components/bundle-proof.d.ts.map +1 -0
- package/dist/server-components/bundle-proof.js +23 -0
- package/dist/server-components/bundle-proof.js.map +1 -0
- package/dist/server-components/client.d.ts +46 -0
- package/dist/server-components/client.d.ts.map +1 -0
- package/dist/server-components/client.js +594 -0
- package/dist/server-components/client.js.map +1 -0
- package/dist/server-components/definition.d.ts +11 -0
- package/dist/server-components/definition.d.ts.map +1 -0
- package/dist/server-components/definition.js +94 -0
- package/dist/server-components/definition.js.map +1 -0
- package/dist/server-components/dev-http.d.ts +5 -0
- package/dist/server-components/dev-http.d.ts.map +1 -0
- package/dist/server-components/dev-http.js +71 -0
- package/dist/server-components/dev-http.js.map +1 -0
- package/dist/server-components/error.d.ts +9 -0
- package/dist/server-components/error.d.ts.map +1 -0
- package/dist/server-components/error.js +24 -0
- package/dist/server-components/error.js.map +1 -0
- package/dist/server-components/frames.d.ts +7 -0
- package/dist/server-components/frames.d.ts.map +1 -0
- package/dist/server-components/frames.js +169 -0
- package/dist/server-components/frames.js.map +1 -0
- package/dist/server-components/html-policy.d.ts +6 -0
- package/dist/server-components/html-policy.d.ts.map +1 -0
- package/dist/server-components/html-policy.js +75 -0
- package/dist/server-components/html-policy.js.map +1 -0
- package/dist/server-components/html.d.ts +4 -0
- package/dist/server-components/html.d.ts.map +1 -0
- package/dist/server-components/html.js +67 -0
- package/dist/server-components/html.js.map +1 -0
- package/dist/server-components/islands.d.ts +44 -0
- package/dist/server-components/islands.d.ts.map +1 -0
- package/dist/server-components/islands.js +42 -0
- package/dist/server-components/islands.js.map +1 -0
- package/dist/server-components/native.d.ts +4 -0
- package/dist/server-components/native.d.ts.map +1 -0
- package/dist/server-components/native.js +81 -0
- package/dist/server-components/native.js.map +1 -0
- package/dist/server-components/portal.d.ts +6 -0
- package/dist/server-components/portal.d.ts.map +1 -0
- package/dist/server-components/portal.js +35 -0
- package/dist/server-components/portal.js.map +1 -0
- package/dist/server-components/props.d.ts +3 -0
- package/dist/server-components/props.d.ts.map +1 -0
- package/dist/server-components/props.js +14 -0
- package/dist/server-components/props.js.map +1 -0
- package/dist/server-components/protocol.d.ts +44 -0
- package/dist/server-components/protocol.d.ts.map +1 -0
- package/dist/server-components/protocol.js +139 -0
- package/dist/server-components/protocol.js.map +1 -0
- package/dist/server-components/range.d.ts +24 -0
- package/dist/server-components/range.d.ts.map +1 -0
- package/dist/server-components/range.js +263 -0
- package/dist/server-components/range.js.map +1 -0
- package/dist/server-components/registry.d.ts +6 -0
- package/dist/server-components/registry.d.ts.map +1 -0
- package/dist/server-components/registry.js +30 -0
- package/dist/server-components/registry.js.map +1 -0
- package/dist/server-components/response.d.ts +4 -0
- package/dist/server-components/response.d.ts.map +1 -0
- package/dist/server-components/response.js +32 -0
- package/dist/server-components/response.js.map +1 -0
- package/dist/server-components/router-integration.d.ts +9 -0
- package/dist/server-components/router-integration.d.ts.map +1 -0
- package/dist/server-components/router-integration.js +29 -0
- package/dist/server-components/router-integration.js.map +1 -0
- package/dist/server-components/runtime.d.ts +14 -0
- package/dist/server-components/runtime.d.ts.map +1 -0
- package/dist/server-components/runtime.js +276 -0
- package/dist/server-components/runtime.js.map +1 -0
- package/dist/server-components/scheduler.d.ts +14 -0
- package/dist/server-components/scheduler.d.ts.map +1 -0
- package/dist/server-components/scheduler.js +74 -0
- package/dist/server-components/scheduler.js.map +1 -0
- package/dist/server-components/schema.d.ts +4 -0
- package/dist/server-components/schema.d.ts.map +1 -0
- package/dist/server-components/schema.js +77 -0
- package/dist/server-components/schema.js.map +1 -0
- package/dist/server-components/server-entry.d.ts +12 -0
- package/dist/server-components/server-entry.d.ts.map +1 -0
- package/dist/server-components/server-entry.js +90 -0
- package/dist/server-components/server-entry.js.map +1 -0
- package/dist/server-components/source.d.ts +15 -0
- package/dist/server-components/source.d.ts.map +1 -0
- package/dist/server-components/source.js +269 -0
- package/dist/server-components/source.js.map +1 -0
- package/dist/server-components/state.d.ts +4 -0
- package/dist/server-components/state.d.ts.map +1 -0
- package/dist/server-components/state.js +123 -0
- package/dist/server-components/state.js.map +1 -0
- package/dist/server-components/stream.d.ts +6 -0
- package/dist/server-components/stream.d.ts.map +1 -0
- package/dist/server-components/stream.js +70 -0
- package/dist/server-components/stream.js.map +1 -0
- package/dist/server-components/trusted-html.d.ts +3 -0
- package/dist/server-components/trusted-html.d.ts.map +1 -0
- package/dist/server-components/trusted-html.js +14 -0
- package/dist/server-components/trusted-html.js.map +1 -0
- package/dist/server-components/types.d.ts +107 -0
- package/dist/server-components/types.d.ts.map +1 -0
- package/dist/server-components/types.js +2 -0
- package/dist/server-components/types.js.map +1 -0
- package/dist/server-components/typescript.d.ts +11 -0
- package/dist/server-components/typescript.d.ts.map +1 -0
- package/dist/server-components/typescript.js +28 -0
- package/dist/server-components/typescript.js.map +1 -0
- package/dist/server-components/value.d.ts +5 -0
- package/dist/server-components/value.d.ts.map +1 -0
- package/dist/server-components/value.js +77 -0
- package/dist/server-components/value.js.map +1 -0
- package/dist/server-components/vite.d.ts +12 -0
- package/dist/server-components/vite.d.ts.map +1 -0
- package/dist/server-components/vite.js +197 -0
- package/dist/server-components/vite.js.map +1 -0
- package/dist/server-components.d.ts +5 -0
- package/dist/server-components.d.ts.map +1 -0
- package/dist/server-components.js +4 -0
- package/dist/server-components.js.map +1 -0
- package/dist/service-worker.d.ts +8 -1
- package/dist/service-worker.d.ts.map +1 -1
- package/dist/service-worker.js +20 -6
- package/dist/service-worker.js.map +1 -1
- package/dist/vite.d.ts +12 -0
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +77 -17
- package/dist/vite.js.map +1 -1
- package/dist/zones.d.ts +40 -0
- package/dist/zones.d.ts.map +1 -1
- package/dist/zones.js +170 -6
- package/dist/zones.js.map +1 -1
- package/package.json +97 -4
- package/src/build-vite.ts +31 -9
- package/src/build.ts +109 -31
- package/src/cdn.ts +18 -12
- package/src/client.ts +48 -23
- package/src/deferred.ts +27 -9
- package/src/dev-feed.ts +24 -5
- package/src/dev-session.ts +4 -13
- package/src/dev.ts +29 -1
- package/src/draft.ts +35 -14
- package/src/fonts-google.ts +10 -0
- package/src/index.ts +3 -2
- package/src/internal/codegen.ts +60 -29
- package/src/internal/disposable-dir.ts +24 -0
- package/src/internal/entry-chunks.ts +18 -0
- package/src/internal/evidence-traversal.ts +57 -0
- package/src/internal/head-merge.ts +16 -0
- package/src/internal/js-string.ts +6 -1
- package/src/internal/mount-shadow.ts +1 -1
- package/src/internal/output-guard.ts +88 -7
- package/src/internal/page-execution.ts +506 -108
- package/src/internal/progressive-cookies.ts +60 -0
- package/src/internal/public-env.ts +14 -0
- package/src/internal/render-document.ts +26 -11
- package/src/internal/response-controls.ts +31 -14
- package/src/internal/revive-dates.ts +35 -0
- package/src/internal/route-path.ts +8 -0
- package/src/internal/secret-scan.ts +104 -17
- package/src/internal/server-boundary.ts +29 -5
- package/src/internal/web-app.ts +116 -37
- package/src/internal/wire-date.ts +16 -0
- package/src/internal/zone-graph.ts +59 -19
- package/src/isr.ts +351 -43
- package/src/llms-txt.ts +32 -3
- package/src/manifest.ts +43 -7
- package/src/open-resolved.ts +64 -0
- package/src/plugins/kit.ts +31 -11
- package/src/plugins/vite-leak-guard.ts +5 -1
- package/src/plugins/zone-guard.ts +11 -2
- package/src/public-dir.ts +27 -8
- package/src/query.ts +107 -26
- package/src/render-seam.ts +2 -0
- package/src/route-types.ts +34 -7
- package/src/router.ts +58 -55
- package/src/server-components/build-info.ts +11 -0
- package/src/server-components/build-target.ts +194 -0
- package/src/server-components/build.ts +419 -0
- package/src/server-components/bundle-proof.ts +33 -0
- package/src/server-components/client.ts +663 -0
- package/src/server-components/definition.ts +125 -0
- package/src/server-components/dev-http.ts +75 -0
- package/src/server-components/error.ts +24 -0
- package/src/server-components/frames.ts +181 -0
- package/src/server-components/html-policy.ts +94 -0
- package/src/server-components/html.ts +81 -0
- package/src/server-components/islands.ts +111 -0
- package/src/server-components/native.ts +101 -0
- package/src/server-components/portal.ts +42 -0
- package/src/server-components/props.ts +19 -0
- package/src/server-components/protocol.ts +167 -0
- package/src/server-components/range.ts +313 -0
- package/src/server-components/registry.ts +34 -0
- package/src/server-components/response.ts +44 -0
- package/src/server-components/router-integration.ts +40 -0
- package/src/server-components/runtime.ts +376 -0
- package/src/server-components/scheduler.ts +84 -0
- package/src/server-components/schema.ts +69 -0
- package/src/server-components/server-entry.ts +98 -0
- package/src/server-components/source.ts +324 -0
- package/src/server-components/state.ts +143 -0
- package/src/server-components/stream.ts +71 -0
- package/src/server-components/trusted-html.ts +21 -0
- package/src/server-components/types.ts +138 -0
- package/src/server-components/typescript.ts +39 -0
- package/src/server-components/value.ts +82 -0
- package/src/server-components/vite.ts +242 -0
- package/src/server-components.ts +32 -0
- package/src/service-worker.ts +24 -7
- package/src/vite.ts +68 -17
- package/src/zones.ts +208 -7
|
@@ -0,0 +1,594 @@
|
|
|
1
|
+
import { ServerComponentError } from "./error.js";
|
|
2
|
+
import { readComponentFrames } from "./frames.js";
|
|
3
|
+
import { COMPONENT_HEADER, COMPONENT_LIMITS, COMPONENT_MEDIA_TYPE, componentRequestHeader, } from "./protocol.js";
|
|
4
|
+
import { registerComponentController, unregisterComponentController } from "./registry.js";
|
|
5
|
+
import { componentResponseFailure } from "./response.js";
|
|
6
|
+
import { BoundedComponentTasks } from "./scheduler.js";
|
|
7
|
+
import { parseComponentState } from "./state.js";
|
|
8
|
+
import { readComponentBytes } from "./stream.js";
|
|
9
|
+
import { componentInputKey, componentValue } from "./value.js";
|
|
10
|
+
function sameRecord(a, b) {
|
|
11
|
+
return (a.instance === b.instance &&
|
|
12
|
+
a.reference === b.reference &&
|
|
13
|
+
a.key === b.key &&
|
|
14
|
+
a.parent === b.parent &&
|
|
15
|
+
componentInputKey(a.input) === componentInputKey(b.input));
|
|
16
|
+
}
|
|
17
|
+
function cancelled() {
|
|
18
|
+
return new ServerComponentError("component_cancelled", 499);
|
|
19
|
+
}
|
|
20
|
+
export class ComponentController {
|
|
21
|
+
#state;
|
|
22
|
+
#source;
|
|
23
|
+
#ownerUrl;
|
|
24
|
+
get state() {
|
|
25
|
+
return this.#state;
|
|
26
|
+
}
|
|
27
|
+
reportError(code) {
|
|
28
|
+
this.#options.onError?.(code);
|
|
29
|
+
}
|
|
30
|
+
#options;
|
|
31
|
+
#mounted = new Map();
|
|
32
|
+
// Structural outlet anchors survive logout; their private records and native roots do not.
|
|
33
|
+
#restorable = new Map();
|
|
34
|
+
#teardown = new WeakMap();
|
|
35
|
+
#mountWaiters = new Map();
|
|
36
|
+
#tasks = new BoundedComponentTasks(4, COMPONENT_LIMITS.instances);
|
|
37
|
+
#routeEpoch = 0;
|
|
38
|
+
#authEpoch = 0;
|
|
39
|
+
#adoption = 0;
|
|
40
|
+
#disposed = false;
|
|
41
|
+
constructor(options) {
|
|
42
|
+
this.#state = parseComponentState(options.state);
|
|
43
|
+
this.#options = options;
|
|
44
|
+
this.#source = options.state;
|
|
45
|
+
this.#ownerUrl = options.ownerUrl;
|
|
46
|
+
if (this.state.adapter !== options.adapter.name)
|
|
47
|
+
throw new ServerComponentError("component_version", 409);
|
|
48
|
+
if (typeof __NIFRA_COMPONENT_BUILD__ === "string" &&
|
|
49
|
+
this.state.build !== __NIFRA_COMPONENT_BUILD__) {
|
|
50
|
+
this.#versionReload();
|
|
51
|
+
this.#state = { ...this.#state, records: [] };
|
|
52
|
+
this.#source = undefined;
|
|
53
|
+
throw new ServerComponentError("component_version", 409);
|
|
54
|
+
}
|
|
55
|
+
registerComponentController(this);
|
|
56
|
+
}
|
|
57
|
+
async mount(host, instance, fresh = false) {
|
|
58
|
+
await this.#mount(host, instance, fresh);
|
|
59
|
+
}
|
|
60
|
+
async #mount(host, instance, fresh) {
|
|
61
|
+
await this.#teardown.get(host);
|
|
62
|
+
if (this.#disposed || this.#mounted.has(instance))
|
|
63
|
+
throw new ServerComponentError("component_contract");
|
|
64
|
+
const record = this.state.records.find((record) => record.instance === instance);
|
|
65
|
+
if (record === undefined)
|
|
66
|
+
throw new ServerComponentError("component_unavailable", 404);
|
|
67
|
+
const mounted = {
|
|
68
|
+
host,
|
|
69
|
+
record,
|
|
70
|
+
generation: 0,
|
|
71
|
+
abort: new AbortController(),
|
|
72
|
+
ready: Promise.resolve(),
|
|
73
|
+
};
|
|
74
|
+
this.#mounted.set(instance, mounted);
|
|
75
|
+
this.#restorable.delete(instance);
|
|
76
|
+
const signal = AbortSignal.any([
|
|
77
|
+
mounted.abort.signal,
|
|
78
|
+
AbortSignal.timeout(COMPONENT_LIMITS.operationMs),
|
|
79
|
+
]);
|
|
80
|
+
const valid = this.#current(mounted);
|
|
81
|
+
const current = () => valid() && !signal.aborted;
|
|
82
|
+
mounted.ready = this.#tasks
|
|
83
|
+
.run(signal, async () => {
|
|
84
|
+
const prepared = await this.#options.adapter.prepare(record, current, host, this.state);
|
|
85
|
+
if (!current())
|
|
86
|
+
throw cancelled();
|
|
87
|
+
const mount = fresh ? this.#options.adapter.create : this.#options.adapter.hydrate;
|
|
88
|
+
if (mount === undefined)
|
|
89
|
+
throw new ServerComponentError("component_contract");
|
|
90
|
+
const root = await mount.call(this.#options.adapter, host, record, prepared, current);
|
|
91
|
+
if (!current()) {
|
|
92
|
+
await root.dispose();
|
|
93
|
+
throw cancelled();
|
|
94
|
+
}
|
|
95
|
+
mounted.root = root;
|
|
96
|
+
})
|
|
97
|
+
.then(async () => {
|
|
98
|
+
if (current())
|
|
99
|
+
await this.#syncChildren(mounted, this.#state.records, current);
|
|
100
|
+
});
|
|
101
|
+
for (const ready of this.#mountWaiters.get(instance) ?? [])
|
|
102
|
+
ready();
|
|
103
|
+
this.#mountWaiters.delete(instance);
|
|
104
|
+
try {
|
|
105
|
+
await mounted.ready;
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
if (this.#mounted.get(instance) === mounted)
|
|
109
|
+
await this.unmount(instance);
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
async whenReady(instance) {
|
|
114
|
+
const mounted = this.#mounted.get(instance);
|
|
115
|
+
if (mounted !== undefined) {
|
|
116
|
+
await mounted.ready;
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (this.#disposed || !this.state.records.some((record) => record.instance === instance))
|
|
120
|
+
throw new ServerComponentError("component_unavailable", 404);
|
|
121
|
+
await new Promise((resolve, reject) => {
|
|
122
|
+
const waiters = this.#mountWaiters.get(instance) ?? new Set();
|
|
123
|
+
const ready = () => {
|
|
124
|
+
clearTimeout(timer);
|
|
125
|
+
waiters.delete(ready);
|
|
126
|
+
const mounted = this.#mounted.get(instance);
|
|
127
|
+
if (mounted === undefined)
|
|
128
|
+
reject(cancelled());
|
|
129
|
+
else
|
|
130
|
+
mounted.ready.then(resolve, reject);
|
|
131
|
+
};
|
|
132
|
+
const timer = setTimeout(() => {
|
|
133
|
+
waiters.delete(ready);
|
|
134
|
+
reject(new ServerComponentError("component_timeout", 504));
|
|
135
|
+
}, COMPONENT_LIMITS.operationMs);
|
|
136
|
+
waiters.add(ready);
|
|
137
|
+
this.#mountWaiters.set(instance, waiters);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
#current(mounted) {
|
|
141
|
+
const generation = mounted.generation;
|
|
142
|
+
const route = this.#routeEpoch;
|
|
143
|
+
const auth = this.#authEpoch;
|
|
144
|
+
return () => !this.#disposed &&
|
|
145
|
+
!mounted.abort.signal.aborted &&
|
|
146
|
+
this.#mounted.get(mounted.record.instance) === mounted &&
|
|
147
|
+
mounted.generation === generation &&
|
|
148
|
+
this.#routeEpoch === route &&
|
|
149
|
+
this.#authEpoch === auth;
|
|
150
|
+
}
|
|
151
|
+
async refresh(instance, ownerUrl) {
|
|
152
|
+
const mounted = this.#mounted.get(instance);
|
|
153
|
+
if (mounted === undefined || this.#disposed)
|
|
154
|
+
return false;
|
|
155
|
+
try {
|
|
156
|
+
await mounted.ready;
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
if (this.#mounted.get(instance) !== mounted || this.#disposed)
|
|
162
|
+
return false;
|
|
163
|
+
// A newer child intent must not be overwritten by an older in-flight ancestor subtree.
|
|
164
|
+
let parent = mounted.record.parent;
|
|
165
|
+
while (parent !== null) {
|
|
166
|
+
const ancestor = this.#mounted.get(parent);
|
|
167
|
+
if (ancestor === undefined)
|
|
168
|
+
break;
|
|
169
|
+
ancestor.abort.abort();
|
|
170
|
+
ancestor.abort = new AbortController();
|
|
171
|
+
ancestor.generation++;
|
|
172
|
+
parent = ancestor.record.parent;
|
|
173
|
+
}
|
|
174
|
+
mounted.abort.abort();
|
|
175
|
+
mounted.abort = new AbortController();
|
|
176
|
+
mounted.generation++;
|
|
177
|
+
for (const child of this.#descendants(instance)) {
|
|
178
|
+
child.abort.abort();
|
|
179
|
+
child.abort = new AbortController();
|
|
180
|
+
child.generation++;
|
|
181
|
+
}
|
|
182
|
+
const valid = this.#current(mounted);
|
|
183
|
+
const request = {
|
|
184
|
+
v: 1,
|
|
185
|
+
build: this.state.build,
|
|
186
|
+
reference: mounted.record.reference,
|
|
187
|
+
key: mounted.record.key,
|
|
188
|
+
parent: mounted.record.parent,
|
|
189
|
+
input: mounted.record.input,
|
|
190
|
+
generation: mounted.generation,
|
|
191
|
+
routeEpoch: this.#routeEpoch,
|
|
192
|
+
authEpoch: this.#authEpoch,
|
|
193
|
+
};
|
|
194
|
+
const owner = new URL(ownerUrl ?? this.#ownerUrl ?? location.href, location.href);
|
|
195
|
+
if (owner.origin !== location.origin)
|
|
196
|
+
throw new ServerComponentError("component_denied", 403);
|
|
197
|
+
const signal = AbortSignal.any([
|
|
198
|
+
mounted.abort.signal,
|
|
199
|
+
AbortSignal.timeout(COMPONENT_LIMITS.operationMs),
|
|
200
|
+
]);
|
|
201
|
+
const current = () => valid() && !signal.aborted;
|
|
202
|
+
let updating = false;
|
|
203
|
+
try {
|
|
204
|
+
const committed = await this.#tasks.run(signal, async () => {
|
|
205
|
+
const response = await (this.#options.fetch ?? fetch)(owner, {
|
|
206
|
+
method: "GET",
|
|
207
|
+
credentials: "same-origin",
|
|
208
|
+
cache: "no-store",
|
|
209
|
+
redirect: "manual",
|
|
210
|
+
signal,
|
|
211
|
+
headers: {
|
|
212
|
+
[COMPONENT_HEADER]: componentRequestHeader(request),
|
|
213
|
+
accept: COMPONENT_MEDIA_TYPE,
|
|
214
|
+
},
|
|
215
|
+
});
|
|
216
|
+
if (!current())
|
|
217
|
+
return false;
|
|
218
|
+
if (response.type === "opaqueredirect" ||
|
|
219
|
+
(response.status >= 300 && response.status < 400)) {
|
|
220
|
+
this.#options.navigate?.(owner.href);
|
|
221
|
+
if (this.#options.navigate === undefined)
|
|
222
|
+
location.assign(owner.href);
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
225
|
+
if (!response.ok) {
|
|
226
|
+
if ([401, 403, 404].includes(response.status)) {
|
|
227
|
+
this.#options.onError?.("component_denied");
|
|
228
|
+
await this.invalidateScope();
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
const failure = await componentResponseFailure(response, signal);
|
|
232
|
+
if (failure.code === "component_version") {
|
|
233
|
+
this.#versionReload();
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
throw failure;
|
|
237
|
+
}
|
|
238
|
+
if (response.headers.has("x-nifra-component-control")) {
|
|
239
|
+
if (response.body === null)
|
|
240
|
+
throw new ServerComponentError("component_protocol", 400);
|
|
241
|
+
let value;
|
|
242
|
+
try {
|
|
243
|
+
value = JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(await readComponentBytes(response.body, signal, COMPONENT_LIMITS.headerBytes)));
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
throw new ServerComponentError("component_protocol", 400);
|
|
247
|
+
}
|
|
248
|
+
const checked = componentValue(value, COMPONENT_LIMITS.headerBytes);
|
|
249
|
+
if (typeof checked !== "object" || checked === null || Array.isArray(checked))
|
|
250
|
+
throw new ServerComponentError("component_protocol", 400);
|
|
251
|
+
// biome-ignore lint/plugin/requireSafetyCommentForTypeAssertion: Only this adapter produces its prepared tree and native root; component records and public props are validated before native preparation.
|
|
252
|
+
const control = checked;
|
|
253
|
+
if (Object.keys(control).length !== 2 ||
|
|
254
|
+
control.v !== 1 ||
|
|
255
|
+
typeof control.control !== "object" ||
|
|
256
|
+
control.control === null ||
|
|
257
|
+
Array.isArray(control.control))
|
|
258
|
+
throw new ServerComponentError("component_protocol", 400);
|
|
259
|
+
// biome-ignore lint/plugin/requireSafetyCommentForTypeAssertion: Only this adapter produces its prepared tree and native root; component records and public props are validated before native preparation.
|
|
260
|
+
const terminal = control.control;
|
|
261
|
+
if (Object.keys(terminal).length !== 1 ||
|
|
262
|
+
typeof terminal.status !== "number" ||
|
|
263
|
+
!Number.isSafeInteger(terminal.status) ||
|
|
264
|
+
terminal.status < 200 ||
|
|
265
|
+
terminal.status > 299 ||
|
|
266
|
+
response.headers.get("x-nifra-component-control") !== String(terminal.status))
|
|
267
|
+
throw new ServerComponentError("component_protocol", 400);
|
|
268
|
+
if (current()) {
|
|
269
|
+
this.#options.navigate?.(owner.href);
|
|
270
|
+
if (this.#options.navigate === undefined)
|
|
271
|
+
location.assign(owner.href);
|
|
272
|
+
}
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
if (response.headers.get("content-type")?.split(";")[0]?.trim() !== COMPONENT_MEDIA_TYPE ||
|
|
276
|
+
response.body === null)
|
|
277
|
+
throw new ServerComponentError("component_protocol", 400);
|
|
278
|
+
const decoded = await readComponentFrames(response.body, signal);
|
|
279
|
+
const next = parseComponentState(decoded.value, COMPONENT_LIMITS.outputBytes, mounted.record.parent);
|
|
280
|
+
// biome-ignore lint/plugin/requireSafetyCommentForTypeAssertion: Only this adapter produces its prepared tree and native root; component records and public props are validated before native preparation.
|
|
281
|
+
const meta = componentValue(decoded.metadata, COMPONENT_LIMITS.headerBytes);
|
|
282
|
+
const expected = {
|
|
283
|
+
...request,
|
|
284
|
+
input: undefined,
|
|
285
|
+
adapter: next.adapter,
|
|
286
|
+
owner: next.owner,
|
|
287
|
+
scope: next.scope,
|
|
288
|
+
instance: next.records[0]?.instance,
|
|
289
|
+
};
|
|
290
|
+
const keys = Object.keys(expected).filter((key) => key !== "input");
|
|
291
|
+
if (typeof meta !== "object" ||
|
|
292
|
+
meta === null ||
|
|
293
|
+
Array.isArray(meta) ||
|
|
294
|
+
Object.keys(meta).length !== keys.length ||
|
|
295
|
+
// biome-ignore lint/plugin/requireSafetyCommentForTypeAssertion: Only this adapter produces its prepared tree and native root; component records and public props are validated before native preparation.
|
|
296
|
+
keys.some((key) => meta[key] !== expected[key]) ||
|
|
297
|
+
next.build !== this.state.build ||
|
|
298
|
+
next.adapter !== this.state.adapter ||
|
|
299
|
+
next.owner !== this.state.owner ||
|
|
300
|
+
next.records.length < 1 ||
|
|
301
|
+
!sameRecord(mounted.record, next.records[0]))
|
|
302
|
+
throw new ServerComponentError("component_protocol", 400);
|
|
303
|
+
const incoming = new Map(next.records.map((record) => [record.instance, record]));
|
|
304
|
+
for (const record of next.records.slice(1)) {
|
|
305
|
+
let parent = record.parent;
|
|
306
|
+
let depth = 0;
|
|
307
|
+
while (parent !== instance) {
|
|
308
|
+
if (parent === null || ++depth >= 16 || !incoming.has(parent))
|
|
309
|
+
throw new ServerComponentError("component_protocol", 400);
|
|
310
|
+
parent = incoming.get(parent).parent;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (next.scope !== this.state.scope) {
|
|
314
|
+
this.#options.onError?.("component_denied");
|
|
315
|
+
await this.invalidateScope();
|
|
316
|
+
return false;
|
|
317
|
+
}
|
|
318
|
+
if (!current())
|
|
319
|
+
return false;
|
|
320
|
+
const record = next.records[0];
|
|
321
|
+
const prepared = await this.#options.adapter.prepare(record, current, mounted.host, next);
|
|
322
|
+
if (!current() || signal.aborted)
|
|
323
|
+
return false;
|
|
324
|
+
if (mounted.root === undefined)
|
|
325
|
+
throw new ServerComponentError("component_contract");
|
|
326
|
+
updating = true;
|
|
327
|
+
await this.#options.adapter.update(mounted.root, record, prepared, current);
|
|
328
|
+
if (!current())
|
|
329
|
+
return false;
|
|
330
|
+
const replaced = recordSubtree(this.#state.records, instance);
|
|
331
|
+
this.#state = {
|
|
332
|
+
...this.#state,
|
|
333
|
+
records: [
|
|
334
|
+
...this.#state.records.filter((item) => !replaced.has(item.instance)),
|
|
335
|
+
...next.records,
|
|
336
|
+
],
|
|
337
|
+
};
|
|
338
|
+
mounted.record = record;
|
|
339
|
+
return true;
|
|
340
|
+
});
|
|
341
|
+
if (committed && current())
|
|
342
|
+
await this.#syncChildren(mounted, this.#state.records, current);
|
|
343
|
+
return committed && current();
|
|
344
|
+
}
|
|
345
|
+
catch (error) {
|
|
346
|
+
if (!current() || signal.aborted)
|
|
347
|
+
return false;
|
|
348
|
+
const failure = error instanceof ServerComponentError ? error : new ServerComponentError("component_failed");
|
|
349
|
+
this.#options.onError?.(failure.code);
|
|
350
|
+
if (updating)
|
|
351
|
+
await this.unmount(instance);
|
|
352
|
+
throw failure;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
#versionReload() {
|
|
356
|
+
const key = `nifra-component-reload:${this.state.build}`;
|
|
357
|
+
let used = false;
|
|
358
|
+
try {
|
|
359
|
+
used = sessionStorage.getItem(key) === "1";
|
|
360
|
+
if (!used)
|
|
361
|
+
sessionStorage.setItem(key, "1");
|
|
362
|
+
}
|
|
363
|
+
catch {
|
|
364
|
+
used = reloadedBuilds.has(this.state.build);
|
|
365
|
+
}
|
|
366
|
+
reloadedBuilds.add(this.state.build);
|
|
367
|
+
if (used) {
|
|
368
|
+
this.#options.onError?.("component_version");
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
this.cancelPending();
|
|
372
|
+
if (this.#options.reload !== undefined)
|
|
373
|
+
this.#options.reload();
|
|
374
|
+
else
|
|
375
|
+
location.reload();
|
|
376
|
+
}
|
|
377
|
+
/** Abort networking immediately while retaining the tree until verified navigation arrives. */
|
|
378
|
+
cancelPending() {
|
|
379
|
+
this.#adoption++;
|
|
380
|
+
this.#routeEpoch++;
|
|
381
|
+
for (const mounted of this.#mounted.values()) {
|
|
382
|
+
mounted.abort.abort();
|
|
383
|
+
mounted.abort = new AbortController();
|
|
384
|
+
mounted.generation++;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
async adopt(state, ownerUrl) {
|
|
388
|
+
if (ownerUrl !== undefined)
|
|
389
|
+
this.#ownerUrl = ownerUrl;
|
|
390
|
+
if (this.#disposed || state === this.#source)
|
|
391
|
+
return;
|
|
392
|
+
const next = parseComponentState(state);
|
|
393
|
+
if (next.build !== this.state.build || next.adapter !== this.state.adapter) {
|
|
394
|
+
this.#versionReload();
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
const targets = new Map([...this.#restorable].map(([id, host]) => [id, { host, mounted: this.#mounted.get(id) }]));
|
|
398
|
+
for (const mounted of this.#mounted.values())
|
|
399
|
+
if (mounted.record.parent === null || !this.#mounted.has(mounted.record.parent))
|
|
400
|
+
targets.set(mounted.record.instance, { host: mounted.host, mounted });
|
|
401
|
+
this.cancelPending();
|
|
402
|
+
const adoption = this.#adoption;
|
|
403
|
+
const changedScope = next.owner !== this.state.owner || next.scope !== this.state.scope;
|
|
404
|
+
if (changedScope)
|
|
405
|
+
await this.#clearScope();
|
|
406
|
+
if (this.#disposed || adoption !== this.#adoption)
|
|
407
|
+
return;
|
|
408
|
+
this.#state = next;
|
|
409
|
+
this.#source = state;
|
|
410
|
+
this.#restorable.clear();
|
|
411
|
+
for (const [id, target] of targets) {
|
|
412
|
+
if (this.#disposed || adoption !== this.#adoption)
|
|
413
|
+
return;
|
|
414
|
+
const mounted = target.mounted;
|
|
415
|
+
const record = next.records.find((item) => item.instance === id);
|
|
416
|
+
if (record === undefined) {
|
|
417
|
+
await this.unmount(id);
|
|
418
|
+
continue;
|
|
419
|
+
}
|
|
420
|
+
if (mounted !== undefined && !changedScope && !sameRecord(mounted.record, record))
|
|
421
|
+
await this.unmount(id);
|
|
422
|
+
try {
|
|
423
|
+
await mounted?.ready;
|
|
424
|
+
}
|
|
425
|
+
catch {
|
|
426
|
+
/* Cancelled initial hydration owns its error and can retry from verified state. */
|
|
427
|
+
}
|
|
428
|
+
if (this.#disposed || adoption !== this.#adoption)
|
|
429
|
+
return;
|
|
430
|
+
if (!this.#mounted.has(id)) {
|
|
431
|
+
try {
|
|
432
|
+
await this.#mount(target.host, id, true);
|
|
433
|
+
}
|
|
434
|
+
catch (error) {
|
|
435
|
+
if (adoption === this.#adoption)
|
|
436
|
+
throw error;
|
|
437
|
+
}
|
|
438
|
+
continue;
|
|
439
|
+
}
|
|
440
|
+
if (mounted === undefined || this.#mounted.get(id) !== mounted)
|
|
441
|
+
continue;
|
|
442
|
+
const current = this.#current(mounted);
|
|
443
|
+
if (!current())
|
|
444
|
+
continue;
|
|
445
|
+
const prepared = await this.#options.adapter.prepare(record, current, mounted.host, next);
|
|
446
|
+
if (!current() || mounted.root === undefined)
|
|
447
|
+
continue;
|
|
448
|
+
await this.#options.adapter.update(mounted.root, record, prepared, current);
|
|
449
|
+
if (current()) {
|
|
450
|
+
mounted.record = record;
|
|
451
|
+
await this.#syncChildren(mounted, next.records, current);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
#descendants(instance) {
|
|
456
|
+
const ids = new Set([instance]);
|
|
457
|
+
const descendants = [];
|
|
458
|
+
for (let depth = 0; depth < 16; depth++)
|
|
459
|
+
for (const mounted of this.#mounted.values()) {
|
|
460
|
+
if (mounted.record.parent !== null &&
|
|
461
|
+
ids.has(mounted.record.parent) &&
|
|
462
|
+
!ids.has(mounted.record.instance)) {
|
|
463
|
+
ids.add(mounted.record.instance);
|
|
464
|
+
descendants.push(mounted);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
return descendants;
|
|
468
|
+
}
|
|
469
|
+
async #syncChildren(parent, records, current) {
|
|
470
|
+
if (typeof parent.host.querySelectorAll !== "function")
|
|
471
|
+
return;
|
|
472
|
+
const targets = new Map();
|
|
473
|
+
for (const host of parent.host.querySelectorAll("[data-nifra-component]")) {
|
|
474
|
+
if (host.parentElement?.closest("[data-nifra-component]") !== parent.host)
|
|
475
|
+
continue;
|
|
476
|
+
const id = host.getAttribute("data-nifra-component");
|
|
477
|
+
if (id === null ||
|
|
478
|
+
targets.has(id) ||
|
|
479
|
+
!records.some((record) => record.instance === id && record.parent === parent.record.instance))
|
|
480
|
+
throw new ServerComponentError("component_contract");
|
|
481
|
+
targets.set(id, host);
|
|
482
|
+
}
|
|
483
|
+
for (const child of [...this.#mounted.values()].filter((item) => item.record.parent === parent.record.instance)) {
|
|
484
|
+
const record = records.find((item) => item.instance === child.record.instance);
|
|
485
|
+
if (record === undefined ||
|
|
486
|
+
targets.get(child.record.instance) !== child.host ||
|
|
487
|
+
!sameRecord(child.record, record))
|
|
488
|
+
await this.unmount(child.record.instance);
|
|
489
|
+
}
|
|
490
|
+
for (const [id, host] of targets) {
|
|
491
|
+
if (!current())
|
|
492
|
+
return;
|
|
493
|
+
const record = records.find((item) => item.instance === id);
|
|
494
|
+
const child = this.#mounted.get(id);
|
|
495
|
+
if (child === undefined) {
|
|
496
|
+
await this.#mount(host, id, host.childNodes.length === 0);
|
|
497
|
+
continue;
|
|
498
|
+
}
|
|
499
|
+
await child.ready;
|
|
500
|
+
const valid = this.#current(child);
|
|
501
|
+
const prepared = await this.#options.adapter.prepare(record, () => current() && valid(), host, { records });
|
|
502
|
+
if (!current() || !valid() || child.root === undefined)
|
|
503
|
+
return;
|
|
504
|
+
await this.#options.adapter.update(child.root, record, prepared, () => current() && valid());
|
|
505
|
+
if (current() && valid()) {
|
|
506
|
+
child.record = record;
|
|
507
|
+
await this.#syncChildren(child, records, () => current() && valid());
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
async unmount(instance) {
|
|
512
|
+
this.#restorable.delete(instance);
|
|
513
|
+
await this.#unmount(instance);
|
|
514
|
+
}
|
|
515
|
+
async #unmount(instance) {
|
|
516
|
+
const mounted = this.#mounted.get(instance);
|
|
517
|
+
if (mounted === undefined)
|
|
518
|
+
return;
|
|
519
|
+
this.#mounted.delete(instance);
|
|
520
|
+
mounted.abort.abort();
|
|
521
|
+
const children = [...this.#mounted.values()]
|
|
522
|
+
.filter((child) => child.record.parent === instance)
|
|
523
|
+
.map((child) => this.#unmount(child.record.instance));
|
|
524
|
+
const teardown = (async () => {
|
|
525
|
+
await Promise.all(children);
|
|
526
|
+
await mounted.ready.catch(() => {
|
|
527
|
+
/* Unmounted hydration cannot publish; its primary error belongs to mount. */
|
|
528
|
+
});
|
|
529
|
+
await mounted.root?.dispose();
|
|
530
|
+
})();
|
|
531
|
+
this.#teardown.set(mounted.host, teardown);
|
|
532
|
+
try {
|
|
533
|
+
await teardown;
|
|
534
|
+
}
|
|
535
|
+
finally {
|
|
536
|
+
if (this.#teardown.get(mounted.host) === teardown)
|
|
537
|
+
this.#teardown.delete(mounted.host);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
async #clearScope(preserveOutlets = false) {
|
|
541
|
+
this.#authEpoch++;
|
|
542
|
+
if (preserveOutlets) {
|
|
543
|
+
for (const mounted of this.#mounted.values())
|
|
544
|
+
if (mounted.record.parent === null || !this.#mounted.has(mounted.record.parent))
|
|
545
|
+
this.#restorable.set(mounted.record.instance, mounted.host);
|
|
546
|
+
}
|
|
547
|
+
else
|
|
548
|
+
this.#restorable.clear();
|
|
549
|
+
this.#state = { ...this.#state, records: [] };
|
|
550
|
+
this.#source = undefined;
|
|
551
|
+
await Promise.all([...this.#mounted.keys()].map((instance) => this.#unmount(instance)));
|
|
552
|
+
}
|
|
553
|
+
async invalidateScope() {
|
|
554
|
+
this.#adoption++;
|
|
555
|
+
await this.#clearScope(true);
|
|
556
|
+
}
|
|
557
|
+
async navigate() {
|
|
558
|
+
this.cancelPending();
|
|
559
|
+
await this.#clearScope();
|
|
560
|
+
}
|
|
561
|
+
async dispose() {
|
|
562
|
+
this.#disposed = true;
|
|
563
|
+
unregisterComponentController(this);
|
|
564
|
+
for (const waiters of this.#mountWaiters.values())
|
|
565
|
+
for (const ready of waiters)
|
|
566
|
+
ready();
|
|
567
|
+
this.#mountWaiters.clear();
|
|
568
|
+
await this.navigate();
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
const reloadedBuilds = new Set();
|
|
572
|
+
function recordSubtree(records, instance) {
|
|
573
|
+
const ids = new Set([instance]);
|
|
574
|
+
for (let depth = 0; depth < 16; depth++)
|
|
575
|
+
for (const record of records)
|
|
576
|
+
if (record.parent !== null && ids.has(record.parent))
|
|
577
|
+
ids.add(record.instance);
|
|
578
|
+
return ids;
|
|
579
|
+
}
|
|
580
|
+
export function resolveComponentRecord(state, component, key, input, parent = null) {
|
|
581
|
+
const checked = parseComponentState(state);
|
|
582
|
+
const serialized = componentInputKey(componentValue(input, COMPONENT_LIMITS.inputBytes));
|
|
583
|
+
const matches = checked.records.filter((record) => record.reference === component.reference &&
|
|
584
|
+
record.key === key &&
|
|
585
|
+
record.parent === parent &&
|
|
586
|
+
componentInputKey(record.input) === serialized);
|
|
587
|
+
if (matches.length !== 1)
|
|
588
|
+
throw new ServerComponentError("component_unavailable", 404);
|
|
589
|
+
return matches[0];
|
|
590
|
+
}
|
|
591
|
+
export { invalidateComponentScope } from "./registry.js";
|
|
592
|
+
export { bindComponentRouter, refreshAfterComponentMutation } from "./router-integration.js";
|
|
593
|
+
export { parseComponentState } from "./state.js";
|
|
594
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/server-components/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PreparedServerComponent, ServerComponent, ServerComponentContext, ServerComponentDefinition } from "./types.js";
|
|
2
|
+
export declare function defineServerComponent<Input, Props, View>(definition: ServerComponentDefinition<Input, Props, View>, reference?: string): ServerComponent<Input, Props, View>;
|
|
3
|
+
export declare function isServerComponent(value: unknown): value is ServerComponent;
|
|
4
|
+
export declare function serverComponentCapabilities(component: object): readonly string[];
|
|
5
|
+
export declare function inheritOwnerAuthorization(): void;
|
|
6
|
+
/** Used for whole-owner preflight so an invalid sibling cannot follow successful work. */
|
|
7
|
+
export declare function validateServerComponentInput(component: ServerComponent, input: unknown): Promise<void>;
|
|
8
|
+
export declare function prepareServerComponent<Input, Props, View>(component: ServerComponent<Input, Props, View>, input: unknown, ctx: ServerComponentContext): Promise<PreparedServerComponent<Props, View>>;
|
|
9
|
+
export declare function authorizeServerComponent(component: ServerComponent, input: unknown, ctx: ServerComponentContext): Promise<object>;
|
|
10
|
+
export declare function prepareAuthorizedServerComponent(token: object): Promise<PreparedServerComponent>;
|
|
11
|
+
//# sourceMappingURL=definition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/server-components/definition.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,YAAY,CAAA;AAmBnB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EACtD,UAAU,EAAE,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EACzD,SAAS,CAAC,EAAE,MAAM,GACjB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAmBrC;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E;AAED,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAIhF;AAED,wBAAgB,yBAAyB,IAAI,IAAI,CAAG;AAEpD,0FAA0F;AAC1F,wBAAsB,4BAA4B,CAChD,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAC7D,SAAS,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAC9C,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,sBAAsB,GAC1B,OAAO,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAM/C;AACD,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,sBAAsB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAejB;AACD,wBAAsB,gCAAgC,CACpD,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,uBAAuB,CAAC,CAalC"}
|