@nifrajs/web 5.5.1 → 5.7.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/CHANGELOG.md +243 -0
- package/README.md +21 -11
- package/dist/boundary.d.ts +67 -7
- package/dist/boundary.d.ts.map +1 -1
- package/dist/boundary.js +6 -4
- package/dist/boundary.js.map +1 -1
- package/dist/build-plan.d.ts +3 -0
- package/dist/build-plan.d.ts.map +1 -1
- package/dist/build-plan.js.map +1 -1
- package/dist/build-vite.d.ts.map +1 -1
- package/dist/build-vite.js +2 -0
- package/dist/build-vite.js.map +1 -1
- package/dist/build.d.ts +9 -2
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +10 -0
- package/dist/build.js.map +1 -1
- package/dist/client.d.ts +3 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +174 -23
- package/dist/client.js.map +1 -1
- package/dist/csp.d.ts +8 -0
- package/dist/csp.d.ts.map +1 -1
- package/dist/csp.js +11 -2
- package/dist/csp.js.map +1 -1
- package/dist/deferred.d.ts +6 -4
- package/dist/deferred.d.ts.map +1 -1
- package/dist/deferred.js +10 -6
- package/dist/deferred.js.map +1 -1
- package/dist/dev-feed.d.ts.map +1 -1
- package/dist/dev-feed.js +11 -2
- package/dist/dev-feed.js.map +1 -1
- package/dist/dev-session.d.ts.map +1 -1
- package/dist/dev-session.js +13 -6
- package/dist/dev-session.js.map +1 -1
- package/dist/dev.d.ts +4 -1
- package/dist/dev.d.ts.map +1 -1
- package/dist/dev.js +12 -5
- package/dist/dev.js.map +1 -1
- package/dist/diagnostic-catalog.d.ts +4 -0
- package/dist/diagnostic-catalog.d.ts.map +1 -1
- package/dist/diagnostic-catalog.js +48 -0
- package/dist/diagnostic-catalog.js.map +1 -1
- package/dist/diagnostic.d.ts +1 -1
- package/dist/diagnostic.d.ts.map +1 -1
- package/dist/diagnostic.js +1 -1
- package/dist/diagnostic.js.map +1 -1
- package/dist/fn.d.ts +5 -3
- package/dist/fn.d.ts.map +1 -1
- package/dist/fn.js +20 -5
- package/dist/fn.js.map +1 -1
- package/dist/fs.d.ts.map +1 -1
- package/dist/fs.js +13 -3
- package/dist/fs.js.map +1 -1
- package/dist/identity.d.ts +22 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +60 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +8 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/internal/cdn/cloudflare.d.ts +2 -1
- package/dist/internal/cdn/cloudflare.d.ts.map +1 -1
- package/dist/internal/cdn/cloudflare.js +2 -1
- package/dist/internal/cdn/cloudflare.js.map +1 -1
- package/dist/internal/certified-components.d.ts +1 -1
- package/dist/internal/certified-components.js +1 -1
- package/dist/internal/codegen.d.ts +11 -10
- package/dist/internal/codegen.d.ts.map +1 -1
- package/dist/internal/codegen.js +73 -10
- package/dist/internal/codegen.js.map +1 -1
- package/dist/internal/dev-websocket.d.ts +73 -0
- package/dist/internal/dev-websocket.d.ts.map +1 -0
- package/dist/internal/dev-websocket.js +145 -0
- package/dist/internal/dev-websocket.js.map +1 -0
- package/dist/internal/hole-runtime.d.ts +66 -0
- package/dist/internal/hole-runtime.d.ts.map +1 -0
- package/dist/internal/hole-runtime.js +211 -0
- package/dist/internal/hole-runtime.js.map +1 -0
- package/dist/internal/identity-epoch.d.ts +50 -0
- package/dist/internal/identity-epoch.d.ts.map +1 -0
- package/dist/internal/identity-epoch.js +180 -0
- package/dist/internal/identity-epoch.js.map +1 -0
- package/dist/internal/invalidation-contract.d.ts +23 -0
- package/dist/internal/invalidation-contract.d.ts.map +1 -0
- package/dist/internal/invalidation-contract.js +11 -0
- package/dist/internal/invalidation-contract.js.map +1 -0
- package/dist/internal/invalidation.d.ts +62 -0
- package/dist/internal/invalidation.d.ts.map +1 -0
- package/dist/internal/invalidation.js +149 -0
- package/dist/internal/invalidation.js.map +1 -0
- package/dist/internal/island-bindings.d.ts +51 -0
- package/dist/internal/island-bindings.d.ts.map +1 -0
- package/dist/internal/island-bindings.js +147 -0
- package/dist/internal/island-bindings.js.map +1 -0
- package/dist/internal/island-list.d.ts +26 -0
- package/dist/internal/island-list.d.ts.map +1 -0
- package/dist/internal/island-list.js +78 -0
- package/dist/internal/island-list.js.map +1 -0
- package/dist/internal/island-mount.d.ts +4 -0
- package/dist/internal/island-mount.d.ts.map +1 -0
- package/dist/internal/island-mount.js +66 -0
- package/dist/internal/island-mount.js.map +1 -0
- package/dist/internal/island-owner.d.ts +5 -0
- package/dist/internal/island-owner.d.ts.map +1 -0
- package/dist/internal/island-owner.js +20 -0
- package/dist/internal/island-owner.js.map +1 -0
- package/dist/internal/island-resource.d.ts +30 -0
- package/dist/internal/island-resource.d.ts.map +1 -0
- package/dist/internal/island-resource.js +57 -0
- package/dist/internal/island-resource.js.map +1 -0
- package/dist/internal/island-signals.d.ts +51 -0
- package/dist/internal/island-signals.d.ts.map +1 -0
- package/dist/internal/island-signals.js +220 -0
- package/dist/internal/island-signals.js.map +1 -0
- package/dist/internal/keep-alive-table.d.ts +23 -0
- package/dist/internal/keep-alive-table.d.ts.map +1 -0
- package/dist/internal/keep-alive-table.js +53 -0
- package/dist/internal/keep-alive-table.js.map +1 -0
- package/dist/internal/live-contract.d.ts +101 -0
- package/dist/internal/live-contract.d.ts.map +1 -0
- package/dist/internal/live-contract.js +5 -0
- package/dist/internal/live-contract.js.map +1 -0
- package/dist/internal/live-queries.d.ts +22 -0
- package/dist/internal/live-queries.d.ts.map +1 -0
- package/dist/internal/live-queries.js +54 -0
- package/dist/internal/live-queries.js.map +1 -0
- package/dist/internal/page-events.d.ts +10 -0
- package/dist/internal/page-events.d.ts.map +1 -0
- package/dist/internal/page-events.js +26 -0
- package/dist/internal/page-events.js.map +1 -0
- package/dist/internal/page-execution.d.ts +16 -1
- package/dist/internal/page-execution.d.ts.map +1 -1
- package/dist/internal/page-execution.js +432 -31
- package/dist/internal/page-execution.js.map +1 -1
- package/dist/internal/parity.d.ts +3 -0
- package/dist/internal/parity.d.ts.map +1 -1
- package/dist/internal/parity.js +28 -5
- package/dist/internal/parity.js.map +1 -1
- package/dist/internal/ppr/admission.d.ts +83 -0
- package/dist/internal/ppr/admission.d.ts.map +1 -0
- package/dist/internal/ppr/admission.js +221 -0
- package/dist/internal/ppr/admission.js.map +1 -0
- package/dist/internal/ppr/canary.d.ts +24 -0
- package/dist/internal/ppr/canary.d.ts.map +1 -0
- package/dist/internal/ppr/canary.js +102 -0
- package/dist/internal/ppr/canary.js.map +1 -0
- package/dist/internal/ppr/compile-shell.d.ts +39 -0
- package/dist/internal/ppr/compile-shell.d.ts.map +1 -0
- package/dist/internal/ppr/compile-shell.js +298 -0
- package/dist/internal/ppr/compile-shell.js.map +1 -0
- package/dist/internal/ppr/contract.d.ts +177 -0
- package/dist/internal/ppr/contract.d.ts.map +1 -0
- package/dist/internal/ppr/contract.js +80 -0
- package/dist/internal/ppr/contract.js.map +1 -0
- package/dist/internal/ppr/frames.d.ts +71 -0
- package/dist/internal/ppr/frames.d.ts.map +1 -0
- package/dist/internal/ppr/frames.js +119 -0
- package/dist/internal/ppr/frames.js.map +1 -0
- package/dist/internal/ppr/integration.d.ts +19 -0
- package/dist/internal/ppr/integration.d.ts.map +1 -0
- package/dist/internal/ppr/integration.js +106 -0
- package/dist/internal/ppr/integration.js.map +1 -0
- package/dist/internal/ppr/options.d.ts +96 -0
- package/dist/internal/ppr/options.d.ts.map +1 -0
- package/dist/internal/ppr/options.js +125 -0
- package/dist/internal/ppr/options.js.map +1 -0
- package/dist/internal/ppr/route-rules.d.ts +12 -0
- package/dist/internal/ppr/route-rules.d.ts.map +1 -0
- package/dist/internal/ppr/route-rules.js +53 -0
- package/dist/internal/ppr/route-rules.js.map +1 -0
- package/dist/internal/ppr/runtime.d.ts +29 -0
- package/dist/internal/ppr/runtime.d.ts.map +1 -0
- package/dist/internal/ppr/runtime.js +35 -0
- package/dist/internal/ppr/runtime.js.map +1 -0
- package/dist/internal/ppr/server.d.ts +29 -0
- package/dist/internal/ppr/server.d.ts.map +1 -0
- package/dist/internal/ppr/server.js +1409 -0
- package/dist/internal/ppr/server.js.map +1 -0
- package/dist/internal/ppr/shell-store.d.ts +39 -0
- package/dist/internal/ppr/shell-store.d.ts.map +1 -0
- package/dist/internal/ppr/shell-store.js +106 -0
- package/dist/internal/ppr/shell-store.js.map +1 -0
- package/dist/internal/prerendered-pages.d.ts +1 -1
- package/dist/internal/prerendered-pages.d.ts.map +1 -1
- package/dist/internal/prerendered-pages.js +7 -4
- package/dist/internal/prerendered-pages.js.map +1 -1
- package/dist/internal/present.d.ts +11 -0
- package/dist/internal/present.d.ts.map +1 -0
- package/dist/internal/present.js +13 -0
- package/dist/internal/present.js.map +1 -0
- package/dist/internal/query-digest.d.ts +9 -0
- package/dist/internal/query-digest.d.ts.map +1 -0
- package/dist/internal/query-digest.js +23 -0
- package/dist/internal/query-digest.js.map +1 -0
- package/dist/internal/query-runtime.d.ts +6 -1
- package/dist/internal/query-runtime.d.ts.map +1 -1
- package/dist/internal/query-runtime.js +9 -0
- package/dist/internal/query-runtime.js.map +1 -1
- package/dist/internal/query-seam.d.ts +29 -0
- package/dist/internal/query-seam.d.ts.map +1 -0
- package/dist/internal/query-seam.js +23 -0
- package/dist/internal/query-seam.js.map +1 -0
- package/dist/internal/render-document.d.ts +34 -64
- package/dist/internal/render-document.d.ts.map +1 -1
- package/dist/internal/render-document.js +82 -64
- package/dist/internal/render-document.js.map +1 -1
- package/dist/internal/request-abort.d.ts +8 -0
- package/dist/internal/request-abort.d.ts.map +1 -0
- package/dist/internal/request-abort.js +22 -0
- package/dist/internal/request-abort.js.map +1 -0
- package/dist/internal/server-boundary.d.ts +2 -0
- package/dist/internal/server-boundary.d.ts.map +1 -1
- package/dist/internal/server-boundary.js +8 -1
- package/dist/internal/server-boundary.js.map +1 -1
- package/dist/internal/share-data.d.ts +10 -0
- package/dist/internal/share-data.d.ts.map +1 -0
- package/dist/internal/share-data.js +135 -0
- package/dist/internal/share-data.js.map +1 -0
- package/dist/internal/status-page.d.ts +68 -0
- package/dist/internal/status-page.d.ts.map +1 -0
- package/dist/internal/status-page.js +66 -0
- package/dist/internal/status-page.js.map +1 -0
- package/dist/internal/store-signature.d.ts +15 -0
- package/dist/internal/store-signature.d.ts.map +1 -0
- package/dist/internal/store-signature.js +114 -0
- package/dist/internal/store-signature.js.map +1 -0
- package/dist/internal/vite-plugin-compat.d.ts +2 -2
- package/dist/internal/vite-plugin-compat.js +2 -2
- package/dist/internal/web-app.d.ts +26 -0
- package/dist/internal/web-app.d.ts.map +1 -1
- package/dist/internal/web-app.js +79 -3
- package/dist/internal/web-app.js.map +1 -1
- package/dist/islands-swap.d.ts +41 -0
- package/dist/islands-swap.d.ts.map +1 -0
- package/dist/islands-swap.js +270 -0
- package/dist/islands-swap.js.map +1 -0
- package/dist/islands.d.ts +86 -24
- package/dist/islands.d.ts.map +1 -1
- package/dist/islands.js +138 -78
- package/dist/islands.js.map +1 -1
- package/dist/isr.d.ts +67 -13
- package/dist/isr.d.ts.map +1 -1
- package/dist/isr.js +247 -99
- package/dist/isr.js.map +1 -1
- package/dist/keep-alive.d.ts +147 -0
- package/dist/keep-alive.d.ts.map +1 -0
- package/dist/keep-alive.js +1102 -0
- package/dist/keep-alive.js.map +1 -0
- package/dist/live/bus.d.ts +70 -0
- package/dist/live/bus.d.ts.map +1 -0
- package/dist/live/bus.js +55 -0
- package/dist/live/bus.js.map +1 -0
- package/dist/live/core.d.ts +25 -0
- package/dist/live/core.d.ts.map +1 -0
- package/dist/live/core.js +29 -0
- package/dist/live/core.js.map +1 -0
- package/dist/live/history.d.ts +38 -0
- package/dist/live/history.d.ts.map +1 -0
- package/dist/live/history.js +104 -0
- package/dist/live/history.js.map +1 -0
- package/dist/live/hub-protocol.d.ts +46 -0
- package/dist/live/hub-protocol.d.ts.map +1 -0
- package/dist/live/hub-protocol.js +108 -0
- package/dist/live/hub-protocol.js.map +1 -0
- package/dist/live/hub.d.ts +185 -0
- package/dist/live/hub.d.ts.map +1 -0
- package/dist/live/hub.js +544 -0
- package/dist/live/hub.js.map +1 -0
- package/dist/live/keyring.d.ts +92 -0
- package/dist/live/keyring.d.ts.map +1 -0
- package/dist/live/keyring.js +265 -0
- package/dist/live/keyring.js.map +1 -0
- package/dist/live/read-capped.d.ts +6 -0
- package/dist/live/read-capped.d.ts.map +1 -0
- package/dist/live/read-capped.js +42 -0
- package/dist/live/read-capped.js.map +1 -0
- package/dist/live/revocations.d.ts +52 -0
- package/dist/live/revocations.d.ts.map +1 -0
- package/dist/live/revocations.js +116 -0
- package/dist/live/revocations.js.map +1 -0
- package/dist/live/settings.d.ts +14 -0
- package/dist/live/settings.d.ts.map +1 -0
- package/dist/live/settings.js +38 -0
- package/dist/live/settings.js.map +1 -0
- package/dist/live-client.d.ts +34 -0
- package/dist/live-client.d.ts.map +1 -0
- package/dist/live-client.js +878 -0
- package/dist/live-client.js.map +1 -0
- package/dist/live-hub.d.ts +130 -0
- package/dist/live-hub.d.ts.map +1 -0
- package/dist/live-hub.js +507 -0
- package/dist/live-hub.js.map +1 -0
- package/dist/live-redis.d.ts +60 -0
- package/dist/live-redis.d.ts.map +1 -0
- package/dist/live-redis.js +212 -0
- package/dist/live-redis.js.map +1 -0
- package/dist/live.d.ts +150 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +972 -0
- package/dist/live.js.map +1 -0
- package/dist/manifest.d.ts +113 -2
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +109 -5
- package/dist/manifest.js.map +1 -1
- package/dist/navigation.d.ts +9 -3
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +13 -3
- package/dist/navigation.js.map +1 -1
- package/dist/plugins/vite-zone-guard.d.ts +6 -0
- package/dist/plugins/vite-zone-guard.d.ts.map +1 -1
- package/dist/plugins/vite-zone-guard.js +8 -2
- package/dist/plugins/vite-zone-guard.js.map +1 -1
- package/dist/ppr.d.ts +73 -0
- package/dist/ppr.d.ts.map +1 -0
- package/dist/ppr.js +76 -0
- package/dist/ppr.js.map +1 -0
- package/dist/query.d.ts +8 -13
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +112 -18
- package/dist/query.js.map +1 -1
- package/dist/render-seam.d.ts +32 -0
- package/dist/render-seam.d.ts.map +1 -1
- package/dist/render-seam.js +7 -0
- package/dist/render-seam.js.map +1 -1
- package/dist/route-types.d.ts.map +1 -1
- package/dist/route-types.js +2 -2
- package/dist/route-types.js.map +1 -1
- package/dist/router.d.ts +72 -4
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +416 -129
- package/dist/router.js.map +1 -1
- package/dist/server-components/build.d.ts.map +1 -1
- package/dist/server-components/build.js +3 -3
- package/dist/server-components/build.js.map +1 -1
- package/dist/server-components/client.d.ts +23 -1
- package/dist/server-components/client.d.ts.map +1 -1
- package/dist/server-components/client.js +92 -5
- package/dist/server-components/client.js.map +1 -1
- package/dist/server-components/definition.d.ts.map +1 -1
- package/dist/server-components/definition.js +2 -1
- package/dist/server-components/definition.js.map +1 -1
- package/dist/server-components/hole.d.ts +8 -0
- package/dist/server-components/hole.d.ts.map +1 -0
- package/dist/server-components/hole.js +20 -0
- package/dist/server-components/hole.js.map +1 -0
- package/dist/server-components/html-policy.d.ts.map +1 -1
- package/dist/server-components/html-policy.js +62 -4
- package/dist/server-components/html-policy.js.map +1 -1
- package/dist/server-components/html-scan.d.ts +17 -0
- package/dist/server-components/html-scan.d.ts.map +1 -0
- package/dist/server-components/html-scan.js +180 -0
- package/dist/server-components/html-scan.js.map +1 -0
- package/dist/server-components/html.d.ts.map +1 -1
- package/dist/server-components/html.js +19 -4
- package/dist/server-components/html.js.map +1 -1
- package/dist/server-components/router-integration.d.ts +4 -1
- package/dist/server-components/router-integration.d.ts.map +1 -1
- package/dist/server-components/router-integration.js +23 -2
- package/dist/server-components/router-integration.js.map +1 -1
- package/dist/server-components/runtime.d.ts +6 -1
- package/dist/server-components/runtime.d.ts.map +1 -1
- package/dist/server-components/runtime.js +88 -29
- package/dist/server-components/runtime.js.map +1 -1
- package/dist/server-components/state.d.ts +3 -1
- package/dist/server-components/state.d.ts.map +1 -1
- package/dist/server-components/state.js +50 -38
- package/dist/server-components/state.js.map +1 -1
- package/dist/server-components/types.d.ts +9 -0
- package/dist/server-components/types.d.ts.map +1 -1
- package/dist/server-components/vite.d.ts.map +1 -1
- package/dist/server-components/vite.js +26 -9
- package/dist/server-components/vite.js.map +1 -1
- package/dist/vite.d.ts +5 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +58 -4
- package/dist/vite.js.map +1 -1
- package/package.json +48 -8
- package/src/boundary.ts +77 -5
- package/src/build-plan.ts +3 -0
- package/src/build-vite.ts +2 -0
- package/src/build.ts +20 -1
- package/src/client.ts +183 -23
- package/src/csp.ts +16 -2
- package/src/deferred.ts +11 -5
- package/src/dev-feed.ts +11 -2
- package/src/dev-session.ts +22 -11
- package/src/dev.ts +29 -8
- package/src/diagnostic-catalog.ts +53 -0
- package/src/diagnostic.ts +1 -0
- package/src/fn.ts +24 -7
- package/src/fs.ts +22 -8
- package/src/identity.ts +61 -0
- package/src/index.ts +20 -4
- package/src/internal/cdn/cloudflare.ts +2 -1
- package/src/internal/certified-components.ts +1 -1
- package/src/internal/codegen.ts +95 -9
- package/src/internal/dev-websocket.ts +230 -0
- package/src/internal/hole-runtime.ts +286 -0
- package/src/internal/identity-epoch.ts +239 -0
- package/src/internal/invalidation-contract.ts +35 -0
- package/src/internal/invalidation.ts +213 -0
- package/src/internal/island-bindings.ts +191 -0
- package/src/internal/island-list.ts +92 -0
- package/src/internal/island-mount.ts +68 -0
- package/src/internal/island-owner.ts +20 -0
- package/src/internal/island-resource.ts +76 -0
- package/src/internal/island-signals.ts +249 -0
- package/src/internal/keep-alive-table.ts +72 -0
- package/src/internal/live-contract.ts +111 -0
- package/src/internal/live-queries.ts +60 -0
- package/src/internal/page-events.ts +27 -0
- package/src/internal/page-execution.ts +605 -45
- package/src/internal/parity.ts +35 -6
- package/src/internal/ppr/admission.ts +300 -0
- package/src/internal/ppr/canary.ts +122 -0
- package/src/internal/ppr/compile-shell.ts +379 -0
- package/src/internal/ppr/contract.ts +265 -0
- package/src/internal/ppr/frames.ts +170 -0
- package/src/internal/ppr/integration.ts +137 -0
- package/src/internal/ppr/options.ts +221 -0
- package/src/internal/ppr/route-rules.ts +77 -0
- package/src/internal/ppr/runtime.ts +39 -0
- package/src/internal/ppr/server.ts +1766 -0
- package/src/internal/ppr/shell-store.ts +152 -0
- package/src/internal/prerendered-pages.ts +7 -4
- package/src/internal/present.ts +20 -0
- package/src/internal/query-digest.ts +34 -0
- package/src/internal/query-runtime.ts +14 -1
- package/src/internal/query-seam.ts +48 -0
- package/src/internal/render-document.ts +158 -113
- package/src/internal/request-abort.ts +26 -0
- package/src/internal/server-boundary.ts +10 -1
- package/src/internal/share-data.ts +136 -0
- package/src/internal/status-page.ts +95 -0
- package/src/internal/store-signature.ts +149 -0
- package/src/internal/vite-plugin-compat.ts +2 -2
- package/src/internal/web-app.ts +123 -3
- package/src/islands-swap.ts +283 -0
- package/src/islands.ts +169 -72
- package/src/isr.ts +348 -106
- package/src/keep-alive.ts +1354 -0
- package/src/live/bus.ts +104 -0
- package/src/live/core.ts +52 -0
- package/src/live/history.ts +109 -0
- package/src/live/hub-protocol.ts +133 -0
- package/src/live/hub.ts +620 -0
- package/src/live/keyring.ts +384 -0
- package/src/live/read-capped.ts +36 -0
- package/src/live/revocations.ts +155 -0
- package/src/live/settings.ts +46 -0
- package/src/live-client.ts +1011 -0
- package/src/live-hub.ts +658 -0
- package/src/live-redis.ts +284 -0
- package/src/live.ts +1257 -0
- package/src/manifest.ts +274 -6
- package/src/navigation.ts +14 -2
- package/src/plugins/vite-zone-guard.ts +15 -2
- package/src/ppr.ts +153 -0
- package/src/query.ts +147 -20
- package/src/render-seam.ts +37 -0
- package/src/route-types.ts +3 -1
- package/src/router.ts +534 -132
- package/src/server-components/build.ts +9 -3
- package/src/server-components/client.ts +89 -5
- package/src/server-components/definition.ts +2 -1
- package/src/server-components/hole.ts +23 -0
- package/src/server-components/html-policy.ts +63 -4
- package/src/server-components/html-scan.ts +159 -0
- package/src/server-components/html.ts +18 -4
- package/src/server-components/router-integration.ts +21 -2
- package/src/server-components/runtime.ts +114 -31
- package/src/server-components/state.ts +66 -44
- package/src/server-components/types.ts +16 -0
- package/src/server-components/vite.ts +33 -14
- package/src/vite.ts +75 -6
- package/dist/nano.d.ts +0 -125
- package/dist/nano.d.ts.map +0 -1
- package/dist/nano.js +0 -190
- package/dist/nano.js.map +0 -1
- package/src/nano.ts +0 -246
package/dist/internal/web-app.js
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import { emitRequestErrorLog } from "@nifrajs/core/edge-kit";
|
|
2
2
|
import { jsonLogger } from "@nifrajs/core/logger";
|
|
3
3
|
import { NIFRA_BACKEND_EVIDENCE, NIFRA_BACKEND_MOUNT, NIFRA_BACKEND_WS_MOUNT, NIFRA_BACKEND_WS_RUNTIME, preRouteMountPaths, } from "@nifrajs/core/mount";
|
|
4
|
-
import {
|
|
4
|
+
import { withResponseObserver } from "@nifrajs/core/response-observer";
|
|
5
|
+
import { replacedRequestOf, server } from "@nifrajs/core/server";
|
|
5
6
|
import { cspNonceResolver, DOCUMENT_POLICY, isCspPolicy } from "../csp.js";
|
|
6
7
|
import { hostPolicyGate, isHostPolicy, } from "../host-policy.js";
|
|
7
8
|
import { CACHE_CHANNEL } from "../isr.js";
|
|
8
9
|
import { generateLlmsTxt } from "../llms-txt.js";
|
|
9
10
|
import { createMatcher, PRERENDERED_LIST_PATH } from "../router.js";
|
|
11
|
+
import { identityEpochHook } from "./identity-epoch.js";
|
|
12
|
+
import { INVALIDATION, invalidationOf } from "./invalidation-contract.js";
|
|
13
|
+
import { LIVE_ATTACH } from "./live-contract.js";
|
|
10
14
|
import { formatShadowedPages, shadowedPages } from "./mount-shadow.js";
|
|
11
15
|
import { createPageRequestExecutor } from "./page-execution.js";
|
|
16
|
+
import { PPR_SERVER, PPR_SETUP } from "./ppr/contract.js";
|
|
12
17
|
import { servePrerenderedPages } from "./prerendered-pages.js";
|
|
13
18
|
import { requestPattern } from "./route-path.js";
|
|
14
19
|
function pageI18n(routing) {
|
|
@@ -44,6 +49,11 @@ function pageI18n(routing) {
|
|
|
44
49
|
* The `Request` is rebuilt rather than mutated (`url` is read-only), preserving method, headers, body,
|
|
45
50
|
* and duplex streaming - the body is passed through unread, so a large or streamed upload is untouched.
|
|
46
51
|
*/
|
|
52
|
+
/** Publish what a write named, for an app with `live` and no cache wrapper to run the pipeline. */
|
|
53
|
+
async function publishOwn(op, request, publish) {
|
|
54
|
+
const { settleInvalidation } = await import("./invalidation.js");
|
|
55
|
+
await settleInvalidation(op, { publish }, request, undefined);
|
|
56
|
+
}
|
|
47
57
|
/**
|
|
48
58
|
* Resolve the explicit symbol-keyed backend mount interface. The symbol seam forwards platform
|
|
49
59
|
* context without making web depend on client.
|
|
@@ -125,14 +135,23 @@ export function createWebApp(options) {
|
|
|
125
135
|
}
|
|
126
136
|
app.use(hostPolicyGate(options.hostPolicy, options.buildAssets));
|
|
127
137
|
}
|
|
138
|
+
// Before every app hook: a live load becomes the target page's GET here, so each hook, middleware,
|
|
139
|
+
// gate and loader sees that path once, as a navigation would.
|
|
140
|
+
const liveAttachment = options.live?.[LIVE_ATTACH]({
|
|
141
|
+
matchRoute: (path) => pageExecutor.matchRoute(path),
|
|
142
|
+
app,
|
|
143
|
+
});
|
|
144
|
+
if (liveAttachment !== undefined)
|
|
145
|
+
app.onRequest(liveAttachment.onRequest);
|
|
128
146
|
// Before the mount hooks and before every page route, so the order-scoped hooks (`derive`,
|
|
129
147
|
// `beforeHandle`, assurance evidence) actually bind to them - see the `use` option. A caller
|
|
130
148
|
// cannot do this after the fact: by the time this function returns, the routes are declared.
|
|
131
149
|
options.use?.(app);
|
|
132
150
|
if (options.serverComponents !== undefined) {
|
|
133
151
|
const runtime = options.serverComponents;
|
|
152
|
+
// A route whose holes show server components is one visitor's too.
|
|
134
153
|
const match = createMatcher(manifest.routes
|
|
135
|
-
.filter((route) => runtime.owns(route.id))
|
|
154
|
+
.filter((route) => runtime.owns(route.id) || runtime.hosts?.(route.id) === true)
|
|
136
155
|
.map((route) => ({ routeId: route.id, pattern: route.pattern })));
|
|
137
156
|
const privateRoute = (request) => request.headers.has("x-nifra-component") || match(new URL(request.url).pathname) !== undefined;
|
|
138
157
|
Object.defineProperty(app, Symbol.for("nifra.web.private-route"), { value: privateRoute });
|
|
@@ -173,6 +192,36 @@ export function createWebApp(options) {
|
|
|
173
192
|
cacheChannel.enabled = true;
|
|
174
193
|
},
|
|
175
194
|
});
|
|
195
|
+
// One owner per write. A cache wrapper that opened the channel runs the whole pipeline and takes
|
|
196
|
+
// the operation here, by the request it passed in; without one, the app publishes the write's keys
|
|
197
|
+
// and tags itself, and a write with nothing to publish needs nothing at all.
|
|
198
|
+
const handedOver = new WeakMap();
|
|
199
|
+
const live = options.live;
|
|
200
|
+
const publish = live === undefined ? undefined : (keys) => live.publish(...keys);
|
|
201
|
+
Object.defineProperty(app, INVALIDATION, {
|
|
202
|
+
value: {
|
|
203
|
+
take: (request) => {
|
|
204
|
+
const op = handedOver.get(request);
|
|
205
|
+
handedOver.delete(request);
|
|
206
|
+
return op;
|
|
207
|
+
},
|
|
208
|
+
publish,
|
|
209
|
+
},
|
|
210
|
+
});
|
|
211
|
+
const invalidate = (revalidation, request) => {
|
|
212
|
+
if (cacheChannel.enabled) {
|
|
213
|
+
const op = invalidationOf(revalidation);
|
|
214
|
+
// Every request in a hook's replacement chain: the wrapper holds the first one.
|
|
215
|
+
for (let held = request; held !== undefined; held = replacedRequestOf(held))
|
|
216
|
+
handedOver.set(held, op);
|
|
217
|
+
return undefined;
|
|
218
|
+
}
|
|
219
|
+
// Paths alone refresh only the submitting page, which the response header already does.
|
|
220
|
+
const named = revalidation.__nifraInvalidate;
|
|
221
|
+
if (publish === undefined || named === undefined || named.keys.length + named.tags.length === 0)
|
|
222
|
+
return undefined;
|
|
223
|
+
return publishOwn(invalidationOf(revalidation), request, publish);
|
|
224
|
+
};
|
|
176
225
|
// Mount the in-process backend over HTTP at `apiPrefix`, when one is given, BEFORE page routing.
|
|
177
226
|
// Core's pre-route mount seam runs before the page wildcard `/*`; parent request hooks run first,
|
|
178
227
|
// child request hooks run inside the mount, and parent response hooks still wrap the result.
|
|
@@ -209,6 +258,14 @@ export function createWebApp(options) {
|
|
|
209
258
|
const prerenderedList = ownPatterns.has(PRERENDERED_LIST_PATH)
|
|
210
259
|
? undefined
|
|
211
260
|
: servedPrerenderedList(options.prerenderedPaths);
|
|
261
|
+
const ppr = options.experimental?.ppr?.[PPR_SETUP]({
|
|
262
|
+
adapter,
|
|
263
|
+
// biome-ignore lint/plugin/noConditionalEmptyObjectSpread: partial prerendering lists its scripts by hash only under an app's own policy.
|
|
264
|
+
...(options.csp === undefined ? {} : { csp: options.csp }),
|
|
265
|
+
// The content-hashed entry changes with every client build; the store is per process.
|
|
266
|
+
deployment: clientEntry,
|
|
267
|
+
perRequestNonce: options.nonce !== undefined,
|
|
268
|
+
});
|
|
212
269
|
const pageExecutor = createPageRequestExecutor({
|
|
213
270
|
...(options.cacheRouteModules === undefined
|
|
214
271
|
? {}
|
|
@@ -252,7 +309,16 @@ export function createWebApp(options) {
|
|
|
252
309
|
...(options.onLoaderError === undefined ? {} : { onLoaderError: options.onLoaderError }),
|
|
253
310
|
logBoundaryError: boundaryErrorLog(options.server),
|
|
254
311
|
cacheChannel,
|
|
312
|
+
// biome-ignore lint/plugin/noConditionalEmptyObjectSpread: the executor takes a route's shell path only when partial prerendering is set up.
|
|
313
|
+
...(ppr === undefined ? {} : { ppr }),
|
|
314
|
+
invalidate,
|
|
315
|
+
liveLoadOf: liveAttachment?.loadOf,
|
|
316
|
+
liveSeedOf: liveAttachment?.seedOf,
|
|
255
317
|
});
|
|
318
|
+
if (ppr !== undefined) {
|
|
319
|
+
Object.defineProperty(app, PPR_SERVER, { value: ppr.server });
|
|
320
|
+
app.register("POST", ppr.cancelPath, undefined, (c) => ppr.cancel(c.req));
|
|
321
|
+
}
|
|
256
322
|
// A nonce app's documents authorize their scripts per request, which a file rendered once cannot.
|
|
257
323
|
const prerendered = options.prerenderedPages === undefined || options.nonce !== undefined
|
|
258
324
|
? undefined
|
|
@@ -263,7 +329,8 @@ export function createWebApp(options) {
|
|
|
263
329
|
if (pattern.startsWith("/*"))
|
|
264
330
|
ownsRootCatchAll = true;
|
|
265
331
|
const render = pageExecutor.get(route);
|
|
266
|
-
app.register("GET", pattern, options.serverComponents?.owns(route.id)
|
|
332
|
+
app.register("GET", pattern, options.serverComponents?.owns(route.id) ||
|
|
333
|
+
options.serverComponents?.hosts?.(route.id) === true
|
|
267
334
|
? { capabilities: options.serverComponents.capabilities(route.id) }
|
|
268
335
|
: undefined, prerendered === undefined ? render : prerendered(render));
|
|
269
336
|
app.register("POST", pattern, undefined, pageExecutor.post(route));
|
|
@@ -312,6 +379,15 @@ export function createWebApp(options) {
|
|
|
312
379
|
// and the router refuses a second `/*` under another param name.
|
|
313
380
|
if (!ownsRootCatchAll)
|
|
314
381
|
app.register("GET", "/*", undefined, pageExecutor.fallback);
|
|
382
|
+
// Last, after every hook the caller's `use` added: a cookie any of them sets is seen here.
|
|
383
|
+
if (manifest.routes.some((route) => route.keepAlive === true)) {
|
|
384
|
+
// As for error details: only a run that says it is development or test reports, and an unset
|
|
385
|
+
// NODE_ENV (an unbuilt `bun app.ts`, a Worker) counts as production.
|
|
386
|
+
const nodeEnv = typeof process === "undefined" ? undefined : process.env?.NODE_ENV;
|
|
387
|
+
app.use(withResponseObserver({
|
|
388
|
+
onResponseHeaders: identityEpochHook(options.keepAlive ?? {}, nodeEnv === "development" || nodeEnv === "test"),
|
|
389
|
+
}));
|
|
390
|
+
}
|
|
315
391
|
const evidenceProvider = async (passed) => {
|
|
316
392
|
const { traverseEvidence } = await import("./evidence-traversal.js");
|
|
317
393
|
return traverseEvidence(evidenceProvider, passed, async (ancestry) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-app.js","sourceRoot":"","sources":["../../src/internal/web-app.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web-app.js","sourceRoot":"","sources":["../../src/internal/web-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nifrajs/web/islands/swap - refresh one region of a server-rendered page from a plain link or form,
|
|
3
|
+
* without a full reload and without a client router.
|
|
4
|
+
*
|
|
5
|
+
* <form action="/hotels" data-swap="replace:results"><input name="q"></form>
|
|
6
|
+
* <ul data-swap-slot="results">...</ul>
|
|
7
|
+
* <a href="/hotels?page=2" data-swap="append:results">More</a>
|
|
8
|
+
*
|
|
9
|
+
* The request is the one the link or form makes anyway, plus an `x-nifra-swap: <slot>` header. The
|
|
10
|
+
* server runs the page as usual and answers with that slot's HTML alone (`slot()` in
|
|
11
|
+
* `@nifrajs/web-vanilla`), so the fragment is a slice of the real page. Any other answer - a redirect,
|
|
12
|
+
* another origin, a page without that slot - loads the URL normally. Only GET requests are enhanced:
|
|
13
|
+
* a POST form submits natively, so the browser applies its response's security policy and scripts,
|
|
14
|
+
* and the form is never sent twice.
|
|
15
|
+
*/
|
|
16
|
+
import type { IslandEnhancer } from "./islands.js";
|
|
17
|
+
/** Where `enableSwap` looks for links, forms, slots and islands. */
|
|
18
|
+
export interface SwapOptions {
|
|
19
|
+
/** Default `document`. */
|
|
20
|
+
readonly root?: Document | Element;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Mount the page's islands, as `mountIslands` does, and make every `data-swap` link and GET form under
|
|
24
|
+
* `root` refresh its slot in place. Call it instead of `mountIslands`.
|
|
25
|
+
*
|
|
26
|
+
* - `data-swap="replace:<slot>"` replaces the content of the `data-swap-slot="<slot>"` element;
|
|
27
|
+
* `append:<slot>` adds to it, and a link or form inside that slot is spent: the slot's child holding
|
|
28
|
+
* it is removed when the next content arrives, so a "more" link at the end of a list gives way to
|
|
29
|
+
* the next page and its own "more" link.
|
|
30
|
+
* - A replacing GET pushes its URL, so a filtered list survives reload and can be shared; back and
|
|
31
|
+
* forward fetch the slots again for the URL they land on.
|
|
32
|
+
* - The islands inside a slot mount with it and unmount when it is replaced.
|
|
33
|
+
* - While a slot loads it carries `aria-busy="true"`; a newer swap of the same slot cancels the
|
|
34
|
+
* older one. When the request fails, the page stays as it is and the link or form gets
|
|
35
|
+
* `data-swap-error`.
|
|
36
|
+
*
|
|
37
|
+
* Nothing inside a `data-island-ignore` element swaps. Returns a disposer that removes the listeners,
|
|
38
|
+
* cancels pending swaps and unmounts every island.
|
|
39
|
+
*/
|
|
40
|
+
export declare function enableSwap(enhancers: Readonly<Record<string, IslandEnhancer<never>>>, options?: SwapOptions): () => void;
|
|
41
|
+
//# sourceMappingURL=islands-swap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"islands-swap.d.ts","sourceRoot":"","sources":["../src/islands-swap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAGlD,oEAAoE;AACpE,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;CACnC;AAmBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAExB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAC1D,OAAO,GAAE,WAAgB,GACxB,MAAM,IAAI,CAyNZ"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nifrajs/web/islands/swap - refresh one region of a server-rendered page from a plain link or form,
|
|
3
|
+
* without a full reload and without a client router.
|
|
4
|
+
*
|
|
5
|
+
* <form action="/hotels" data-swap="replace:results"><input name="q"></form>
|
|
6
|
+
* <ul data-swap-slot="results">...</ul>
|
|
7
|
+
* <a href="/hotels?page=2" data-swap="append:results">More</a>
|
|
8
|
+
*
|
|
9
|
+
* The request is the one the link or form makes anyway, plus an `x-nifra-swap: <slot>` header. The
|
|
10
|
+
* server runs the page as usual and answers with that slot's HTML alone (`slot()` in
|
|
11
|
+
* `@nifrajs/web-vanilla`), so the fragment is a slice of the real page. Any other answer - a redirect,
|
|
12
|
+
* another origin, a page without that slot - loads the URL normally. Only GET requests are enhanced:
|
|
13
|
+
* a POST form submits natively, so the browser applies its response's security policy and scripts,
|
|
14
|
+
* and the form is never sent twice.
|
|
15
|
+
*/
|
|
16
|
+
import { mountIsland } from "./internal/island-mount.js";
|
|
17
|
+
import { SWAP_HEADER } from "./render-seam.js";
|
|
18
|
+
const MODE = /^(replace|append):([A-Za-z][\w-]{0,63})$/;
|
|
19
|
+
const SLOTS = "[data-swap-slot]:not([data-island-ignore],[data-island-ignore] *)";
|
|
20
|
+
const HISTORY_KEY = "nifraSwap";
|
|
21
|
+
// A control named like a DOM method shadows it on its form (`<input name="closest">`).
|
|
22
|
+
const attr = (el, name) => Element.prototype.getAttribute.call(el, name);
|
|
23
|
+
const here = () => location.pathname + location.search;
|
|
24
|
+
/** The slot names a history entry's swaps changed, from the first one in this tab up to it. */
|
|
25
|
+
const swappedIn = (state) => {
|
|
26
|
+
const names = typeof state === "object" && state !== null ? Reflect.get(state, HISTORY_KEY) : undefined;
|
|
27
|
+
return Array.isArray(names) ? names.filter((name) => typeof name === "string") : [];
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Mount the page's islands, as `mountIslands` does, and make every `data-swap` link and GET form under
|
|
31
|
+
* `root` refresh its slot in place. Call it instead of `mountIslands`.
|
|
32
|
+
*
|
|
33
|
+
* - `data-swap="replace:<slot>"` replaces the content of the `data-swap-slot="<slot>"` element;
|
|
34
|
+
* `append:<slot>` adds to it, and a link or form inside that slot is spent: the slot's child holding
|
|
35
|
+
* it is removed when the next content arrives, so a "more" link at the end of a list gives way to
|
|
36
|
+
* the next page and its own "more" link.
|
|
37
|
+
* - A replacing GET pushes its URL, so a filtered list survives reload and can be shared; back and
|
|
38
|
+
* forward fetch the slots again for the URL they land on.
|
|
39
|
+
* - The islands inside a slot mount with it and unmount when it is replaced.
|
|
40
|
+
* - While a slot loads it carries `aria-busy="true"`; a newer swap of the same slot cancels the
|
|
41
|
+
* older one. When the request fails, the page stays as it is and the link or form gets
|
|
42
|
+
* `data-swap-error`.
|
|
43
|
+
*
|
|
44
|
+
* Nothing inside a `data-island-ignore` element swaps. Returns a disposer that removes the listeners,
|
|
45
|
+
* cancels pending swaps and unmounts every island.
|
|
46
|
+
*/
|
|
47
|
+
export function enableSwap(
|
|
48
|
+
// `never` admits an enhancer of any props type, as in `mountIslands`.
|
|
49
|
+
enhancers, options = {}) {
|
|
50
|
+
const root = options.root ?? document;
|
|
51
|
+
const stops = new Map();
|
|
52
|
+
const pending = new Map();
|
|
53
|
+
let swapped = swappedIn(history.state);
|
|
54
|
+
let shown = here();
|
|
55
|
+
const islands = "[data-island]:not([data-island-ignore],[data-island-ignore] *)";
|
|
56
|
+
const attach = (scope) => {
|
|
57
|
+
const mount = (el) => {
|
|
58
|
+
const stop = mountIsland(el, enhancers);
|
|
59
|
+
if (stop !== undefined)
|
|
60
|
+
stops.set(el, stop);
|
|
61
|
+
};
|
|
62
|
+
if (scope instanceof HTMLElement && scope.matches(islands))
|
|
63
|
+
mount(scope);
|
|
64
|
+
for (const el of scope.querySelectorAll(islands))
|
|
65
|
+
if (scope.contains(el))
|
|
66
|
+
mount(el);
|
|
67
|
+
};
|
|
68
|
+
const release = (scope) => {
|
|
69
|
+
const cleanups = [];
|
|
70
|
+
for (const [node, stop] of stops)
|
|
71
|
+
if (scope.contains(node)) {
|
|
72
|
+
stops.delete(node);
|
|
73
|
+
cleanups.push(stop);
|
|
74
|
+
}
|
|
75
|
+
// Cleanup may itself detach descendants, so collect every owner before stopping any of them.
|
|
76
|
+
for (const stop of cleanups)
|
|
77
|
+
stop();
|
|
78
|
+
};
|
|
79
|
+
// The server answers with the first slot of a name in the page, so the client takes the first too.
|
|
80
|
+
const slotNamed = (name) => {
|
|
81
|
+
for (const slot of root.querySelectorAll(SLOTS))
|
|
82
|
+
if (slot.getAttribute("data-swap-slot") === name)
|
|
83
|
+
return slot;
|
|
84
|
+
return undefined;
|
|
85
|
+
};
|
|
86
|
+
const put = (slot, html, append, source) => {
|
|
87
|
+
const template = document.createElement("template");
|
|
88
|
+
// Parsed inert: scripts in it never run, as for any HTML set this way.
|
|
89
|
+
template.innerHTML = html;
|
|
90
|
+
const focused = slot.contains(document.activeElement);
|
|
91
|
+
if (append) {
|
|
92
|
+
for (const child of [...slot.children])
|
|
93
|
+
if (child === source || (source !== undefined && child.contains(source))) {
|
|
94
|
+
release(child);
|
|
95
|
+
slot.removeChild(child);
|
|
96
|
+
}
|
|
97
|
+
slot.append(template.content);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
release(slot);
|
|
101
|
+
slot.replaceChildren(template.content);
|
|
102
|
+
}
|
|
103
|
+
attach(slot);
|
|
104
|
+
if (focused && !slot.contains(document.activeElement) && slot instanceof HTMLElement) {
|
|
105
|
+
if (!slot.hasAttribute("tabindex"))
|
|
106
|
+
slot.tabIndex = -1;
|
|
107
|
+
slot.focus({ preventScroll: true });
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
const swap = async (slot, name, append, url, source) => {
|
|
111
|
+
pending.get(slot)?.abort();
|
|
112
|
+
const abort = new AbortController();
|
|
113
|
+
pending.set(slot, abort);
|
|
114
|
+
slot.setAttribute("aria-busy", "true");
|
|
115
|
+
try {
|
|
116
|
+
const response = await fetch(url, {
|
|
117
|
+
cache: "no-store",
|
|
118
|
+
headers: { [SWAP_HEADER]: name },
|
|
119
|
+
signal: abort.signal,
|
|
120
|
+
redirect: "manual",
|
|
121
|
+
});
|
|
122
|
+
const load = () => {
|
|
123
|
+
if (source === undefined)
|
|
124
|
+
location.reload();
|
|
125
|
+
else
|
|
126
|
+
location.assign(response.redirected ? response.url : url);
|
|
127
|
+
};
|
|
128
|
+
if (response.type !== "basic" ||
|
|
129
|
+
!response.headers.get("content-type")?.startsWith("text/html")) {
|
|
130
|
+
load();
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
// A slot answer joins this document, so this document's CSP governs it, whatever headers the
|
|
134
|
+
// fetch carried; anything that is not one loads as its own document under its own policy.
|
|
135
|
+
if (response.headers.get(SWAP_HEADER) !== name) {
|
|
136
|
+
load();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const html = await response.text();
|
|
140
|
+
if (!slot.isConnected)
|
|
141
|
+
return;
|
|
142
|
+
try {
|
|
143
|
+
put(slot, html, append, source);
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// Trusted Types without a default policy refuses the HTML before the slot changes.
|
|
147
|
+
load();
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (!append && source !== undefined) {
|
|
151
|
+
if (!swapped.includes(name))
|
|
152
|
+
swapped = [...swapped, name];
|
|
153
|
+
history.pushState({ [HISTORY_KEY]: swapped }, "", url);
|
|
154
|
+
shown = url.pathname + url.search;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
if (abort.signal.aborted)
|
|
159
|
+
return;
|
|
160
|
+
// Back or forward left the URL ahead of the page: show what the URL shows.
|
|
161
|
+
if (source === undefined)
|
|
162
|
+
location.reload();
|
|
163
|
+
else
|
|
164
|
+
Element.prototype.setAttribute.call(source, "data-swap-error", "");
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
if (pending.get(slot) === abort) {
|
|
168
|
+
pending.delete(slot);
|
|
169
|
+
slot.removeAttribute("aria-busy");
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
const start = (event, source, url) => {
|
|
174
|
+
const mode = MODE.exec(attr(source, "data-swap") ?? "");
|
|
175
|
+
const name = mode?.[2];
|
|
176
|
+
if (name === undefined ||
|
|
177
|
+
url.origin !== location.origin ||
|
|
178
|
+
Element.prototype.closest.call(source, "[data-island-ignore]") !== null)
|
|
179
|
+
return;
|
|
180
|
+
const slot = slotNamed(name);
|
|
181
|
+
if (slot === undefined)
|
|
182
|
+
return;
|
|
183
|
+
event.preventDefault();
|
|
184
|
+
Element.prototype.removeAttribute.call(source, "data-swap-error");
|
|
185
|
+
void swap(slot, name, mode?.[1] === "append", url, source);
|
|
186
|
+
};
|
|
187
|
+
const onClick = (event) => {
|
|
188
|
+
if (!(event instanceof MouseEvent) || event.defaultPrevented || event.button !== 0)
|
|
189
|
+
return;
|
|
190
|
+
if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)
|
|
191
|
+
return;
|
|
192
|
+
const link = event.target instanceof Element ? event.target.closest("a[data-swap]") : null;
|
|
193
|
+
if (!(link instanceof HTMLAnchorElement) || !link.hasAttribute("href"))
|
|
194
|
+
return;
|
|
195
|
+
const target = link.getAttribute("target");
|
|
196
|
+
if ((target !== null && target !== "" && target !== "_self") || link.hasAttribute("download"))
|
|
197
|
+
return;
|
|
198
|
+
const url = new URL(link.href);
|
|
199
|
+
// An in-page anchor keeps its native jump.
|
|
200
|
+
if (url.hash !== "" && url.pathname + url.search === here())
|
|
201
|
+
return;
|
|
202
|
+
start(event, link, url);
|
|
203
|
+
};
|
|
204
|
+
const onSubmit = (event) => {
|
|
205
|
+
const form = event.target;
|
|
206
|
+
if (!(event instanceof SubmitEvent) ||
|
|
207
|
+
event.defaultPrevented ||
|
|
208
|
+
!(form instanceof HTMLFormElement) ||
|
|
209
|
+
attr(form, "data-swap") === null)
|
|
210
|
+
return;
|
|
211
|
+
const submitter = event.submitter;
|
|
212
|
+
// The button that submitted can override the form's method, action, target and encoding.
|
|
213
|
+
const pick = (name) => submitter?.hasAttribute(`form${name}`)
|
|
214
|
+
? submitter.getAttribute(`form${name}`)
|
|
215
|
+
: attr(form, name);
|
|
216
|
+
// An empty method is a GET, as for the browser.
|
|
217
|
+
const method = (pick("method") || "get").toUpperCase();
|
|
218
|
+
const target = pick("target");
|
|
219
|
+
const enctype = pick("enctype")?.toLowerCase();
|
|
220
|
+
if (method !== "GET" ||
|
|
221
|
+
(target !== null && target !== "" && target !== "_self") ||
|
|
222
|
+
enctype === "text/plain")
|
|
223
|
+
return;
|
|
224
|
+
const action = pick("action");
|
|
225
|
+
const url = new URL(action === null || action === "" ? location.href : action, document.baseURI);
|
|
226
|
+
const data = new FormData(form, submitter);
|
|
227
|
+
const fields = new URLSearchParams();
|
|
228
|
+
for (const [key, value] of data)
|
|
229
|
+
fields.append(key, typeof value === "string" ? value : value.name);
|
|
230
|
+
url.search = fields.toString();
|
|
231
|
+
start(event, form, url);
|
|
232
|
+
};
|
|
233
|
+
const onPopState = (event) => {
|
|
234
|
+
if (here() === shown)
|
|
235
|
+
return;
|
|
236
|
+
shown = here();
|
|
237
|
+
const reached = swappedIn(event.state);
|
|
238
|
+
// Every slot a swap changed between the entry left and the one reached is in the later one's list.
|
|
239
|
+
const names = new Set([...swapped, ...reached]);
|
|
240
|
+
swapped = reached;
|
|
241
|
+
const targets = [];
|
|
242
|
+
for (const name of names) {
|
|
243
|
+
const slot = slotNamed(name);
|
|
244
|
+
if (slot === undefined) {
|
|
245
|
+
location.reload();
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
targets.push([name, slot]);
|
|
249
|
+
}
|
|
250
|
+
for (const [name, slot] of targets)
|
|
251
|
+
void swap(slot, name, false, new URL(location.href));
|
|
252
|
+
};
|
|
253
|
+
const listen = (method) => {
|
|
254
|
+
root[method]("click", onClick);
|
|
255
|
+
root[method]("submit", onSubmit);
|
|
256
|
+
};
|
|
257
|
+
attach(root);
|
|
258
|
+
listen("addEventListener");
|
|
259
|
+
window.addEventListener("popstate", onPopState);
|
|
260
|
+
return () => {
|
|
261
|
+
listen("removeEventListener");
|
|
262
|
+
window.removeEventListener("popstate", onPopState);
|
|
263
|
+
for (const abort of pending.values())
|
|
264
|
+
abort.abort();
|
|
265
|
+
for (const stop of stops.values())
|
|
266
|
+
stop();
|
|
267
|
+
stops.clear();
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=islands-swap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"islands-swap.js","sourceRoot":"","sources":["../src/islands-swap.ts"],"names":[],"mappings":"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"}
|