@rangojs/router 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/dist/types/browser/event-controller.d.ts +6 -0
- package/dist/types/cache/cf/cf-cache-constants.d.ts +8 -1
- package/dist/types/cache/cf/cf-cache-store.d.ts +15 -1
- package/dist/types/cache/cf/cf-cache-types.d.ts +1 -1
- package/dist/types/cache/cf/cf-kv-utils.d.ts +21 -0
- package/dist/types/handles/is-thenable.d.ts +2 -4
- package/dist/types/rsc/helpers.d.ts +3 -0
- package/dist/types/rsc/render-pipeline.d.ts +9 -0
- package/dist/types/rsc/routine-plan.d.ts +124 -0
- package/dist/types/rsc/shell-capture-constants.d.ts +17 -0
- package/dist/types/server/request-context.d.ts +4 -1
- package/dist/types/vite/encryption-key.d.ts +2 -0
- package/dist/types/vite/plugins/expose-internal-ids.d.ts +10 -0
- package/dist/types/vite/plugins/server-ref-hashing.d.ts +24 -0
- package/dist/types/vite/plugins/server-reference-pattern.d.ts +1 -0
- package/dist/types/vite/utils/shared-utils.d.ts +12 -0
- package/dist/vite/index.js +154 -57
- package/package.json +3 -3
- package/skills/caching/SKILL.md +1 -1
- package/skills/mime-routes/SKILL.md +3 -1
- package/skills/response-routes/SKILL.md +4 -2
- package/skills/typesafety/generated-files-and-cli.md +16 -9
- package/skills/typesafety/route-types.md +5 -1
- package/skills/use-cache/SKILL.md +47 -0
- package/src/browser/event-controller.ts +40 -15
- package/src/browser/partial-update.ts +26 -11
- package/src/browser/react/NavigationProvider.tsx +7 -0
- package/src/cache/cache-runtime.ts +89 -15
- package/src/cache/cf/cf-cache-constants.ts +8 -1
- package/src/cache/cf/cf-cache-store.ts +41 -64
- package/src/cache/cf/cf-cache-types.ts +1 -1
- package/src/cache/cf/cf-kv-utils.ts +38 -0
- package/src/cache/segment-codec.ts +21 -5
- package/src/handles/is-thenable.ts +2 -4
- package/src/router/match-middleware/cache-lookup.ts +24 -15
- package/src/rsc/handler.ts +26 -5
- package/src/rsc/helpers.ts +13 -0
- package/src/rsc/progressive-enhancement.ts +247 -70
- package/src/rsc/render-pipeline.ts +68 -24
- package/src/rsc/routine-plan.ts +359 -0
- package/src/rsc/rsc-rendering.ts +555 -302
- package/src/rsc/server-action.ts +180 -71
- package/src/rsc/shell-capture-constants.ts +18 -0
- package/src/rsc/shell-capture.ts +92 -21
- package/src/server/request-context.ts +6 -0
- package/src/ssr/ssr-root.tsx +1 -0
- package/src/vite/encryption-key.ts +29 -0
- package/src/vite/plugins/expose-action-id.ts +2 -2
- package/src/vite/plugins/expose-internal-ids.ts +46 -0
- package/src/vite/plugins/server-ref-hashing.ts +74 -0
- package/src/vite/plugins/server-reference-pattern.ts +10 -0
- package/src/vite/rango.ts +9 -0
- package/src/vite/router-discovery.ts +21 -2
- package/src/vite/utils/shared-utils.ts +12 -7
- package/dist/types.backup/__internal.d.ts +0 -127
- package/dist/types.backup/bin/rango.d.ts +0 -1
- package/dist/types.backup/browser/action-coordinator.d.ts +0 -57
- package/dist/types.backup/browser/action-fence.d.ts +0 -33
- package/dist/types.backup/browser/app-shell.d.ts +0 -34
- package/dist/types.backup/browser/app-version.d.ts +0 -6
- package/dist/types.backup/browser/connection-warmup.d.ts +0 -31
- package/dist/types.backup/browser/cookie-name.d.ts +0 -66
- package/dist/types.backup/browser/event-controller.d.ts +0 -221
- package/dist/types.backup/browser/history-state.d.ts +0 -26
- package/dist/types.backup/browser/index.d.ts +0 -1
- package/dist/types.backup/browser/intercept-utils.d.ts +0 -30
- package/dist/types.backup/browser/invalidate-client-cache.d.ts +0 -17
- package/dist/types.backup/browser/link-interceptor.d.ts +0 -43
- package/dist/types.backup/browser/logging.d.ts +0 -33
- package/dist/types.backup/browser/merge-segment-loaders.d.ts +0 -38
- package/dist/types.backup/browser/navigation-bridge.d.ts +0 -27
- package/dist/types.backup/browser/navigation-client.d.ts +0 -17
- package/dist/types.backup/browser/navigation-store-handle.d.ts +0 -25
- package/dist/types.backup/browser/navigation-store.d.ts +0 -95
- package/dist/types.backup/browser/navigation-transaction.d.ts +0 -75
- package/dist/types.backup/browser/network-error-handler.d.ts +0 -35
- package/dist/types.backup/browser/partial-update.d.ts +0 -61
- package/dist/types.backup/browser/prefetch/cache.d.ts +0 -183
- package/dist/types.backup/browser/prefetch/fetch.d.ts +0 -52
- package/dist/types.backup/browser/prefetch/observer.d.ts +0 -27
- package/dist/types.backup/browser/prefetch/policy.d.ts +0 -13
- package/dist/types.backup/browser/prefetch/queue.d.ts +0 -48
- package/dist/types.backup/browser/prefetch/resource-ready.d.ts +0 -28
- package/dist/types.backup/browser/rango-state.d.ts +0 -52
- package/dist/types.backup/browser/react/Link.d.ts +0 -140
- package/dist/types.backup/browser/react/NavigationProvider.d.ts +0 -88
- package/dist/types.backup/browser/react/ScrollRestoration.d.ts +0 -78
- package/dist/types.backup/browser/react/context.d.ts +0 -54
- package/dist/types.backup/browser/react/filter-segment-order.d.ts +0 -35
- package/dist/types.backup/browser/react/index.d.ts +0 -1
- package/dist/types.backup/browser/react/location-state-shared.d.ts +0 -162
- package/dist/types.backup/browser/react/location-state.d.ts +0 -29
- package/dist/types.backup/browser/react/mount-context.d.ts +0 -23
- package/dist/types.backup/browser/react/nonce-context.d.ts +0 -14
- package/dist/types.backup/browser/react/shallow-equal.d.ts +0 -5
- package/dist/types.backup/browser/react/use-action.d.ts +0 -61
- package/dist/types.backup/browser/react/use-handle.d.ts +0 -21
- package/dist/types.backup/browser/react/use-href.d.ts +0 -32
- package/dist/types.backup/browser/react/use-link-status.d.ts +0 -36
- package/dist/types.backup/browser/react/use-mount.d.ts +0 -24
- package/dist/types.backup/browser/react/use-navigation.d.ts +0 -15
- package/dist/types.backup/browser/react/use-params.d.ts +0 -21
- package/dist/types.backup/browser/react/use-pathname.d.ts +0 -13
- package/dist/types.backup/browser/react/use-reverse.d.ts +0 -40
- package/dist/types.backup/browser/react/use-router.d.ts +0 -23
- package/dist/types.backup/browser/react/use-search-params.d.ts +0 -19
- package/dist/types.backup/browser/react/use-segments.d.ts +0 -29
- package/dist/types.backup/browser/response-adapter.d.ts +0 -58
- package/dist/types.backup/browser/rsc-router.d.ts +0 -141
- package/dist/types.backup/browser/scroll-restoration.d.ts +0 -103
- package/dist/types.backup/browser/segment-reconciler.d.ts +0 -74
- package/dist/types.backup/browser/segment-structure-assert.d.ts +0 -16
- package/dist/types.backup/browser/server-action-bridge.d.ts +0 -29
- package/dist/types.backup/browser/types.d.ts +0 -530
- package/dist/types.backup/browser/validate-redirect-origin.d.ts +0 -28
- package/dist/types.backup/build/collect-fallback-refs.d.ts +0 -5
- package/dist/types.backup/build/generate-manifest.d.ts +0 -100
- package/dist/types.backup/build/generate-route-types.d.ts +0 -8
- package/dist/types.backup/build/index.d.ts +0 -21
- package/dist/types.backup/build/prefix-tree-utils.d.ts +0 -56
- package/dist/types.backup/build/route-trie.d.ts +0 -89
- package/dist/types.backup/build/route-types/ast-helpers.d.ts +0 -3
- package/dist/types.backup/build/route-types/ast-route-extraction.d.ts +0 -13
- package/dist/types.backup/build/route-types/codegen.d.ts +0 -16
- package/dist/types.backup/build/route-types/include-resolution.d.ts +0 -74
- package/dist/types.backup/build/route-types/param-extraction.d.ts +0 -13
- package/dist/types.backup/build/route-types/per-module-writer.d.ts +0 -18
- package/dist/types.backup/build/route-types/router-processing.d.ts +0 -82
- package/dist/types.backup/build/route-types/scan-filter.d.ts +0 -17
- package/dist/types.backup/build/route-types/source-scan.d.ts +0 -13
- package/dist/types.backup/build/runtime-discovery.d.ts +0 -24
- package/dist/types.backup/cache/background-task.d.ts +0 -21
- package/dist/types.backup/cache/cache-error.d.ts +0 -71
- package/dist/types.backup/cache/cache-key-utils.d.ts +0 -35
- package/dist/types.backup/cache/cache-policy.d.ts +0 -59
- package/dist/types.backup/cache/cache-runtime.d.ts +0 -51
- package/dist/types.backup/cache/cache-scope.d.ts +0 -134
- package/dist/types.backup/cache/cache-tag.d.ts +0 -79
- package/dist/types.backup/cache/cf/cf-base64.d.ts +0 -4
- package/dist/types.backup/cache/cf/cf-cache-constants.d.ts +0 -105
- package/dist/types.backup/cache/cf/cf-cache-store.d.ts +0 -481
- package/dist/types.backup/cache/cf/cf-cache-types.d.ts +0 -300
- package/dist/types.backup/cache/cf/cf-kv-utils.d.ts +0 -22
- package/dist/types.backup/cache/cf/cf-tag-marker-memo.d.ts +0 -15
- package/dist/types.backup/cache/cf/index.d.ts +0 -3
- package/dist/types.backup/cache/document-cache.d.ts +0 -69
- package/dist/types.backup/cache/handle-capture.d.ts +0 -23
- package/dist/types.backup/cache/handle-snapshot.d.ts +0 -39
- package/dist/types.backup/cache/index.d.ts +0 -7
- package/dist/types.backup/cache/memory-segment-store.d.ts +0 -163
- package/dist/types.backup/cache/profile-registry.d.ts +0 -40
- package/dist/types.backup/cache/read-through-swr.d.ts +0 -60
- package/dist/types.backup/cache/segment-codec.d.ts +0 -78
- package/dist/types.backup/cache/shell-snapshot.d.ts +0 -162
- package/dist/types.backup/cache/tag-invalidation.d.ts +0 -74
- package/dist/types.backup/cache/taint.d.ts +0 -71
- package/dist/types.backup/cache/types.d.ts +0 -407
- package/dist/types.backup/cache/vercel/index.d.ts +0 -1
- package/dist/types.backup/cache/vercel/vercel-cache-store.d.ts +0 -267
- package/dist/types.backup/client.d.ts +0 -184
- package/dist/types.backup/client.rsc.d.ts +0 -39
- package/dist/types.backup/cloudflare/index.d.ts +0 -7
- package/dist/types.backup/cloudflare/tracing.d.ts +0 -53
- package/dist/types.backup/component-utils.d.ts +0 -46
- package/dist/types.backup/components/DefaultDocument.d.ts +0 -13
- package/dist/types.backup/context-var.d.ts +0 -84
- package/dist/types.backup/debug.d.ts +0 -57
- package/dist/types.backup/decode-loader-results.d.ts +0 -5
- package/dist/types.backup/default-error-boundary.d.ts +0 -10
- package/dist/types.backup/defer.d.ts +0 -89
- package/dist/types.backup/deps/browser.d.ts +0 -1
- package/dist/types.backup/deps/html-stream-client.d.ts +0 -1
- package/dist/types.backup/deps/html-stream-server.d.ts +0 -1
- package/dist/types.backup/deps/rsc.d.ts +0 -1
- package/dist/types.backup/deps/ssr.d.ts +0 -1
- package/dist/types.backup/encode-kv.d.ts +0 -35
- package/dist/types.backup/errors.d.ts +0 -226
- package/dist/types.backup/escape-script.d.ts +0 -44
- package/dist/types.backup/handle.d.ts +0 -93
- package/dist/types.backup/handles/MetaTags.d.ts +0 -17
- package/dist/types.backup/handles/Scripts.d.ts +0 -38
- package/dist/types.backup/handles/breadcrumbs.d.ts +0 -43
- package/dist/types.backup/handles/deferred-resolution.d.ts +0 -53
- package/dist/types.backup/handles/is-thenable.d.ts +0 -12
- package/dist/types.backup/handles/meta.d.ts +0 -43
- package/dist/types.backup/handles/script.d.ts +0 -139
- package/dist/types.backup/host/cookie-handler.d.ts +0 -8
- package/dist/types.backup/host/errors.d.ts +0 -40
- package/dist/types.backup/host/index.d.ts +0 -33
- package/dist/types.backup/host/pattern-matcher.d.ts +0 -30
- package/dist/types.backup/host/router.d.ts +0 -12
- package/dist/types.backup/host/testing.d.ts +0 -41
- package/dist/types.backup/host/types.d.ts +0 -148
- package/dist/types.backup/host/utils.d.ts +0 -20
- package/dist/types.backup/href-client.d.ts +0 -214
- package/dist/types.backup/index.d.ts +0 -112
- package/dist/types.backup/index.rsc.d.ts +0 -51
- package/dist/types.backup/internal-debug.d.ts +0 -1
- package/dist/types.backup/loader-store.d.ts +0 -193
- package/dist/types.backup/loader.d.ts +0 -18
- package/dist/types.backup/loader.rsc.d.ts +0 -18
- package/dist/types.backup/missing-id-error.d.ts +0 -1
- package/dist/types.backup/outlet-context.d.ts +0 -12
- package/dist/types.backup/outlet-provider.d.ts +0 -12
- package/dist/types.backup/prerender/build-shell-capture.d.ts +0 -104
- package/dist/types.backup/prerender/param-hash.d.ts +0 -6
- package/dist/types.backup/prerender/shell-manifest-key.d.ts +0 -18
- package/dist/types.backup/prerender/store.d.ts +0 -62
- package/dist/types.backup/prerender.d.ts +0 -292
- package/dist/types.backup/redirect-origin.d.ts +0 -55
- package/dist/types.backup/regex-escape.d.ts +0 -6
- package/dist/types.backup/render-error-thrower.d.ts +0 -13
- package/dist/types.backup/response-utils.d.ts +0 -35
- package/dist/types.backup/reverse.d.ts +0 -206
- package/dist/types.backup/root-error-boundary.d.ts +0 -32
- package/dist/types.backup/route-content-wrapper.d.ts +0 -40
- package/dist/types.backup/route-definition/dsl-helpers.d.ts +0 -130
- package/dist/types.backup/route-definition/helper-factories.d.ts +0 -22
- package/dist/types.backup/route-definition/helpers-types.d.ts +0 -392
- package/dist/types.backup/route-definition/index.d.ts +0 -7
- package/dist/types.backup/route-definition/redirect.d.ts +0 -48
- package/dist/types.backup/route-definition/resolve-handler-use.d.ts +0 -19
- package/dist/types.backup/route-definition/use-item-types.d.ts +0 -1
- package/dist/types.backup/route-definition.d.ts +0 -1
- package/dist/types.backup/route-map-builder.d.ts +0 -127
- package/dist/types.backup/route-name.d.ts +0 -27
- package/dist/types.backup/route-types.d.ts +0 -172
- package/dist/types.backup/router/basename.d.ts +0 -10
- package/dist/types.backup/router/content-negotiation.d.ts +0 -91
- package/dist/types.backup/router/debug-manifest.d.ts +0 -7
- package/dist/types.backup/router/error-handling.d.ts +0 -76
- package/dist/types.backup/router/find-match.d.ts +0 -19
- package/dist/types.backup/router/handler-context.d.ts +0 -41
- package/dist/types.backup/router/instrument.d.ts +0 -161
- package/dist/types.backup/router/intercept-resolution.d.ts +0 -79
- package/dist/types.backup/router/lazy-includes.d.ts +0 -26
- package/dist/types.backup/router/loader-resolution.d.ts +0 -63
- package/dist/types.backup/router/logging.d.ts +0 -41
- package/dist/types.backup/router/manifest.d.ts +0 -8
- package/dist/types.backup/router/match-api.d.ts +0 -19
- package/dist/types.backup/router/match-context.d.ts +0 -184
- package/dist/types.backup/router/match-handlers.d.ts +0 -49
- package/dist/types.backup/router/match-middleware/background-revalidation.d.ts +0 -113
- package/dist/types.backup/router/match-middleware/cache-lookup.d.ts +0 -113
- package/dist/types.backup/router/match-middleware/cache-store.d.ts +0 -112
- package/dist/types.backup/router/match-middleware/index.d.ts +0 -80
- package/dist/types.backup/router/match-middleware/intercept-resolution.d.ts +0 -116
- package/dist/types.backup/router/match-middleware/segment-resolution.d.ts +0 -94
- package/dist/types.backup/router/match-pipelines.d.ts +0 -103
- package/dist/types.backup/router/match-result.d.ts +0 -114
- package/dist/types.backup/router/metrics.d.ts +0 -6
- package/dist/types.backup/router/middleware-types.d.ts +0 -74
- package/dist/types.backup/router/middleware.d.ts +0 -116
- package/dist/types.backup/router/navigation-snapshot.d.ts +0 -22
- package/dist/types.backup/router/params-util.d.ts +0 -8
- package/dist/types.backup/router/parse-pattern.d.ts +0 -38
- package/dist/types.backup/router/pattern-matching.d.ts +0 -169
- package/dist/types.backup/router/prefetch-cache-ttl.d.ts +0 -27
- package/dist/types.backup/router/prefetch-limits.d.ts +0 -20
- package/dist/types.backup/router/prerender-match.d.ts +0 -50
- package/dist/types.backup/router/preview-match.d.ts +0 -22
- package/dist/types.backup/router/request-classification.d.ts +0 -104
- package/dist/types.backup/router/revalidation.d.ts +0 -57
- package/dist/types.backup/router/route-snapshot.d.ts +0 -112
- package/dist/types.backup/router/router-context.d.ts +0 -137
- package/dist/types.backup/router/router-interfaces.d.ts +0 -432
- package/dist/types.backup/router/router-options.d.ts +0 -738
- package/dist/types.backup/router/router-registry.d.ts +0 -15
- package/dist/types.backup/router/segment-resolution/fresh.d.ts +0 -55
- package/dist/types.backup/router/segment-resolution/helpers.d.ts +0 -93
- package/dist/types.backup/router/segment-resolution/loader-cache.d.ts +0 -33
- package/dist/types.backup/router/segment-resolution/loader-mask.d.ts +0 -44
- package/dist/types.backup/router/segment-resolution/loader-snapshot.d.ts +0 -90
- package/dist/types.backup/router/segment-resolution/mask-nested.d.ts +0 -53
- package/dist/types.backup/router/segment-resolution/revalidation.d.ts +0 -85
- package/dist/types.backup/router/segment-resolution/static-store.d.ts +0 -17
- package/dist/types.backup/router/segment-resolution/streamed-handler-telemetry.d.ts +0 -16
- package/dist/types.backup/router/segment-resolution/view-transition-default.d.ts +0 -28
- package/dist/types.backup/router/segment-resolution.d.ts +0 -3
- package/dist/types.backup/router/segment-wrappers.d.ts +0 -53
- package/dist/types.backup/router/state-cookie-name.d.ts +0 -1
- package/dist/types.backup/router/substitute-pattern-params.d.ts +0 -23
- package/dist/types.backup/router/telemetry-otel.d.ts +0 -113
- package/dist/types.backup/router/telemetry.d.ts +0 -215
- package/dist/types.backup/router/timeout.d.ts +0 -68
- package/dist/types.backup/router/tracing.d.ts +0 -125
- package/dist/types.backup/router/trie-matching.d.ts +0 -32
- package/dist/types.backup/router/types.d.ts +0 -98
- package/dist/types.backup/router/url-params.d.ts +0 -26
- package/dist/types.backup/router.d.ts +0 -7
- package/dist/types.backup/rsc/capture-queue.d.ts +0 -6
- package/dist/types.backup/rsc/full-payload.d.ts +0 -22
- package/dist/types.backup/rsc/handler-context.d.ts +0 -31
- package/dist/types.backup/rsc/handler.d.ts +0 -9
- package/dist/types.backup/rsc/helpers.d.ts +0 -213
- package/dist/types.backup/rsc/index.d.ts +0 -17
- package/dist/types.backup/rsc/json-route-result.d.ts +0 -20
- package/dist/types.backup/rsc/loader-fetch.d.ts +0 -14
- package/dist/types.backup/rsc/manifest-init.d.ts +0 -18
- package/dist/types.backup/rsc/nonce.d.ts +0 -28
- package/dist/types.backup/rsc/origin-guard.d.ts +0 -50
- package/dist/types.backup/rsc/progressive-enhancement.d.ts +0 -19
- package/dist/types.backup/rsc/redirect-guard.d.ts +0 -35
- package/dist/types.backup/rsc/response-cache-serve.d.ts +0 -46
- package/dist/types.backup/rsc/response-error.d.ts +0 -19
- package/dist/types.backup/rsc/response-route-handler.d.ts +0 -29
- package/dist/types.backup/rsc/rsc-rendering.d.ts +0 -23
- package/dist/types.backup/rsc/runtime-warnings.d.ts +0 -22
- package/dist/types.backup/rsc/server-action.d.ts +0 -68
- package/dist/types.backup/rsc/shell-build-manifest.d.ts +0 -84
- package/dist/types.backup/rsc/shell-capture-constants.d.ts +0 -27
- package/dist/types.backup/rsc/shell-capture.d.ts +0 -374
- package/dist/types.backup/rsc/shell-serve.d.ts +0 -136
- package/dist/types.backup/rsc/ssr-setup.d.ts +0 -48
- package/dist/types.backup/rsc/transition-gate.d.ts +0 -27
- package/dist/types.backup/rsc/types.d.ts +0 -290
- package/dist/types.backup/runtime-env.d.ts +0 -1
- package/dist/types.backup/search-params.d.ts +0 -125
- package/dist/types.backup/segment-content-promise.d.ts +0 -13
- package/dist/types.backup/segment-fragments.d.ts +0 -56
- package/dist/types.backup/segment-loader-promise.d.ts +0 -22
- package/dist/types.backup/segment-system.d.ts +0 -84
- package/dist/types.backup/serialize.d.ts +0 -164
- package/dist/types.backup/server/context.d.ts +0 -494
- package/dist/types.backup/server/cookie-parse.d.ts +0 -10
- package/dist/types.backup/server/cookie-store.d.ts +0 -107
- package/dist/types.backup/server/fetchable-loader-store.d.ts +0 -20
- package/dist/types.backup/server/handle-store.d.ts +0 -100
- package/dist/types.backup/server/loader-registry.d.ts +0 -32
- package/dist/types.backup/server/request-context.d.ts +0 -596
- package/dist/types.backup/server/root-layout.d.ts +0 -3
- package/dist/types.backup/server.d.ts +0 -15
- package/dist/types.backup/ssr/index.d.ts +0 -233
- package/dist/types.backup/ssr/inject-rsc-eager.d.ts +0 -3
- package/dist/types.backup/ssr/preinit-client-references.d.ts +0 -71
- package/dist/types.backup/ssr/ssr-root.d.ts +0 -69
- package/dist/types.backup/static-handler.d.ts +0 -57
- package/dist/types.backup/testing/cache-status.d.ts +0 -63
- package/dist/types.backup/testing/collect-handle.d.ts +0 -20
- package/dist/types.backup/testing/dispatch.d.ts +0 -123
- package/dist/types.backup/testing/dom.entry.d.ts +0 -15
- package/dist/types.backup/testing/e2e/fixture.d.ts +0 -37
- package/dist/types.backup/testing/e2e/index.d.ts +0 -30
- package/dist/types.backup/testing/e2e/matchers.d.ts +0 -17
- package/dist/types.backup/testing/e2e/page-helpers.d.ts +0 -62
- package/dist/types.backup/testing/e2e/parity.d.ts +0 -111
- package/dist/types.backup/testing/e2e/server.d.ts +0 -35
- package/dist/types.backup/testing/flight-matchers.d.ts +0 -55
- package/dist/types.backup/testing/flight-normalize.d.ts +0 -1
- package/dist/types.backup/testing/flight-tree.d.ts +0 -192
- package/dist/types.backup/testing/flight.d.ts +0 -115
- package/dist/types.backup/testing/flight.entry.d.ts +0 -27
- package/dist/types.backup/testing/generated-routes.d.ts +0 -66
- package/dist/types.backup/testing/index.d.ts +0 -52
- package/dist/types.backup/testing/internal/context.d.ts +0 -225
- package/dist/types.backup/testing/internal/flight-client-globals.d.ts +0 -1
- package/dist/types.backup/testing/internal/seed-vars.d.ts +0 -30
- package/dist/types.backup/testing/render-handler.d.ts +0 -160
- package/dist/types.backup/testing/render-route.d.ts +0 -246
- package/dist/types.backup/testing/run-loader.d.ts +0 -186
- package/dist/types.backup/testing/run-middleware.d.ts +0 -132
- package/dist/types.backup/testing/run-transition-when.d.ts +0 -77
- package/dist/types.backup/testing/vitest-stubs/cloudflare-email.d.ts +0 -6
- package/dist/types.backup/testing/vitest-stubs/cloudflare-workers.d.ts +0 -13
- package/dist/types.backup/testing/vitest-stubs/plugin-rsc.d.ts +0 -7
- package/dist/types.backup/testing/vitest-stubs/version.d.ts +0 -1
- package/dist/types.backup/testing/vitest.d.ts +0 -205
- package/dist/types.backup/theme/ThemeProvider.d.ts +0 -13
- package/dist/types.backup/theme/ThemeScript.d.ts +0 -45
- package/dist/types.backup/theme/constants.d.ts +0 -39
- package/dist/types.backup/theme/index.d.ts +0 -29
- package/dist/types.backup/theme/theme-context.d.ts +0 -21
- package/dist/types.backup/theme/theme-script.d.ts +0 -26
- package/dist/types.backup/theme/types.d.ts +0 -162
- package/dist/types.backup/theme/use-theme.d.ts +0 -8
- package/dist/types.backup/types/boundaries.d.ts +0 -93
- package/dist/types.backup/types/cache-types.d.ts +0 -191
- package/dist/types.backup/types/error-types.d.ts +0 -114
- package/dist/types.backup/types/global-namespace.d.ts +0 -90
- package/dist/types.backup/types/handler-context.d.ts +0 -658
- package/dist/types.backup/types/index.d.ts +0 -11
- package/dist/types.backup/types/loader-types.d.ts +0 -182
- package/dist/types.backup/types/request-scope.d.ts +0 -93
- package/dist/types.backup/types/route-config.d.ts +0 -105
- package/dist/types.backup/types/route-entry.d.ts +0 -95
- package/dist/types.backup/types/segments.d.ts +0 -234
- package/dist/types.backup/types.d.ts +0 -1
- package/dist/types.backup/urls/include-helper.d.ts +0 -17
- package/dist/types.backup/urls/include-provider.d.ts +0 -27
- package/dist/types.backup/urls/index.d.ts +0 -6
- package/dist/types.backup/urls/path-helper-types.d.ts +0 -197
- package/dist/types.backup/urls/path-helper.d.ts +0 -12
- package/dist/types.backup/urls/pattern-types.d.ts +0 -166
- package/dist/types.backup/urls/response-types.d.ts +0 -67
- package/dist/types.backup/urls/type-extraction.d.ts +0 -157
- package/dist/types.backup/urls/urls-function.d.ts +0 -24
- package/dist/types.backup/urls.d.ts +0 -1
- package/dist/types.backup/use-loader.d.ts +0 -150
- package/dist/types.backup/vercel/index.d.ts +0 -10
- package/dist/types.backup/vercel/tracing.d.ts +0 -70
- package/dist/types.backup/vite/debug.d.ts +0 -80
- package/dist/types.backup/vite/discovery/bundle-postprocess.d.ts +0 -12
- package/dist/types.backup/vite/discovery/dev-prerender-cache.d.ts +0 -65
- package/dist/types.backup/vite/discovery/discover-routers.d.ts +0 -17
- package/dist/types.backup/vite/discovery/discovery-errors.d.ts +0 -113
- package/dist/types.backup/vite/discovery/gate-state.d.ts +0 -79
- package/dist/types.backup/vite/discovery/prerender-collection.d.ts +0 -24
- package/dist/types.backup/vite/discovery/route-types-writer.d.ts +0 -32
- package/dist/types.backup/vite/discovery/self-gen-tracking.d.ts +0 -22
- package/dist/types.backup/vite/discovery/shell-prerender-phase.d.ts +0 -40
- package/dist/types.backup/vite/discovery/state.d.ts +0 -162
- package/dist/types.backup/vite/discovery/virtual-module-codegen.d.ts +0 -15
- package/dist/types.backup/vite/index.d.ts +0 -11
- package/dist/types.backup/vite/inject-client-debug.d.ts +0 -56
- package/dist/types.backup/vite/plugin-types.d.ts +0 -298
- package/dist/types.backup/vite/plugins/cjs-to-esm.d.ts +0 -6
- package/dist/types.backup/vite/plugins/client-ref-dedup.d.ts +0 -40
- package/dist/types.backup/vite/plugins/client-ref-hashing.d.ts +0 -35
- package/dist/types.backup/vite/plugins/cloudflare-protocol-stub.d.ts +0 -64
- package/dist/types.backup/vite/plugins/expose-action-id.d.ts +0 -18
- package/dist/types.backup/vite/plugins/expose-id-utils.d.ts +0 -37
- package/dist/types.backup/vite/plugins/expose-ids/export-analysis.d.ts +0 -19
- package/dist/types.backup/vite/plugins/expose-ids/handler-transform.d.ts +0 -10
- package/dist/types.backup/vite/plugins/expose-ids/loader-transform.d.ts +0 -8
- package/dist/types.backup/vite/plugins/expose-ids/router-transform.d.ts +0 -13
- package/dist/types.backup/vite/plugins/expose-ids/types.d.ts +0 -29
- package/dist/types.backup/vite/plugins/expose-internal-ids.d.ts +0 -6
- package/dist/types.backup/vite/plugins/performance-tracks.d.ts +0 -25
- package/dist/types.backup/vite/plugins/refresh-cmd.d.ts +0 -20
- package/dist/types.backup/vite/plugins/use-cache-transform.d.ts +0 -20
- package/dist/types.backup/vite/plugins/vercel-output.d.ts +0 -85
- package/dist/types.backup/vite/plugins/version-injector.d.ts +0 -21
- package/dist/types.backup/vite/plugins/version-plugin.d.ts +0 -19
- package/dist/types.backup/vite/plugins/virtual-entries.d.ts +0 -36
- package/dist/types.backup/vite/plugins/virtual-stub-plugin.d.ts +0 -7
- package/dist/types.backup/vite/rango.d.ts +0 -29
- package/dist/types.backup/vite/router-discovery.d.ts +0 -23
- package/dist/types.backup/vite/utils/ast-handler-extract.d.ts +0 -64
- package/dist/types.backup/vite/utils/banner.d.ts +0 -2
- package/dist/types.backup/vite/utils/bundle-analysis.d.ts +0 -28
- package/dist/types.backup/vite/utils/client-chunks.d.ts +0 -55
- package/dist/types.backup/vite/utils/directive-prologue.d.ts +0 -16
- package/dist/types.backup/vite/utils/forward-user-plugins.d.ts +0 -37
- package/dist/types.backup/vite/utils/manifest-utils.d.ts +0 -7
- package/dist/types.backup/vite/utils/package-resolution.d.ts +0 -6
- package/dist/types.backup/vite/utils/prerender-utils.d.ts +0 -32
- package/dist/types.backup/vite/utils/shared-utils.d.ts +0 -55
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { Plugin } from "vite";
|
|
2
|
+
import { createRangoDebugger, createCounter, NS } from "../debug.js";
|
|
3
|
+
import { computeProductionHash } from "./client-ref-hashing.js";
|
|
4
|
+
import { registerServerReferenceRegex } from "./server-reference-pattern.js";
|
|
5
|
+
|
|
6
|
+
const debug = createRangoDebugger(NS.transform);
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Replace dev-style server-reference ids with their production hashes. The temp
|
|
10
|
+
* server renders Static/Prerender in a dev/serve Vite server, so plugin-rsc mints
|
|
11
|
+
* a dev-style id (e.g. "/src/urls/prerender.tsx"); rewriting only the id (group 2)
|
|
12
|
+
* leaves the hoisted function and its trailing encrypted .bind(...) untouched.
|
|
13
|
+
* Exported for testing; used by hashServerRefs. Returns null if nothing changed.
|
|
14
|
+
*/
|
|
15
|
+
export function transformServerRefs(
|
|
16
|
+
code: string,
|
|
17
|
+
projectRoot: string,
|
|
18
|
+
): string | null {
|
|
19
|
+
if (!code.includes("registerServerReference")) return null;
|
|
20
|
+
|
|
21
|
+
let hasReplacement = false;
|
|
22
|
+
const result = code.replace(
|
|
23
|
+
registerServerReferenceRegex(),
|
|
24
|
+
(match, _value: string, refKey: string) => {
|
|
25
|
+
// The temp server is not a long-lived HMR server, so ids are bare; strip a
|
|
26
|
+
// query suffix defensively so the hash matches plugin-rsc's manifest key.
|
|
27
|
+
const cleanKey = refKey.split("?")[0]!;
|
|
28
|
+
const hash = computeProductionHash(projectRoot, cleanKey);
|
|
29
|
+
if (hash === cleanKey) return match;
|
|
30
|
+
hasReplacement = true;
|
|
31
|
+
return match.replace(`"${refKey}"`, `"${hash}"`);
|
|
32
|
+
},
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
return hasReplacement ? result : null;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Server-side analog of hashClientRefs. Runs in the build-discovery temp server
|
|
40
|
+
* (a dev/serve Vite server, where plugin-rsc mints dev-style ids), rewriting
|
|
41
|
+
* registerServerReference ids to production hashes AFTER plugin-rsc's
|
|
42
|
+
* rsc:use-server transform (enforce:"post"), so the Flight serializer bakes the
|
|
43
|
+
* production hash into the stored prerender/static payloads.
|
|
44
|
+
*
|
|
45
|
+
* Without this, a server-created action embedded in a prerendered/static Flight
|
|
46
|
+
* is stored with a dev-style id that the production hash-keyed server-references
|
|
47
|
+
* manifest cannot resolve -> "server reference not found" on a build-time-cache
|
|
48
|
+
* hit. Mirrors hashClientRefs, which already does exactly this for the client
|
|
49
|
+
* half of the same payload (which is why client refs in stored Flight are
|
|
50
|
+
* already production hashes while server refs were not).
|
|
51
|
+
*/
|
|
52
|
+
export function hashServerRefs(projectRoot: string): Plugin {
|
|
53
|
+
const counter = createCounter(debug, "hash-server-refs");
|
|
54
|
+
return {
|
|
55
|
+
name: "@rangojs/router:hash-server-refs",
|
|
56
|
+
enforce: "post",
|
|
57
|
+
applyToEnvironment(env) {
|
|
58
|
+
return env.name === "rsc";
|
|
59
|
+
},
|
|
60
|
+
buildEnd() {
|
|
61
|
+
counter?.flush();
|
|
62
|
+
},
|
|
63
|
+
transform(code, id) {
|
|
64
|
+
const start = counter ? performance.now() : 0;
|
|
65
|
+
try {
|
|
66
|
+
const result = transformServerRefs(code, projectRoot);
|
|
67
|
+
if (result === null) return;
|
|
68
|
+
return { code: result, map: null };
|
|
69
|
+
} finally {
|
|
70
|
+
counter?.record(id, performance.now() - start);
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// plugin-rsc's rsc:use-server transform emits inline/exported server references
|
|
2
|
+
// as `registerServerReference(<value>, "<id>", "<name>")`, where <value> is a
|
|
3
|
+
// hoisted identifier (no top-level comma) and a trailing `.bind(null,
|
|
4
|
+
// encryptActionBoundArgs(...))` lies OUTSIDE the call. Two plugins parse this
|
|
5
|
+
// same shape -- expose-action-id ($id wrapping) and server-ref-hashing (id ->
|
|
6
|
+
// production hash) -- so the pattern has a single owner here. Returns a fresh
|
|
7
|
+
// /g RegExp per call to avoid sharing lastIndex state across callers.
|
|
8
|
+
export function registerServerReferenceRegex(): RegExp {
|
|
9
|
+
return /registerServerReference\(([^,]+),\s*"([^"]+)",\s*"([^"]+)"\)/g;
|
|
10
|
+
}
|
package/src/vite/rango.ts
CHANGED
|
@@ -2,7 +2,9 @@ import { type PluginOption } from "vite";
|
|
|
2
2
|
import { readFileSync, existsSync } from "node:fs";
|
|
3
3
|
import { resolve } from "node:path";
|
|
4
4
|
import { exposeActionId } from "./plugins/expose-action-id.js";
|
|
5
|
+
import { defineEncryptionKeyExpr } from "./encryption-key.js";
|
|
5
6
|
import {
|
|
7
|
+
createLoaderScanStubPlugin,
|
|
6
8
|
exposeInternalIds,
|
|
7
9
|
exposeRouterId,
|
|
8
10
|
} from "./plugins/expose-internal-ids.js";
|
|
@@ -275,6 +277,9 @@ export async function rango(options?: RangoOptions): Promise<PluginOption[]> {
|
|
|
275
277
|
entries: finalEntries,
|
|
276
278
|
serverHandler: false,
|
|
277
279
|
clientChunks,
|
|
280
|
+
// Share one encryption key with the build-discovery temp server so
|
|
281
|
+
// build-time prerender/static inline-action bound args decrypt at runtime.
|
|
282
|
+
defineEncryptionKey: defineEncryptionKeyExpr(),
|
|
278
283
|
}) as PluginOption,
|
|
279
284
|
);
|
|
280
285
|
plugins.push(clientRefDedup());
|
|
@@ -521,6 +526,9 @@ export async function rango(options?: RangoOptions): Promise<PluginOption[]> {
|
|
|
521
526
|
rsc({
|
|
522
527
|
entries: finalEntries,
|
|
523
528
|
clientChunks,
|
|
529
|
+
// Share one encryption key with the build-discovery temp server so
|
|
530
|
+
// build-time prerender/static inline-action bound args decrypt at runtime.
|
|
531
|
+
defineEncryptionKey: defineEncryptionKeyExpr(),
|
|
524
532
|
}) as PluginOption,
|
|
525
533
|
);
|
|
526
534
|
plugins.push(clientRefDedup());
|
|
@@ -551,6 +559,7 @@ export async function rango(options?: RangoOptions): Promise<PluginOption[]> {
|
|
|
551
559
|
},
|
|
552
560
|
});
|
|
553
561
|
|
|
562
|
+
plugins.push(createLoaderScanStubPlugin());
|
|
554
563
|
plugins.push(exposeActionId());
|
|
555
564
|
plugins.push(useCacheTransform());
|
|
556
565
|
plugins.push(exposeInternalIds());
|
|
@@ -45,6 +45,8 @@ import {
|
|
|
45
45
|
exposeRouterId,
|
|
46
46
|
} from "./plugins/expose-internal-ids.js";
|
|
47
47
|
import { hashClientRefs } from "./plugins/client-ref-hashing.js";
|
|
48
|
+
import { hashServerRefs } from "./plugins/server-ref-hashing.js";
|
|
49
|
+
import { defineEncryptionKeyExpr } from "./encryption-key.js";
|
|
48
50
|
import { extractHandlerExportsFromChunk } from "./utils/bundle-analysis.js";
|
|
49
51
|
import {
|
|
50
52
|
createDiscoveryState,
|
|
@@ -224,9 +226,26 @@ async function createTempRscServer(
|
|
|
224
226
|
ssr: "virtual:entry-ssr",
|
|
225
227
|
rsc: state.resolvedEntryPath!,
|
|
226
228
|
},
|
|
229
|
+
// The temp server renders Static/Prerender output and encrypts inline-
|
|
230
|
+
// action bound args. Give it the SAME key as the main build/dev runtime
|
|
231
|
+
// (defineEncryptionKeyExpr is process-cached) so those args decrypt at
|
|
232
|
+
// invocation. Unconditional, NOT build-only: under Cloudflare/workerd dev
|
|
233
|
+
// the RSC env has no module runner, so prerender is rendered by THIS temp
|
|
234
|
+
// server (via /__rsc_prerender), and the action decrypts in the main
|
|
235
|
+
// runtime with the rango.ts key -- gating on forceBuild left dev encrypting
|
|
236
|
+
// with the temp server's own random key, failing decryptActionBoundArgs.
|
|
237
|
+
// (hashServerRefs stays build-only: dev keeps dev-style ids the dev runtime
|
|
238
|
+
// resolves directly.)
|
|
239
|
+
defineEncryptionKey: defineEncryptionKeyExpr(),
|
|
227
240
|
}),
|
|
228
|
-
// hashClientRefs only in build mode — production bundles
|
|
229
|
-
|
|
241
|
+
// hashClientRefs/hashServerRefs only in build mode — production bundles
|
|
242
|
+
// need hashed refs. hashServerRefs is the server-side analog: it rewrites
|
|
243
|
+
// registerServerReference dev-style ids to production hashes so a
|
|
244
|
+
// server-created action embedded in prerendered/static Flight resolves
|
|
245
|
+
// against the production manifest on a build-time-cache hit.
|
|
246
|
+
...(options.forceBuild
|
|
247
|
+
? [hashClientRefs(state.projectRoot), hashServerRefs(state.projectRoot)]
|
|
248
|
+
: []),
|
|
230
249
|
createVersionPlugin(),
|
|
231
250
|
// Before the stub plugin, so "virtual:entry-ssr" resolves to the real
|
|
232
251
|
// SSR entry when the shell endpoint needs it (see the option doc).
|
|
@@ -249,16 +249,21 @@ export function onwarn(
|
|
|
249
249
|
defaultHandler(warning);
|
|
250
250
|
}
|
|
251
251
|
|
|
252
|
+
/**
|
|
253
|
+
* All of `browser/prefetch/` belongs to the eager "router" chunk — including
|
|
254
|
+
* the modules reachable only via loader.ts's dynamic import. #766 split those
|
|
255
|
+
* into a separate lazy chunk to trim the eager runtime (~2.3 KB gzip), but
|
|
256
|
+
* production's `defaultPrefetch: "viewport"` loads them on almost every page,
|
|
257
|
+
* so the split became a document -> router -> runtime request waterfall
|
|
258
|
+
* (measured 502 ms critical-path latency in a deployed worker). Same-chunk
|
|
259
|
+
* placement resolves the dynamic import without a network fetch
|
|
260
|
+
* (`Promise.resolve().then(...)` in the emitted chunk), and the merged chunk
|
|
261
|
+
* gzips smaller than the two chunks did apart. Do not re-split without new
|
|
262
|
+
* information (AGENTS.md, Bundle hygiene, rejected optimizations).
|
|
263
|
+
*/
|
|
252
264
|
export function getManualChunks(id: string): string | undefined {
|
|
253
265
|
const normalized = Vite.normalizePath(id);
|
|
254
266
|
|
|
255
|
-
if (
|
|
256
|
-
/\/browser\/prefetch\/(?:runtime|fetch|queue|observer|policy|resource-ready)\.[cm]?[jt]sx?(?:[?#].*)?$/.test(
|
|
257
|
-
normalized,
|
|
258
|
-
)
|
|
259
|
-
) {
|
|
260
|
-
return undefined;
|
|
261
|
-
}
|
|
262
267
|
if (
|
|
263
268
|
normalized.includes("node_modules/react/") ||
|
|
264
269
|
normalized.includes("node_modules/react-dom/") ||
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Internal Types - Implementation Details
|
|
3
|
-
*
|
|
4
|
-
* @internal
|
|
5
|
-
* These types are for internal use only and should not be relied upon by consumers.
|
|
6
|
-
* They may change without notice between versions.
|
|
7
|
-
*
|
|
8
|
-
* If you find yourself needing these types, please open an issue to discuss
|
|
9
|
-
* adding them to the public API.
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
|
-
* @internal
|
|
13
|
-
* Internal representation of a resolved route segment.
|
|
14
|
-
* Used during route matching and rendering pipeline.
|
|
15
|
-
*/
|
|
16
|
-
export type { ResolvedSegment, SegmentMetadata } from "./types.js";
|
|
17
|
-
/**
|
|
18
|
-
* @internal
|
|
19
|
-
* Internal match result from route resolution.
|
|
20
|
-
*/
|
|
21
|
-
export type { MatchResult, SlotState } from "./types.js";
|
|
22
|
-
/**
|
|
23
|
-
* @internal
|
|
24
|
-
* Context for intercept route selection.
|
|
25
|
-
*/
|
|
26
|
-
export type { InterceptSelectorContext, InterceptSegmentsState, InterceptWhenFn, } from "./server/context.js";
|
|
27
|
-
/**
|
|
28
|
-
* @internal
|
|
29
|
-
* RSC protocol payload structure.
|
|
30
|
-
*/
|
|
31
|
-
export type { RscPayload, ReactFormState } from "./rsc/types.js";
|
|
32
|
-
/**
|
|
33
|
-
* @internal
|
|
34
|
-
* Internal navigation store interface.
|
|
35
|
-
*/
|
|
36
|
-
export type { NavigationStore, NavigationBridge, RscMetadata, ActionResult, InflightAction, NavigationState, TrackedActionState, ActionStateListener, SegmentCache, SegmentState, NavigationUpdate, } from "./browser/types.js";
|
|
37
|
-
/**
|
|
38
|
-
* @internal
|
|
39
|
-
* Internal handle storage mechanism.
|
|
40
|
-
*/
|
|
41
|
-
export type { HandleStore, HandleData } from "./server/handle-store.js";
|
|
42
|
-
/**
|
|
43
|
-
* @internal
|
|
44
|
-
* Segment handle data in cache.
|
|
45
|
-
*/
|
|
46
|
-
export type { SegmentHandleData } from "./cache/types.js";
|
|
47
|
-
/**
|
|
48
|
-
* @internal
|
|
49
|
-
* Internal cache entry data structure.
|
|
50
|
-
*/
|
|
51
|
-
export type { CachedEntryData, CacheGetResult, SerializedSegmentData, CacheDefaults, } from "./cache/types.js";
|
|
52
|
-
/**
|
|
53
|
-
* @internal
|
|
54
|
-
* Router context for AsyncLocalStorage.
|
|
55
|
-
*/
|
|
56
|
-
export type { RouterContext, RevalidationContext, InterceptResult, } from "./router/router-context.js";
|
|
57
|
-
/**
|
|
58
|
-
* @internal
|
|
59
|
-
* Route match context during pipeline processing.
|
|
60
|
-
*/
|
|
61
|
-
export type { MatchContext, MatchPipelineState, } from "./router/match-context.js";
|
|
62
|
-
/**
|
|
63
|
-
* @internal
|
|
64
|
-
* Pattern matching result.
|
|
65
|
-
*/
|
|
66
|
-
export type { RouteMatchResult } from "./router/pattern-matching.js";
|
|
67
|
-
/**
|
|
68
|
-
* @internal
|
|
69
|
-
* Entry data during route traversal.
|
|
70
|
-
*/
|
|
71
|
-
export type { EntryData, InterceptEntry, MetricsStore, PerformanceMetric, EntryCacheConfig, EntryPropCommon, EntryPropDatas, LoaderEntry, EntryPropSegments, } from "./server/context.js";
|
|
72
|
-
/**
|
|
73
|
-
* @internal
|
|
74
|
-
* Internal handler context with additional props for router internals.
|
|
75
|
-
* Includes `_currentSegmentId` and `_responseType`.
|
|
76
|
-
*/
|
|
77
|
-
export type { InternalHandlerContext } from "./types.js";
|
|
78
|
-
/**
|
|
79
|
-
* @internal
|
|
80
|
-
* Builds React element trees from route segments.
|
|
81
|
-
*/
|
|
82
|
-
export { renderSegments } from "./segment-system.js";
|
|
83
|
-
/**
|
|
84
|
-
* @internal
|
|
85
|
-
* Error sanitization and network error utilities.
|
|
86
|
-
*/
|
|
87
|
-
export { sanitizeError, NetworkError, isNetworkError } from "./errors.js";
|
|
88
|
-
/**
|
|
89
|
-
* @internal
|
|
90
|
-
* Scoped view of GeneratedRouteMap for Handler<"localName", ScopedRouteMap<"prefix">>.
|
|
91
|
-
*/
|
|
92
|
-
export type { ScopedRouteMap } from "./types.js";
|
|
93
|
-
/**
|
|
94
|
-
* @internal
|
|
95
|
-
* Type-level utilities for reverse URL generation.
|
|
96
|
-
*/
|
|
97
|
-
export type { MergeRoutes, SanitizePrefix } from "./reverse.js";
|
|
98
|
-
/**
|
|
99
|
-
* @internal
|
|
100
|
-
* Individual telemetry event types.
|
|
101
|
-
*/
|
|
102
|
-
export type { RequestStartEvent, RequestEndEvent, RequestErrorEvent, RequestTimeoutEvent, LoaderStartEvent, LoaderEndEvent, LoaderErrorEvent, HandlerErrorEvent, CacheDecisionEvent, RevalidationDecisionEvent, } from "./router/telemetry.js";
|
|
103
|
-
/**
|
|
104
|
-
* @internal
|
|
105
|
-
* Type guard for prerender handler definitions.
|
|
106
|
-
*/
|
|
107
|
-
export { isPrerenderHandler, isPassthroughHandler } from "./prerender.js";
|
|
108
|
-
/**
|
|
109
|
-
* @internal
|
|
110
|
-
* Type guard for static handler definitions.
|
|
111
|
-
*/
|
|
112
|
-
export { isStaticHandler } from "./static-handler.js";
|
|
113
|
-
/**
|
|
114
|
-
* @internal
|
|
115
|
-
* Sentinel used to tag response-type route entries.
|
|
116
|
-
*/
|
|
117
|
-
export { RESPONSE_TYPE } from "./urls.js";
|
|
118
|
-
/**
|
|
119
|
-
* @internal
|
|
120
|
-
* Debug utilities for route matching performance analysis.
|
|
121
|
-
*/
|
|
122
|
-
export { enableMatchDebug, getMatchDebugStats, } from "./router/pattern-matching.js";
|
|
123
|
-
/**
|
|
124
|
-
* @internal
|
|
125
|
-
* Debug utilities for manifest inspection and comparison.
|
|
126
|
-
*/
|
|
127
|
-
export { serializeManifest, compareManifests, formatManifestDiff, type SerializedEntry, type SerializedManifest, } from "./debug.js";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import type { ActionEntry } from "./event-controller.js";
|
|
2
|
-
/**
|
|
3
|
-
* Post-reconciliation action outcome (discriminated union). Error and
|
|
4
|
-
* full-update-unsupported cases are handled inline in the bridge before
|
|
5
|
-
* reconciliation; this only covers successfully-reconciled partial responses.
|
|
6
|
-
*/
|
|
7
|
-
type ActionScenario = {
|
|
8
|
-
type: "navigated-away";
|
|
9
|
-
historyKeyChanged: boolean;
|
|
10
|
-
onInterceptRoute: boolean;
|
|
11
|
-
} | {
|
|
12
|
-
type: "hmr-missing";
|
|
13
|
-
} | {
|
|
14
|
-
type: "consolidation-needed";
|
|
15
|
-
segmentIds: string[];
|
|
16
|
-
} | {
|
|
17
|
-
type: "concurrent-skip";
|
|
18
|
-
otherFetchingCount: number;
|
|
19
|
-
} | {
|
|
20
|
-
type: "normal";
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Plain data inputs for classifying a post-reconciliation action outcome.
|
|
24
|
-
* No browser objects or controller references — all values are snapshots.
|
|
25
|
-
*/
|
|
26
|
-
export interface ActionOutcomeInput {
|
|
27
|
-
/** This action's unique instance ID */
|
|
28
|
-
handleId: string;
|
|
29
|
-
/** All in-flight action entries (snapshot from event controller) */
|
|
30
|
-
inflightActions: Map<string, ActionEntry>;
|
|
31
|
-
/** Whether any concurrent actions occurred (controller-level shared flag) */
|
|
32
|
-
hadAnyConcurrentActions: boolean;
|
|
33
|
-
/** Segments revalidated by concurrent actions (from tracking set) */
|
|
34
|
-
revalidatedSegments: Set<string>;
|
|
35
|
-
/** window.location.pathname captured at action start */
|
|
36
|
-
actionStartPathname: string;
|
|
37
|
-
/** window.location.pathname at classification time */
|
|
38
|
-
currentPathname: string;
|
|
39
|
-
/** window.history.state?.key captured at action start */
|
|
40
|
-
actionStartLocationKey: string | undefined;
|
|
41
|
-
/** window.history.state?.key at classification time */
|
|
42
|
-
currentLocationKey: string | undefined;
|
|
43
|
-
/** Number of segments after reconciliation */
|
|
44
|
-
reconciledSegmentCount: number;
|
|
45
|
-
/** Number of matched segment IDs from server */
|
|
46
|
-
matchedCount: number;
|
|
47
|
-
/** Current intercept source URL (null when not on intercept route) */
|
|
48
|
-
currentInterceptSource: string | null;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Classify a post-reconciliation action outcome. Ordered priority chain: each
|
|
52
|
-
* case assumes the earlier ones are false (e.g. concurrent-skip only applies on
|
|
53
|
-
* the still-current route, consolidation only once no action is still fetching).
|
|
54
|
-
* The bridge calls this to decide whether to render, skip, consolidate, or refetch.
|
|
55
|
-
*/
|
|
56
|
-
export declare function classifyActionOutcome(input: ActionOutcomeInput): ActionScenario;
|
|
57
|
-
export {};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Action fence: a refcounted flag that is raised while a server action is in
|
|
3
|
-
* flight and lowered when it resolves.
|
|
4
|
-
*
|
|
5
|
-
* It replaces the eager cache clear the action bridge used to do at action
|
|
6
|
-
* start. While the fence is up, the decision of whether the action invalidated
|
|
7
|
-
* anything is deferred to the response:
|
|
8
|
-
*
|
|
9
|
-
* - prefetch consumption is suspended (a queued prefetch result is not served),
|
|
10
|
-
* - a genuine navigation during the flight fetches with `cache: "no-store"` so
|
|
11
|
-
* it cannot be served stale bytes from the browser's Vary-keyed HTTP cache,
|
|
12
|
-
* - popstate reads are treated as stale-while-revalidate.
|
|
13
|
-
*
|
|
14
|
-
* Nothing is wiped, rotated, or broadcast while the fence is up — that is what
|
|
15
|
-
* keeps a sibling tab from seeing a pre-commit signal. Refcounted so concurrent
|
|
16
|
-
* actions compose: each action raises and lowers its own reference, and the
|
|
17
|
-
* fence is down only when the count reaches zero.
|
|
18
|
-
*
|
|
19
|
-
* The refcount is a single module-level counter, not keyed by routerId.
|
|
20
|
-
* Consumers (navigation-client.ts, prefetch/fetch.ts, navigation-bridge.ts)
|
|
21
|
-
* read it unscoped, so an action in one router would suppress another router's
|
|
22
|
-
* navigation/prefetch caches. This is correct only because two routers cannot
|
|
23
|
-
* coexist in one live document: an SPA navigation crossing a host-router
|
|
24
|
-
* boundary forces a full document reload (src/router/request-classification.ts
|
|
25
|
-
* app-switch terminal), so there is always exactly one live router per
|
|
26
|
-
* document. A future multi-router-in-one-document feature must not silently
|
|
27
|
-
* inherit this global, cross-router cache suppression.
|
|
28
|
-
*/
|
|
29
|
-
export declare function enterActionFence(): void;
|
|
30
|
-
export declare function exitActionFence(): void;
|
|
31
|
-
export declare function isActionFenceActive(): boolean;
|
|
32
|
-
/** Test-only: reset the refcount between cases. */
|
|
33
|
-
export declare function __resetActionFence(): void;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type { ComponentType, ReactNode } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* App-shell metadata: the per-router fields describing the "envelope" around
|
|
4
|
-
* the current app's segment tree — the rootLayout (Document), basename,
|
|
5
|
-
* version, and router identity. Set once from the initial RSC payload and read
|
|
6
|
-
* through the AppShellRef when rendering segments.
|
|
7
|
-
*
|
|
8
|
-
* This is a per-document value. A navigation that crosses a host-router app
|
|
9
|
-
* boundary is a full document load (the server returns X-RSC-Reload for it;
|
|
10
|
-
* see request-classification.ts, mode "app-switch"), so the target app's shell
|
|
11
|
-
* — along with everything else document-level (theme, warmup, prefetch-TTL) —
|
|
12
|
-
* is established fresh by the target app's own load. The shell is never swapped
|
|
13
|
-
* in place within a session.
|
|
14
|
-
*/
|
|
15
|
-
export interface AppShell {
|
|
16
|
-
/** Router identity. Used to namespace per-app client state (e.g. the
|
|
17
|
-
* rango-state localStorage key) so sibling apps on the same origin
|
|
18
|
-
* cannot observe each other's cache invalidations. */
|
|
19
|
-
routerId?: string;
|
|
20
|
-
rootLayout?: ComponentType<{
|
|
21
|
-
children: ReactNode;
|
|
22
|
-
}>;
|
|
23
|
-
basename?: string;
|
|
24
|
-
version?: string;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Container for the active app shell. Read-through via `get()` so closures
|
|
28
|
-
* (e.g. the segment renderer) capture the ref and read the shell at call time
|
|
29
|
-
* rather than closing over a stale snapshot.
|
|
30
|
-
*/
|
|
31
|
-
export interface AppShellRef {
|
|
32
|
-
get(): AppShell;
|
|
33
|
-
}
|
|
34
|
-
export declare function createAppShellRef(initial: AppShell): AppShellRef;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Connection warmup: keep TLS alive after idle periods.
|
|
3
|
-
*
|
|
4
|
-
* After IDLE_TIMEOUT of no user interaction the connection is marked "cold".
|
|
5
|
-
* On the next pointer/touch interaction or a visibility change, a HEAD request
|
|
6
|
-
* warms the TLS connection before the user actually clicks a link.
|
|
7
|
-
*
|
|
8
|
-
* Extracted from NavigationProvider so the idle/cold/warmup state machine is
|
|
9
|
-
* unit-testable with an injected environment (document, fetch, timers).
|
|
10
|
-
*
|
|
11
|
-
* Ordering bug this guards against: the warmup listeners (mousemove/touchstart)
|
|
12
|
-
* share events with the idle-reset listeners, and the idle-reset listener is
|
|
13
|
-
* registered first, so it clears the live "cold" flag before the warmup
|
|
14
|
-
* listener reads it on the same event. A separate coldLatch — set when the
|
|
15
|
-
* connection goes cold and cleared only when warmup fires or listeners detach,
|
|
16
|
-
* never by the idle reset — lets the warmup decision see the pre-reset cold
|
|
17
|
-
* state regardless of listener ordering.
|
|
18
|
-
*/
|
|
19
|
-
type TimerHandle = ReturnType<typeof setTimeout>;
|
|
20
|
-
export interface WarmupEnv {
|
|
21
|
-
doc: Pick<Document, "addEventListener" | "removeEventListener" | "visibilityState">;
|
|
22
|
-
fetch: typeof fetch;
|
|
23
|
-
setTimeout: (fn: () => void, ms: number) => TimerHandle;
|
|
24
|
-
clearTimeout: (handle: TimerHandle | undefined) => void;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Start the connection-warmup state machine. Returns a cleanup function that
|
|
28
|
-
* cancels timers and removes all listeners.
|
|
29
|
-
*/
|
|
30
|
-
export declare function startConnectionWarmup(env?: WarmupEnv): () => void;
|
|
31
|
-
export {};
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Rango state cookie: value codec and attribute serialization.
|
|
3
|
-
*
|
|
4
|
-
* Shared by the client (the document.cookie writer in rango-state.ts) and the
|
|
5
|
-
* server (the Set-Cookie writer in invalidateClientCache). Environment-agnostic:
|
|
6
|
-
* no window/document access and no name composition.
|
|
7
|
-
*
|
|
8
|
-
* Name RESOLUTION deliberately lives elsewhere (router init, see
|
|
9
|
-
* router/state-cookie-name.ts). Keeping composition out of this shared module
|
|
10
|
-
* is what lets the client read the server-resolved name verbatim and compose
|
|
11
|
-
* nothing.
|
|
12
|
-
*/
|
|
13
|
-
/** Default prefix when `stateCookiePrefix` is unset or empty after sanitization. */
|
|
14
|
-
export declare const DEFAULT_STATE_COOKIE_PREFIX = "rango-state";
|
|
15
|
-
/** Internal response header carrying the keepClientCache() directive. */
|
|
16
|
-
export declare const KEEP_CACHE_HEADER = "x-rango-keep-cache";
|
|
17
|
-
/** True for a per-client signal header. */
|
|
18
|
-
export declare function isPerClientSignalHeader(name: string): boolean;
|
|
19
|
-
/** True if `headers` carries any per-client signal. */
|
|
20
|
-
export declare function hasPerClientSignal(headers: Headers): boolean;
|
|
21
|
-
/** Remove every per-client signal header from `headers` in place. */
|
|
22
|
-
export declare function stripPerClientSignals(headers: Headers): void;
|
|
23
|
-
/**
|
|
24
|
-
* Read the raw, UNDECODED value of a single cookie from a cookie string (a
|
|
25
|
-
* `document.cookie` jar or a request `Cookie` header). Shared by both seats so
|
|
26
|
-
* the client mirror and the server monotonic-guard read the SAME jar entry —
|
|
27
|
-
* their agreement is the guard's contract. First match wins (the entry the
|
|
28
|
-
* client's mirror holds); exact name boundary via the `=`; an empty value
|
|
29
|
-
* (`name=`) returns null (treated as absent, not a usable prior value).
|
|
30
|
-
*/
|
|
31
|
-
export declare function getRawCookieValue(cookieString: string | null, name: string): string | null;
|
|
32
|
-
/**
|
|
33
|
-
* Encode a state value for the wire: `encodeURIComponent(version):timestamp`.
|
|
34
|
-
* Only the build-derived version is encoded (it is arbitrary); the `:`
|
|
35
|
-
* separator and numeric timestamp stay raw, so the `{version}:{timestamp}`
|
|
36
|
-
* shape survives and `:` is a legal cookie-value octet.
|
|
37
|
-
*/
|
|
38
|
-
export declare function encodeStateValue(version: string, timestamp: number): string;
|
|
39
|
-
/** Parsed state value. `version` is decoded; `timestamp` is the raw integer. */
|
|
40
|
-
export interface StateValue {
|
|
41
|
-
version: string;
|
|
42
|
-
timestamp: number;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Decode a wire value back into `{version, timestamp}`. Returns null for a
|
|
46
|
-
* malformed value (no `:`, empty version, or non-numeric timestamp) so callers
|
|
47
|
-
* mint fresh instead of trusting garbage.
|
|
48
|
-
*/
|
|
49
|
-
export declare function decodeStateValue(raw: string): StateValue | null;
|
|
50
|
-
/**
|
|
51
|
-
* Mint a fresh state value whose timestamp is strictly greater than the previous
|
|
52
|
-
* one, so a re-mint inside the same millisecond (or a backward clock step) still
|
|
53
|
-
* differs from the current value. `prevRaw` is the current wire value (the
|
|
54
|
-
* client's in-memory mirror, or the server's inbound header/cookie) or null; its
|
|
55
|
-
* timestamp is the floor. Shared by both seats so the monotonic guard lives once.
|
|
56
|
-
*/
|
|
57
|
-
export declare function mintStateValue(version: string, prevRaw: string | null): string;
|
|
58
|
-
/**
|
|
59
|
-
* Attribute string for the state cookie. Session cookie (no Max-Age/Expires),
|
|
60
|
-
* Path=/ (whole app), SameSite=Lax (sent on top-level navigations), and Secure
|
|
61
|
-
* only on https so the document.cookie write does not silently fail on plain
|
|
62
|
-
* http dev. Never HttpOnly (the client reads and writes it).
|
|
63
|
-
*/
|
|
64
|
-
export declare function stateCookieAttributes(secure: boolean): string;
|
|
65
|
-
/** Serialize a full `name=value` cookie string with the state attributes. */
|
|
66
|
-
export declare function serializeStateCookie(name: string, value: string, secure: boolean): string;
|