@rangojs/router 0.0.0-experimental.124 → 0.0.0-experimental.125
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/rango.js +3 -4
- package/dist/vite/index.js +9 -43
- package/package.json +1 -1
- package/skills/hooks/SKILL.md +2 -2
- package/skills/route/SKILL.md +6 -0
- package/src/__internal.ts +0 -65
- package/src/browser/action-coordinator.ts +1 -1
- package/src/browser/action-fence.ts +10 -0
- package/src/browser/event-controller.ts +1 -83
- package/src/browser/navigation-store-handle.ts +3 -4
- package/src/browser/navigation-store.ts +0 -39
- package/src/browser/navigation-transaction.ts +0 -32
- package/src/browser/partial-update.ts +1 -83
- package/src/browser/prefetch/cache.ts +6 -45
- package/src/browser/prefetch/queue.ts +6 -3
- package/src/browser/rango-state.ts +2 -23
- package/src/browser/react/Link.tsx +0 -2
- package/src/browser/react/NavigationProvider.tsx +2 -1
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/filter-segment-order.ts +0 -2
- package/src/browser/react/index.ts +0 -45
- package/src/browser/react/location-state-shared.ts +0 -13
- package/src/browser/react/location-state.ts +0 -1
- package/src/browser/react/use-action.ts +6 -15
- package/src/browser/react/use-handle.ts +0 -5
- package/src/browser/react/use-link-status.ts +0 -4
- package/src/browser/react/use-navigation.ts +0 -3
- package/src/browser/react/use-params.ts +0 -2
- package/src/browser/react/use-search-params.ts +0 -5
- package/src/browser/react/use-segments.ts +0 -13
- package/src/browser/rsc-router.tsx +2 -2
- package/src/browser/types.ts +0 -1
- package/src/browser/validate-redirect-origin.ts +4 -5
- package/src/build/route-trie.ts +3 -0
- package/src/build/route-types/param-extraction.ts +6 -3
- package/src/build/route-types/router-processing.ts +0 -8
- package/src/cache/cache-policy.ts +0 -54
- package/src/cache/cache-runtime.ts +27 -24
- package/src/cache/cache-scope.ts +0 -27
- package/src/cache/cache-tag.ts +0 -37
- package/src/cache/cf/cf-cache-store.ts +72 -45
- package/src/cache/cf/index.ts +0 -24
- package/src/cache/document-cache.ts +0 -36
- package/src/cache/handle-snapshot.ts +0 -40
- package/src/cache/index.ts +0 -27
- package/src/cache/memory-segment-store.ts +0 -52
- package/src/cache/profile-registry.ts +7 -3
- package/src/cache/read-through-swr.ts +41 -11
- package/src/cache/segment-codec.ts +0 -16
- package/src/cache/types.ts +0 -98
- package/src/client.rsc.tsx +1 -22
- package/src/client.tsx +14 -32
- package/src/deps/ssr.ts +0 -1
- package/src/handle.ts +2 -12
- package/src/handles/MetaTags.tsx +0 -14
- package/src/handles/meta.ts +0 -39
- package/src/host/cookie-handler.ts +0 -36
- package/src/host/errors.ts +0 -24
- package/src/host/index.ts +6 -0
- package/src/host/pattern-matcher.ts +7 -50
- package/src/host/router.ts +1 -65
- package/src/host/testing.ts +0 -16
- package/src/host/types.ts +6 -2
- package/src/href-client.ts +0 -4
- package/src/index.rsc.ts +20 -2
- package/src/internal-debug.ts +2 -4
- package/src/loader.rsc.ts +4 -15
- package/src/loader.ts +3 -9
- package/src/network-error-thrower.tsx +1 -6
- package/src/outlet-provider.tsx +1 -5
- package/src/prerender/param-hash.ts +10 -11
- package/src/prerender/store.ts +23 -30
- package/src/prerender.ts +34 -0
- package/src/root-error-boundary.tsx +1 -19
- package/src/route-content-wrapper.tsx +1 -44
- package/src/route-definition/dsl-helpers.ts +7 -19
- package/src/route-definition/helpers-types.ts +3 -3
- package/src/route-definition/redirect.ts +11 -1
- package/src/route-map-builder.ts +0 -16
- package/src/router/content-negotiation.ts +0 -13
- package/src/router/error-handling.ts +12 -16
- package/src/router/find-match.ts +4 -30
- package/src/router/intercept-resolution.ts +10 -1
- package/src/router/lazy-includes.ts +1 -57
- package/src/router/loader-resolution.ts +3 -2
- package/src/router/logging.ts +0 -6
- package/src/router/manifest.ts +1 -25
- package/src/router/match-api.ts +0 -20
- package/src/router/match-context.ts +0 -22
- package/src/router/match-handlers.ts +0 -43
- package/src/router/match-middleware/background-revalidation.ts +0 -7
- package/src/router/match-middleware/cache-lookup.ts +1 -54
- package/src/router/match-middleware/cache-store.ts +0 -31
- package/src/router/match-middleware/intercept-resolution.ts +0 -22
- package/src/router/match-middleware/segment-resolution.ts +0 -21
- package/src/router/match-pipelines.ts +1 -42
- package/src/router/match-result.ts +1 -52
- package/src/router/metrics.ts +0 -34
- package/src/router/middleware-cookies.ts +0 -13
- package/src/router/middleware-types.ts +0 -115
- package/src/router/middleware.ts +7 -30
- package/src/router/navigation-snapshot.ts +0 -51
- package/src/router/params-util.ts +23 -0
- package/src/router/pattern-matching.ts +1 -33
- package/src/router/prerender-match.ts +29 -45
- package/src/router/request-classification.ts +1 -38
- package/src/router/revalidation.ts +5 -58
- package/src/router/router-context.ts +0 -26
- package/src/router/segment-resolution/fresh.ts +25 -57
- package/src/router/segment-resolution/helpers.ts +34 -0
- package/src/router/segment-resolution/loader-cache.ts +10 -13
- package/src/router/segment-resolution/revalidation.ts +5 -42
- package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
- package/src/router/segment-resolution.ts +4 -1
- package/src/router/telemetry-otel.ts +0 -20
- package/src/router/telemetry.ts +0 -22
- package/src/router/timeout.ts +0 -20
- package/src/router/trie-matching.ts +63 -40
- package/src/router/types.ts +1 -63
- package/src/router/url-params.ts +0 -5
- package/src/router.ts +4 -2
- package/src/rsc/handler.ts +11 -2
- package/src/rsc/helpers.ts +15 -0
- package/src/rsc/origin-guard.ts +0 -12
- package/src/rsc/progressive-enhancement.ts +2 -1
- package/src/rsc/rsc-rendering.ts +2 -7
- package/src/rsc/runtime-warnings.ts +14 -0
- package/src/rsc/server-action.ts +30 -28
- package/src/rsc/types.ts +0 -1
- package/src/search-params.ts +0 -16
- package/src/segment-loader-promise.ts +14 -2
- package/src/segment-system.tsx +79 -88
- package/src/server/handle-store.ts +7 -24
- package/src/server/loader-registry.ts +5 -24
- package/src/server/request-context.ts +6 -78
- package/src/ssr/index.tsx +14 -14
- package/src/static-handler.ts +2 -27
- package/src/testing/cache-status.ts +0 -47
- package/src/testing/collect-handle.ts +1 -24
- package/src/testing/e2e/index.ts +0 -22
- package/src/testing/e2e/matchers.ts +0 -16
- package/src/testing/flight-matchers.ts +0 -13
- package/src/testing/flight-normalize.ts +3 -30
- package/src/testing/flight.ts +0 -48
- package/src/testing/generated-routes.ts +1 -41
- package/src/testing/index.ts +0 -21
- package/src/testing/internal/context.ts +3 -45
- package/src/testing/internal/seed-vars.ts +0 -26
- package/src/testing/render-handler.ts +0 -49
- package/src/testing/render-route.tsx +0 -90
- package/src/testing/run-loader.ts +0 -96
- package/src/testing/run-middleware.ts +0 -26
- package/src/theme/ThemeProvider.tsx +0 -52
- package/src/theme/ThemeScript.tsx +0 -6
- package/src/theme/constants.ts +0 -12
- package/src/theme/index.ts +0 -7
- package/src/theme/theme-context.ts +1 -5
- package/src/theme/theme-script.ts +0 -14
- package/src/theme/use-theme.ts +0 -3
- package/src/types/boundaries.ts +0 -35
- package/src/types/error-types.ts +25 -89
- package/src/types/global-namespace.ts +4 -14
- package/src/types/handler-context.ts +0 -8
- package/src/types/index.ts +0 -10
- package/src/types/request-scope.ts +0 -19
- package/src/types/route-config.ts +6 -50
- package/src/types/route-entry.ts +0 -6
- package/src/types/segments.ts +0 -13
- package/src/urls/include-helper.ts +0 -4
- package/src/urls/index.ts +0 -6
- package/src/urls/path-helper-types.ts +2 -2
- package/src/urls/path-helper.ts +0 -54
- package/src/urls/urls-function.ts +0 -13
- package/src/use-loader.tsx +0 -186
- package/src/vite/discovery/bundle-postprocess.ts +2 -1
- package/src/vite/discovery/discover-routers.ts +6 -7
- package/src/vite/discovery/virtual-module-codegen.ts +1 -11
- package/src/vite/plugin-types.ts +3 -1
- package/src/vite/plugins/cjs-to-esm.ts +0 -11
- package/src/vite/plugins/client-ref-dedup.ts +0 -11
- package/src/vite/plugins/client-ref-hashing.ts +0 -10
- package/src/vite/plugins/cloudflare-protocol-stub.ts +0 -20
- package/src/vite/plugins/expose-action-id.ts +2 -73
- package/src/vite/plugins/expose-id-utils.ts +0 -55
- package/src/vite/plugins/expose-ids/export-analysis.ts +0 -38
- package/src/vite/plugins/expose-ids/handler-transform.ts +0 -15
- package/src/vite/plugins/expose-ids/loader-transform.ts +0 -15
- package/src/vite/plugins/expose-ids/router-transform.ts +0 -13
- package/src/vite/plugins/expose-internal-ids.ts +10 -0
- package/src/vite/plugins/performance-tracks.ts +0 -3
- package/src/vite/plugins/use-cache-transform.ts +0 -36
- package/src/vite/plugins/version-injector.ts +0 -20
- package/src/vite/plugins/version-plugin.ts +1 -49
- package/src/vite/plugins/virtual-entries.ts +0 -15
- package/src/vite/rango.ts +1 -108
- package/src/vite/router-discovery.ts +2 -1
- package/src/vite/utils/ast-handler-extract.ts +0 -16
- package/src/vite/utils/bundle-analysis.ts +6 -13
- package/src/vite/utils/client-chunks.ts +0 -6
- package/src/vite/utils/forward-user-plugins.ts +0 -22
- package/src/vite/utils/manifest-utils.ts +0 -4
- package/src/vite/utils/package-resolution.ts +1 -73
- package/src/vite/utils/prerender-utils.ts +0 -35
- package/src/vite/utils/shared-utils.ts +3 -35
- package/dist/__internal.d.ts +0 -83
- package/dist/__internal.d.ts.map +0 -1
- package/dist/__internal.js +0 -19
- package/dist/__internal.js.map +0 -1
- package/dist/__mocks__/version.d.ts +0 -7
- package/dist/__mocks__/version.d.ts.map +0 -1
- package/dist/__mocks__/version.js +0 -7
- package/dist/__mocks__/version.js.map +0 -1
- package/dist/__tests__/client-href.test.d.ts +0 -2
- package/dist/__tests__/client-href.test.d.ts.map +0 -1
- package/dist/__tests__/client-href.test.js +0 -74
- package/dist/__tests__/client-href.test.js.map +0 -1
- package/dist/__tests__/component-utils.test.d.ts +0 -2
- package/dist/__tests__/component-utils.test.d.ts.map +0 -1
- package/dist/__tests__/component-utils.test.js +0 -51
- package/dist/__tests__/component-utils.test.js.map +0 -1
- package/dist/__tests__/event-controller.test.d.ts +0 -2
- package/dist/__tests__/event-controller.test.d.ts.map +0 -1
- package/dist/__tests__/event-controller.test.js +0 -538
- package/dist/__tests__/event-controller.test.js.map +0 -1
- package/dist/__tests__/helpers/route-tree.d.ts +0 -118
- package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
- package/dist/__tests__/helpers/route-tree.js +0 -374
- package/dist/__tests__/helpers/route-tree.js.map +0 -1
- package/dist/__tests__/match-result.test.d.ts +0 -2
- package/dist/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/__tests__/match-result.test.js +0 -154
- package/dist/__tests__/match-result.test.js.map +0 -1
- package/dist/__tests__/navigation-store.test.d.ts +0 -2
- package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
- package/dist/__tests__/navigation-store.test.js +0 -440
- package/dist/__tests__/navigation-store.test.js.map +0 -1
- package/dist/__tests__/partial-update.test.d.ts +0 -2
- package/dist/__tests__/partial-update.test.d.ts.map +0 -1
- package/dist/__tests__/partial-update.test.js +0 -1009
- package/dist/__tests__/partial-update.test.js.map +0 -1
- package/dist/__tests__/reverse-types.test.d.ts +0 -8
- package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
- package/dist/__tests__/reverse-types.test.js +0 -656
- package/dist/__tests__/reverse-types.test.js.map +0 -1
- package/dist/__tests__/route-definition.test.d.ts +0 -2
- package/dist/__tests__/route-definition.test.d.ts.map +0 -1
- package/dist/__tests__/route-definition.test.js +0 -55
- package/dist/__tests__/route-definition.test.js.map +0 -1
- package/dist/__tests__/router-helpers.test.d.ts +0 -2
- package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
- package/dist/__tests__/router-helpers.test.js +0 -377
- package/dist/__tests__/router-helpers.test.js.map +0 -1
- package/dist/__tests__/router-integration-2.test.d.ts +0 -2
- package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration-2.test.js +0 -426
- package/dist/__tests__/router-integration-2.test.js.map +0 -1
- package/dist/__tests__/router-integration.test.d.ts +0 -2
- package/dist/__tests__/router-integration.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration.test.js +0 -1051
- package/dist/__tests__/router-integration.test.js.map +0 -1
- package/dist/__tests__/search-params.test.d.ts +0 -5
- package/dist/__tests__/search-params.test.d.ts.map +0 -1
- package/dist/__tests__/search-params.test.js +0 -306
- package/dist/__tests__/search-params.test.js.map +0 -1
- package/dist/__tests__/segment-system.test.d.ts +0 -2
- package/dist/__tests__/segment-system.test.d.ts.map +0 -1
- package/dist/__tests__/segment-system.test.js +0 -627
- package/dist/__tests__/segment-system.test.js.map +0 -1
- package/dist/__tests__/static-handler-types.test.d.ts +0 -8
- package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
- package/dist/__tests__/static-handler-types.test.js +0 -63
- package/dist/__tests__/static-handler-types.test.js.map +0 -1
- package/dist/__tests__/urls.test.d.ts +0 -2
- package/dist/__tests__/urls.test.d.ts.map +0 -1
- package/dist/__tests__/urls.test.js +0 -421
- package/dist/__tests__/urls.test.js.map +0 -1
- package/dist/__tests__/use-mount.test.d.ts +0 -2
- package/dist/__tests__/use-mount.test.d.ts.map +0 -1
- package/dist/__tests__/use-mount.test.js +0 -35
- package/dist/__tests__/use-mount.test.js.map +0 -1
- package/dist/bin/rango.d.ts +0 -2
- package/dist/bin/rango.d.ts.map +0 -1
- package/dist/bin/rango.js.map +0 -1
- package/dist/browser/event-controller.d.ts +0 -191
- package/dist/browser/event-controller.d.ts.map +0 -1
- package/dist/browser/event-controller.js +0 -559
- package/dist/browser/event-controller.js.map +0 -1
- package/dist/browser/index.d.ts +0 -2
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -14
- package/dist/browser/index.js.map +0 -1
- package/dist/browser/link-interceptor.d.ts +0 -38
- package/dist/browser/link-interceptor.d.ts.map +0 -1
- package/dist/browser/link-interceptor.js +0 -99
- package/dist/browser/link-interceptor.js.map +0 -1
- package/dist/browser/logging.d.ts +0 -10
- package/dist/browser/logging.d.ts.map +0 -1
- package/dist/browser/logging.js +0 -29
- package/dist/browser/logging.js.map +0 -1
- package/dist/browser/lru-cache.d.ts +0 -17
- package/dist/browser/lru-cache.d.ts.map +0 -1
- package/dist/browser/lru-cache.js +0 -50
- package/dist/browser/lru-cache.js.map +0 -1
- package/dist/browser/merge-segment-loaders.d.ts +0 -39
- package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
- package/dist/browser/merge-segment-loaders.js +0 -102
- package/dist/browser/merge-segment-loaders.js.map +0 -1
- package/dist/browser/navigation-bridge.d.ts +0 -102
- package/dist/browser/navigation-bridge.d.ts.map +0 -1
- package/dist/browser/navigation-bridge.js +0 -708
- package/dist/browser/navigation-bridge.js.map +0 -1
- package/dist/browser/navigation-client.d.ts +0 -25
- package/dist/browser/navigation-client.d.ts.map +0 -1
- package/dist/browser/navigation-client.js +0 -157
- package/dist/browser/navigation-client.js.map +0 -1
- package/dist/browser/navigation-store.d.ts +0 -101
- package/dist/browser/navigation-store.d.ts.map +0 -1
- package/dist/browser/navigation-store.js +0 -625
- package/dist/browser/navigation-store.js.map +0 -1
- package/dist/browser/partial-update.d.ts +0 -75
- package/dist/browser/partial-update.d.ts.map +0 -1
- package/dist/browser/partial-update.js +0 -426
- package/dist/browser/partial-update.js.map +0 -1
- package/dist/browser/react/Link.d.ts +0 -86
- package/dist/browser/react/Link.d.ts.map +0 -1
- package/dist/browser/react/Link.js +0 -128
- package/dist/browser/react/Link.js.map +0 -1
- package/dist/browser/react/NavigationProvider.d.ts +0 -63
- package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
- package/dist/browser/react/NavigationProvider.js +0 -216
- package/dist/browser/react/NavigationProvider.js.map +0 -1
- package/dist/browser/react/ScrollRestoration.d.ts +0 -75
- package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
- package/dist/browser/react/ScrollRestoration.js +0 -57
- package/dist/browser/react/ScrollRestoration.js.map +0 -1
- package/dist/browser/react/context.d.ts +0 -46
- package/dist/browser/react/context.d.ts.map +0 -1
- package/dist/browser/react/context.js +0 -10
- package/dist/browser/react/context.js.map +0 -1
- package/dist/browser/react/index.d.ts +0 -11
- package/dist/browser/react/index.d.ts.map +0 -1
- package/dist/browser/react/index.js +0 -22
- package/dist/browser/react/index.js.map +0 -1
- package/dist/browser/react/location-state-shared.d.ts +0 -63
- package/dist/browser/react/location-state-shared.d.ts.map +0 -1
- package/dist/browser/react/location-state-shared.js +0 -81
- package/dist/browser/react/location-state-shared.js.map +0 -1
- package/dist/browser/react/location-state.d.ts +0 -23
- package/dist/browser/react/location-state.d.ts.map +0 -1
- package/dist/browser/react/location-state.js +0 -29
- package/dist/browser/react/location-state.js.map +0 -1
- package/dist/browser/react/mount-context.d.ts +0 -24
- package/dist/browser/react/mount-context.d.ts.map +0 -1
- package/dist/browser/react/mount-context.js +0 -24
- package/dist/browser/react/mount-context.js.map +0 -1
- package/dist/browser/react/use-action.d.ts +0 -64
- package/dist/browser/react/use-action.d.ts.map +0 -1
- package/dist/browser/react/use-action.js +0 -134
- package/dist/browser/react/use-action.js.map +0 -1
- package/dist/browser/react/use-client-cache.d.ts +0 -41
- package/dist/browser/react/use-client-cache.d.ts.map +0 -1
- package/dist/browser/react/use-client-cache.js +0 -39
- package/dist/browser/react/use-client-cache.js.map +0 -1
- package/dist/browser/react/use-handle.d.ts +0 -31
- package/dist/browser/react/use-handle.d.ts.map +0 -1
- package/dist/browser/react/use-handle.js +0 -144
- package/dist/browser/react/use-handle.js.map +0 -1
- package/dist/browser/react/use-href.d.ts +0 -33
- package/dist/browser/react/use-href.d.ts.map +0 -1
- package/dist/browser/react/use-href.js +0 -39
- package/dist/browser/react/use-href.js.map +0 -1
- package/dist/browser/react/use-link-status.d.ts +0 -37
- package/dist/browser/react/use-link-status.d.ts.map +0 -1
- package/dist/browser/react/use-link-status.js +0 -99
- package/dist/browser/react/use-link-status.js.map +0 -1
- package/dist/browser/react/use-mount.d.ts +0 -25
- package/dist/browser/react/use-mount.d.ts.map +0 -1
- package/dist/browser/react/use-mount.js +0 -30
- package/dist/browser/react/use-mount.js.map +0 -1
- package/dist/browser/react/use-navigation.d.ts +0 -27
- package/dist/browser/react/use-navigation.d.ts.map +0 -1
- package/dist/browser/react/use-navigation.js +0 -87
- package/dist/browser/react/use-navigation.js.map +0 -1
- package/dist/browser/react/use-segments.d.ts +0 -38
- package/dist/browser/react/use-segments.d.ts.map +0 -1
- package/dist/browser/react/use-segments.js +0 -130
- package/dist/browser/react/use-segments.js.map +0 -1
- package/dist/browser/request-controller.d.ts +0 -26
- package/dist/browser/request-controller.d.ts.map +0 -1
- package/dist/browser/request-controller.js +0 -147
- package/dist/browser/request-controller.js.map +0 -1
- package/dist/browser/rsc-router.d.ts +0 -129
- package/dist/browser/rsc-router.d.ts.map +0 -1
- package/dist/browser/rsc-router.js +0 -195
- package/dist/browser/rsc-router.js.map +0 -1
- package/dist/browser/scroll-restoration.d.ts +0 -93
- package/dist/browser/scroll-restoration.d.ts.map +0 -1
- package/dist/browser/scroll-restoration.js +0 -321
- package/dist/browser/scroll-restoration.js.map +0 -1
- package/dist/browser/segment-structure-assert.d.ts +0 -17
- package/dist/browser/segment-structure-assert.d.ts.map +0 -1
- package/dist/browser/segment-structure-assert.js +0 -59
- package/dist/browser/segment-structure-assert.js.map +0 -1
- package/dist/browser/server-action-bridge.d.ts +0 -26
- package/dist/browser/server-action-bridge.d.ts.map +0 -1
- package/dist/browser/server-action-bridge.js +0 -668
- package/dist/browser/server-action-bridge.js.map +0 -1
- package/dist/browser/shallow.d.ts +0 -12
- package/dist/browser/shallow.d.ts.map +0 -1
- package/dist/browser/shallow.js +0 -34
- package/dist/browser/shallow.js.map +0 -1
- package/dist/browser/types.d.ts +0 -369
- package/dist/browser/types.d.ts.map +0 -1
- package/dist/browser/types.js +0 -2
- package/dist/browser/types.js.map +0 -1
- package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
- package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-cli.test.js +0 -237
- package/dist/build/__tests__/generate-cli.test.js.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.js +0 -119
- package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.js +0 -620
- package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.js +0 -308
- package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
- package/dist/build/generate-manifest.d.ts +0 -81
- package/dist/build/generate-manifest.d.ts.map +0 -1
- package/dist/build/generate-manifest.js +0 -276
- package/dist/build/generate-manifest.js.map +0 -1
- package/dist/build/generate-route-types.d.ts +0 -115
- package/dist/build/generate-route-types.d.ts.map +0 -1
- package/dist/build/generate-route-types.js +0 -740
- package/dist/build/generate-route-types.js.map +0 -1
- package/dist/build/index.d.ts +0 -21
- package/dist/build/index.d.ts.map +0 -1
- package/dist/build/index.js +0 -21
- package/dist/build/index.js.map +0 -1
- package/dist/build/route-trie.d.ts +0 -71
- package/dist/build/route-trie.d.ts.map +0 -1
- package/dist/build/route-trie.js +0 -175
- package/dist/build/route-trie.js.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.js +0 -208
- package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
- package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
- package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
- package/dist/cache/__tests__/document-cache.test.js +0 -345
- package/dist/cache/__tests__/document-cache.test.js.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
- package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
- package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-store.test.js +0 -367
- package/dist/cache/__tests__/memory-store.test.js.map +0 -1
- package/dist/cache/cache-scope.d.ts +0 -102
- package/dist/cache/cache-scope.d.ts.map +0 -1
- package/dist/cache/cache-scope.js +0 -440
- package/dist/cache/cache-scope.js.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
- package/dist/cache/cf/cf-cache-store.d.ts +0 -165
- package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
- package/dist/cache/cf/cf-cache-store.js +0 -242
- package/dist/cache/cf/cf-cache-store.js.map +0 -1
- package/dist/cache/cf/index.d.ts +0 -14
- package/dist/cache/cf/index.d.ts.map +0 -1
- package/dist/cache/cf/index.js +0 -17
- package/dist/cache/cf/index.js.map +0 -1
- package/dist/cache/document-cache.d.ts +0 -64
- package/dist/cache/document-cache.d.ts.map +0 -1
- package/dist/cache/document-cache.js +0 -228
- package/dist/cache/document-cache.js.map +0 -1
- package/dist/cache/index.d.ts +0 -19
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/index.js +0 -21
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/memory-segment-store.d.ts +0 -110
- package/dist/cache/memory-segment-store.d.ts.map +0 -1
- package/dist/cache/memory-segment-store.js +0 -117
- package/dist/cache/memory-segment-store.js.map +0 -1
- package/dist/cache/memory-store.d.ts +0 -41
- package/dist/cache/memory-store.d.ts.map +0 -1
- package/dist/cache/memory-store.js +0 -191
- package/dist/cache/memory-store.js.map +0 -1
- package/dist/cache/types.d.ts +0 -317
- package/dist/cache/types.d.ts.map +0 -1
- package/dist/cache/types.js +0 -12
- package/dist/cache/types.js.map +0 -1
- package/dist/client.d.ts +0 -248
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -367
- package/dist/client.js.map +0 -1
- package/dist/client.rsc.d.ts +0 -26
- package/dist/client.rsc.d.ts.map +0 -1
- package/dist/client.rsc.js +0 -46
- package/dist/client.rsc.js.map +0 -1
- package/dist/component-utils.d.ts +0 -36
- package/dist/component-utils.d.ts.map +0 -1
- package/dist/component-utils.js +0 -61
- package/dist/component-utils.js.map +0 -1
- package/dist/components/DefaultDocument.d.ts +0 -13
- package/dist/components/DefaultDocument.d.ts.map +0 -1
- package/dist/components/DefaultDocument.js +0 -15
- package/dist/components/DefaultDocument.js.map +0 -1
- package/dist/debug.d.ts +0 -58
- package/dist/debug.d.ts.map +0 -1
- package/dist/debug.js +0 -157
- package/dist/debug.js.map +0 -1
- package/dist/default-error-boundary.d.ts +0 -11
- package/dist/default-error-boundary.d.ts.map +0 -1
- package/dist/default-error-boundary.js +0 -45
- package/dist/default-error-boundary.js.map +0 -1
- package/dist/deps/browser.d.ts +0 -2
- package/dist/deps/browser.d.ts.map +0 -1
- package/dist/deps/browser.js +0 -3
- package/dist/deps/browser.js.map +0 -1
- package/dist/deps/html-stream-client.d.ts +0 -2
- package/dist/deps/html-stream-client.d.ts.map +0 -1
- package/dist/deps/html-stream-client.js +0 -3
- package/dist/deps/html-stream-client.js.map +0 -1
- package/dist/deps/html-stream-server.d.ts +0 -2
- package/dist/deps/html-stream-server.d.ts.map +0 -1
- package/dist/deps/html-stream-server.js +0 -3
- package/dist/deps/html-stream-server.js.map +0 -1
- package/dist/deps/rsc.d.ts +0 -2
- package/dist/deps/rsc.d.ts.map +0 -1
- package/dist/deps/rsc.js +0 -4
- package/dist/deps/rsc.js.map +0 -1
- package/dist/deps/ssr.d.ts +0 -2
- package/dist/deps/ssr.d.ts.map +0 -1
- package/dist/deps/ssr.js +0 -3
- package/dist/deps/ssr.js.map +0 -1
- package/dist/errors.d.ts +0 -174
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -241
- package/dist/errors.js.map +0 -1
- package/dist/handle.d.ts +0 -78
- package/dist/handle.d.ts.map +0 -1
- package/dist/handle.js +0 -82
- package/dist/handle.js.map +0 -1
- package/dist/handles/MetaTags.d.ts +0 -14
- package/dist/handles/MetaTags.d.ts.map +0 -1
- package/dist/handles/MetaTags.js +0 -136
- package/dist/handles/MetaTags.js.map +0 -1
- package/dist/handles/index.d.ts +0 -6
- package/dist/handles/index.d.ts.map +0 -1
- package/dist/handles/index.js +0 -6
- package/dist/handles/index.js.map +0 -1
- package/dist/handles/meta.d.ts +0 -39
- package/dist/handles/meta.d.ts.map +0 -1
- package/dist/handles/meta.js +0 -202
- package/dist/handles/meta.js.map +0 -1
- package/dist/host/__tests__/errors.test.d.ts +0 -2
- package/dist/host/__tests__/errors.test.d.ts.map +0 -1
- package/dist/host/__tests__/errors.test.js +0 -76
- package/dist/host/__tests__/errors.test.js.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
- package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.js +0 -251
- package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
- package/dist/host/__tests__/router.test.d.ts +0 -2
- package/dist/host/__tests__/router.test.d.ts.map +0 -1
- package/dist/host/__tests__/router.test.js +0 -241
- package/dist/host/__tests__/router.test.js.map +0 -1
- package/dist/host/__tests__/testing.test.d.ts +0 -2
- package/dist/host/__tests__/testing.test.d.ts.map +0 -1
- package/dist/host/__tests__/testing.test.js +0 -64
- package/dist/host/__tests__/testing.test.js.map +0 -1
- package/dist/host/__tests__/utils.test.d.ts +0 -2
- package/dist/host/__tests__/utils.test.d.ts.map +0 -1
- package/dist/host/__tests__/utils.test.js +0 -29
- package/dist/host/__tests__/utils.test.js.map +0 -1
- package/dist/host/cookie-handler.d.ts +0 -34
- package/dist/host/cookie-handler.d.ts.map +0 -1
- package/dist/host/cookie-handler.js +0 -124
- package/dist/host/cookie-handler.js.map +0 -1
- package/dist/host/errors.d.ts +0 -56
- package/dist/host/errors.d.ts.map +0 -1
- package/dist/host/errors.js +0 -79
- package/dist/host/errors.js.map +0 -1
- package/dist/host/index.d.ts +0 -29
- package/dist/host/index.d.ts.map +0 -1
- package/dist/host/index.js +0 -32
- package/dist/host/index.js.map +0 -1
- package/dist/host/pattern-matcher.d.ts +0 -36
- package/dist/host/pattern-matcher.d.ts.map +0 -1
- package/dist/host/pattern-matcher.js +0 -172
- package/dist/host/pattern-matcher.js.map +0 -1
- package/dist/host/router.d.ts +0 -26
- package/dist/host/router.d.ts.map +0 -1
- package/dist/host/router.js +0 -218
- package/dist/host/router.js.map +0 -1
- package/dist/host/testing.d.ts +0 -36
- package/dist/host/testing.d.ts.map +0 -1
- package/dist/host/testing.js +0 -55
- package/dist/host/testing.js.map +0 -1
- package/dist/host/types.d.ts +0 -115
- package/dist/host/types.d.ts.map +0 -1
- package/dist/host/types.js +0 -7
- package/dist/host/types.js.map +0 -1
- package/dist/host/utils.d.ts +0 -21
- package/dist/host/utils.d.ts.map +0 -1
- package/dist/host/utils.js +0 -23
- package/dist/host/utils.js.map +0 -1
- package/dist/href-client.d.ts +0 -131
- package/dist/href-client.d.ts.map +0 -1
- package/dist/href-client.js +0 -64
- package/dist/href-client.js.map +0 -1
- package/dist/href-context.d.ts +0 -29
- package/dist/href-context.d.ts.map +0 -1
- package/dist/href-context.js +0 -21
- package/dist/href-context.js.map +0 -1
- package/dist/index.d.ts +0 -73
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -91
- package/dist/index.js.map +0 -1
- package/dist/index.rsc.d.ts +0 -32
- package/dist/index.rsc.d.ts.map +0 -1
- package/dist/index.rsc.js +0 -40
- package/dist/index.rsc.js.map +0 -1
- package/dist/internal-debug.d.ts +0 -2
- package/dist/internal-debug.d.ts.map +0 -1
- package/dist/internal-debug.js +0 -5
- package/dist/internal-debug.js.map +0 -1
- package/dist/loader.d.ts +0 -14
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -20
- package/dist/loader.js.map +0 -1
- package/dist/loader.rsc.d.ts +0 -19
- package/dist/loader.rsc.d.ts.map +0 -1
- package/dist/loader.rsc.js +0 -99
- package/dist/loader.rsc.js.map +0 -1
- package/dist/network-error-thrower.d.ts +0 -17
- package/dist/network-error-thrower.d.ts.map +0 -1
- package/dist/network-error-thrower.js +0 -14
- package/dist/network-error-thrower.js.map +0 -1
- package/dist/outlet-context.d.ts +0 -13
- package/dist/outlet-context.d.ts.map +0 -1
- package/dist/outlet-context.js +0 -3
- package/dist/outlet-context.js.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
- package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.js +0 -148
- package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
- package/dist/prerender/param-hash.d.ts +0 -16
- package/dist/prerender/param-hash.d.ts.map +0 -1
- package/dist/prerender/param-hash.js +0 -36
- package/dist/prerender/param-hash.js.map +0 -1
- package/dist/prerender/store.d.ts +0 -38
- package/dist/prerender/store.d.ts.map +0 -1
- package/dist/prerender/store.js +0 -61
- package/dist/prerender/store.js.map +0 -1
- package/dist/prerender.d.ts +0 -66
- package/dist/prerender.d.ts.map +0 -1
- package/dist/prerender.js +0 -57
- package/dist/prerender.js.map +0 -1
- package/dist/reverse.d.ts +0 -196
- package/dist/reverse.d.ts.map +0 -1
- package/dist/reverse.js +0 -78
- package/dist/reverse.js.map +0 -1
- package/dist/root-error-boundary.d.ts +0 -33
- package/dist/root-error-boundary.d.ts.map +0 -1
- package/dist/root-error-boundary.js +0 -165
- package/dist/root-error-boundary.js.map +0 -1
- package/dist/route-content-wrapper.d.ts +0 -46
- package/dist/route-content-wrapper.d.ts.map +0 -1
- package/dist/route-content-wrapper.js +0 -77
- package/dist/route-content-wrapper.js.map +0 -1
- package/dist/route-definition.d.ts +0 -421
- package/dist/route-definition.d.ts.map +0 -1
- package/dist/route-definition.js +0 -868
- package/dist/route-definition.js.map +0 -1
- package/dist/route-map-builder.d.ts +0 -155
- package/dist/route-map-builder.d.ts.map +0 -1
- package/dist/route-map-builder.js +0 -237
- package/dist/route-map-builder.js.map +0 -1
- package/dist/route-types.d.ts +0 -165
- package/dist/route-types.d.ts.map +0 -1
- package/dist/route-types.js +0 -7
- package/dist/route-types.js.map +0 -1
- package/dist/router/__tests__/handler-context.test.d.ts +0 -2
- package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/handler-context.test.js +0 -65
- package/dist/router/__tests__/handler-context.test.js.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
- package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
- package/dist/router/__tests__/match-context.test.d.ts +0 -2
- package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-context.test.js +0 -92
- package/dist/router/__tests__/match-context.test.js.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
- package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.js +0 -417
- package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
- package/dist/router/__tests__/match-result.test.d.ts +0 -2
- package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-result.test.js +0 -457
- package/dist/router/__tests__/match-result.test.js.map +0 -1
- package/dist/router/__tests__/on-error.test.d.ts +0 -2
- package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
- package/dist/router/__tests__/on-error.test.js +0 -678
- package/dist/router/__tests__/on-error.test.js.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
- package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.js +0 -629
- package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
- package/dist/router/error-handling.d.ts +0 -77
- package/dist/router/error-handling.d.ts.map +0 -1
- package/dist/router/error-handling.js +0 -202
- package/dist/router/error-handling.js.map +0 -1
- package/dist/router/handler-context.d.ts +0 -20
- package/dist/router/handler-context.d.ts.map +0 -1
- package/dist/router/handler-context.js +0 -198
- package/dist/router/handler-context.js.map +0 -1
- package/dist/router/intercept-resolution.d.ts +0 -66
- package/dist/router/intercept-resolution.d.ts.map +0 -1
- package/dist/router/intercept-resolution.js +0 -246
- package/dist/router/intercept-resolution.js.map +0 -1
- package/dist/router/loader-resolution.d.ts +0 -64
- package/dist/router/loader-resolution.d.ts.map +0 -1
- package/dist/router/loader-resolution.js +0 -284
- package/dist/router/loader-resolution.js.map +0 -1
- package/dist/router/logging.d.ts +0 -15
- package/dist/router/logging.d.ts.map +0 -1
- package/dist/router/logging.js +0 -99
- package/dist/router/logging.js.map +0 -1
- package/dist/router/manifest.d.ts +0 -22
- package/dist/router/manifest.d.ts.map +0 -1
- package/dist/router/manifest.js +0 -181
- package/dist/router/manifest.js.map +0 -1
- package/dist/router/match-api.d.ts +0 -35
- package/dist/router/match-api.d.ts.map +0 -1
- package/dist/router/match-api.js +0 -406
- package/dist/router/match-api.js.map +0 -1
- package/dist/router/match-context.d.ts +0 -206
- package/dist/router/match-context.d.ts.map +0 -1
- package/dist/router/match-context.js +0 -17
- package/dist/router/match-context.js.map +0 -1
- package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
- package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
- package/dist/router/match-middleware/background-revalidation.js +0 -75
- package/dist/router/match-middleware/background-revalidation.js.map +0 -1
- package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
- package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-lookup.js +0 -257
- package/dist/router/match-middleware/cache-lookup.js.map +0 -1
- package/dist/router/match-middleware/cache-store.d.ts +0 -113
- package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-store.js +0 -108
- package/dist/router/match-middleware/cache-store.js.map +0 -1
- package/dist/router/match-middleware/index.d.ts +0 -81
- package/dist/router/match-middleware/index.d.ts.map +0 -1
- package/dist/router/match-middleware/index.js +0 -80
- package/dist/router/match-middleware/index.js.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
- package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.js +0 -134
- package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
- package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
- package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/segment-resolution.js +0 -53
- package/dist/router/match-middleware/segment-resolution.js.map +0 -1
- package/dist/router/match-pipelines.d.ts +0 -147
- package/dist/router/match-pipelines.d.ts.map +0 -1
- package/dist/router/match-pipelines.js +0 -82
- package/dist/router/match-pipelines.js.map +0 -1
- package/dist/router/match-result.d.ts +0 -126
- package/dist/router/match-result.d.ts.map +0 -1
- package/dist/router/match-result.js +0 -93
- package/dist/router/match-result.js.map +0 -1
- package/dist/router/metrics.d.ts +0 -20
- package/dist/router/metrics.d.ts.map +0 -1
- package/dist/router/metrics.js +0 -47
- package/dist/router/metrics.js.map +0 -1
- package/dist/router/middleware.d.ts +0 -249
- package/dist/router/middleware.d.ts.map +0 -1
- package/dist/router/middleware.js +0 -434
- package/dist/router/middleware.js.map +0 -1
- package/dist/router/middleware.test.d.ts +0 -2
- package/dist/router/middleware.test.d.ts.map +0 -1
- package/dist/router/middleware.test.js +0 -816
- package/dist/router/middleware.test.js.map +0 -1
- package/dist/router/pattern-matching.d.ts +0 -149
- package/dist/router/pattern-matching.d.ts.map +0 -1
- package/dist/router/pattern-matching.js +0 -349
- package/dist/router/pattern-matching.js.map +0 -1
- package/dist/router/revalidation.d.ts +0 -44
- package/dist/router/revalidation.d.ts.map +0 -1
- package/dist/router/revalidation.js +0 -147
- package/dist/router/revalidation.js.map +0 -1
- package/dist/router/router-context.d.ts +0 -135
- package/dist/router/router-context.d.ts.map +0 -1
- package/dist/router/router-context.js +0 -36
- package/dist/router/router-context.js.map +0 -1
- package/dist/router/segment-resolution.d.ts +0 -127
- package/dist/router/segment-resolution.d.ts.map +0 -1
- package/dist/router/segment-resolution.js +0 -919
- package/dist/router/segment-resolution.js.map +0 -1
- package/dist/router/trie-matching.d.ts +0 -40
- package/dist/router/trie-matching.d.ts.map +0 -1
- package/dist/router/trie-matching.js +0 -127
- package/dist/router/trie-matching.js.map +0 -1
- package/dist/router/types.d.ts +0 -136
- package/dist/router/types.d.ts.map +0 -1
- package/dist/router/types.js +0 -7
- package/dist/router/types.js.map +0 -1
- package/dist/router.d.ts +0 -753
- package/dist/router.d.ts.map +0 -1
- package/dist/router.gen.d.ts +0 -6
- package/dist/router.gen.d.ts.map +0 -1
- package/dist/router.gen.js +0 -6
- package/dist/router.gen.js.map +0 -1
- package/dist/router.js +0 -1304
- package/dist/router.js.map +0 -1
- package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
- package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
- package/dist/rsc/__tests__/helpers.test.js +0 -140
- package/dist/rsc/__tests__/helpers.test.js.map +0 -1
- package/dist/rsc/handler.d.ts +0 -45
- package/dist/rsc/handler.d.ts.map +0 -1
- package/dist/rsc/handler.js +0 -1172
- package/dist/rsc/handler.js.map +0 -1
- package/dist/rsc/helpers.d.ts +0 -16
- package/dist/rsc/helpers.d.ts.map +0 -1
- package/dist/rsc/helpers.js +0 -55
- package/dist/rsc/helpers.js.map +0 -1
- package/dist/rsc/index.d.ts +0 -22
- package/dist/rsc/index.d.ts.map +0 -1
- package/dist/rsc/index.js +0 -23
- package/dist/rsc/index.js.map +0 -1
- package/dist/rsc/nonce.d.ts +0 -9
- package/dist/rsc/nonce.d.ts.map +0 -1
- package/dist/rsc/nonce.js +0 -18
- package/dist/rsc/nonce.js.map +0 -1
- package/dist/rsc/types.d.ts +0 -206
- package/dist/rsc/types.d.ts.map +0 -1
- package/dist/rsc/types.js +0 -8
- package/dist/rsc/types.js.map +0 -1
- package/dist/search-params.d.ts +0 -103
- package/dist/search-params.d.ts.map +0 -1
- package/dist/search-params.js +0 -74
- package/dist/search-params.js.map +0 -1
- package/dist/segment-system.d.ts +0 -75
- package/dist/segment-system.d.ts.map +0 -1
- package/dist/segment-system.js +0 -336
- package/dist/segment-system.js.map +0 -1
- package/dist/server/context.d.ts +0 -245
- package/dist/server/context.d.ts.map +0 -1
- package/dist/server/context.js +0 -197
- package/dist/server/context.js.map +0 -1
- package/dist/server/fetchable-loader-store.d.ts +0 -18
- package/dist/server/fetchable-loader-store.d.ts.map +0 -1
- package/dist/server/fetchable-loader-store.js +0 -18
- package/dist/server/fetchable-loader-store.js.map +0 -1
- package/dist/server/handle-store.d.ts +0 -85
- package/dist/server/handle-store.d.ts.map +0 -1
- package/dist/server/handle-store.js +0 -142
- package/dist/server/handle-store.js.map +0 -1
- package/dist/server/loader-registry.d.ts +0 -55
- package/dist/server/loader-registry.d.ts.map +0 -1
- package/dist/server/loader-registry.js +0 -132
- package/dist/server/loader-registry.js.map +0 -1
- package/dist/server/request-context.d.ts +0 -226
- package/dist/server/request-context.d.ts.map +0 -1
- package/dist/server/request-context.js +0 -290
- package/dist/server/request-context.js.map +0 -1
- package/dist/server/root-layout.d.ts +0 -4
- package/dist/server/root-layout.d.ts.map +0 -1
- package/dist/server/root-layout.js +0 -5
- package/dist/server/root-layout.js.map +0 -1
- package/dist/server.d.ts +0 -15
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -20
- package/dist/server.js.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
- package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
- package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
- package/dist/ssr/index.d.ts +0 -98
- package/dist/ssr/index.d.ts.map +0 -1
- package/dist/ssr/index.js +0 -158
- package/dist/ssr/index.js.map +0 -1
- package/dist/static-handler.d.ts +0 -50
- package/dist/static-handler.d.ts.map +0 -1
- package/dist/static-handler.gen.d.ts +0 -5
- package/dist/static-handler.gen.d.ts.map +0 -1
- package/dist/static-handler.gen.js +0 -5
- package/dist/static-handler.gen.js.map +0 -1
- package/dist/static-handler.js +0 -29
- package/dist/static-handler.js.map +0 -1
- package/dist/theme/ThemeProvider.d.ts +0 -20
- package/dist/theme/ThemeProvider.d.ts.map +0 -1
- package/dist/theme/ThemeProvider.js +0 -240
- package/dist/theme/ThemeProvider.js.map +0 -1
- package/dist/theme/ThemeScript.d.ts +0 -48
- package/dist/theme/ThemeScript.d.ts.map +0 -1
- package/dist/theme/ThemeScript.js +0 -13
- package/dist/theme/ThemeScript.js.map +0 -1
- package/dist/theme/__tests__/theme.test.d.ts +0 -2
- package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
- package/dist/theme/__tests__/theme.test.js +0 -103
- package/dist/theme/__tests__/theme.test.js.map +0 -1
- package/dist/theme/constants.d.ts +0 -29
- package/dist/theme/constants.d.ts.map +0 -1
- package/dist/theme/constants.js +0 -48
- package/dist/theme/constants.js.map +0 -1
- package/dist/theme/index.d.ts +0 -31
- package/dist/theme/index.d.ts.map +0 -1
- package/dist/theme/index.js +0 -36
- package/dist/theme/index.js.map +0 -1
- package/dist/theme/theme-context.d.ts +0 -40
- package/dist/theme/theme-context.d.ts.map +0 -1
- package/dist/theme/theme-context.js +0 -60
- package/dist/theme/theme-context.js.map +0 -1
- package/dist/theme/theme-script.d.ts +0 -27
- package/dist/theme/theme-script.d.ts.map +0 -1
- package/dist/theme/theme-script.js +0 -147
- package/dist/theme/theme-script.js.map +0 -1
- package/dist/theme/types.d.ts +0 -163
- package/dist/theme/types.d.ts.map +0 -1
- package/dist/theme/types.js +0 -11
- package/dist/theme/types.js.map +0 -1
- package/dist/theme/use-theme.d.ts +0 -12
- package/dist/theme/use-theme.d.ts.map +0 -1
- package/dist/theme/use-theme.js +0 -40
- package/dist/theme/use-theme.js.map +0 -1
- package/dist/types.d.ts +0 -1479
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -10
- package/dist/types.js.map +0 -1
- package/dist/urls.d.ts +0 -441
- package/dist/urls.d.ts.map +0 -1
- package/dist/urls.gen.d.ts +0 -8
- package/dist/urls.gen.d.ts.map +0 -1
- package/dist/urls.gen.js +0 -8
- package/dist/urls.gen.js.map +0 -1
- package/dist/urls.js +0 -443
- package/dist/urls.js.map +0 -1
- package/dist/use-loader.d.ts +0 -127
- package/dist/use-loader.d.ts.map +0 -1
- package/dist/use-loader.js +0 -237
- package/dist/use-loader.js.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
- package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
- package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
- package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.js +0 -39
- package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
- package/dist/vite/ast-handler-extract.d.ts +0 -49
- package/dist/vite/ast-handler-extract.d.ts.map +0 -1
- package/dist/vite/ast-handler-extract.js +0 -249
- package/dist/vite/ast-handler-extract.js.map +0 -1
- package/dist/vite/expose-action-id.d.ts +0 -19
- package/dist/vite/expose-action-id.d.ts.map +0 -1
- package/dist/vite/expose-action-id.js +0 -250
- package/dist/vite/expose-action-id.js.map +0 -1
- package/dist/vite/expose-id-utils.d.ts +0 -69
- package/dist/vite/expose-id-utils.d.ts.map +0 -1
- package/dist/vite/expose-id-utils.js +0 -289
- package/dist/vite/expose-id-utils.js.map +0 -1
- package/dist/vite/expose-internal-ids.d.ts +0 -22
- package/dist/vite/expose-internal-ids.d.ts.map +0 -1
- package/dist/vite/expose-internal-ids.js +0 -886
- package/dist/vite/expose-internal-ids.js.map +0 -1
- package/dist/vite/index.d.ts +0 -149
- package/dist/vite/index.d.ts.map +0 -1
- package/dist/vite/index.js.bak +0 -5448
- package/dist/vite/index.js.map +0 -1
- package/dist/vite/index.named-routes.gen.ts +0 -103
- package/dist/vite/package-resolution.d.ts +0 -43
- package/dist/vite/package-resolution.d.ts.map +0 -1
- package/dist/vite/package-resolution.js +0 -112
- package/dist/vite/package-resolution.js.map +0 -1
- package/dist/vite/virtual-entries.d.ts +0 -25
- package/dist/vite/virtual-entries.d.ts.map +0 -1
- package/dist/vite/virtual-entries.js +0 -110
- package/dist/vite/virtual-entries.js.map +0 -1
- package/src/browser/shallow.ts +0 -40
|
@@ -218,6 +218,19 @@ function getTagMarkerInflight(
|
|
|
218
218
|
return inflight;
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
+
/**
|
|
222
|
+
* Per-request memo of the derived cache-key base URL.
|
|
223
|
+
*
|
|
224
|
+
* deriveBaseUrl() is a pure function of the live request URL, but keyToRequest
|
|
225
|
+
* calls it on EVERY cache operation (each segment/item get/set/delete, each
|
|
226
|
+
* KV->L1 promote, each tag-marker read), so a page composed of many cached
|
|
227
|
+
* entries re-parses the same request.url and re-runs the host validation tens
|
|
228
|
+
* of times. Keying by the request-context object collapses that to one derive
|
|
229
|
+
* per request. Keyed by ctx alone (not by store) because the derived value
|
|
230
|
+
* depends only on the request URL, not on which store asked.
|
|
231
|
+
*/
|
|
232
|
+
const derivedBaseUrlMemo = new WeakMap<object, string>();
|
|
233
|
+
|
|
221
234
|
/** KV key byte-length ceiling. Cloudflare KV rejects keys larger than this. */
|
|
222
235
|
const KV_MAX_KEY_BYTES = 512;
|
|
223
236
|
|
|
@@ -323,10 +336,9 @@ function remainingCacheControl(headers: Headers, now: number): string {
|
|
|
323
336
|
// Types
|
|
324
337
|
// ============================================================================
|
|
325
338
|
|
|
326
|
-
//
|
|
327
|
-
//
|
|
328
|
-
//
|
|
329
|
-
export type { ExecutionContext } from "../../types/request-scope.js";
|
|
339
|
+
// Imported from the canonical home (also publicly exported from src/index.ts /
|
|
340
|
+
// src/index.rsc.ts) so this module shares the one interface rather than
|
|
341
|
+
// declaring a second that could drift.
|
|
330
342
|
import type { ExecutionContext } from "../../types/request-scope.js";
|
|
331
343
|
|
|
332
344
|
/**
|
|
@@ -717,12 +729,6 @@ export interface CFCacheStoreOptions<TEnv = unknown> {
|
|
|
717
729
|
) => string | Promise<string>;
|
|
718
730
|
}
|
|
719
731
|
|
|
720
|
-
/**
|
|
721
|
-
* Cache status values for the x-edge-cache-status header.
|
|
722
|
-
* @internal
|
|
723
|
-
*/
|
|
724
|
-
export type CacheStatus = "HIT" | "REVALIDATING";
|
|
725
|
-
|
|
726
732
|
// ============================================================================
|
|
727
733
|
// CFCacheStore Implementation
|
|
728
734
|
// ============================================================================
|
|
@@ -810,13 +816,10 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
|
|
|
810
816
|
// tagCacheTtl gates the L1 marker cache via `> 0`. A non-finite value (NaN
|
|
811
817
|
// from `Number(env.UNSET)`) is not null/undefined, so `?? 0` would let it
|
|
812
818
|
// through and silently disable the cache while reading as "configured".
|
|
813
|
-
//
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
options.tagCacheTtl > 0
|
|
818
|
-
? options.tagCacheTtl
|
|
819
|
-
: 0;
|
|
819
|
+
// finiteBudget coerces non-finite/null/undefined to 0; the `> 0` guard then
|
|
820
|
+
// collapses a finite non-positive value to the documented 0 = disabled.
|
|
821
|
+
const tagCacheTtl = finiteBudget(options.tagCacheTtl, 0);
|
|
822
|
+
this.tagCacheTtl = tagCacheTtl > 0 ? tagCacheTtl : 0;
|
|
820
823
|
|
|
821
824
|
// Read-side tag invalidation requires KV: isGloballyInvalidated() compares an
|
|
822
825
|
// entry's taggedAt against the per-tag KV marker and short-circuits to "not
|
|
@@ -909,31 +912,43 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
|
|
|
909
912
|
return fallback;
|
|
910
913
|
}
|
|
911
914
|
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
+
// The result is deterministic per request, but keyToRequest calls this on
|
|
916
|
+
// every cache operation; memoize per request context (see derivedBaseUrlMemo).
|
|
917
|
+
const memoized = derivedBaseUrlMemo.get(ctx);
|
|
918
|
+
if (memoized !== undefined) {
|
|
919
|
+
return memoized;
|
|
920
|
+
}
|
|
915
921
|
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
hostname
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
922
|
+
const derived = ((): string => {
|
|
923
|
+
try {
|
|
924
|
+
const url = new URL(ctx.request.url);
|
|
925
|
+
const hostname = url.hostname;
|
|
926
|
+
|
|
927
|
+
// Use fallback for dev/preview environments
|
|
928
|
+
if (
|
|
929
|
+
hostname === "localhost" ||
|
|
930
|
+
hostname === "127.0.0.1" ||
|
|
931
|
+
hostname.endsWith(".workers.dev") ||
|
|
932
|
+
hostname.endsWith(".pages.dev")
|
|
933
|
+
) {
|
|
934
|
+
return fallback;
|
|
935
|
+
}
|
|
925
936
|
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
937
|
+
// Validate hostname: must be a valid domain (alphanumeric, hyphens, dots)
|
|
938
|
+
// to prevent host header injection into cache keys
|
|
939
|
+
if (!/^[a-zA-Z0-9.-]+$/.test(hostname) || hostname.length > 253) {
|
|
940
|
+
return fallback;
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
// Use actual hostname for production
|
|
944
|
+
return `https://${hostname}/`;
|
|
945
|
+
} catch {
|
|
929
946
|
return fallback;
|
|
930
947
|
}
|
|
948
|
+
})();
|
|
931
949
|
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
} catch {
|
|
935
|
-
return fallback;
|
|
936
|
-
}
|
|
950
|
+
derivedBaseUrlMemo.set(ctx, derived);
|
|
951
|
+
return derived;
|
|
937
952
|
}
|
|
938
953
|
|
|
939
954
|
/**
|
|
@@ -1669,10 +1684,7 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
|
|
|
1669
1684
|
headers.set("Cache-Control", `public, max-age=${totalTtl}`);
|
|
1670
1685
|
headers.set(CACHE_STALE_AT_HEADER, String(staleAt));
|
|
1671
1686
|
// Internal tag headers (stripped by toClientResponse before serving).
|
|
1672
|
-
|
|
1673
|
-
for (const [name, value] of Object.entries(tagHeaders)) {
|
|
1674
|
-
headers.set(name, value);
|
|
1675
|
-
}
|
|
1687
|
+
this.setTagHeaders(headers, tags, taggedAt);
|
|
1676
1688
|
|
|
1677
1689
|
const toCache = new Response(l1Body, {
|
|
1678
1690
|
status: response.status,
|
|
@@ -2164,6 +2176,24 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
|
|
|
2164
2176
|
};
|
|
2165
2177
|
}
|
|
2166
2178
|
|
|
2179
|
+
/**
|
|
2180
|
+
* Merge the internal tag headers onto an existing Headers instance. The
|
|
2181
|
+
* from-scratch paths spread tagHeaderEntries() into an object-literal init;
|
|
2182
|
+
* the document put/promote paths build a Headers first, so they .set() each
|
|
2183
|
+
* entry instead.
|
|
2184
|
+
*/
|
|
2185
|
+
private setTagHeaders(
|
|
2186
|
+
headers: Headers,
|
|
2187
|
+
tags: string[] | undefined,
|
|
2188
|
+
taggedAt: number | undefined,
|
|
2189
|
+
): void {
|
|
2190
|
+
for (const [name, value] of Object.entries(
|
|
2191
|
+
this.tagHeaderEntries(tags, taggedAt),
|
|
2192
|
+
)) {
|
|
2193
|
+
headers.set(name, value);
|
|
2194
|
+
}
|
|
2195
|
+
}
|
|
2196
|
+
|
|
2167
2197
|
/** Read an entry's tags/taggedAt back from its headers. */
|
|
2168
2198
|
private readTagInfo(headers: Headers): {
|
|
2169
2199
|
tags?: string[];
|
|
@@ -2924,10 +2954,7 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
|
|
|
2924
2954
|
// Re-attach the internal tag headers (envelope.hd is client-facing
|
|
2925
2955
|
// and intentionally excludes them) so the promoted entry stays
|
|
2926
2956
|
// invalidatable.
|
|
2927
|
-
|
|
2928
|
-
for (const [name, value] of Object.entries(tagHeaders)) {
|
|
2929
|
-
headers.set(name, value);
|
|
2930
|
-
}
|
|
2957
|
+
this.setTagHeaders(headers, envelope.t, envelope.ta);
|
|
2931
2958
|
|
|
2932
2959
|
const bodyBuffer = base64ToBuffer(envelope.b);
|
|
2933
2960
|
const response = new Response(bodyBuffer, {
|
package/src/cache/cf/index.ts
CHANGED
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cloudflare Cache Store Exports
|
|
3
|
-
*
|
|
4
|
-
* Main export:
|
|
5
|
-
* - CFCacheStore - Production cache store using Cloudflare's Cache API
|
|
6
|
-
*
|
|
7
|
-
* Header constants (for inspection/debugging):
|
|
8
|
-
* - CACHE_STALE_AT_HEADER - Header containing staleness timestamp
|
|
9
|
-
* - CACHE_STATUS_HEADER - Header containing HIT/REVALIDATING status
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
// Public API
|
|
13
1
|
export {
|
|
14
2
|
CFCacheStore,
|
|
15
3
|
type CFCacheStoreOptions,
|
|
@@ -18,26 +6,14 @@ export {
|
|
|
18
6
|
type KVNamespace,
|
|
19
7
|
} from "./cf-cache-store.js";
|
|
20
8
|
|
|
21
|
-
// Header constants for debugging and inspection. The tag headers
|
|
22
|
-
// (x-edge-cache-tags / x-edge-cache-tagged-at) are intentionally NOT re-exported:
|
|
23
|
-
// they are an internal encoding detail of the store's tag-invalidation check, not
|
|
24
|
-
// a consumer-inspectable contract.
|
|
25
9
|
export {
|
|
26
10
|
CACHE_STALE_AT_HEADER,
|
|
27
11
|
CACHE_STATUS_HEADER,
|
|
28
12
|
CACHE_REVALIDATING_AT_HEADER,
|
|
29
13
|
} from "./cf-cache-store.js";
|
|
30
14
|
|
|
31
|
-
// Default latency-budget values, exported so the CFCacheStoreOptions JSDoc
|
|
32
|
-
// {@link}s resolve and consumers can derive margins from the defaults.
|
|
33
15
|
export {
|
|
34
16
|
EDGE_LOOKUP_TIMEOUT_MS,
|
|
35
17
|
EDGE_READ_TIMEOUT_MS,
|
|
36
18
|
KV_READ_TIMEOUT_MS,
|
|
37
19
|
} from "./cf-cache-store.js";
|
|
38
|
-
|
|
39
|
-
// Internal exports (re-exported for backwards compatibility, marked @internal in source)
|
|
40
|
-
export {
|
|
41
|
-
type CacheStatus,
|
|
42
|
-
MAX_REVALIDATION_INTERVAL,
|
|
43
|
-
} from "./cf-cache-store.js";
|
|
@@ -22,36 +22,8 @@ import { sortedSearchString } from "./cache-key-utils.js";
|
|
|
22
22
|
import { runBackground } from "./background-task.js";
|
|
23
23
|
import { reportCacheError } from "./cache-error.js";
|
|
24
24
|
|
|
25
|
-
// ============================================================================
|
|
26
|
-
// Constants
|
|
27
|
-
// ============================================================================
|
|
28
|
-
|
|
29
|
-
/** Header indicating cache status for debugging */
|
|
30
25
|
const CACHE_STATUS_HEADER = "x-document-cache-status";
|
|
31
26
|
|
|
32
|
-
/**
|
|
33
|
-
* Snapshot the request-scoped tag union for a document cache write. The full-page
|
|
34
|
-
* entry is tagged with every cache tag its content resolved (runtime cacheTag(),
|
|
35
|
-
* "use cache" profile tags, and loader cache tags) so updateTag()/revalidateTag()
|
|
36
|
-
* can invalidate it. Returns undefined when no tags were used, keeping untagged
|
|
37
|
-
* document entries header-free.
|
|
38
|
-
*
|
|
39
|
-
* This is a plain synchronous snapshot. The CALLER must drain the rendered body
|
|
40
|
-
* first (see the cache-write closures): runtime cacheTag()/"use cache" and loader
|
|
41
|
-
* tags are recorded synchronously as each value resolves during render, including
|
|
42
|
-
* Suspense-streamed ones that resolve AFTER the handler-settlement barrier - so
|
|
43
|
-
* the correct barrier is the stream draining (render complete), not _handleStore.
|
|
44
|
-
*
|
|
45
|
-
* Caveat: this applies only to the segment cache WRITE path. When a segment is
|
|
46
|
-
* cached for the first time, its cache({ tags }) DSL tags are recorded inside the
|
|
47
|
-
* deferred cacheRoute waitUntil, which can still run after this snapshot; a
|
|
48
|
-
* document that combines whole-page document caching with first-write segment-DSL
|
|
49
|
-
* tags may miss those (the segment cache entry itself is still correctly tagged
|
|
50
|
-
* and invalidated). On a segment-cache HIT the entry's tags are recorded
|
|
51
|
-
* synchronously during lookupRoute, before this snapshot, so they are captured.
|
|
52
|
-
* Runtime cacheTag()/"use cache" and loader tags are always captured once the
|
|
53
|
-
* body drains.
|
|
54
|
-
*/
|
|
55
27
|
function collectRequestTags(
|
|
56
28
|
requestCtx: RequestContext | undefined,
|
|
57
29
|
): string[] | undefined {
|
|
@@ -59,11 +31,6 @@ function collectRequestTags(
|
|
|
59
31
|
return tags && tags.size > 0 ? [...tags] : undefined;
|
|
60
32
|
}
|
|
61
33
|
|
|
62
|
-
/**
|
|
63
|
-
* Simple hash function for segment IDs.
|
|
64
|
-
* Creates a short, deterministic hash to differentiate cache keys
|
|
65
|
-
* based on which segments the client already has.
|
|
66
|
-
*/
|
|
67
34
|
function hashSegmentIds(segmentIds: string): string {
|
|
68
35
|
if (!segmentIds) return "";
|
|
69
36
|
|
|
@@ -72,12 +39,9 @@ function hashSegmentIds(segmentIds: string): string {
|
|
|
72
39
|
const char = segmentIds.charCodeAt(i);
|
|
73
40
|
hash = ((hash << 5) - hash + char) | 0;
|
|
74
41
|
}
|
|
75
|
-
// Convert to base36 for shorter string, take absolute value
|
|
76
42
|
return Math.abs(hash).toString(36);
|
|
77
43
|
}
|
|
78
44
|
|
|
79
|
-
// ============================================================================
|
|
80
|
-
// Cache Control Parsing
|
|
81
45
|
// ============================================================================
|
|
82
46
|
|
|
83
47
|
interface CacheDirectives {
|
|
@@ -11,23 +11,10 @@ import type { HandleStore } from "../server/handle-store.js";
|
|
|
11
11
|
import type { SegmentHandleData } from "./types.js";
|
|
12
12
|
import { serializeResult, deserializeResult } from "./segment-codec.js";
|
|
13
13
|
|
|
14
|
-
/**
|
|
15
|
-
* Bound on the background cache-write encode of handle data. A pushed handle
|
|
16
|
-
* value can be a Promise (request-context push-a-promise) or a Promise<ReactNode>
|
|
17
|
-
* (Breadcrumbs content), which the Flight encoder awaits while draining. The
|
|
18
|
-
* encode runs in waitUntil/runBackground, so a never-resolving handle value
|
|
19
|
-
* would otherwise pin a background slot indefinitely; on timeout the entry's
|
|
20
|
-
* handles coalesce to empty rather than hanging or poisoning the whole write.
|
|
21
|
-
*/
|
|
22
14
|
const HANDLE_ENCODE_TIMEOUT_MS = 5000;
|
|
23
15
|
|
|
24
16
|
type HandleRecord = Record<string, SegmentHandleData>;
|
|
25
17
|
|
|
26
|
-
// captureHandles builds a per-segment map keyed by every cached segment id, even
|
|
27
|
-
// segments that pushed nothing (their entry is an empty object). "No handle data"
|
|
28
|
-
// means no segment has any handle, in which case we skip the Flight encode and
|
|
29
|
-
// store an empty string — so the common handle-free route pays neither an encode
|
|
30
|
-
// on write nor a decode on every cache hit.
|
|
31
18
|
function hasHandleData(handles: HandleRecord): boolean {
|
|
32
19
|
for (const segId in handles) {
|
|
33
20
|
for (const _ in handles[segId]) return true;
|
|
@@ -55,42 +42,15 @@ function withTimeout<T>(p: Promise<T>, ms: number, onTimeout: T): Promise<T> {
|
|
|
55
42
|
]);
|
|
56
43
|
}
|
|
57
44
|
|
|
58
|
-
/**
|
|
59
|
-
* Encode a captured handle map to a string for cache storage.
|
|
60
|
-
*
|
|
61
|
-
* Handle values can be Promises or React elements (e.g. Breadcrumbs `content`).
|
|
62
|
-
* JSON.stringify destroys those (Promise -> {}, ReactNode non-representable), so
|
|
63
|
-
* persisting the raw map silently corrupts non-scalar handle values on stores
|
|
64
|
-
* that serialize to JSON (the Cloudflare cache). Routing the map through the same
|
|
65
|
-
* RSC-Flight codec the segments/value already use awaits Promises and serializes
|
|
66
|
-
* React elements, so the stored field is a lossless, JSON-safe string. The
|
|
67
|
-
* in-memory store keeps the same string by reference, so both backends replay
|
|
68
|
-
* identical decoded values.
|
|
69
|
-
*/
|
|
70
45
|
export async function encodeHandles(handles: HandleRecord): Promise<string> {
|
|
71
|
-
// No handle was pushed anywhere — store an empty marker (decoded as "skip").
|
|
72
46
|
if (!hasHandleData(handles)) return "";
|
|
73
47
|
return encodeHandleValue(handles);
|
|
74
48
|
}
|
|
75
49
|
|
|
76
|
-
/**
|
|
77
|
-
* Decode a stored handle string back to a handle map. Returns null on any
|
|
78
|
-
* decode failure (e.g. a cross-version entry read under a pinned static
|
|
79
|
-
* version), so the caller can skip handle restore without discarding the
|
|
80
|
-
* otherwise-valid cached segments alongside it.
|
|
81
|
-
*/
|
|
82
50
|
export function decodeHandles(encoded: string): Promise<HandleRecord | null> {
|
|
83
51
|
return decodeHandleValue<HandleRecord>(encoded);
|
|
84
52
|
}
|
|
85
53
|
|
|
86
|
-
/**
|
|
87
|
-
* Encode an arbitrary handle-data value to a Flight string. Used directly by the
|
|
88
|
-
* prerender/static pipeline, whose static path holds a single segment's
|
|
89
|
-
* `SegmentHandleData` (not a segId-keyed map). Bounded by the same timeout as
|
|
90
|
-
* encodeHandles; failure/timeout coalesces to "". The caller owns the empty
|
|
91
|
-
* check (an empty value still encodes to a non-empty Flight string, so skip the
|
|
92
|
-
* call when there is nothing to store).
|
|
93
|
-
*/
|
|
94
54
|
export async function encodeHandleValue(value: unknown): Promise<string> {
|
|
95
55
|
const encoded = await withTimeout(
|
|
96
56
|
serializeResult(value),
|
package/src/cache/index.ts
CHANGED
|
@@ -1,36 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cache Store
|
|
3
|
-
*
|
|
4
|
-
* Server-side caching for RSC segments and loader data.
|
|
5
|
-
*
|
|
6
|
-
* Main exports for users:
|
|
7
|
-
* - SegmentCacheStore - Interface for implementing custom cache stores
|
|
8
|
-
* - MemorySegmentCacheStore - In-memory cache for development/testing
|
|
9
|
-
* - CFCacheStore - Cloudflare edge cache store for production
|
|
10
|
-
* - CacheScope / createCacheScope - Request-scoped cache provider
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
// Segment cache store types and implementations
|
|
14
1
|
export type {
|
|
15
2
|
SegmentCacheStore,
|
|
16
|
-
SegmentCacheProvider,
|
|
17
3
|
CachedEntryData,
|
|
18
|
-
CachedEntryResult,
|
|
19
4
|
CacheGetResult,
|
|
20
|
-
// The getItem()/setItem() signature types on SegmentCacheStore. Exported
|
|
21
|
-
// alongside CacheGetResult so a consumer implementing a custom store can name
|
|
22
|
-
// every type its interface methods use, not just the segment-read result.
|
|
23
5
|
CacheItemResult,
|
|
24
6
|
CacheItemOptions,
|
|
25
7
|
SerializedSegmentData,
|
|
26
8
|
SegmentHandleData,
|
|
27
|
-
CacheConfig,
|
|
28
|
-
CacheConfigOrFactory,
|
|
29
9
|
} from "./types.js";
|
|
30
10
|
|
|
31
11
|
export { MemorySegmentCacheStore } from "./memory-segment-store.js";
|
|
32
12
|
|
|
33
|
-
// Cloudflare cache store
|
|
34
13
|
export {
|
|
35
14
|
CFCacheStore,
|
|
36
15
|
type CFCacheStoreOptions,
|
|
@@ -45,17 +24,11 @@ export {
|
|
|
45
24
|
KV_READ_TIMEOUT_MS,
|
|
46
25
|
} from "./cf/index.js";
|
|
47
26
|
|
|
48
|
-
// Cache scope
|
|
49
27
|
export { CacheScope, createCacheScope } from "./cache-scope.js";
|
|
50
28
|
|
|
51
|
-
// Document-level cache middleware
|
|
52
29
|
export {
|
|
53
30
|
createDocumentCacheMiddleware,
|
|
54
31
|
type DocumentCacheOptions,
|
|
55
32
|
} from "./document-cache.js";
|
|
56
33
|
|
|
57
|
-
// Cache error reporting. CacheErrorCategory is the discriminator surfaced to a
|
|
58
|
-
// router's onError callback as `metadata.category` for the `cache` phase, so
|
|
59
|
-
// consumers can branch on the failure kind (e.g. distinguish a transient
|
|
60
|
-
// cache-read outage from cache-corrupt self-heal).
|
|
61
34
|
export type { CacheErrorCategory } from "./cache-error.js";
|
|
@@ -59,8 +59,6 @@ interface CachedResponseEntry {
|
|
|
59
59
|
|
|
60
60
|
interface CachedItemEntry {
|
|
61
61
|
value: string;
|
|
62
|
-
/** RSC-encoded handle data (see handle-snapshot.ts encodeHandles). Stored as
|
|
63
|
-
* the encoded string by reference, identical to the JSON-serializing stores. */
|
|
64
62
|
handles?: string;
|
|
65
63
|
expiresAt: number;
|
|
66
64
|
staleAt: number;
|
|
@@ -171,8 +169,6 @@ export class MemorySegmentCacheStore<
|
|
|
171
169
|
|
|
172
170
|
constructor(options?: MemorySegmentCacheStoreOptions<TEnv>) {
|
|
173
171
|
if (options?.name != null) {
|
|
174
|
-
// Named stores use the globalThis registry so data survives HMR.
|
|
175
|
-
// Each name gets its own isolated Map.
|
|
176
172
|
this.cache = getNamedMap<CachedEntryData>(
|
|
177
173
|
CACHE_REGISTRY_KEY,
|
|
178
174
|
options.name,
|
|
@@ -194,7 +190,6 @@ export class MemorySegmentCacheStore<
|
|
|
194
190
|
options.name,
|
|
195
191
|
);
|
|
196
192
|
} else {
|
|
197
|
-
// Unnamed stores get a plain instance-level Map (no globalThis sharing).
|
|
198
193
|
this.cache = new Map<string, CachedEntryData>();
|
|
199
194
|
this.responseCache = new Map<string, CachedResponseEntry>();
|
|
200
195
|
this.itemCache = new Map<string, CachedItemEntry>();
|
|
@@ -229,15 +224,11 @@ export class MemorySegmentCacheStore<
|
|
|
229
224
|
ttl: number,
|
|
230
225
|
_swr?: number,
|
|
231
226
|
): Promise<void> {
|
|
232
|
-
// Note: Memory store doesn't implement SWR - entries just expire at TTL
|
|
233
|
-
// For SWR support, use CFCacheStore or similar distributed cache
|
|
234
227
|
const entry: CachedEntryData = {
|
|
235
228
|
...data,
|
|
236
229
|
expiresAt: Date.now() + ttl * 1000,
|
|
237
230
|
};
|
|
238
231
|
const prefixedKey = `seg:${key}`;
|
|
239
|
-
// Always drop stale tag mappings before writing so an overwrite with
|
|
240
|
-
// different (or no) tags cannot leave the previous tags pointing here.
|
|
241
232
|
this.unregisterTags(prefixedKey);
|
|
242
233
|
this.cache.set(key, entry);
|
|
243
234
|
if (data.tags && data.tags.length > 0) {
|
|
@@ -289,14 +280,7 @@ export class MemorySegmentCacheStore<
|
|
|
289
280
|
tags?: string[],
|
|
290
281
|
): Promise<void> {
|
|
291
282
|
try {
|
|
292
|
-
// arrayBuffer() can reject (e.g. an already-consumed body). A write
|
|
293
|
-
// failure must degrade to a no-op (entry simply not cached), never throw
|
|
294
|
-
// up and fail the request.
|
|
295
283
|
const body = await response.clone().arrayBuffer();
|
|
296
|
-
// Defense-in-depth (Finding #3): never persist a per-client signal into a
|
|
297
|
-
// shared store. The document-cache chokepoint already refuses these, but
|
|
298
|
-
// putResponse is public and reachable directly (e.g. tag-revalidation
|
|
299
|
-
// re-puts), so strip them here too.
|
|
300
284
|
const headers: [string, string][] = [];
|
|
301
285
|
response.headers.forEach((value, name) => {
|
|
302
286
|
if (isPerClientSignalHeader(name)) return;
|
|
@@ -369,19 +353,11 @@ export class MemorySegmentCacheStore<
|
|
|
369
353
|
}
|
|
370
354
|
}
|
|
371
355
|
|
|
372
|
-
/**
|
|
373
|
-
* Invalidate every cache entry (segment, response, item) tagged with any of
|
|
374
|
-
* `tags`. Entries are dropped immediately; the next read is a miss and
|
|
375
|
-
* re-renders fresh. This is the store-level primitive both updateTag() and
|
|
376
|
-
* revalidateTag() delegate to. (In-process, so there is nothing to batch
|
|
377
|
-
* beyond looping the tags.)
|
|
378
|
-
*/
|
|
379
356
|
async invalidateTags(tags: string[]): Promise<void> {
|
|
380
357
|
for (const tag of tags) {
|
|
381
358
|
const keys = this.tagIndex.get(tag);
|
|
382
359
|
if (!keys || keys.size === 0) continue;
|
|
383
360
|
|
|
384
|
-
// Snapshot the keys before mutating the index inside the loop.
|
|
385
361
|
const prefixedKeys = [...keys];
|
|
386
362
|
|
|
387
363
|
for (const prefixedKey of prefixedKeys) {
|
|
@@ -397,18 +373,11 @@ export class MemorySegmentCacheStore<
|
|
|
397
373
|
this.itemCache.delete(rawKey);
|
|
398
374
|
}
|
|
399
375
|
|
|
400
|
-
// Drop this key from every tag set it belonged to, not just `tag`.
|
|
401
376
|
this.unregisterTags(prefixedKey);
|
|
402
377
|
}
|
|
403
378
|
}
|
|
404
379
|
}
|
|
405
380
|
|
|
406
|
-
/**
|
|
407
|
-
* Register `tags` for a prefixed cache key in both the forward
|
|
408
|
-
* (tag -> keys) and reverse (key -> tags) indexes.
|
|
409
|
-
* Callers must call unregisterTags() first to clear stale mappings.
|
|
410
|
-
* @internal
|
|
411
|
-
*/
|
|
412
381
|
private registerTags(tags: string[], prefixedKey: string): void {
|
|
413
382
|
let tagSet = this.keyTags.get(prefixedKey);
|
|
414
383
|
if (!tagSet) {
|
|
@@ -426,11 +395,6 @@ export class MemorySegmentCacheStore<
|
|
|
426
395
|
}
|
|
427
396
|
}
|
|
428
397
|
|
|
429
|
-
/**
|
|
430
|
-
* Remove a prefixed cache key from every tag set it belongs to.
|
|
431
|
-
* Uses the reverse index so this is O(tags-per-key), not O(total-tags).
|
|
432
|
-
* @internal
|
|
433
|
-
*/
|
|
434
398
|
private unregisterTags(prefixedKey: string): void {
|
|
435
399
|
const tagSet = this.keyTags.get(prefixedKey);
|
|
436
400
|
if (!tagSet) return;
|
|
@@ -446,10 +410,6 @@ export class MemorySegmentCacheStore<
|
|
|
446
410
|
this.keyTags.delete(prefixedKey);
|
|
447
411
|
}
|
|
448
412
|
|
|
449
|
-
/**
|
|
450
|
-
* Get cache statistics for debugging purposes.
|
|
451
|
-
* @internal
|
|
452
|
-
*/
|
|
453
413
|
getStats(): { size: number; keys: string[] } {
|
|
454
414
|
return {
|
|
455
415
|
size: this.cache.size,
|
|
@@ -457,18 +417,6 @@ export class MemorySegmentCacheStore<
|
|
|
457
417
|
};
|
|
458
418
|
}
|
|
459
419
|
|
|
460
|
-
/**
|
|
461
|
-
* Reset the global cache registry.
|
|
462
|
-
* Useful for test isolation - call this in beforeEach to ensure
|
|
463
|
-
* tests don't share cache state via globalThis.
|
|
464
|
-
*
|
|
465
|
-
* @example
|
|
466
|
-
* ```typescript
|
|
467
|
-
* beforeEach(() => {
|
|
468
|
-
* MemorySegmentCacheStore.resetGlobalCache();
|
|
469
|
-
* });
|
|
470
|
-
* ```
|
|
471
|
-
*/
|
|
472
420
|
static resetGlobalCache(): void {
|
|
473
421
|
delete (globalThis as any)[CACHE_REGISTRY_KEY];
|
|
474
422
|
delete (globalThis as any)[RESPONSE_CACHE_REGISTRY_KEY];
|
|
@@ -64,9 +64,13 @@ export function setCacheProfiles(profiles: Record<string, CacheProfile>): void {
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
67
|
+
* Read a profile out of the global registry by name.
|
|
68
|
+
*
|
|
69
|
+
* There is currently no production reader: the "use cache: <profile>" runtime
|
|
70
|
+
* path resolves from the request-scoped _cacheProfiles map (see
|
|
71
|
+
* cache-runtime.ts), and the route DSL has no cache("profileName") form (see
|
|
72
|
+
* dsl-helpers.ts). This accessor exists so tests can assert what
|
|
73
|
+
* setCacheProfiles() wrote into the global registry.
|
|
70
74
|
*/
|
|
71
75
|
export function getCacheProfile(name: string): CacheProfile | undefined {
|
|
72
76
|
return _profiles[name];
|
|
@@ -13,10 +13,15 @@
|
|
|
13
13
|
|
|
14
14
|
import type { CacheItemResult, CacheItemOptions } from "./types.js";
|
|
15
15
|
import { runBackground } from "./background-task.js";
|
|
16
|
+
import { reportCacheError } from "./cache-error.js";
|
|
17
|
+
import type { CacheErrorReporter } from "./cache-error.js";
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
// The host carries both the optional waitUntil (for background scheduling) and
|
|
20
|
+
// the CacheErrorReporter seam (for routing degradation errors through onError).
|
|
21
|
+
// loader-cache.ts passes the request context, which provides both.
|
|
22
|
+
type WaitUntilHost = {
|
|
18
23
|
waitUntil?: (fn: () => Promise<void>) => void;
|
|
19
|
-
}
|
|
24
|
+
} & CacheErrorReporter;
|
|
20
25
|
|
|
21
26
|
export interface ReadThroughItemConfig<T> {
|
|
22
27
|
/** Retrieve a cached item by key */
|
|
@@ -74,11 +79,20 @@ export async function readThroughItem<T>(
|
|
|
74
79
|
host,
|
|
75
80
|
} = config;
|
|
76
81
|
|
|
77
|
-
// Cache lookup
|
|
82
|
+
// Cache lookup. An infra read failure (getItem) is reported by the store
|
|
83
|
+
// itself, so here we just degrade to a miss. A deserialize failure is a
|
|
84
|
+
// corrupt/truncated stored entry, which this layer owns: report it LOUD as
|
|
85
|
+
// cache-corrupt, then fall through to a fresh execution (the miss-path write
|
|
86
|
+
// self-heals the bad entry).
|
|
87
|
+
let cached: CacheItemResult | null = null;
|
|
78
88
|
try {
|
|
79
|
-
|
|
89
|
+
cached = await getItem(key);
|
|
90
|
+
} catch {
|
|
91
|
+
cached = null;
|
|
92
|
+
}
|
|
80
93
|
|
|
81
|
-
|
|
94
|
+
if (cached) {
|
|
95
|
+
try {
|
|
82
96
|
const data = await deserialize(cached.value);
|
|
83
97
|
|
|
84
98
|
if (!cached.shouldRevalidate) {
|
|
@@ -97,16 +111,27 @@ export async function readThroughItem<T>(
|
|
|
97
111
|
if (serialized !== null) {
|
|
98
112
|
await setItem(key, serialized, storeOptions);
|
|
99
113
|
}
|
|
100
|
-
} catch {
|
|
101
|
-
|
|
114
|
+
} catch (error) {
|
|
115
|
+
reportCacheError(
|
|
116
|
+
error,
|
|
117
|
+
"stale-revalidation",
|
|
118
|
+
"[read-through] background revalidation",
|
|
119
|
+
host ?? undefined,
|
|
120
|
+
);
|
|
102
121
|
}
|
|
103
122
|
},
|
|
104
123
|
true,
|
|
105
124
|
);
|
|
106
125
|
return data;
|
|
126
|
+
} catch (error) {
|
|
127
|
+
reportCacheError(
|
|
128
|
+
error,
|
|
129
|
+
"cache-corrupt",
|
|
130
|
+
"[read-through] deserialize stored entry",
|
|
131
|
+
host ?? undefined,
|
|
132
|
+
);
|
|
133
|
+
// fall through to fresh execution
|
|
107
134
|
}
|
|
108
|
-
} catch {
|
|
109
|
-
// Cache lookup failed, fall through to fresh execution
|
|
110
135
|
}
|
|
111
136
|
|
|
112
137
|
// Cache miss
|
|
@@ -123,8 +148,13 @@ export async function readThroughItem<T>(
|
|
|
123
148
|
await setItem(key, serialized, storeOptions);
|
|
124
149
|
onCached?.();
|
|
125
150
|
}
|
|
126
|
-
} catch {
|
|
127
|
-
|
|
151
|
+
} catch (error) {
|
|
152
|
+
reportCacheError(
|
|
153
|
+
error,
|
|
154
|
+
"cache-write",
|
|
155
|
+
"[read-through] cache write",
|
|
156
|
+
host ?? undefined,
|
|
157
|
+
);
|
|
128
158
|
}
|
|
129
159
|
},
|
|
130
160
|
true,
|