@nifrajs/web 3.5.0 → 4.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/dist/backend-only.d.ts +15 -0
- package/dist/backend-only.d.ts.map +1 -0
- package/dist/backend-only.js +16 -0
- package/dist/backend-only.js.map +1 -0
- package/dist/boundary.d.ts +5 -0
- package/dist/boundary.d.ts.map +1 -1
- package/dist/boundary.js +11 -2
- package/dist/boundary.js.map +1 -1
- package/dist/build-plan.d.ts +18 -6
- package/dist/build-plan.d.ts.map +1 -1
- package/dist/build-plan.js +82 -34
- package/dist/build-plan.js.map +1 -1
- package/dist/build-vite.d.ts +4 -0
- package/dist/build-vite.d.ts.map +1 -1
- package/dist/build-vite.js +68 -13
- package/dist/build-vite.js.map +1 -1
- package/dist/build.d.ts +57 -23
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +356 -85
- package/dist/build.js.map +1 -1
- package/dist/bun-dev-entry.d.ts +1 -1
- package/dist/bun-dev-entry.js +1 -1
- package/dist/cdn.d.ts +74 -0
- package/dist/cdn.d.ts.map +1 -0
- package/dist/cdn.js +132 -0
- package/dist/cdn.js.map +1 -0
- package/dist/client.d.ts +3 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +111 -15
- package/dist/client.js.map +1 -1
- package/dist/conformance.d.ts +4 -3
- package/dist/conformance.d.ts.map +1 -1
- package/dist/conformance.js +12 -3
- package/dist/conformance.js.map +1 -1
- package/dist/csp.d.ts +93 -0
- package/dist/csp.d.ts.map +1 -0
- package/dist/csp.js +122 -0
- package/dist/csp.js.map +1 -0
- package/dist/dev-client.d.ts +76 -0
- package/dist/dev-client.d.ts.map +1 -0
- package/dist/dev-client.js +280 -0
- package/dist/dev-client.js.map +1 -0
- package/dist/dev-diagnostics.d.ts +26 -2
- package/dist/dev-diagnostics.d.ts.map +1 -1
- package/dist/dev-diagnostics.js +38 -7
- package/dist/dev-diagnostics.js.map +1 -1
- package/dist/dev-error.d.ts +4 -13
- package/dist/dev-error.d.ts.map +1 -1
- package/dist/dev-error.js +46 -4
- package/dist/dev-error.js.map +1 -1
- package/dist/dev-feed.d.ts +298 -0
- package/dist/dev-feed.d.ts.map +1 -0
- package/dist/dev-feed.js +797 -0
- package/dist/dev-feed.js.map +1 -0
- package/dist/dev-indicator.d.ts +38 -0
- package/dist/dev-indicator.d.ts.map +1 -0
- package/dist/dev-indicator.js +93 -0
- package/dist/dev-indicator.js.map +1 -0
- package/dist/dev-session.d.ts +77 -0
- package/dist/dev-session.d.ts.map +1 -0
- package/dist/dev-session.js +580 -0
- package/dist/dev-session.js.map +1 -0
- package/dist/dev-sourcemap.d.ts +27 -0
- package/dist/dev-sourcemap.d.ts.map +1 -0
- package/dist/dev-sourcemap.js +235 -0
- package/dist/dev-sourcemap.js.map +1 -0
- package/dist/dev-ssr-graph.d.ts.map +1 -1
- package/dist/dev-ssr-graph.js +13 -5
- package/dist/dev-ssr-graph.js.map +1 -1
- package/dist/dev.d.ts +15 -2
- package/dist/dev.d.ts.map +1 -1
- package/dist/dev.js +69 -44
- package/dist/dev.js.map +1 -1
- package/dist/diagnostic-catalog.d.ts +35 -0
- package/dist/diagnostic-catalog.d.ts.map +1 -0
- package/dist/diagnostic-catalog.js +203 -0
- package/dist/diagnostic-catalog.js.map +1 -0
- package/dist/diagnostic-prompt.d.ts +49 -0
- package/dist/diagnostic-prompt.d.ts.map +1 -0
- package/dist/diagnostic-prompt.js +303 -0
- package/dist/diagnostic-prompt.js.map +1 -0
- package/dist/diagnostic.d.ts +17 -23
- package/dist/diagnostic.d.ts.map +1 -1
- package/dist/diagnostic.js +31 -39
- package/dist/diagnostic.js.map +1 -1
- package/dist/draft.d.ts.map +1 -1
- package/dist/draft.js +4 -1
- package/dist/draft.js.map +1 -1
- package/dist/fn.d.ts +5 -0
- package/dist/fn.d.ts.map +1 -1
- package/dist/fn.js +13 -3
- package/dist/fn.js.map +1 -1
- package/dist/fs.d.ts.map +1 -1
- package/dist/fs.js +4 -2
- package/dist/fs.js.map +1 -1
- package/dist/index.d.ts +13 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -12
- package/dist/index.js.map +1 -1
- package/dist/internal/cdn/cloudflare.d.ts +48 -0
- package/dist/internal/cdn/cloudflare.d.ts.map +1 -0
- package/dist/internal/cdn/cloudflare.js +94 -0
- package/dist/internal/cdn/cloudflare.js.map +1 -0
- package/dist/internal/cdn/core.d.ts +91 -0
- package/dist/internal/cdn/core.d.ts.map +1 -0
- package/dist/internal/cdn/core.js +220 -0
- package/dist/internal/cdn/core.js.map +1 -0
- package/dist/internal/cdn/fastly.d.ts +17 -0
- package/dist/internal/cdn/fastly.d.ts.map +1 -0
- package/dist/internal/cdn/fastly.js +43 -0
- package/dist/internal/cdn/fastly.js.map +1 -0
- package/dist/internal/cdn/vercel.d.ts +31 -0
- package/dist/internal/cdn/vercel.d.ts.map +1 -0
- package/dist/internal/cdn/vercel.js +56 -0
- package/dist/internal/cdn/vercel.js.map +1 -0
- package/dist/internal/code-unit-order.d.ts +4 -0
- package/dist/internal/code-unit-order.d.ts.map +1 -0
- package/dist/internal/code-unit-order.js +6 -0
- package/dist/internal/code-unit-order.js.map +1 -0
- package/dist/internal/codegen.d.ts.map +1 -1
- package/dist/internal/codegen.js +141 -25
- package/dist/internal/codegen.js.map +1 -1
- package/dist/internal/dev-csp.d.ts +24 -0
- package/dist/internal/dev-csp.d.ts.map +1 -0
- package/dist/internal/dev-csp.js +160 -0
- package/dist/internal/dev-csp.js.map +1 -0
- package/dist/internal/dev-reserved.d.ts +25 -0
- package/dist/internal/dev-reserved.d.ts.map +1 -0
- package/dist/internal/dev-reserved.js +39 -0
- package/dist/internal/dev-reserved.js.map +1 -0
- package/dist/internal/html-spans.d.ts +10 -0
- package/dist/internal/html-spans.d.ts.map +1 -0
- package/dist/internal/html-spans.js +46 -0
- package/dist/internal/html-spans.js.map +1 -0
- package/dist/internal/loading-runtime.d.ts +44 -0
- package/dist/internal/loading-runtime.d.ts.map +1 -0
- package/dist/internal/loading-runtime.js +206 -0
- package/dist/internal/loading-runtime.js.map +1 -0
- package/dist/internal/matches-runtime.d.ts +8 -0
- package/dist/internal/matches-runtime.d.ts.map +1 -0
- package/dist/internal/matches-runtime.js +61 -0
- package/dist/internal/matches-runtime.js.map +1 -0
- package/dist/internal/mount-shadow.d.ts +36 -0
- package/dist/internal/mount-shadow.d.ts.map +1 -0
- package/dist/internal/mount-shadow.js +65 -0
- package/dist/internal/mount-shadow.js.map +1 -0
- package/dist/internal/node-builtins.d.ts +3 -0
- package/dist/internal/node-builtins.d.ts.map +1 -0
- package/dist/internal/node-builtins.js +79 -0
- package/dist/internal/node-builtins.js.map +1 -0
- package/dist/internal/output-guard.d.ts +65 -0
- package/dist/internal/output-guard.d.ts.map +1 -0
- package/dist/internal/output-guard.js +630 -0
- package/dist/internal/output-guard.js.map +1 -0
- package/dist/internal/page-execution.d.ts +20 -8
- package/dist/internal/page-execution.d.ts.map +1 -1
- package/dist/internal/page-execution.js +571 -105
- package/dist/internal/page-execution.js.map +1 -1
- package/dist/internal/parity.d.ts +21 -0
- package/dist/internal/parity.d.ts.map +1 -1
- package/dist/internal/parity.js +104 -22
- package/dist/internal/parity.js.map +1 -1
- package/dist/internal/private-env.d.ts +12 -0
- package/dist/internal/private-env.d.ts.map +1 -0
- package/dist/internal/private-env.js +335 -0
- package/dist/internal/private-env.js.map +1 -0
- package/dist/internal/public-url.d.ts +3 -0
- package/dist/internal/public-url.d.ts.map +1 -0
- package/dist/internal/public-url.js +18 -0
- package/dist/internal/public-url.js.map +1 -0
- package/dist/internal/render-document.d.ts +25 -19
- package/dist/internal/render-document.d.ts.map +1 -1
- package/dist/internal/render-document.js +77 -61
- package/dist/internal/render-document.js.map +1 -1
- package/dist/internal/response-controls.d.ts +75 -0
- package/dist/internal/response-controls.d.ts.map +1 -0
- package/dist/internal/response-controls.js +256 -0
- package/dist/internal/response-controls.js.map +1 -0
- package/dist/internal/runtime-contract.d.ts +11 -16
- package/dist/internal/runtime-contract.d.ts.map +1 -1
- package/dist/internal/runtime-contract.js.map +1 -1
- package/dist/internal/secret-scan.d.ts +104 -0
- package/dist/internal/secret-scan.d.ts.map +1 -0
- package/dist/internal/secret-scan.js +485 -0
- package/dist/internal/secret-scan.js.map +1 -0
- package/dist/internal/server-boundary.d.ts +6 -29
- package/dist/internal/server-boundary.d.ts.map +1 -1
- package/dist/internal/server-boundary.js +6 -66
- package/dist/internal/server-boundary.js.map +1 -1
- package/dist/internal/source-map.d.ts +47 -0
- package/dist/internal/source-map.d.ts.map +1 -0
- package/dist/internal/source-map.js +225 -0
- package/dist/internal/source-map.js.map +1 -0
- package/dist/internal/target-compat.d.ts +27 -0
- package/dist/internal/target-compat.d.ts.map +1 -0
- package/dist/internal/target-compat.js +77 -0
- package/dist/internal/target-compat.js.map +1 -0
- package/dist/internal/timing-safe-equal.d.ts +6 -0
- package/dist/internal/timing-safe-equal.d.ts.map +1 -1
- package/dist/internal/timing-safe-equal.js +10 -0
- package/dist/internal/timing-safe-equal.js.map +1 -1
- package/dist/internal/vitals-runtime.d.ts +18 -0
- package/dist/internal/vitals-runtime.d.ts.map +1 -0
- package/dist/internal/vitals-runtime.js +38 -0
- package/dist/internal/vitals-runtime.js.map +1 -0
- package/dist/internal/web-app.d.ts +38 -9
- package/dist/internal/web-app.d.ts.map +1 -1
- package/dist/internal/web-app.js +199 -59
- package/dist/internal/web-app.js.map +1 -1
- package/dist/internal/zone-graph.d.ts +89 -0
- package/dist/internal/zone-graph.d.ts.map +1 -0
- package/dist/internal/zone-graph.js +492 -0
- package/dist/internal/zone-graph.js.map +1 -0
- package/dist/isr.d.ts +83 -6
- package/dist/isr.d.ts.map +1 -1
- package/dist/isr.js +263 -36
- package/dist/isr.js.map +1 -1
- package/dist/llms-txt.d.ts.map +1 -1
- package/dist/llms-txt.js +31 -6
- package/dist/llms-txt.js.map +1 -1
- package/dist/manifest.d.ts +220 -13
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +386 -9
- package/dist/manifest.js.map +1 -1
- package/dist/module-graph.d.ts +26 -5
- package/dist/module-graph.d.ts.map +1 -1
- package/dist/module-graph.js +17 -7
- package/dist/module-graph.js.map +1 -1
- package/dist/navigation.d.ts +17 -3
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +11 -5
- package/dist/navigation.js.map +1 -1
- package/dist/nonce.d.ts +47 -0
- package/dist/nonce.d.ts.map +1 -0
- package/dist/nonce.js +63 -0
- package/dist/nonce.js.map +1 -0
- package/dist/plugins/css-modules.d.ts.map +1 -1
- package/dist/plugins/css-modules.js +4 -3
- package/dist/plugins/css-modules.js.map +1 -1
- package/dist/plugins/kit.d.ts +9 -0
- package/dist/plugins/kit.d.ts.map +1 -1
- package/dist/plugins/kit.js +18 -0
- package/dist/plugins/kit.js.map +1 -1
- package/dist/plugins/svg.d.ts +22 -3
- package/dist/plugins/svg.d.ts.map +1 -1
- package/dist/plugins/svg.js +112 -1
- package/dist/plugins/svg.js.map +1 -1
- package/dist/plugins/vite-leak-guard.d.ts +107 -3
- package/dist/plugins/vite-leak-guard.d.ts.map +1 -1
- package/dist/plugins/vite-leak-guard.js +378 -17
- package/dist/plugins/vite-leak-guard.js.map +1 -1
- package/dist/plugins/vite-zone-guard.d.ts +61 -0
- package/dist/plugins/vite-zone-guard.d.ts.map +1 -0
- package/dist/plugins/vite-zone-guard.js +208 -0
- package/dist/plugins/vite-zone-guard.js.map +1 -0
- package/dist/plugins/zone-guard.d.ts +27 -0
- package/dist/plugins/zone-guard.d.ts.map +1 -0
- package/dist/plugins/zone-guard.js +72 -0
- package/dist/plugins/zone-guard.js.map +1 -0
- package/dist/prerender.d.ts +10 -0
- package/dist/prerender.d.ts.map +1 -1
- package/dist/prerender.js +35 -3
- package/dist/prerender.js.map +1 -1
- package/dist/public-dir.d.ts +9 -0
- package/dist/public-dir.d.ts.map +1 -1
- package/dist/public-dir.js +67 -9
- package/dist/public-dir.js.map +1 -1
- package/dist/pwa-manifest.d.ts +68 -0
- package/dist/pwa-manifest.d.ts.map +1 -0
- package/dist/pwa-manifest.js +178 -0
- package/dist/pwa-manifest.js.map +1 -0
- package/dist/query.js +4 -4
- package/dist/query.js.map +1 -1
- package/dist/render-seam.d.ts +42 -2
- package/dist/render-seam.d.ts.map +1 -1
- package/dist/render-seam.js +6 -0
- package/dist/render-seam.js.map +1 -1
- package/dist/route-manifest.d.ts +3 -0
- package/dist/route-manifest.d.ts.map +1 -1
- package/dist/route-manifest.js +26 -3
- package/dist/route-manifest.js.map +1 -1
- package/dist/route-types.d.ts +24 -0
- package/dist/route-types.d.ts.map +1 -0
- package/dist/route-types.js +195 -0
- package/dist/route-types.js.map +1 -0
- package/dist/router.d.ts +28 -6
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +129 -40
- package/dist/router.js.map +1 -1
- package/dist/vitals.d.ts +33 -0
- package/dist/vitals.d.ts.map +1 -0
- package/dist/vitals.js +16 -0
- package/dist/vitals.js.map +1 -0
- package/dist/vite.d.ts +16 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +187 -36
- package/dist/vite.js.map +1 -1
- package/dist/zones.d.ts +70 -0
- package/dist/zones.d.ts.map +1 -0
- package/dist/zones.js +365 -0
- package/dist/zones.js.map +1 -0
- package/package.json +67 -14
- package/src/backend-only.ts +16 -0
- package/src/boundary.ts +18 -5
- package/src/build-plan.ts +90 -35
- package/src/build-vite.ts +77 -11
- package/src/build.ts +466 -96
- package/src/bun-dev-entry.ts +1 -1
- package/src/cdn.ts +216 -0
- package/src/client.ts +111 -18
- package/src/conformance.ts +16 -3
- package/src/csp.ts +194 -0
- package/src/dev-client.ts +349 -0
- package/src/dev-diagnostics.ts +60 -7
- package/src/dev-error.ts +49 -5
- package/src/dev-feed.ts +1140 -0
- package/src/dev-indicator.ts +113 -0
- package/src/dev-session.ts +729 -0
- package/src/dev-sourcemap.ts +281 -0
- package/src/dev-ssr-graph.ts +16 -5
- package/src/dev.ts +86 -43
- package/src/diagnostic-catalog.ts +243 -0
- package/src/diagnostic-prompt.ts +355 -0
- package/src/diagnostic.ts +63 -66
- package/src/draft.ts +4 -1
- package/src/fn.ts +19 -3
- package/src/fs.ts +13 -2
- package/src/index.ts +42 -10
- package/src/internal/cdn/cloudflare.ts +146 -0
- package/src/internal/cdn/core.ts +316 -0
- package/src/internal/cdn/fastly.ts +62 -0
- package/src/internal/cdn/vercel.ts +95 -0
- package/src/internal/code-unit-order.ts +5 -0
- package/src/internal/codegen.ts +161 -24
- package/src/internal/dev-csp.ts +176 -0
- package/src/internal/dev-reserved.ts +52 -0
- package/src/internal/html-spans.ts +50 -0
- package/src/internal/loading-runtime.ts +244 -0
- package/src/internal/matches-runtime.ts +62 -0
- package/src/internal/mount-shadow.ts +88 -0
- package/src/internal/node-builtins.ts +79 -0
- package/src/internal/output-guard.ts +701 -0
- package/src/internal/page-execution.ts +795 -185
- package/src/internal/parity.ts +150 -36
- package/src/internal/private-env.ts +334 -0
- package/src/internal/public-url.ts +22 -0
- package/src/internal/render-document.ts +114 -67
- package/src/internal/response-controls.ts +284 -0
- package/src/internal/runtime-contract.ts +10 -15
- package/src/internal/secret-scan.ts +623 -0
- package/src/internal/server-boundary.ts +6 -69
- package/src/internal/source-map.ts +256 -0
- package/src/internal/target-compat.ts +92 -0
- package/src/internal/timing-safe-equal.ts +13 -0
- package/src/internal/vitals-runtime.ts +53 -0
- package/src/internal/web-app.ts +262 -84
- package/src/internal/zone-graph.ts +593 -0
- package/src/isr.ts +325 -37
- package/src/llms-txt.ts +28 -4
- package/src/manifest.ts +670 -16
- package/src/module-graph.ts +53 -9
- package/src/navigation.ts +29 -6
- package/src/nonce.ts +104 -0
- package/src/plugins/css-modules.ts +5 -3
- package/src/plugins/kit.ts +24 -0
- package/src/plugins/svg.ts +135 -4
- package/src/plugins/vite-leak-guard.ts +529 -16
- package/src/plugins/vite-zone-guard.ts +263 -0
- package/src/plugins/zone-guard.ts +110 -0
- package/src/prerender.ts +49 -3
- package/src/public-dir.ts +69 -8
- package/src/pwa-manifest.ts +226 -0
- package/src/query.ts +4 -4
- package/src/render-seam.ts +46 -1
- package/src/route-manifest.ts +15 -3
- package/src/route-types.ts +264 -0
- package/src/router.ts +163 -63
- package/src/vitals.ts +44 -0
- package/src/vite.ts +207 -36
- package/src/zones.ts +430 -0
- package/dist/plugins/vite-server-only.d.ts +0 -49
- package/dist/plugins/vite-server-only.d.ts.map +0 -1
- package/dist/plugins/vite-server-only.js +0 -57
- package/dist/plugins/vite-server-only.js.map +0 -1
- package/dist/server-only.d.ts +0 -21
- package/dist/server-only.d.ts.map +0 -1
- package/dist/server-only.js +0 -25
- package/dist/server-only.js.map +0 -1
- package/src/plugins/vite-server-only.ts +0 -75
- package/src/server-only.ts +0 -25
package/dist/client.js
CHANGED
|
@@ -7,6 +7,20 @@
|
|
|
7
7
|
import { trustedHeadAttributes } from "./internal/head-attributes.js";
|
|
8
8
|
import { EXECUTABLE_SCRIPT_TYPES, INERT_SCRIPT_TYPES } from "./internal/script-types.js";
|
|
9
9
|
import { IDLE_BLOCKER, setBlockerController, setBrowserNavigate, } from "./navigation.js";
|
|
10
|
+
import { redirectOf } from "./router.js";
|
|
11
|
+
/** Read the nonce carried by the current server-rendered document, if any. */
|
|
12
|
+
export function currentDocumentNonce() {
|
|
13
|
+
if (typeof document === "undefined")
|
|
14
|
+
return undefined;
|
|
15
|
+
const documentLike = document;
|
|
16
|
+
const script = documentLike.querySelector?.("script[nonce]");
|
|
17
|
+
if (script === null || script === undefined)
|
|
18
|
+
return undefined;
|
|
19
|
+
const property = script.nonce;
|
|
20
|
+
if (typeof property === "string" && property !== "")
|
|
21
|
+
return property;
|
|
22
|
+
return script.getAttribute("nonce") ?? undefined;
|
|
23
|
+
}
|
|
10
24
|
/**
|
|
11
25
|
* Everything the generated client entry needs, re-exported here so that entry imports ONE module and
|
|
12
26
|
* that module is DOM-only. It used to take these from `@nifrajs/web`, whose graph includes `renderPage`
|
|
@@ -157,6 +171,8 @@ export function installHistory(router, options = {}) {
|
|
|
157
171
|
let index = history.state?.nifraIndex ?? 0;
|
|
158
172
|
let here = location.pathname + location.search + (location.hash ?? "");
|
|
159
173
|
let reversing = false;
|
|
174
|
+
// The path the router was last seen loading, so a redirect it follows shows up as a change.
|
|
175
|
+
let expected;
|
|
160
176
|
// A single active guard (like react-router, one blocker at a time); the latest registration wins.
|
|
161
177
|
let registration;
|
|
162
178
|
const scrollOf = (state) => {
|
|
@@ -280,10 +296,20 @@ export function installHistory(router, options = {}) {
|
|
|
280
296
|
pendingScroll = url.hash !== "" ? { hash: hashId(url.hash) } : { pos: [0, 0] };
|
|
281
297
|
}
|
|
282
298
|
here = url.pathname + url.search + url.hash;
|
|
299
|
+
expected = routePath;
|
|
283
300
|
// The data layer fetches by path+search; the #hash is client-only (never sent to the server).
|
|
284
|
-
transition(() => router.navigate(routePath).catch(() =>
|
|
301
|
+
transition(() => router.navigate(routePath).catch((error) => leave(error, path)));
|
|
285
302
|
settle();
|
|
286
303
|
};
|
|
304
|
+
// A redirect out of the app replaces the entry it answered, as the browser's own redirect would; any
|
|
305
|
+
// other failure loads the page as a document.
|
|
306
|
+
const leave = (error, path) => {
|
|
307
|
+
const to = redirectOf(error);
|
|
308
|
+
if (to === undefined)
|
|
309
|
+
fallback(path);
|
|
310
|
+
else
|
|
311
|
+
location.replace(to);
|
|
312
|
+
};
|
|
287
313
|
const go = (path, mode, state) => {
|
|
288
314
|
// Validate before the blocker observes the target. A blocker receives parsed locations, so letting a
|
|
289
315
|
// malformed string reach `locationOf` would make an otherwise no-throw navigate unexpectedly throw.
|
|
@@ -308,7 +334,7 @@ export function installHistory(router, options = {}) {
|
|
|
308
334
|
}
|
|
309
335
|
go(to, navOptions?.replace === true ? "replace" : "push", navOptions?.state);
|
|
310
336
|
};
|
|
311
|
-
setBrowserNavigate(navigate);
|
|
337
|
+
setBrowserNavigate(navigate, router);
|
|
312
338
|
// Publish the guard registry through the DOM-free bridge (`@nifrajs/web`'s `registerBlocker`, which an
|
|
313
339
|
// adapter's `useBlocker` calls). One slot, latest registration wins; the unregister clears it only if
|
|
314
340
|
// it's still the current one (so a stale unmount doesn't wipe a newer guard).
|
|
@@ -361,13 +387,45 @@ export function installHistory(router, options = {}) {
|
|
|
361
387
|
event.preventDefault();
|
|
362
388
|
go(href, "push");
|
|
363
389
|
};
|
|
364
|
-
//
|
|
365
|
-
|
|
366
|
-
|
|
390
|
+
// `data-nifra-prefetch` on a link or any ancestor (the nearest wins) says when the link warms its
|
|
391
|
+
// route's chunk and data: `intent` (the default) on hover or focus, `viewport` once it scrolls into
|
|
392
|
+
// view, `render` as soon as a page shows it, `none` never.
|
|
393
|
+
const prefetchModeOf = (el) => el.closest("[data-nifra-prefetch]")?.dataset.nifraPrefetch;
|
|
394
|
+
// Warm an in-app link's route (the store dedupes the spam). The page on screen has nothing to warm.
|
|
395
|
+
const warm = (target) => {
|
|
396
|
+
const href = inAppHref(target);
|
|
367
397
|
if (href === null)
|
|
368
398
|
return;
|
|
369
399
|
const url = new URL(href, location.origin);
|
|
370
|
-
|
|
400
|
+
const path = url.pathname + url.search; // the #hash isn't data
|
|
401
|
+
if (path !== location.pathname + location.search)
|
|
402
|
+
void router.prefetch(path);
|
|
403
|
+
};
|
|
404
|
+
const onPrefetch = (event) => {
|
|
405
|
+
const target = event.target;
|
|
406
|
+
if (target instanceof Element && prefetchModeOf(target) !== "none")
|
|
407
|
+
warm(target);
|
|
408
|
+
};
|
|
409
|
+
// `viewport` and `render` links are looked for when history is installed (the server-rendered page)
|
|
410
|
+
// and whenever the router settles (a navigation, a submit's revalidation). A link the page adds in
|
|
411
|
+
// between warms on intent until the next settle.
|
|
412
|
+
let inView;
|
|
413
|
+
const scan = () => {
|
|
414
|
+
inView?.disconnect();
|
|
415
|
+
for (const anchor of document.querySelectorAll("a[data-nifra-prefetch],[data-nifra-prefetch] a")) {
|
|
416
|
+
const mode = prefetchModeOf(anchor);
|
|
417
|
+
if (mode === "render")
|
|
418
|
+
warm(anchor);
|
|
419
|
+
else if (mode === "viewport") {
|
|
420
|
+
// Scrolling back into view asks again; the store holds a fresh prefetch, so nothing refetches.
|
|
421
|
+
inView ??= new IntersectionObserver((entries) => {
|
|
422
|
+
for (const entry of entries)
|
|
423
|
+
if (entry.isIntersecting)
|
|
424
|
+
warm(entry.target);
|
|
425
|
+
});
|
|
426
|
+
inView.observe(anchor);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
371
429
|
};
|
|
372
430
|
// Back/forward: the entry already exists (no push). The URL has ALSO already changed - a popstate can't
|
|
373
431
|
// be cancelled - so a guard here can only restore-then-prompt: read the delta from our index, and if the
|
|
@@ -390,7 +448,9 @@ export function installHistory(router, options = {}) {
|
|
|
390
448
|
index = newIndex;
|
|
391
449
|
here = dest;
|
|
392
450
|
pendingScroll = { pos: scrollOf(history.state) };
|
|
393
|
-
|
|
451
|
+
const routePath = location.pathname + location.search;
|
|
452
|
+
expected = routePath;
|
|
453
|
+
transition(() => router.navigate(routePath).catch((error) => leave(error, dest)));
|
|
394
454
|
settle();
|
|
395
455
|
};
|
|
396
456
|
// Close / reload / hard navigation away: no in-app destination exists, so consult the guard with the
|
|
@@ -409,28 +469,54 @@ export function installHistory(router, options = {}) {
|
|
|
409
469
|
event.preventDefault();
|
|
410
470
|
event.returnValue = "";
|
|
411
471
|
};
|
|
472
|
+
// The router is loading a page the address bar does not show: a redirect it follows. That replaces the
|
|
473
|
+
// entry a navigation pushed, or adds one after a form post, as the browser would. A redirect from a
|
|
474
|
+
// form post back to the page it was on adds nothing.
|
|
475
|
+
const follow = (path) => {
|
|
476
|
+
if (path !== location.pathname + location.search) {
|
|
477
|
+
if (expected === undefined) {
|
|
478
|
+
history.replaceState({ ...(history.state ?? {}), nifraScroll: [scrollX, scrollY] }, "");
|
|
479
|
+
index += 1;
|
|
480
|
+
history.pushState({ nifraIndex: index }, "", path);
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
history.replaceState(history.state, "", path + location.hash);
|
|
484
|
+
}
|
|
485
|
+
here = location.pathname + location.search + location.hash;
|
|
486
|
+
pendingScroll = location.hash !== "" ? { hash: hashId(location.hash) } : { pos: [0, 0] };
|
|
487
|
+
}
|
|
488
|
+
expected = path;
|
|
489
|
+
};
|
|
412
490
|
// After a navigation settles (content rendered), apply the pending scroll target on the next frame:
|
|
413
491
|
// a fragment's element for a cross-page `#hash`, the saved position for back/forward, else the top.
|
|
414
|
-
//
|
|
415
|
-
|
|
416
|
-
|
|
492
|
+
// A settle with no navigation (a submit's revalidation) scrolls nothing. Either way the rendered
|
|
493
|
+
// page is then scanned for links to warm.
|
|
494
|
+
const settled = () => {
|
|
495
|
+
const { pending, pendingPath } = router.snapshot();
|
|
496
|
+
if (pending) {
|
|
497
|
+
if (pendingPath !== undefined && pendingPath !== expected)
|
|
498
|
+
follow(pendingPath);
|
|
417
499
|
return;
|
|
500
|
+
}
|
|
501
|
+
expected = undefined;
|
|
418
502
|
const target = pendingScroll;
|
|
419
503
|
pendingScroll = null;
|
|
420
504
|
requestAnimationFrame(() => {
|
|
421
|
-
if ("hash" in target) {
|
|
505
|
+
if (target !== null && "hash" in target) {
|
|
422
506
|
const el = findAnchor(target.hash);
|
|
423
507
|
if (el !== null)
|
|
424
508
|
el.scrollIntoView();
|
|
425
509
|
else
|
|
426
510
|
window.scrollTo(0, 0); // fragment not found → top, like a fresh page load
|
|
427
511
|
}
|
|
428
|
-
else {
|
|
512
|
+
else if (target !== null) {
|
|
429
513
|
window.scrollTo(target.pos[0], target.pos[1]);
|
|
430
514
|
}
|
|
515
|
+
scan();
|
|
431
516
|
});
|
|
432
517
|
};
|
|
433
|
-
const unsubscribe = router.subscribe(
|
|
518
|
+
const unsubscribe = router.subscribe(settled);
|
|
519
|
+
scan();
|
|
434
520
|
document.addEventListener("click", onClick);
|
|
435
521
|
document.addEventListener("pointerover", onPrefetch);
|
|
436
522
|
document.addEventListener("focusin", onPrefetch);
|
|
@@ -438,6 +524,7 @@ export function installHistory(router, options = {}) {
|
|
|
438
524
|
window.addEventListener("beforeunload", onBeforeUnload);
|
|
439
525
|
return () => {
|
|
440
526
|
unsubscribe();
|
|
527
|
+
inView?.disconnect();
|
|
441
528
|
setBrowserNavigate(undefined); // stop routing `useNavigate` to a torn-down router
|
|
442
529
|
setBlockerController(undefined); // stop routing `useBlocker` to a torn-down registry
|
|
443
530
|
document.removeEventListener("click", onClick);
|
|
@@ -459,6 +546,7 @@ export function installHistory(router, options = {}) {
|
|
|
459
546
|
* the first navigation cleanly takes over from the server-rendered head.
|
|
460
547
|
*/
|
|
461
548
|
export function applyHead(head) {
|
|
549
|
+
const documentNonce = currentDocumentNonce();
|
|
462
550
|
if (head.title !== undefined)
|
|
463
551
|
document.title = head.title;
|
|
464
552
|
// `<html lang>`/`<html dir>` - applied AUTHORITATIVELY (unlike `title`, which is left alone when the
|
|
@@ -516,6 +604,9 @@ export function applyHead(head) {
|
|
|
516
604
|
if (!EXECUTABLE_SCRIPT_TYPES.has(s.type)) {
|
|
517
605
|
throw new TypeError(`[nifra/web] unsupported executable script type ${JSON.stringify(s.type)}`);
|
|
518
606
|
}
|
|
607
|
+
if (documentNonce !== undefined && s.nonce !== documentNonce) {
|
|
608
|
+
throw new TypeError("[nifra/web] executable head scripts must use the same CSP nonce as the document");
|
|
609
|
+
}
|
|
519
610
|
const el = document.createElement("script");
|
|
520
611
|
el.setAttribute("type", s.type);
|
|
521
612
|
el.setAttribute("nonce", s.nonce);
|
|
@@ -542,8 +633,13 @@ export function installForms(router) {
|
|
|
542
633
|
// `data-nifra-revalidate="false"` opts out of the post-action loader revalidation (the action's
|
|
543
634
|
// actionData drives the update); absent or any other value keeps the default revalidation.
|
|
544
635
|
const revalidate = form.dataset.nifraRevalidate !== "false";
|
|
545
|
-
router.submit(url.pathname + url.search, new FormData(form), { revalidate }).catch(() => {
|
|
546
|
-
|
|
636
|
+
router.submit(url.pathname + url.search, new FormData(form), { revalidate }).catch((error) => {
|
|
637
|
+
const to = redirectOf(error);
|
|
638
|
+
// The action ran: load the page that shows its result rather than run it again.
|
|
639
|
+
if (to !== undefined)
|
|
640
|
+
location.assign(to);
|
|
641
|
+
else
|
|
642
|
+
form.submit(); // data submit failed - fall back to a full-page POST
|
|
547
643
|
});
|
|
548
644
|
};
|
|
549
645
|
document.addEventListener("submit", onSubmit);
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAExF,OAAO,EAOL,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,iBAAiB,CAAA;AAGxB;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC/D,sGAAsG;AACtG,uGAAuG;AACvG,sGAAsG;AACtG,kGAAkG;AAClG,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAsBrD,MAAM,mBAAmB,GAAG,KAAK,CAAA;AACjC,MAAM,eAAe,GAAG,MAAM,CAAA;AAG9B,qGAAqG;AACrG,qGAAqG;AACrG,MAAM,eAAe,GAAG,IAAI,OAAO,EAAkC,CAAA;AAErE,MAAM,cAAc,GAAG,CAAC,IAAqB,EAA4B,EAAE;IACzE,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAA;IACvD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3F,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,IAAqB,EAAW,EAAE;IAC7D,oGAAoG;IACpG,oGAAoG;IACpG,uCAAuC;IACvC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,IAAqB,EAAU,EAAE,CACxD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,WAAW,CAAA;AAEvD;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,CAAC,IAAqB,EAAE,SAAiB,EAAiB,EAAE,CACpF,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;IAC5B,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,KAAgD,CAAA;IAEpD,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACxC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC1C,IAAI,KAAK,KAAK,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,CAAA;IAC9C,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,KAAmB,EAAQ,EAAE;QAC3C,IAAI,OAAO;YAAE,OAAM;QACnB,OAAO,GAAG,IAAI,CAAA;QACd,OAAO,EAAE,CAAA;QACT,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;QAChD,0FAA0F;QAC1F,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,OAAO,EAAE,CAAA;IACX,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,GAAS,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC3C,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,OAAO,CAAC,KAAK,CAAC,0CAA0C,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChF,MAAM,CAAC,OAAO,CAAC,CAAA;IACjB,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,CAAA;QACb,OAAM;IACR,CAAC;IACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,QAAQ,CAAC,CAAA;QAChB,OAAM;IACR,CAAC;IAED,kGAAkG;IAClG,0FAA0F;IAC1F,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IACvD,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QACtB,OAAO,CAAC,IAAI,CACV,+CAA+C,SAAS,OAAO,eAAe,CAAC,IAAI,CAAC,EAAE,CACvF,CAAA;QACD,MAAM,CAAC,SAAS,CAAC,CAAA;IACnB,CAAC,EAAE,SAAS,CAAC,CAAA;IACb,IAAI,mBAAmB,CAAC,IAAI,CAAC;QAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;AACjD,CAAC,CAAC,CAAA;AAEJ,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAU,EAAE;IAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,UAAU,CAClB,2EAA2E,KAAK,EAAE,CACnF,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;AACzC,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,UAAgC,EAAE;IAC9D,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC7D,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,SAAS,IAAI,mBAAmB,CAAC,CAAA;IAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,QAAQ,CAAC,gBAAgB,CAAkB,iCAAiC,CAAC,CAC9E,CAAC,MAAM,CACN,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,KAAK,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,YAAY,CAChG,CAAA;IACD,MAAM,MAAM,GAAsB,EAAE,CAAA;IACpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,6FAA6F;YAC7F,+FAA+F;YAC/F,IAAI,CAAC,MAAM,EAAE,CAAA;YACb,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACb,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnB,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACnC,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAA;QAC3C,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAClD,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAClC,OAAO,OAAO,CAAA;IAChB,CAAC,CAAC,CAAA;IACF,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;AACpD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAoB,EACpB,UAAiC,EAAE;IAEnC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAE9E,0FAA0F;IAC1F,wFAAwF;IACxF,OAAO,CAAC,iBAAiB,GAAG,QAAQ,CAAA;IAIpC,IAAI,aAAa,GAAyB,IAAI,CAAA;IAE9C,8FAA8F;IAC9F,sGAAsG;IACtG,wGAAwG;IACxG,sGAAsG;IACtG,mGAAmG;IACnG,IAAI,KAAK,GAAI,OAAO,CAAC,KAAwC,EAAE,UAAU,IAAI,CAAC,CAAA;IAC9E,IAAI,IAAI,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IACtE,IAAI,SAAS,GAAG,KAAK,CAAA;IAMrB,kGAAkG;IAClG,IAAI,YAAsC,CAAA;IAC1C,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoB,EAAE;QACpD,MAAM,KAAK,GAAI,KAAmD,EAAE,WAAW,CAAA;QAC/E,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9C,CAAC,CAAA;IACD,oGAAoG;IACpG,MAAM,MAAM,GAAG,CAAC,IAAY,EAAU,EAAE;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACzB,IAAI,CAAC;YACH,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAA;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,CAAA;QACZ,CAAC;IACH,CAAC,CAAA;IACD,mEAAmE;IACnE,MAAM,UAAU,GAAG,CAAC,EAAU,EAAkB,EAAE;QAChD,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,IAAI,CAAA;QAC1B,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;IACpC,CAAC,CAAA;IAaD,MAAM,UAAU,GAAG,CAAC,GAAwB,EAAQ,EAAE;QACpD,MAAM,GAAG,GAAG,QAAkC,CAAA;QAC9C,IAAI,OAAO,GAAG,CAAC,mBAAmB,KAAK,UAAU,EAAE,CAAC;YAClD,KAAK,GAAG,EAAE,CAAA;YACV,OAAM;QACR,CAAC;QACD,MAAM,EAAE,GAAG,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;QACvC,8FAA8F;QAC9F,0FAA0F;QAC1F,6FAA6F;QAC7F,yFAAyF;QACzF,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,kBAAkB,CAAC;YAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACnF,CAAC,CAAA;IAED,qFAAqF;IACrF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAmB,EAAE;QACnD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC1C,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAA;IACvE,CAAC,CAAA;IAED,mGAAmG;IACnG,oGAAoG;IACpG,uGAAuG;IACvG,gEAAgE;IAChE,MAAM,KAAK,GAAG,CAAC,QAAgB,EAAE,KAAiB,EAAW,EAAE;QAC7D,MAAM,GAAG,GAAG,YAAY,CAAA;QACxB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,YAAY;YAAE,OAAO,KAAK,CAAA;QACjE,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QACxC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7F,OAAO,KAAK,CAAA;QACd,GAAG,CAAC,KAAK,GAAG,SAAS,CAAA;QACrB,GAAG,CAAC,IAAI,CAAC;YACP,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAM;gBACnC,GAAG,CAAC,KAAK,GAAG,YAAY,CAAA;gBACxB,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;gBACvE,KAAK,EAAE,CAAA;YACT,CAAC;YACD,KAAK,EAAE,GAAG,EAAE;gBACV,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAM;gBACnC,GAAG,CAAC,KAAK,GAAG,WAAW,CAAA;gBACvB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACxB,CAAC;SACF,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,oGAAoG;IACpG,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,MAAM,GAAG,GAAG,YAAY,CAAA;QACxB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;YACpD,GAAG,CAAC,KAAK,GAAG,WAAW,CAAA;YACvB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACxB,CAAC;IACH,CAAC,CAAA;IAED,kGAAkG;IAClG,kGAAkG;IAClG,qDAAqD;IACrD,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAc,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC1C,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAA;YACtE,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAA;YAC/C,OAAO,GAAG,CAAA;QACZ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,GAAQ,EAAE,IAAwB,EAAE,KAAe,EAAQ,EAAE;QACzF,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAA;QAC3C,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,EAAE,CAAA;YACR,QAAQ,CAAC,IAAI,CAAC,CAAA;YACd,OAAM;QACR,CAAC;QACD,4FAA4F;QAC5F,+FAA+F;QAC/F,yCAAyC;QACzC,MAAM,UAAU,GACd,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;QACxF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,oGAAoG;YACpG,6FAA6F;YAC7F,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;YAC1C,aAAa,GAAG,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;QAChF,CAAC;aAAM,CAAC;YACN,mGAAmG;YACnG,mGAAmG;YACnG,OAAO,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YACvF,KAAK,IAAI,CAAC,CAAA;YACV,UAAU,CAAC,UAAU,GAAG,KAAK,CAAA;YAC7B,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;YACvC,aAAa,GAAG,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;QAChF,CAAC;QACD,IAAI,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAA;QAC3C,8FAA8F;QAC9F,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxE,MAAM,EAAE,CAAA;IACV,CAAC,CAAA;IAED,MAAM,EAAE,GAAG,CAAC,IAAY,EAAE,IAAwB,EAAE,KAAe,EAAQ,EAAE;QAC3E,qGAAqG;QACrG,oGAAoG;QACpG,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,MAAM,EAAE,CAAA;YACR,OAAM;QACR,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,OAAM;QAC7D,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAChC,CAAC,CAAA;IAED,oGAAoG;IACpG,qGAAqG;IACrG,uGAAuG;IACvG,uGAAuG;IACvG,yEAAyE;IACzE,MAAM,QAAQ,GAAoB,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE;QACnD,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YACd,OAAM;QACR,CAAC;QACD,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;IAC9E,CAAC,CAAA;IACD,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IAE5B,uGAAuG;IACvG,sGAAsG;IACtG,8EAA8E;IAC9E,MAAM,UAAU,GAAsB;QACpC,QAAQ,CAAC,WAAW,EAAE,QAAQ;YAC5B,MAAM,GAAG,GAAiB,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;YAC7E,YAAY,GAAG,GAAG,CAAA;YAClB,OAAO,GAAG,EAAE;gBACV,IAAI,YAAY,KAAK,GAAG;oBAAE,YAAY,GAAG,SAAS,CAAA;YACpD,CAAC,CAAA;QACH,CAAC;KACF,CAAA;IACD,oBAAoB,CAAC,UAAU,CAAC,CAAA;IAEhC,+FAA+F;IAC/F,+FAA+F;IAC/F,MAAM,SAAS,GAAG,CAAC,MAA0B,EAAiB,EAAE;QAC9D,MAAM,MAAM,GAAG,MAAM,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACrE,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAChC,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO,IAAI,CAAA;QAClE,IAAI,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAA;QAChD,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAA;QAC9E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QAC/C,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QACpD,kGAAkG;QAClG,kGAAkG;QAClG,mGAAmG;QACnG,wEAAwE;QACxE,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE;YACzF,OAAO,IAAI,CAAA;QACb,kGAAkG;QAClG,OAAO,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAA;IAC7C,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAQ,EAAE;QAC1C,8FAA8F;QAC9F,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QACxD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM;YAAE,OAAM;QAC5E,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACpC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAM;QACzB,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAClB,CAAC,CAAA;IAED,mFAAmF;IACnF,MAAM,UAAU,GAAG,CAAC,KAAY,EAAQ,EAAE;QACxC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACpC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAM;QACzB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC1C,KAAK,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA,CAAC,4CAA4C;IAC9F,CAAC,CAAA;IAED,wGAAwG;IACxG,yGAAyG;IACzG,yGAAyG;IACzG,uGAAuG;IACvG,2DAA2D;IAC3D,MAAM,UAAU,GAAG,GAAS,EAAE;QAC5B,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,GAAG,KAAK,CAAA;YACjB,OAAM;QACR,CAAC;QACD,MAAM,QAAQ,GAAI,OAAO,CAAC,KAAwC,EAAE,UAAU,IAAI,CAAC,CAAA;QACnF,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QACxE,MAAM,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAA;QAC9B,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACzC,SAAS,GAAG,IAAI,CAAA;YAChB,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;YAClB,OAAM;QACR,CAAC;QACD,KAAK,GAAG,QAAQ,CAAA;QAChB,IAAI,GAAG,IAAI,CAAA;QACX,aAAa,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAA;QAChD,UAAU,CAAC,GAAG,EAAE,CACd,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAC9F,CAAA;QACD,MAAM,EAAE,CAAA;IACV,CAAC,CAAA;IAED,qGAAqG;IACrG,uGAAuG;IACvG,uGAAuG;IACvG,mGAAmG;IACnG,MAAM,cAAc,GAAG,CAAC,KAAwB,EAAQ,EAAE;QACxD,MAAM,GAAG,GAAG,YAAY,CAAA;QACxB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,YAAY;YAAE,OAAM;QAC3D,oGAAoG;QACpG,oGAAoG;QACpG,IACE,GAAG,CAAC,KAAK,KAAK,WAAW;YACzB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAEvF,OAAM;QACR,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,KAAK,CAAC,WAAW,GAAG,EAAE,CAAA;IACxB,CAAC,CAAA;IAED,oGAAoG;IACpG,oGAAoG;IACpG,iCAAiC;IACjC,MAAM,aAAa,GAAG,GAAS,EAAE;QAC/B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,IAAI,aAAa,KAAK,IAAI;YAAE,OAAM;QAC/D,MAAM,MAAM,GAAG,aAAa,CAAA;QAC5B,aAAa,GAAG,IAAI,CAAA;QACpB,qBAAqB,CAAC,GAAG,EAAE;YACzB,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;gBACrB,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBAClC,IAAI,EAAE,KAAK,IAAI;oBAAE,EAAE,CAAC,cAAc,EAAE,CAAA;;oBAC/B,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,mDAAmD;YAChF,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;IAEnD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC3C,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;IACpD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAChD,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAC/C,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;IACvD,OAAO,GAAG,EAAE;QACV,WAAW,EAAE,CAAA;QACb,kBAAkB,CAAC,SAAS,CAAC,CAAA,CAAC,mDAAmD;QACjF,oBAAoB,CAAC,SAAS,CAAC,CAAA,CAAC,oDAAoD;QACpF,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC9C,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;QACvD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QACnD,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QAClD,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;IAC5D,CAAC,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAU;IAClC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IACzD,qGAAqG;IACrG,uGAAuG;IACvG,sGAAsG;IACtG,qGAAqG;IACrG,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAA;IACrC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;IAC5C,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;QAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;;QAClD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IACvC,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;QAAE,EAAE,CAAC,MAAM,EAAE,CAAA;IAC5E,oGAAoG;IACpG,mGAAmG;IACnG,4EAA4E;IAC5E,MAAM,GAAG,GAAG,CAAC,GAAoB,EAAE,KAAuB,EAAQ,EAAE;QAClE,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACjD,IAAI,OAAO,KAAK,IAAI;YAAE,OAAM;QAC5B,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QACtC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACpC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QACpD,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;QACjC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IAC/B,CAAC,CAAA;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;QAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAC/C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;QAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAC/C,uGAAuG;IACvG,uGAAuG;IACvG,wGAAwG;IACxG,wGAAwG;IACxG,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,qBAAqB,CAAA;QAC5C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,SAAS,CAAC,uEAAuE,CAAC,CAAA;QAC9F,CAAC;QACD,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAC3C,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC7B,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,OAAO,CAAA;QAC1B,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;QACjC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IAC/B,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC/C,MAAM,IAAI,SAAS,CAAC,qEAAqE,CAAC,CAAA;QAC5F,CAAC;QACD,iGAAiG;QACjG,2FAA2F;QAC3F,yFAAyF;QACzF,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,SAAS,CACjB,kDAAkD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAC3E,CAAA;QACH,CAAC;QACD,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAC3C,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;QAC/B,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;QACjC,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,OAAO,CAAA;QAC1B,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;QACjC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IAC/B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAoB;IAC/C,MAAM,QAAQ,GAAG,CAAC,KAAkB,EAAQ,EAAE;QAC5C,IAAI,KAAK,CAAC,gBAAgB;YAAE,OAAM;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAA;QACzB,IAAI,CAAC,CAAC,IAAI,YAAY,eAAe,CAAC;YAAE,OAAM;QAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM;YAAE,OAAM,CAAC,4BAA4B;QAC7E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,CAAC,kDAAkD;QACnF,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YAAE,OAAM;QAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI;YAAE,OAAM,CAAC,mCAAmC;QACnF,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,gGAAgG;QAChG,2FAA2F;QAC3F,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,OAAO,CAAA;QAC3D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACtF,IAAI,CAAC,MAAM,EAAE,CAAA,CAAC,qDAAqD;QACrE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IACD,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC7C,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAA;IACnC,IAAI,EAAE,CAAC,YAAY,CAAC,qBAAqB,CAAC;QAAE,OAAM;IAClD,EAAE,CAAC,YAAY,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAA;IAC1C,QAAQ,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAA;AACrD,CAAC"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/conformance.d.ts
CHANGED
|
@@ -34,9 +34,10 @@ export declare class RenderAdapterConformanceError extends Error {
|
|
|
34
34
|
* Execute the observable {@link RenderAdapter} interface against a framework-specific fixture.
|
|
35
35
|
*
|
|
36
36
|
* The promise resolves only when the adapter proves all shared invariants: page props reach a
|
|
37
|
-
* page-only render, streams contain byte chunks, layout chains nest outermost-first,
|
|
38
|
-
* buffered rendering is byte-for-byte
|
|
39
|
-
* and hydration-head output is a stable
|
|
37
|
+
* page-only render, streams contain byte chunks, layout chains nest outermost-first, a leaf that
|
|
38
|
+
* renders nothing leaves its layouts standing, optional buffered rendering is byte-for-byte
|
|
39
|
+
* hydration-equivalent to streaming for non-deferred content, and hydration-head output is a stable
|
|
40
|
+
* string. It rejects with
|
|
40
41
|
* {@link RenderAdapterConformanceError} naming the first failed check.
|
|
41
42
|
*
|
|
42
43
|
* Framework semantics outside the interface-Suspense scheduling, compiler plugins, DOM hydration,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAElE,kGAAkG;AAClG,MAAM,WAAW,+BAA+B;IAC9C,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAC7B,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAC7B,4FAA4F;IAC5F,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAMD,6EAA6E;AAC7E,qBAAa,6BAA8B,SAAQ,KAAK;IAEpD,QAAQ,CAAC,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO;CAKlB;AA2CD
|
|
1
|
+
{"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAElE,kGAAkG;AAClG,MAAM,WAAW,+BAA+B;IAC9C,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAC7B,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAC7B,4FAA4F;IAC5F,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAMD,6EAA6E;AAC7E,qBAAa,6BAA8B,SAAQ,KAAK;IAEpD,QAAQ,CAAC,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO;CAKlB;AA2CD;;;;;;;;;;;;GAYG;AACH,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,IAAI,CAAC,CA8Ef"}
|
package/dist/conformance.js
CHANGED
|
@@ -55,9 +55,10 @@ const readHtml = async (render, check) => {
|
|
|
55
55
|
* Execute the observable {@link RenderAdapter} interface against a framework-specific fixture.
|
|
56
56
|
*
|
|
57
57
|
* The promise resolves only when the adapter proves all shared invariants: page props reach a
|
|
58
|
-
* page-only render, streams contain byte chunks, layout chains nest outermost-first,
|
|
59
|
-
* buffered rendering is byte-for-byte
|
|
60
|
-
* and hydration-head output is a stable
|
|
58
|
+
* page-only render, streams contain byte chunks, layout chains nest outermost-first, a leaf that
|
|
59
|
+
* renders nothing leaves its layouts standing, optional buffered rendering is byte-for-byte
|
|
60
|
+
* hydration-equivalent to streaming for non-deferred content, and hydration-head output is a stable
|
|
61
|
+
* string. It rejects with
|
|
61
62
|
* {@link RenderAdapterConformanceError} naming the first failed check.
|
|
62
63
|
*
|
|
63
64
|
* Framework semantics outside the interface-Suspense scheduling, compiler plugins, DOM hydration,
|
|
@@ -86,6 +87,14 @@ export async function assertRenderAdapterConformance(adapter, fixture) {
|
|
|
86
87
|
if (!(outerAt < innerAt && innerAt < pageAt)) {
|
|
87
88
|
fail("layout order", "expected outer layout → inner layout → page source order");
|
|
88
89
|
}
|
|
90
|
+
// The page slot of an `ssr = false` route with no `HydrateFallback`: a plain function returning
|
|
91
|
+
// `null`, in every framework. The layouts must render around it and the slot must be empty.
|
|
92
|
+
const emptyHtml = await readHtml(() => adapter.renderToStream([outerLayout, innerLayout, () => null], props), "empty leaf");
|
|
93
|
+
contains(emptyHtml, markers.outer, "empty leaf");
|
|
94
|
+
contains(emptyHtml, markers.inner, "empty leaf");
|
|
95
|
+
if (emptyHtml.includes(markers.page)) {
|
|
96
|
+
fail("empty leaf", "a leaf that renders nothing must leave the page slot empty");
|
|
97
|
+
}
|
|
89
98
|
if (adapter.renderToString !== undefined) {
|
|
90
99
|
let buffered;
|
|
91
100
|
try {
|
package/dist/conformance.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conformance.js","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AA6BA,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,OAAe,EAAE,KAAe,EAAS,EAAE;IACtE,MAAM,IAAI,6BAA6B,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;AAChE,CAAC,CAAA;AAED,6EAA6E;AAC7E,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IAE3C;IADX,YACW,KAAa,EACtB,OAAe,EACf,KAAe;QAEf,KAAK,CAAC,qCAAqC,KAAK,MAAM,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAJlE,UAAK,GAAL,KAAK,CAAQ;QAKtB,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAA;IAC7C,CAAC;CACF;AAED,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,KAAa,EAAQ,EAAE;IACrE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,IAAI,CAAC,KAAK,EAAE,4BAA4B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAC/F,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,KAAK,EACpB,MAAyD,EACzD,KAAa,EACI,EAAE;IACnB,IAAI,MAA8C,CAAA;IAClD,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,MAAM,EAAE,CAAA;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,EAAE,mDAAmD,EAAE,KAAK,CAAC,CAAA;IACzE,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,YAAY,cAAc,CAAC,EAAE,CAAC;QAChE,IAAI,CAAC,KAAK,EAAE,iDAAiD,CAAC,CAAA;IAChE,CAAC;IAED,MAAM,MAAM,GAAI,MAAqC,CAAC,SAAS,EAAE,CAAA;IACjE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;IACjC,IAAI,IAAI,GAAG,EAAE,CAAA;IACb,IAAI,CAAC;QACH,SAAS,CAAC;YACR,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YAC3C,IAAI,IAAI;gBAAE,MAAK;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;gBACnC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAA;gBACrB,IAAI,CAAC,KAAK,EAAE,yCAAyC,CAAC,CAAA;YACxD,CAAC;YACD,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACjD,CAAC;QACD,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAA;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,6BAA6B;YAAE,MAAM,KAAK,CAAA;QAC/D,OAAO,IAAI,CAAC,KAAK,EAAE,0CAA0C,EAAE,KAAK,CAAC,CAAA;IACvE,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,WAAW,EAAE,CAAA;IACtB,CAAC;AACH,CAAC,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"conformance.js","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"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"}
|
package/dist/csp.d.ts
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { type NonceResolver } from "./nonce.js";
|
|
2
|
+
import type { RenderAdapter } from "./render-seam.js";
|
|
3
|
+
/** What {@link CreateCspPolicyOptions.header} receives for one document. */
|
|
4
|
+
export interface CspHeaderContext {
|
|
5
|
+
/**
|
|
6
|
+
* The `script-src` sources this document needs, space-separated: a `'sha256-…'` hash for each
|
|
7
|
+
* constant inline script nifra writes, plus `'nonce-…'` when the document carries a script that is
|
|
8
|
+
* specific to this request. External scripts (the client entry, route chunks, islands) are not
|
|
9
|
+
* listed: allow their origin, usually `'self'`.
|
|
10
|
+
*/
|
|
11
|
+
readonly sources: string;
|
|
12
|
+
/** The nonce, when this document carries one. Such a document is `private, no-store`. */
|
|
13
|
+
readonly nonce?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface CreateCspPolicyOptions {
|
|
16
|
+
/**
|
|
17
|
+
* Build the complete Content-Security-Policy value for one document, or `undefined` to send none:
|
|
18
|
+
*
|
|
19
|
+
* ```ts
|
|
20
|
+
* header: ({ sources }) => `default-src 'self'; script-src 'self' ${sources}; object-src 'none'`
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
readonly header: (context: CspHeaderContext) => string | undefined;
|
|
24
|
+
/** Generate the nonce for a document that needs one. Default: 122 random bits, CSP base64-safe. */
|
|
25
|
+
readonly generate?: () => string;
|
|
26
|
+
}
|
|
27
|
+
declare const CSP_POLICY: unique symbol;
|
|
28
|
+
/** How a `createWebApp` app's documents meet a CSP: `"nonce"` (every document carries one, so none is
|
|
29
|
+
* cacheable) or `"hash"` (a {@link CspPolicy}). Read by wrappers that cache documents. */
|
|
30
|
+
export declare const DOCUMENT_POLICY: unique symbol;
|
|
31
|
+
/** The hash sources for one adapter, and the hydration head they were computed from. */
|
|
32
|
+
interface AdapterSources {
|
|
33
|
+
readonly head: string;
|
|
34
|
+
readonly sources: string;
|
|
35
|
+
}
|
|
36
|
+
interface CspPolicyState {
|
|
37
|
+
readonly header: (context: CspHeaderContext) => string | undefined;
|
|
38
|
+
readonly generate: () => string;
|
|
39
|
+
readonly adapters: WeakMap<RenderAdapter, AdapterSources | Promise<AdapterSources>>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A hash-based Content-Security-Policy for nifra documents - see {@link createCspPolicy}. Opaque: pass
|
|
43
|
+
* it to `createWebApp({ csp })` or `renderPage({ csp })`.
|
|
44
|
+
*/
|
|
45
|
+
export interface CspPolicy {
|
|
46
|
+
readonly [CSP_POLICY]: CspPolicyState;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Create a hash-based Content-Security-Policy for nifra documents, so a page can carry a strict CSP
|
|
50
|
+
* and still be cached.
|
|
51
|
+
*
|
|
52
|
+
* A per-request nonce makes every document unique: nifra marks a nonce-bearing document
|
|
53
|
+
* `private, no-store`, so no shared cache (ISR, a CDN) may store it. Under this policy a document
|
|
54
|
+
* gets a nonce only when it carries a script specific to this request: a page that `defer()`s streams
|
|
55
|
+
* one per settled value, and `unsafeInlineScript` names the nonce. Every other document is nonce-free.
|
|
56
|
+
* Its inline scripts are the constant ones nifra writes, listed by hash, so the CSP header is the
|
|
57
|
+
* same on every request and the page stays cacheable. Page data rides in an inert JSON script, which
|
|
58
|
+
* a CSP does not govern.
|
|
59
|
+
*
|
|
60
|
+
* ```ts
|
|
61
|
+
* const csp = createCspPolicy({
|
|
62
|
+
* header: ({ sources }) => `default-src 'self'; script-src 'self' ${sources}; object-src 'none'`,
|
|
63
|
+
* })
|
|
64
|
+
* const app = createWebApp({ adapter, manifest, clientEntry, csp })
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare function createCspPolicy(options: CreateCspPolicyOptions): CspPolicy;
|
|
68
|
+
/** True for a value made by {@link createCspPolicy}. */
|
|
69
|
+
export declare const isCspPolicy: (value: unknown) => value is CspPolicy;
|
|
70
|
+
/**
|
|
71
|
+
* The `'sha256-…'` sources for the constant inline scripts nifra writes into a document rendered
|
|
72
|
+
* with `adapter`: the pre-hydration form guard and the adapter's hydration head. For a CSP set outside
|
|
73
|
+
* the app (a proxy, a CDN rule); {@link createCspPolicy} computes the same list itself.
|
|
74
|
+
*/
|
|
75
|
+
export declare function nifraScriptHashes(adapter: RenderAdapter): Promise<readonly string[]>;
|
|
76
|
+
/**
|
|
77
|
+
* Compute (once per adapter) the policy's hash sources. Returns `undefined` once they are ready, so
|
|
78
|
+
* the renderer stays synchronous after the first document.
|
|
79
|
+
*/
|
|
80
|
+
export declare function prepareCspPolicy(policy: CspPolicy, adapter: RenderAdapter): Promise<void> | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* The nonce one document carries under `policy`: `undefined` unless the document needs one -
|
|
83
|
+
* `needsNonce` (a deferred value or a head tag naming the nonce), or an adapter whose hydration head
|
|
84
|
+
* no longer matches the one the policy hashed. A needed nonce reuses the caller's, else is generated.
|
|
85
|
+
*/
|
|
86
|
+
export declare function cspDocumentNonce(policy: CspPolicy, adapter: RenderAdapter, hydrate: boolean, needsNonce: boolean, requested: string | undefined): string | undefined;
|
|
87
|
+
/** The Content-Security-Policy value for one document, or `undefined` when the policy sends none. */
|
|
88
|
+
export declare function cspHeaderValue(policy: CspPolicy, adapter: RenderAdapter, nonce: string | undefined): string | undefined;
|
|
89
|
+
/** The per-request nonce source for a page executor under `policy`: generated eagerly so `meta` can
|
|
90
|
+
* name it in `unsafeInlineScript`, and dropped by the renderer from documents that do not need it. */
|
|
91
|
+
export declare const cspNonceResolver: (policy: CspPolicy) => NonceResolver;
|
|
92
|
+
export {};
|
|
93
|
+
//# sourceMappingURL=csp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csp.d.ts","sourceRoot":"","sources":["../src/csp.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErD,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,yFAAyF;IACzF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,MAAM,GAAG,SAAS,CAAA;IAClE,mGAAmG;IACnG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAA;CACjC;AAED,QAAA,MAAM,UAAU,EAAE,OAAO,MAA0C,CAAA;AAEnE;0FAC0F;AAC1F,eAAO,MAAM,eAAe,EAAE,OAAO,MAA+C,CAAA;AAEpF,wFAAwF;AACxF,UAAU,cAAc;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,MAAM,GAAG,SAAS,CAAA;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAA;CACpF;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,cAAc,CAAA;CACtC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,CAa1E;AAED,wDAAwD;AACxD,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,SACc,CAAA;AA2BpE;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAG1F;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAc3B;AAUD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,MAAM,GAAG,SAAS,CAIpB;AAED,qGAAqG;AACrG,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,GAAG,SAAS,CAMpB;AAED;sGACsG;AACtG,eAAO,MAAM,gBAAgB,GAAI,QAAQ,SAAS,KAAG,aACmB,CAAA"}
|
package/dist/csp.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { PRE_HYDRATION_GUARD } from "./internal/runtime-contract.js";
|
|
2
|
+
import { createNonceResolver } from "./nonce.js";
|
|
3
|
+
const CSP_POLICY = Symbol.for("nifra.web.cspPolicy");
|
|
4
|
+
/** How a `createWebApp` app's documents meet a CSP: `"nonce"` (every document carries one, so none is
|
|
5
|
+
* cacheable) or `"hash"` (a {@link CspPolicy}). Read by wrappers that cache documents. */
|
|
6
|
+
export const DOCUMENT_POLICY = Symbol.for("nifra.web.documentPolicy");
|
|
7
|
+
/**
|
|
8
|
+
* Create a hash-based Content-Security-Policy for nifra documents, so a page can carry a strict CSP
|
|
9
|
+
* and still be cached.
|
|
10
|
+
*
|
|
11
|
+
* A per-request nonce makes every document unique: nifra marks a nonce-bearing document
|
|
12
|
+
* `private, no-store`, so no shared cache (ISR, a CDN) may store it. Under this policy a document
|
|
13
|
+
* gets a nonce only when it carries a script specific to this request: a page that `defer()`s streams
|
|
14
|
+
* one per settled value, and `unsafeInlineScript` names the nonce. Every other document is nonce-free.
|
|
15
|
+
* Its inline scripts are the constant ones nifra writes, listed by hash, so the CSP header is the
|
|
16
|
+
* same on every request and the page stays cacheable. Page data rides in an inert JSON script, which
|
|
17
|
+
* a CSP does not govern.
|
|
18
|
+
*
|
|
19
|
+
* ```ts
|
|
20
|
+
* const csp = createCspPolicy({
|
|
21
|
+
* header: ({ sources }) => `default-src 'self'; script-src 'self' ${sources}; object-src 'none'`,
|
|
22
|
+
* })
|
|
23
|
+
* const app = createWebApp({ adapter, manifest, clientEntry, csp })
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export function createCspPolicy(options) {
|
|
27
|
+
if (typeof options?.header !== "function") {
|
|
28
|
+
throw new TypeError("[nifra/web] createCspPolicy requires a header function");
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
[CSP_POLICY]: {
|
|
32
|
+
header: options.header,
|
|
33
|
+
// A UUID's hyphens are outside the CSP base64-value grammar; the remaining 122 random bits are
|
|
34
|
+
// plenty for a per-response nonce, on every fetch runtime.
|
|
35
|
+
generate: options.generate ?? (() => crypto.randomUUID().replaceAll("-", "")),
|
|
36
|
+
adapters: new WeakMap(),
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** True for a value made by {@link createCspPolicy}. */
|
|
41
|
+
export const isCspPolicy = (value) => typeof value === "object" && value !== null && CSP_POLICY in value;
|
|
42
|
+
// A closing tag ends at any space, slash or `>` after its name, as a browser reads it.
|
|
43
|
+
const INLINE_SCRIPT = /<script\b([^>]*)>([\s\S]*?)<\/script(?=[\s/>])[^>]*>/gi;
|
|
44
|
+
/** The bodies of the executable inline scripts in a fragment of markup (no `src`, no inert type). */
|
|
45
|
+
const inlineScriptBodies = (html) => {
|
|
46
|
+
const bodies = [];
|
|
47
|
+
for (const match of html.matchAll(INLINE_SCRIPT)) {
|
|
48
|
+
const attrs = match[1] ?? "";
|
|
49
|
+
if (/\bsrc\s*=/i.test(attrs) || /\btype\s*=\s*["']?application\/(ld\+)?json/i.test(attrs))
|
|
50
|
+
continue;
|
|
51
|
+
bodies.push(match[2] ?? "");
|
|
52
|
+
}
|
|
53
|
+
return bodies;
|
|
54
|
+
};
|
|
55
|
+
const ENCODER = new TextEncoder();
|
|
56
|
+
/** A CSP hash source for one inline script body: `'sha256-<base64 of the UTF-8 bytes>'`. */
|
|
57
|
+
async function hashSource(body) {
|
|
58
|
+
const digest = new Uint8Array(await crypto.subtle.digest("SHA-256", ENCODER.encode(body)));
|
|
59
|
+
let binary = "";
|
|
60
|
+
for (const byte of digest)
|
|
61
|
+
binary += String.fromCharCode(byte);
|
|
62
|
+
return `'sha256-${btoa(binary)}'`;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The `'sha256-…'` sources for the constant inline scripts nifra writes into a document rendered
|
|
66
|
+
* with `adapter`: the pre-hydration form guard and the adapter's hydration head. For a CSP set outside
|
|
67
|
+
* the app (a proxy, a CDN rule); {@link createCspPolicy} computes the same list itself.
|
|
68
|
+
*/
|
|
69
|
+
export async function nifraScriptHashes(adapter) {
|
|
70
|
+
const bodies = [PRE_HYDRATION_GUARD, ...inlineScriptBodies(adapter.hydrationHead())];
|
|
71
|
+
return Promise.all([...new Set(bodies)].map(hashSource));
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Compute (once per adapter) the policy's hash sources. Returns `undefined` once they are ready, so
|
|
75
|
+
* the renderer stays synchronous after the first document.
|
|
76
|
+
*/
|
|
77
|
+
export function prepareCspPolicy(policy, adapter) {
|
|
78
|
+
const state = policy[CSP_POLICY];
|
|
79
|
+
const known = state.adapters.get(adapter);
|
|
80
|
+
if (known !== undefined)
|
|
81
|
+
return known instanceof Promise ? known.then(() => undefined) : undefined;
|
|
82
|
+
const head = adapter.hydrationHead();
|
|
83
|
+
const pending = nifraScriptHashes(adapter).then((hashes) => {
|
|
84
|
+
const sources = { head, sources: hashes.join(" ") };
|
|
85
|
+
state.adapters.set(adapter, sources);
|
|
86
|
+
return sources;
|
|
87
|
+
});
|
|
88
|
+
state.adapters.set(adapter, pending);
|
|
89
|
+
// A failed digest must not pin a rejected promise: the next document retries.
|
|
90
|
+
pending.catch(() => state.adapters.delete(adapter));
|
|
91
|
+
return pending.then(() => undefined);
|
|
92
|
+
}
|
|
93
|
+
const preparedSources = (policy, adapter) => {
|
|
94
|
+
const known = policy[CSP_POLICY].adapters.get(adapter);
|
|
95
|
+
if (known === undefined || known instanceof Promise) {
|
|
96
|
+
throw new Error("[nifra/web] CSP policy used before prepareCspPolicy resolved");
|
|
97
|
+
}
|
|
98
|
+
return known;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* The nonce one document carries under `policy`: `undefined` unless the document needs one -
|
|
102
|
+
* `needsNonce` (a deferred value or a head tag naming the nonce), or an adapter whose hydration head
|
|
103
|
+
* no longer matches the one the policy hashed. A needed nonce reuses the caller's, else is generated.
|
|
104
|
+
*/
|
|
105
|
+
export function cspDocumentNonce(policy, adapter, hydrate, needsNonce, requested) {
|
|
106
|
+
const varies = hydrate && adapter.hydrationHead() !== preparedSources(policy, adapter).head;
|
|
107
|
+
if (!needsNonce && !varies)
|
|
108
|
+
return undefined;
|
|
109
|
+
return requested ?? policy[CSP_POLICY].generate();
|
|
110
|
+
}
|
|
111
|
+
/** The Content-Security-Policy value for one document, or `undefined` when the policy sends none. */
|
|
112
|
+
export function cspHeaderValue(policy, adapter, nonce) {
|
|
113
|
+
const { sources } = preparedSources(policy, adapter);
|
|
114
|
+
const state = policy[CSP_POLICY];
|
|
115
|
+
return nonce === undefined
|
|
116
|
+
? state.header({ sources })
|
|
117
|
+
: state.header({ sources: `${sources} 'nonce-${nonce}'`, nonce });
|
|
118
|
+
}
|
|
119
|
+
/** The per-request nonce source for a page executor under `policy`: generated eagerly so `meta` can
|
|
120
|
+
* name it in `unsafeInlineScript`, and dropped by the renderer from documents that do not need it. */
|
|
121
|
+
export const cspNonceResolver = (policy) => createNonceResolver({ generate: () => policy[CSP_POLICY].generate() });
|
|
122
|
+
//# sourceMappingURL=csp.js.map
|
package/dist/csp.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csp.js","sourceRoot":"","sources":["../src/csp.ts"],"names":[],"mappings":"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"}
|