@rangojs/router 0.4.0 → 0.4.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 +19 -1
- package/dist/__internal.d.ts +83 -0
- package/dist/__internal.d.ts.map +1 -0
- package/dist/__internal.js +19 -0
- package/dist/__internal.js.map +1 -0
- package/dist/__mocks__/version.d.ts +7 -0
- package/dist/__mocks__/version.d.ts.map +1 -0
- package/dist/__mocks__/version.js +7 -0
- package/dist/__mocks__/version.js.map +1 -0
- package/dist/__tests__/client-href.test.d.ts +2 -0
- package/dist/__tests__/client-href.test.d.ts.map +1 -0
- package/dist/__tests__/client-href.test.js +74 -0
- package/dist/__tests__/client-href.test.js.map +1 -0
- package/dist/__tests__/component-utils.test.d.ts +2 -0
- package/dist/__tests__/component-utils.test.d.ts.map +1 -0
- package/dist/__tests__/component-utils.test.js +51 -0
- package/dist/__tests__/component-utils.test.js.map +1 -0
- package/dist/__tests__/event-controller.test.d.ts +2 -0
- package/dist/__tests__/event-controller.test.d.ts.map +1 -0
- package/dist/__tests__/event-controller.test.js +538 -0
- package/dist/__tests__/event-controller.test.js.map +1 -0
- package/dist/__tests__/helpers/route-tree.d.ts +118 -0
- package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
- package/dist/__tests__/helpers/route-tree.js +374 -0
- package/dist/__tests__/helpers/route-tree.js.map +1 -0
- package/dist/__tests__/match-result.test.d.ts +2 -0
- package/dist/__tests__/match-result.test.d.ts.map +1 -0
- package/dist/__tests__/match-result.test.js +154 -0
- package/dist/__tests__/match-result.test.js.map +1 -0
- package/dist/__tests__/navigation-store.test.d.ts +2 -0
- package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
- package/dist/__tests__/navigation-store.test.js +440 -0
- package/dist/__tests__/navigation-store.test.js.map +1 -0
- package/dist/__tests__/partial-update.test.d.ts +2 -0
- package/dist/__tests__/partial-update.test.d.ts.map +1 -0
- package/dist/__tests__/partial-update.test.js +1009 -0
- package/dist/__tests__/partial-update.test.js.map +1 -0
- package/dist/__tests__/reverse-types.test.d.ts +8 -0
- package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
- package/dist/__tests__/reverse-types.test.js +656 -0
- package/dist/__tests__/reverse-types.test.js.map +1 -0
- package/dist/__tests__/route-definition.test.d.ts +2 -0
- package/dist/__tests__/route-definition.test.d.ts.map +1 -0
- package/dist/__tests__/route-definition.test.js +55 -0
- package/dist/__tests__/route-definition.test.js.map +1 -0
- package/dist/__tests__/router-helpers.test.d.ts +2 -0
- package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
- package/dist/__tests__/router-helpers.test.js +377 -0
- package/dist/__tests__/router-helpers.test.js.map +1 -0
- package/dist/__tests__/router-integration-2.test.d.ts +2 -0
- package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
- package/dist/__tests__/router-integration-2.test.js +426 -0
- package/dist/__tests__/router-integration-2.test.js.map +1 -0
- package/dist/__tests__/router-integration.test.d.ts +2 -0
- package/dist/__tests__/router-integration.test.d.ts.map +1 -0
- package/dist/__tests__/router-integration.test.js +1051 -0
- package/dist/__tests__/router-integration.test.js.map +1 -0
- package/dist/__tests__/search-params.test.d.ts +5 -0
- package/dist/__tests__/search-params.test.d.ts.map +1 -0
- package/dist/__tests__/search-params.test.js +306 -0
- package/dist/__tests__/search-params.test.js.map +1 -0
- package/dist/__tests__/segment-system.test.d.ts +2 -0
- package/dist/__tests__/segment-system.test.d.ts.map +1 -0
- package/dist/__tests__/segment-system.test.js +627 -0
- package/dist/__tests__/segment-system.test.js.map +1 -0
- package/dist/__tests__/static-handler-types.test.d.ts +8 -0
- package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
- package/dist/__tests__/static-handler-types.test.js +63 -0
- package/dist/__tests__/static-handler-types.test.js.map +1 -0
- package/dist/__tests__/urls.test.d.ts +2 -0
- package/dist/__tests__/urls.test.d.ts.map +1 -0
- package/dist/__tests__/urls.test.js +421 -0
- package/dist/__tests__/urls.test.js.map +1 -0
- package/dist/__tests__/use-mount.test.d.ts +2 -0
- package/dist/__tests__/use-mount.test.d.ts.map +1 -0
- package/dist/__tests__/use-mount.test.js +35 -0
- package/dist/__tests__/use-mount.test.js.map +1 -0
- package/dist/bin/rango.d.ts +2 -0
- package/dist/bin/rango.d.ts.map +1 -0
- package/dist/bin/rango.js.map +1 -0
- package/dist/browser/event-controller.d.ts +191 -0
- package/dist/browser/event-controller.d.ts.map +1 -0
- package/dist/browser/event-controller.js +559 -0
- package/dist/browser/event-controller.js.map +1 -0
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +14 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/link-interceptor.d.ts +38 -0
- package/dist/browser/link-interceptor.d.ts.map +1 -0
- package/dist/browser/link-interceptor.js +99 -0
- package/dist/browser/link-interceptor.js.map +1 -0
- package/dist/browser/logging.d.ts +10 -0
- package/dist/browser/logging.d.ts.map +1 -0
- package/dist/browser/logging.js +29 -0
- package/dist/browser/logging.js.map +1 -0
- package/dist/browser/lru-cache.d.ts +17 -0
- package/dist/browser/lru-cache.d.ts.map +1 -0
- package/dist/browser/lru-cache.js +50 -0
- package/dist/browser/lru-cache.js.map +1 -0
- package/dist/browser/merge-segment-loaders.d.ts +39 -0
- package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
- package/dist/browser/merge-segment-loaders.js +102 -0
- package/dist/browser/merge-segment-loaders.js.map +1 -0
- package/dist/browser/navigation-bridge.d.ts +102 -0
- package/dist/browser/navigation-bridge.d.ts.map +1 -0
- package/dist/browser/navigation-bridge.js +708 -0
- package/dist/browser/navigation-bridge.js.map +1 -0
- package/dist/browser/navigation-client.d.ts +25 -0
- package/dist/browser/navigation-client.d.ts.map +1 -0
- package/dist/browser/navigation-client.js +157 -0
- package/dist/browser/navigation-client.js.map +1 -0
- package/dist/browser/navigation-store.d.ts +101 -0
- package/dist/browser/navigation-store.d.ts.map +1 -0
- package/dist/browser/navigation-store.js +625 -0
- package/dist/browser/navigation-store.js.map +1 -0
- package/dist/browser/partial-update.d.ts +75 -0
- package/dist/browser/partial-update.d.ts.map +1 -0
- package/dist/browser/partial-update.js +426 -0
- package/dist/browser/partial-update.js.map +1 -0
- package/dist/browser/react/Link.d.ts +86 -0
- package/dist/browser/react/Link.d.ts.map +1 -0
- package/dist/browser/react/Link.js +128 -0
- package/dist/browser/react/Link.js.map +1 -0
- package/dist/browser/react/NavigationProvider.d.ts +63 -0
- package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
- package/dist/browser/react/NavigationProvider.js +216 -0
- package/dist/browser/react/NavigationProvider.js.map +1 -0
- package/dist/browser/react/ScrollRestoration.d.ts +75 -0
- package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
- package/dist/browser/react/ScrollRestoration.js +57 -0
- package/dist/browser/react/ScrollRestoration.js.map +1 -0
- package/dist/browser/react/context.d.ts +46 -0
- package/dist/browser/react/context.d.ts.map +1 -0
- package/dist/browser/react/context.js +10 -0
- package/dist/browser/react/context.js.map +1 -0
- package/dist/browser/react/index.d.ts +11 -0
- package/dist/browser/react/index.d.ts.map +1 -0
- package/dist/browser/react/index.js +22 -0
- package/dist/browser/react/index.js.map +1 -0
- package/dist/browser/react/location-state-shared.d.ts +63 -0
- package/dist/browser/react/location-state-shared.d.ts.map +1 -0
- package/dist/browser/react/location-state-shared.js +81 -0
- package/dist/browser/react/location-state-shared.js.map +1 -0
- package/dist/browser/react/location-state.d.ts +23 -0
- package/dist/browser/react/location-state.d.ts.map +1 -0
- package/dist/browser/react/location-state.js +29 -0
- package/dist/browser/react/location-state.js.map +1 -0
- package/dist/browser/react/mount-context.d.ts +24 -0
- package/dist/browser/react/mount-context.d.ts.map +1 -0
- package/dist/browser/react/mount-context.js +24 -0
- package/dist/browser/react/mount-context.js.map +1 -0
- package/dist/browser/react/use-action.d.ts +64 -0
- package/dist/browser/react/use-action.d.ts.map +1 -0
- package/dist/browser/react/use-action.js +134 -0
- package/dist/browser/react/use-action.js.map +1 -0
- package/dist/browser/react/use-client-cache.d.ts +41 -0
- package/dist/browser/react/use-client-cache.d.ts.map +1 -0
- package/dist/browser/react/use-client-cache.js +39 -0
- package/dist/browser/react/use-client-cache.js.map +1 -0
- package/dist/browser/react/use-handle.d.ts +31 -0
- package/dist/browser/react/use-handle.d.ts.map +1 -0
- package/dist/browser/react/use-handle.js +144 -0
- package/dist/browser/react/use-handle.js.map +1 -0
- package/dist/browser/react/use-href.d.ts +33 -0
- package/dist/browser/react/use-href.d.ts.map +1 -0
- package/dist/browser/react/use-href.js +39 -0
- package/dist/browser/react/use-href.js.map +1 -0
- package/dist/browser/react/use-link-status.d.ts +37 -0
- package/dist/browser/react/use-link-status.d.ts.map +1 -0
- package/dist/browser/react/use-link-status.js +99 -0
- package/dist/browser/react/use-link-status.js.map +1 -0
- package/dist/browser/react/use-mount.d.ts +25 -0
- package/dist/browser/react/use-mount.d.ts.map +1 -0
- package/dist/browser/react/use-mount.js +30 -0
- package/dist/browser/react/use-mount.js.map +1 -0
- package/dist/browser/react/use-navigation.d.ts +27 -0
- package/dist/browser/react/use-navigation.d.ts.map +1 -0
- package/dist/browser/react/use-navigation.js +87 -0
- package/dist/browser/react/use-navigation.js.map +1 -0
- package/dist/browser/react/use-segments.d.ts +38 -0
- package/dist/browser/react/use-segments.d.ts.map +1 -0
- package/dist/browser/react/use-segments.js +130 -0
- package/dist/browser/react/use-segments.js.map +1 -0
- package/dist/browser/request-controller.d.ts +26 -0
- package/dist/browser/request-controller.d.ts.map +1 -0
- package/dist/browser/request-controller.js +147 -0
- package/dist/browser/request-controller.js.map +1 -0
- package/dist/browser/rsc-router.d.ts +129 -0
- package/dist/browser/rsc-router.d.ts.map +1 -0
- package/dist/browser/rsc-router.js +195 -0
- package/dist/browser/rsc-router.js.map +1 -0
- package/dist/browser/scroll-restoration.d.ts +93 -0
- package/dist/browser/scroll-restoration.d.ts.map +1 -0
- package/dist/browser/scroll-restoration.js +321 -0
- package/dist/browser/scroll-restoration.js.map +1 -0
- package/dist/browser/segment-structure-assert.d.ts +17 -0
- package/dist/browser/segment-structure-assert.d.ts.map +1 -0
- package/dist/browser/segment-structure-assert.js +59 -0
- package/dist/browser/segment-structure-assert.js.map +1 -0
- package/dist/browser/server-action-bridge.d.ts +26 -0
- package/dist/browser/server-action-bridge.d.ts.map +1 -0
- package/dist/browser/server-action-bridge.js +668 -0
- package/dist/browser/server-action-bridge.js.map +1 -0
- package/dist/browser/shallow.d.ts +12 -0
- package/dist/browser/shallow.d.ts.map +1 -0
- package/dist/browser/shallow.js +34 -0
- package/dist/browser/shallow.js.map +1 -0
- package/dist/browser/types.d.ts +369 -0
- package/dist/browser/types.d.ts.map +1 -0
- package/dist/browser/types.js +2 -0
- package/dist/browser/types.js.map +1 -0
- package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
- package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-cli.test.js +237 -0
- package/dist/build/__tests__/generate-cli.test.js.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.js +119 -0
- package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.js +620 -0
- package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.js +308 -0
- package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
- package/dist/build/generate-manifest.d.ts +81 -0
- package/dist/build/generate-manifest.d.ts.map +1 -0
- package/dist/build/generate-manifest.js +276 -0
- package/dist/build/generate-manifest.js.map +1 -0
- package/dist/build/generate-route-types.d.ts +115 -0
- package/dist/build/generate-route-types.d.ts.map +1 -0
- package/dist/build/generate-route-types.js +740 -0
- package/dist/build/generate-route-types.js.map +1 -0
- package/dist/build/index.d.ts +21 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +21 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/route-trie.d.ts +71 -0
- package/dist/build/route-trie.d.ts.map +1 -0
- package/dist/build/route-trie.js +175 -0
- package/dist/build/route-trie.js.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.js +208 -0
- package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
- package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
- package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
- package/dist/cache/__tests__/document-cache.test.js +345 -0
- package/dist/cache/__tests__/document-cache.test.js.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
- package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
- package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-store.test.js +367 -0
- package/dist/cache/__tests__/memory-store.test.js.map +1 -0
- package/dist/cache/cache-scope.d.ts +102 -0
- package/dist/cache/cache-scope.d.ts.map +1 -0
- package/dist/cache/cache-scope.js +440 -0
- package/dist/cache/cache-scope.js.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
- package/dist/cache/cf/cf-cache-store.d.ts +165 -0
- package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
- package/dist/cache/cf/cf-cache-store.js +242 -0
- package/dist/cache/cf/cf-cache-store.js.map +1 -0
- package/dist/cache/cf/index.d.ts +14 -0
- package/dist/cache/cf/index.d.ts.map +1 -0
- package/dist/cache/cf/index.js +17 -0
- package/dist/cache/cf/index.js.map +1 -0
- package/dist/cache/document-cache.d.ts +64 -0
- package/dist/cache/document-cache.d.ts.map +1 -0
- package/dist/cache/document-cache.js +228 -0
- package/dist/cache/document-cache.js.map +1 -0
- package/dist/cache/index.d.ts +19 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +21 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/memory-segment-store.d.ts +110 -0
- package/dist/cache/memory-segment-store.d.ts.map +1 -0
- package/dist/cache/memory-segment-store.js +117 -0
- package/dist/cache/memory-segment-store.js.map +1 -0
- package/dist/cache/memory-store.d.ts +41 -0
- package/dist/cache/memory-store.d.ts.map +1 -0
- package/dist/cache/memory-store.js +191 -0
- package/dist/cache/memory-store.js.map +1 -0
- package/dist/cache/types.d.ts +317 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +12 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/client.d.ts +248 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +367 -0
- package/dist/client.js.map +1 -0
- package/dist/client.rsc.d.ts +26 -0
- package/dist/client.rsc.d.ts.map +1 -0
- package/dist/client.rsc.js +46 -0
- package/dist/client.rsc.js.map +1 -0
- package/dist/component-utils.d.ts +36 -0
- package/dist/component-utils.d.ts.map +1 -0
- package/dist/component-utils.js +61 -0
- package/dist/component-utils.js.map +1 -0
- package/dist/components/DefaultDocument.d.ts +13 -0
- package/dist/components/DefaultDocument.d.ts.map +1 -0
- package/dist/components/DefaultDocument.js +15 -0
- package/dist/components/DefaultDocument.js.map +1 -0
- package/dist/debug.d.ts +58 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +157 -0
- package/dist/debug.js.map +1 -0
- package/dist/default-error-boundary.d.ts +11 -0
- package/dist/default-error-boundary.d.ts.map +1 -0
- package/dist/default-error-boundary.js +45 -0
- package/dist/default-error-boundary.js.map +1 -0
- package/dist/deps/browser.d.ts +2 -0
- package/dist/deps/browser.d.ts.map +1 -0
- package/dist/deps/browser.js +3 -0
- package/dist/deps/browser.js.map +1 -0
- package/dist/deps/html-stream-client.d.ts +2 -0
- package/dist/deps/html-stream-client.d.ts.map +1 -0
- package/dist/deps/html-stream-client.js +3 -0
- package/dist/deps/html-stream-client.js.map +1 -0
- package/dist/deps/html-stream-server.d.ts +2 -0
- package/dist/deps/html-stream-server.d.ts.map +1 -0
- package/dist/deps/html-stream-server.js +3 -0
- package/dist/deps/html-stream-server.js.map +1 -0
- package/dist/deps/rsc.d.ts +2 -0
- package/dist/deps/rsc.d.ts.map +1 -0
- package/dist/deps/rsc.js +4 -0
- package/dist/deps/rsc.js.map +1 -0
- package/dist/deps/ssr.d.ts +2 -0
- package/dist/deps/ssr.d.ts.map +1 -0
- package/dist/deps/ssr.js +3 -0
- package/dist/deps/ssr.js.map +1 -0
- package/dist/errors.d.ts +174 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +241 -0
- package/dist/errors.js.map +1 -0
- package/dist/handle.d.ts +78 -0
- package/dist/handle.d.ts.map +1 -0
- package/dist/handle.js +82 -0
- package/dist/handle.js.map +1 -0
- package/dist/handles/MetaTags.d.ts +14 -0
- package/dist/handles/MetaTags.d.ts.map +1 -0
- package/dist/handles/MetaTags.js +136 -0
- package/dist/handles/MetaTags.js.map +1 -0
- package/dist/handles/index.d.ts +6 -0
- package/dist/handles/index.d.ts.map +1 -0
- package/dist/handles/index.js +6 -0
- package/dist/handles/index.js.map +1 -0
- package/dist/handles/meta.d.ts +39 -0
- package/dist/handles/meta.d.ts.map +1 -0
- package/dist/handles/meta.js +202 -0
- package/dist/handles/meta.js.map +1 -0
- package/dist/host/__tests__/errors.test.d.ts +2 -0
- package/dist/host/__tests__/errors.test.d.ts.map +1 -0
- package/dist/host/__tests__/errors.test.js +76 -0
- package/dist/host/__tests__/errors.test.js.map +1 -0
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
- package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
- package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
- package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
- package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
- package/dist/host/__tests__/pattern-matcher.test.js +251 -0
- package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
- package/dist/host/__tests__/router.test.d.ts +2 -0
- package/dist/host/__tests__/router.test.d.ts.map +1 -0
- package/dist/host/__tests__/router.test.js +241 -0
- package/dist/host/__tests__/router.test.js.map +1 -0
- package/dist/host/__tests__/testing.test.d.ts +2 -0
- package/dist/host/__tests__/testing.test.d.ts.map +1 -0
- package/dist/host/__tests__/testing.test.js +64 -0
- package/dist/host/__tests__/testing.test.js.map +1 -0
- package/dist/host/__tests__/utils.test.d.ts +2 -0
- package/dist/host/__tests__/utils.test.d.ts.map +1 -0
- package/dist/host/__tests__/utils.test.js +29 -0
- package/dist/host/__tests__/utils.test.js.map +1 -0
- package/dist/host/cookie-handler.d.ts +34 -0
- package/dist/host/cookie-handler.d.ts.map +1 -0
- package/dist/host/cookie-handler.js +124 -0
- package/dist/host/cookie-handler.js.map +1 -0
- package/dist/host/errors.d.ts +56 -0
- package/dist/host/errors.d.ts.map +1 -0
- package/dist/host/errors.js +79 -0
- package/dist/host/errors.js.map +1 -0
- package/dist/host/index.d.ts +29 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +32 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/pattern-matcher.d.ts +36 -0
- package/dist/host/pattern-matcher.d.ts.map +1 -0
- package/dist/host/pattern-matcher.js +172 -0
- package/dist/host/pattern-matcher.js.map +1 -0
- package/dist/host/router.d.ts +26 -0
- package/dist/host/router.d.ts.map +1 -0
- package/dist/host/router.js +218 -0
- package/dist/host/router.js.map +1 -0
- package/dist/host/testing.d.ts +36 -0
- package/dist/host/testing.d.ts.map +1 -0
- package/dist/host/testing.js +55 -0
- package/dist/host/testing.js.map +1 -0
- package/dist/host/types.d.ts +115 -0
- package/dist/host/types.d.ts.map +1 -0
- package/dist/host/types.js +7 -0
- package/dist/host/types.js.map +1 -0
- package/dist/host/utils.d.ts +21 -0
- package/dist/host/utils.d.ts.map +1 -0
- package/dist/host/utils.js +23 -0
- package/dist/host/utils.js.map +1 -0
- package/dist/href-client.d.ts +131 -0
- package/dist/href-client.d.ts.map +1 -0
- package/dist/href-client.js +64 -0
- package/dist/href-client.js.map +1 -0
- package/dist/href-context.d.ts +29 -0
- package/dist/href-context.d.ts.map +1 -0
- package/dist/href-context.js +21 -0
- package/dist/href-context.js.map +1 -0
- package/dist/index.d.ts +73 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +91 -0
- package/dist/index.js.map +1 -0
- package/dist/index.rsc.d.ts +32 -0
- package/dist/index.rsc.d.ts.map +1 -0
- package/dist/index.rsc.js +40 -0
- package/dist/index.rsc.js.map +1 -0
- package/dist/internal-debug.d.ts +2 -0
- package/dist/internal-debug.d.ts.map +1 -0
- package/dist/internal-debug.js +5 -0
- package/dist/internal-debug.js.map +1 -0
- package/dist/loader.d.ts +14 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +20 -0
- package/dist/loader.js.map +1 -0
- package/dist/loader.rsc.d.ts +19 -0
- package/dist/loader.rsc.d.ts.map +1 -0
- package/dist/loader.rsc.js +99 -0
- package/dist/loader.rsc.js.map +1 -0
- package/dist/network-error-thrower.d.ts +17 -0
- package/dist/network-error-thrower.d.ts.map +1 -0
- package/dist/network-error-thrower.js +14 -0
- package/dist/network-error-thrower.js.map +1 -0
- package/dist/outlet-context.d.ts +13 -0
- package/dist/outlet-context.d.ts.map +1 -0
- package/dist/outlet-context.js +3 -0
- package/dist/outlet-context.js.map +1 -0
- package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
- package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
- package/dist/prerender/__tests__/param-hash.test.js +148 -0
- package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
- package/dist/prerender/param-hash.d.ts +16 -0
- package/dist/prerender/param-hash.d.ts.map +1 -0
- package/dist/prerender/param-hash.js +36 -0
- package/dist/prerender/param-hash.js.map +1 -0
- package/dist/prerender/store.d.ts +38 -0
- package/dist/prerender/store.d.ts.map +1 -0
- package/dist/prerender/store.js +61 -0
- package/dist/prerender/store.js.map +1 -0
- package/dist/prerender.d.ts +66 -0
- package/dist/prerender.d.ts.map +1 -0
- package/dist/prerender.js +57 -0
- package/dist/prerender.js.map +1 -0
- package/dist/reverse.d.ts +196 -0
- package/dist/reverse.d.ts.map +1 -0
- package/dist/reverse.js +78 -0
- package/dist/reverse.js.map +1 -0
- package/dist/root-error-boundary.d.ts +33 -0
- package/dist/root-error-boundary.d.ts.map +1 -0
- package/dist/root-error-boundary.js +165 -0
- package/dist/root-error-boundary.js.map +1 -0
- package/dist/route-content-wrapper.d.ts +46 -0
- package/dist/route-content-wrapper.d.ts.map +1 -0
- package/dist/route-content-wrapper.js +77 -0
- package/dist/route-content-wrapper.js.map +1 -0
- package/dist/route-definition.d.ts +421 -0
- package/dist/route-definition.d.ts.map +1 -0
- package/dist/route-definition.js +868 -0
- package/dist/route-definition.js.map +1 -0
- package/dist/route-map-builder.d.ts +155 -0
- package/dist/route-map-builder.d.ts.map +1 -0
- package/dist/route-map-builder.js +237 -0
- package/dist/route-map-builder.js.map +1 -0
- package/dist/route-types.d.ts +165 -0
- package/dist/route-types.d.ts.map +1 -0
- package/dist/route-types.js +7 -0
- package/dist/route-types.js.map +1 -0
- package/dist/router/__tests__/handler-context.test.d.ts +2 -0
- package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
- package/dist/router/__tests__/handler-context.test.js +65 -0
- package/dist/router/__tests__/handler-context.test.js.map +1 -0
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
- package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
- package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
- package/dist/router/__tests__/match-context.test.d.ts +2 -0
- package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
- package/dist/router/__tests__/match-context.test.js +92 -0
- package/dist/router/__tests__/match-context.test.js.map +1 -0
- package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
- package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
- package/dist/router/__tests__/match-pipelines.test.js +417 -0
- package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
- package/dist/router/__tests__/match-result.test.d.ts +2 -0
- package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
- package/dist/router/__tests__/match-result.test.js +457 -0
- package/dist/router/__tests__/match-result.test.js.map +1 -0
- package/dist/router/__tests__/on-error.test.d.ts +2 -0
- package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
- package/dist/router/__tests__/on-error.test.js +678 -0
- package/dist/router/__tests__/on-error.test.js.map +1 -0
- package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
- package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
- package/dist/router/__tests__/pattern-matching.test.js +629 -0
- package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
- package/dist/router/error-handling.d.ts +77 -0
- package/dist/router/error-handling.d.ts.map +1 -0
- package/dist/router/error-handling.js +202 -0
- package/dist/router/error-handling.js.map +1 -0
- package/dist/router/handler-context.d.ts +20 -0
- package/dist/router/handler-context.d.ts.map +1 -0
- package/dist/router/handler-context.js +198 -0
- package/dist/router/handler-context.js.map +1 -0
- package/dist/router/intercept-resolution.d.ts +66 -0
- package/dist/router/intercept-resolution.d.ts.map +1 -0
- package/dist/router/intercept-resolution.js +246 -0
- package/dist/router/intercept-resolution.js.map +1 -0
- package/dist/router/loader-resolution.d.ts +64 -0
- package/dist/router/loader-resolution.d.ts.map +1 -0
- package/dist/router/loader-resolution.js +284 -0
- package/dist/router/loader-resolution.js.map +1 -0
- package/dist/router/logging.d.ts +15 -0
- package/dist/router/logging.d.ts.map +1 -0
- package/dist/router/logging.js +99 -0
- package/dist/router/logging.js.map +1 -0
- package/dist/router/manifest.d.ts +22 -0
- package/dist/router/manifest.d.ts.map +1 -0
- package/dist/router/manifest.js +181 -0
- package/dist/router/manifest.js.map +1 -0
- package/dist/router/match-api.d.ts +35 -0
- package/dist/router/match-api.d.ts.map +1 -0
- package/dist/router/match-api.js +406 -0
- package/dist/router/match-api.js.map +1 -0
- package/dist/router/match-context.d.ts +206 -0
- package/dist/router/match-context.d.ts.map +1 -0
- package/dist/router/match-context.js +17 -0
- package/dist/router/match-context.js.map +1 -0
- package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
- package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
- package/dist/router/match-middleware/background-revalidation.js +75 -0
- package/dist/router/match-middleware/background-revalidation.js.map +1 -0
- package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
- package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
- package/dist/router/match-middleware/cache-lookup.js +257 -0
- package/dist/router/match-middleware/cache-lookup.js.map +1 -0
- package/dist/router/match-middleware/cache-store.d.ts +113 -0
- package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
- package/dist/router/match-middleware/cache-store.js +108 -0
- package/dist/router/match-middleware/cache-store.js.map +1 -0
- package/dist/router/match-middleware/index.d.ts +81 -0
- package/dist/router/match-middleware/index.d.ts.map +1 -0
- package/dist/router/match-middleware/index.js +80 -0
- package/dist/router/match-middleware/index.js.map +1 -0
- package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
- package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
- package/dist/router/match-middleware/intercept-resolution.js +134 -0
- package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
- package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
- package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
- package/dist/router/match-middleware/segment-resolution.js +53 -0
- package/dist/router/match-middleware/segment-resolution.js.map +1 -0
- package/dist/router/match-pipelines.d.ts +147 -0
- package/dist/router/match-pipelines.d.ts.map +1 -0
- package/dist/router/match-pipelines.js +82 -0
- package/dist/router/match-pipelines.js.map +1 -0
- package/dist/router/match-result.d.ts +126 -0
- package/dist/router/match-result.d.ts.map +1 -0
- package/dist/router/match-result.js +93 -0
- package/dist/router/match-result.js.map +1 -0
- package/dist/router/metrics.d.ts +20 -0
- package/dist/router/metrics.d.ts.map +1 -0
- package/dist/router/metrics.js +47 -0
- package/dist/router/metrics.js.map +1 -0
- package/dist/router/middleware.d.ts +249 -0
- package/dist/router/middleware.d.ts.map +1 -0
- package/dist/router/middleware.js +434 -0
- package/dist/router/middleware.js.map +1 -0
- package/dist/router/middleware.test.d.ts +2 -0
- package/dist/router/middleware.test.d.ts.map +1 -0
- package/dist/router/middleware.test.js +816 -0
- package/dist/router/middleware.test.js.map +1 -0
- package/dist/router/pattern-matching.d.ts +149 -0
- package/dist/router/pattern-matching.d.ts.map +1 -0
- package/dist/router/pattern-matching.js +349 -0
- package/dist/router/pattern-matching.js.map +1 -0
- package/dist/router/revalidation.d.ts +44 -0
- package/dist/router/revalidation.d.ts.map +1 -0
- package/dist/router/revalidation.js +147 -0
- package/dist/router/revalidation.js.map +1 -0
- package/dist/router/router-context.d.ts +135 -0
- package/dist/router/router-context.d.ts.map +1 -0
- package/dist/router/router-context.js +36 -0
- package/dist/router/router-context.js.map +1 -0
- package/dist/router/segment-resolution.d.ts +127 -0
- package/dist/router/segment-resolution.d.ts.map +1 -0
- package/dist/router/segment-resolution.js +919 -0
- package/dist/router/segment-resolution.js.map +1 -0
- package/dist/router/trie-matching.d.ts +40 -0
- package/dist/router/trie-matching.d.ts.map +1 -0
- package/dist/router/trie-matching.js +127 -0
- package/dist/router/trie-matching.js.map +1 -0
- package/dist/router/types.d.ts +136 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +7 -0
- package/dist/router/types.js.map +1 -0
- package/dist/router.d.ts +753 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.gen.d.ts +6 -0
- package/dist/router.gen.d.ts.map +1 -0
- package/dist/router.gen.js +6 -0
- package/dist/router.gen.js.map +1 -0
- package/dist/router.js +1304 -0
- package/dist/router.js.map +1 -0
- package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
- package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
- package/dist/rsc/__tests__/helpers.test.js +140 -0
- package/dist/rsc/__tests__/helpers.test.js.map +1 -0
- package/dist/rsc/handler.d.ts +45 -0
- package/dist/rsc/handler.d.ts.map +1 -0
- package/dist/rsc/handler.js +1172 -0
- package/dist/rsc/handler.js.map +1 -0
- package/dist/rsc/helpers.d.ts +16 -0
- package/dist/rsc/helpers.d.ts.map +1 -0
- package/dist/rsc/helpers.js +55 -0
- package/dist/rsc/helpers.js.map +1 -0
- package/dist/rsc/index.d.ts +22 -0
- package/dist/rsc/index.d.ts.map +1 -0
- package/dist/rsc/index.js +23 -0
- package/dist/rsc/index.js.map +1 -0
- package/dist/rsc/nonce.d.ts +9 -0
- package/dist/rsc/nonce.d.ts.map +1 -0
- package/dist/rsc/nonce.js +18 -0
- package/dist/rsc/nonce.js.map +1 -0
- package/dist/rsc/types.d.ts +206 -0
- package/dist/rsc/types.d.ts.map +1 -0
- package/dist/rsc/types.js +8 -0
- package/dist/rsc/types.js.map +1 -0
- package/dist/search-params.d.ts +103 -0
- package/dist/search-params.d.ts.map +1 -0
- package/dist/search-params.js +74 -0
- package/dist/search-params.js.map +1 -0
- package/dist/segment-system.d.ts +75 -0
- package/dist/segment-system.d.ts.map +1 -0
- package/dist/segment-system.js +336 -0
- package/dist/segment-system.js.map +1 -0
- package/dist/server/context.d.ts +245 -0
- package/dist/server/context.d.ts.map +1 -0
- package/dist/server/context.js +197 -0
- package/dist/server/context.js.map +1 -0
- package/dist/server/fetchable-loader-store.d.ts +18 -0
- package/dist/server/fetchable-loader-store.d.ts.map +1 -0
- package/dist/server/fetchable-loader-store.js +18 -0
- package/dist/server/fetchable-loader-store.js.map +1 -0
- package/dist/server/handle-store.d.ts +85 -0
- package/dist/server/handle-store.d.ts.map +1 -0
- package/dist/server/handle-store.js +142 -0
- package/dist/server/handle-store.js.map +1 -0
- package/dist/server/loader-registry.d.ts +55 -0
- package/dist/server/loader-registry.d.ts.map +1 -0
- package/dist/server/loader-registry.js +132 -0
- package/dist/server/loader-registry.js.map +1 -0
- package/dist/server/request-context.d.ts +226 -0
- package/dist/server/request-context.d.ts.map +1 -0
- package/dist/server/request-context.js +290 -0
- package/dist/server/request-context.js.map +1 -0
- package/dist/server/root-layout.d.ts +4 -0
- package/dist/server/root-layout.d.ts.map +1 -0
- package/dist/server/root-layout.js +5 -0
- package/dist/server/root-layout.js.map +1 -0
- package/dist/server.d.ts +15 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +20 -0
- package/dist/server.js.map +1 -0
- package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
- package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
- package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
- package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
- package/dist/ssr/index.d.ts +98 -0
- package/dist/ssr/index.d.ts.map +1 -0
- package/dist/ssr/index.js +158 -0
- package/dist/ssr/index.js.map +1 -0
- package/dist/static-handler.d.ts +50 -0
- package/dist/static-handler.d.ts.map +1 -0
- package/dist/static-handler.gen.d.ts +5 -0
- package/dist/static-handler.gen.d.ts.map +1 -0
- package/dist/static-handler.gen.js +5 -0
- package/dist/static-handler.gen.js.map +1 -0
- package/dist/static-handler.js +29 -0
- package/dist/static-handler.js.map +1 -0
- package/dist/theme/ThemeProvider.d.ts +20 -0
- package/dist/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/theme/ThemeProvider.js +240 -0
- package/dist/theme/ThemeProvider.js.map +1 -0
- package/dist/theme/ThemeScript.d.ts +48 -0
- package/dist/theme/ThemeScript.d.ts.map +1 -0
- package/dist/theme/ThemeScript.js +13 -0
- package/dist/theme/ThemeScript.js.map +1 -0
- package/dist/theme/__tests__/theme.test.d.ts +2 -0
- package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
- package/dist/theme/__tests__/theme.test.js +103 -0
- package/dist/theme/__tests__/theme.test.js.map +1 -0
- package/dist/theme/constants.d.ts +29 -0
- package/dist/theme/constants.d.ts.map +1 -0
- package/dist/theme/constants.js +48 -0
- package/dist/theme/constants.js.map +1 -0
- package/dist/theme/index.d.ts +31 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +36 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/theme-context.d.ts +40 -0
- package/dist/theme/theme-context.d.ts.map +1 -0
- package/dist/theme/theme-context.js +60 -0
- package/dist/theme/theme-context.js.map +1 -0
- package/dist/theme/theme-script.d.ts +27 -0
- package/dist/theme/theme-script.d.ts.map +1 -0
- package/dist/theme/theme-script.js +147 -0
- package/dist/theme/theme-script.js.map +1 -0
- package/dist/theme/types.d.ts +163 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme/types.js +11 -0
- package/dist/theme/types.js.map +1 -0
- package/dist/theme/use-theme.d.ts +12 -0
- package/dist/theme/use-theme.d.ts.map +1 -0
- package/dist/theme/use-theme.js +40 -0
- package/dist/theme/use-theme.js.map +1 -0
- package/dist/types/browser/event-controller.d.ts +4 -0
- package/dist/types/browser/link-interceptor.d.ts +17 -7
- package/dist/types/browser/navigation-bridge.d.ts +13 -1
- package/dist/types/browser/navigation-client.d.ts +1 -1
- package/dist/types/browser/notify-listeners.d.ts +2 -0
- package/dist/types/browser/prefetch/cache.d.ts +10 -1
- package/dist/types/browser/prefetch/default-strategy.d.ts +12 -3
- package/dist/types/browser/prefetch/invalidation.d.ts +6 -0
- package/dist/types/browser/prefetch/loader.d.ts +3 -1
- package/dist/types/browser/prefetch/observer.d.ts +3 -6
- package/dist/types/browser/rango-state.d.ts +4 -0
- package/dist/types/browser/react/Link.d.ts +4 -9
- package/dist/types/browser/react/context.d.ts +3 -0
- package/dist/types/browser/rsc-router.d.ts +7 -2
- package/dist/types/browser/types.d.ts +1 -0
- package/dist/types/cache/cache-key-utils.d.ts +11 -3
- package/dist/types/cache/cache-scope.d.ts +82 -3
- package/dist/types/cache/cf/cf-cache-store.d.ts +21 -10
- package/dist/types/cache/cf/cf-cache-types.d.ts +4 -2
- package/dist/types/cache/index.d.ts +3 -1
- package/dist/types/cache/search-params-filter.d.ts +64 -0
- package/dist/types/cache/shell-snapshot.d.ts +4 -4
- package/dist/types/cache/types.d.ts +30 -2
- package/dist/types/cache/vercel/vercel-cache-store.d.ts +2 -2
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.rsc.d.ts +1 -0
- package/dist/types/router/match-middleware/cache-lookup.d.ts +13 -0
- package/dist/types/router/navigation-snapshot.d.ts +29 -0
- package/dist/types/router/router-options.d.ts +27 -3
- package/dist/types/rsc/shell-build-manifest.d.ts +7 -1
- package/dist/types/rsc/shell-capture.d.ts +10 -8
- package/dist/types/rsc/shell-serve.d.ts +7 -1
- package/dist/types/rsc/types.d.ts +17 -0
- package/dist/types/segment-fragments.d.ts +27 -4
- package/dist/types/server/request-context.d.ts +78 -12
- package/dist/types/testing/render-route.d.ts +10 -1
- package/dist/types/testing/shell-status.d.ts +6 -3
- package/dist/types/vite/plugin-types.d.ts +1 -1
- package/dist/types.d.ts +1479 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -0
- package/dist/urls.d.ts +441 -0
- package/dist/urls.d.ts.map +1 -0
- package/dist/urls.gen.d.ts +8 -0
- package/dist/urls.gen.d.ts.map +1 -0
- package/dist/urls.gen.js +8 -0
- package/dist/urls.gen.js.map +1 -0
- package/dist/urls.js +443 -0
- package/dist/urls.js.map +1 -0
- package/dist/use-loader.d.ts +127 -0
- package/dist/use-loader.d.ts.map +1 -0
- package/dist/use-loader.js +237 -0
- package/dist/use-loader.js.map +1 -0
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
- package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
- package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
- package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
- package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
- package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
- package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
- package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
- package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
- package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
- package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
- package/dist/vite/__tests__/expose-router-id.test.js +39 -0
- package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
- package/dist/vite/ast-handler-extract.d.ts +49 -0
- package/dist/vite/ast-handler-extract.d.ts.map +1 -0
- package/dist/vite/ast-handler-extract.js +249 -0
- package/dist/vite/ast-handler-extract.js.map +1 -0
- package/dist/vite/expose-action-id.d.ts +19 -0
- package/dist/vite/expose-action-id.d.ts.map +1 -0
- package/dist/vite/expose-action-id.js +250 -0
- package/dist/vite/expose-action-id.js.map +1 -0
- package/dist/vite/expose-id-utils.d.ts +69 -0
- package/dist/vite/expose-id-utils.d.ts.map +1 -0
- package/dist/vite/expose-id-utils.js +289 -0
- package/dist/vite/expose-id-utils.js.map +1 -0
- package/dist/vite/expose-internal-ids.d.ts +22 -0
- package/dist/vite/expose-internal-ids.d.ts.map +1 -0
- package/dist/vite/expose-internal-ids.js +886 -0
- package/dist/vite/expose-internal-ids.js.map +1 -0
- package/dist/vite/index.d.ts +149 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +5 -5
- package/dist/vite/index.js.bak +5448 -0
- package/dist/vite/index.js.map +1 -0
- package/dist/vite/index.named-routes.gen.ts +103 -0
- package/dist/vite/package-resolution.d.ts +43 -0
- package/dist/vite/package-resolution.d.ts.map +1 -0
- package/dist/vite/package-resolution.js +112 -0
- package/dist/vite/package-resolution.js.map +1 -0
- package/dist/vite/virtual-entries.d.ts +25 -0
- package/dist/vite/virtual-entries.d.ts.map +1 -0
- package/dist/vite/virtual-entries.js +110 -0
- package/dist/vite/virtual-entries.js.map +1 -0
- package/package.json +23 -22
- package/skills/caching/SKILL.md +39 -0
- package/skills/cloudflare/SKILL.md +4 -2
- package/skills/comparison/references/framework-comparison.md +7 -1
- package/skills/links/SKILL.md +24 -0
- package/skills/ppr/SKILL.md +77 -12
- package/skills/router-setup/SKILL.md +7 -2
- package/skills/testing/client-components.md +15 -14
- package/skills/vercel/SKILL.md +1 -1
- package/src/browser/event-controller.ts +110 -11
- package/src/browser/link-interceptor.ts +469 -20
- package/src/browser/navigation-bridge.ts +71 -2
- package/src/browser/navigation-client.ts +77 -27
- package/src/browser/navigation-store.ts +24 -1
- package/src/browser/notify-listeners.ts +22 -0
- package/src/browser/prefetch/cache.ts +22 -2
- package/src/browser/prefetch/default-strategy.ts +43 -3
- package/src/browser/prefetch/fetch.ts +5 -0
- package/src/browser/prefetch/invalidation.ts +30 -0
- package/src/browser/prefetch/loader.ts +19 -12
- package/src/browser/prefetch/observer.ts +50 -22
- package/src/browser/rango-state.ts +21 -0
- package/src/browser/react/Link.tsx +97 -88
- package/src/browser/react/NavigationProvider.tsx +1 -0
- package/src/browser/react/context.ts +4 -0
- package/src/browser/rsc-router.tsx +34 -15
- package/src/browser/types.ts +1 -0
- package/src/cache/cache-key-utils.ts +18 -4
- package/src/cache/cache-runtime.ts +7 -2
- package/src/cache/cache-scope.ts +157 -24
- package/src/cache/cf/cf-cache-store.ts +472 -104
- package/src/cache/cf/cf-cache-types.ts +4 -2
- package/src/cache/document-cache.ts +31 -3
- package/src/cache/index.ts +7 -0
- package/src/cache/search-params-filter.ts +118 -0
- package/src/cache/shell-snapshot.ts +8 -4
- package/src/cache/types.ts +33 -2
- package/src/cache/vercel/vercel-cache-store.ts +17 -3
- package/src/index.rsc.ts +4 -0
- package/src/index.ts +6 -0
- package/src/router/match-middleware/cache-lookup.ts +146 -33
- package/src/router/match-middleware/cache-store.ts +70 -0
- package/src/router/navigation-snapshot.ts +46 -6
- package/src/router/router-options.ts +31 -4
- package/src/rsc/handler.ts +9 -0
- package/src/rsc/response-cache-serve.ts +1 -1
- package/src/rsc/rsc-rendering.ts +311 -31
- package/src/rsc/shell-build-manifest.ts +8 -1
- package/src/rsc/shell-capture.ts +24 -19
- package/src/rsc/shell-serve.ts +8 -2
- package/src/rsc/types.ts +17 -0
- package/src/segment-fragments.ts +45 -4
- package/src/server/request-context.ts +83 -11
- package/src/testing/dispatch.ts +21 -3
- package/src/testing/render-route.tsx +86 -17
- package/src/testing/shell-status.ts +20 -3
- package/src/vite/plugin-types.ts +1 -1
- package/src/vite/plugins/vercel-output.ts +2 -2
- 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
package/src/rsc/rsc-rendering.ts
CHANGED
|
@@ -61,18 +61,32 @@ import {
|
|
|
61
61
|
type DevShellLookup,
|
|
62
62
|
} from "./shell-build-manifest.js";
|
|
63
63
|
import { contextGet } from "../context-var.js";
|
|
64
|
+
import {
|
|
65
|
+
getNavigationContextHeader,
|
|
66
|
+
prerenderStoreShortCircuits,
|
|
67
|
+
} from "../router/navigation-snapshot.js";
|
|
68
|
+
import {
|
|
69
|
+
ensureFullRouteSnapshot,
|
|
70
|
+
type RouteSnapshot,
|
|
71
|
+
} from "../router/route-snapshot.js";
|
|
72
|
+
import { prerenderEntryExists } from "../router/match-middleware/cache-lookup.js";
|
|
64
73
|
import {
|
|
65
74
|
resolveSameOriginRedirect,
|
|
66
75
|
safeSameOriginLanding,
|
|
67
76
|
} from "../redirect-origin.js";
|
|
68
77
|
import { nonce as nonceToken } from "./nonce.js";
|
|
69
78
|
import { reportCacheError } from "../cache/cache-error.js";
|
|
79
|
+
import type { SearchParamsFilter } from "../cache/search-params-filter.js";
|
|
70
80
|
import { INTERNAL_RANGO_DEBUG } from "../internal-debug.js";
|
|
71
81
|
import type {
|
|
72
82
|
SegmentCacheStore,
|
|
73
83
|
ShellCacheEntry,
|
|
74
84
|
ShellSnapshotRecord,
|
|
75
85
|
} from "../cache/types.js";
|
|
86
|
+
import {
|
|
87
|
+
SEGMENT_FRAGMENT_CAPABILITY_HEADER,
|
|
88
|
+
SEGMENT_FRAGMENT_RECOVERY_HEADER,
|
|
89
|
+
} from "../segment-fragments.js";
|
|
76
90
|
|
|
77
91
|
type PprReplayBypassReason =
|
|
78
92
|
| "method"
|
|
@@ -80,6 +94,10 @@ type PprReplayBypassReason =
|
|
|
80
94
|
| "nonce"
|
|
81
95
|
| "store-unavailable"
|
|
82
96
|
| "passive-read-unsupported"
|
|
97
|
+
| "no-navigation-context"
|
|
98
|
+
| "prerender-store"
|
|
99
|
+
| "intercept"
|
|
100
|
+
| "cache-disabled"
|
|
83
101
|
| "read-error"
|
|
84
102
|
| "no-entry"
|
|
85
103
|
| "invalid-version"
|
|
@@ -88,6 +106,7 @@ type PprReplayBypassReason =
|
|
|
88
106
|
| "transition-when"
|
|
89
107
|
| "no-segment-snapshot"
|
|
90
108
|
| "snapshot-miss"
|
|
109
|
+
| "explicit-cache-hit"
|
|
91
110
|
| "stale-build-entry";
|
|
92
111
|
|
|
93
112
|
type PprReplayStatus =
|
|
@@ -110,8 +129,11 @@ function describePprReplayStatus(status: PprReplayStatus): string {
|
|
|
110
129
|
: `bypass:${status.reason}`;
|
|
111
130
|
}
|
|
112
131
|
|
|
113
|
-
function buildNavigationShellKey(
|
|
114
|
-
|
|
132
|
+
function buildNavigationShellKey(
|
|
133
|
+
url: URL,
|
|
134
|
+
filter?: SearchParamsFilter,
|
|
135
|
+
): string {
|
|
136
|
+
return `${buildShellKey(url, filter)}:navigation`;
|
|
115
137
|
}
|
|
116
138
|
|
|
117
139
|
function createShellCaptureDescriptor(
|
|
@@ -147,6 +169,26 @@ function shouldHealReplayMiss(
|
|
|
147
169
|
);
|
|
148
170
|
}
|
|
149
171
|
|
|
172
|
+
/**
|
|
173
|
+
* Post-match truth override for a pre-match BYPASS classification. The gate
|
|
174
|
+
* decides before matchPartial runs, but two facts only the match can settle:
|
|
175
|
+
* whether the prerender store ACTUALLY served (either artifact variant — the
|
|
176
|
+
* gate's probe reads only the non-intercept one), and whether the navigation
|
|
177
|
+
* resolved to an intercept (findInterceptForRoute runs during the match; the
|
|
178
|
+
* intercept-source header proves nothing in either direction). The resulting
|
|
179
|
+
* reason is stamped on the request context by withCacheLookup. A replay HIT is
|
|
180
|
+
* never overridden — the seeded record was demonstrably consumed, so neither
|
|
181
|
+
* fact can be true.
|
|
182
|
+
*/
|
|
183
|
+
function reclassifyReplayStatus(
|
|
184
|
+
reqCtx: RequestContext<any>,
|
|
185
|
+
status: PprReplayStatus,
|
|
186
|
+
): PprReplayStatus {
|
|
187
|
+
if (status.outcome === "HIT") return status;
|
|
188
|
+
const reason = reqCtx._pprReplayPostMatchReason;
|
|
189
|
+
return reason ? { outcome: "BYPASS", reason } : status;
|
|
190
|
+
}
|
|
191
|
+
|
|
150
192
|
function resolveDevShellLookup(
|
|
151
193
|
reqCtx: RequestContext<any>,
|
|
152
194
|
pprConfig: ResolvedPprConfig,
|
|
@@ -173,21 +215,32 @@ function replayableShellSnapshot(
|
|
|
173
215
|
if (!hasIntactShellPayload(entry)) return { reason: "corrupt-entry" };
|
|
174
216
|
if (entry.handlerLiveHoles) return { reason: "handler-live-holes" };
|
|
175
217
|
if (entry.transitionWhen) return { reason: "transition-when" };
|
|
218
|
+
// Eligibility requires the CANONICAL doc segment record (`docKey`), not just
|
|
219
|
+
// any segment record: captures under an explicit cache() scope also record
|
|
220
|
+
// that tier's reads/writes under keys a partial lookup can never resolve,
|
|
221
|
+
// and counting those declared entries "replayable" that then always missed
|
|
222
|
+
// (a timing-dependent snapshot-miss/no-segment-snapshot flip-flop). Entries
|
|
223
|
+
// captured before the field existed read as no-segment-snapshot and heal on
|
|
224
|
+
// recapture (pre-release, same treatment as the buildVersion field).
|
|
225
|
+
const docKey = entry.docKey;
|
|
176
226
|
const snapshot = entry.snapshot;
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
227
|
+
const hasDocRecord =
|
|
228
|
+
docKey !== undefined &&
|
|
229
|
+
snapshot?.some((record) => {
|
|
230
|
+
if (
|
|
231
|
+
!record ||
|
|
232
|
+
typeof record !== "object" ||
|
|
233
|
+
record.family !== "segment" ||
|
|
234
|
+
record.key !== docKey ||
|
|
235
|
+
typeof record.value !== "object" ||
|
|
236
|
+
record.value === null
|
|
237
|
+
) {
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
const segments = (record.value as { segments?: unknown }).segments;
|
|
241
|
+
return Array.isArray(segments) && segments.length > 0;
|
|
242
|
+
});
|
|
243
|
+
return hasDocRecord && snapshot
|
|
191
244
|
? { snapshot }
|
|
192
245
|
: { reason: "no-segment-snapshot" };
|
|
193
246
|
}
|
|
@@ -236,6 +289,7 @@ async function handleRscRenderingInner<TEnv>(
|
|
|
236
289
|
let hasInterceptSlots = false;
|
|
237
290
|
let pprReplayStatus: PprReplayStatus | undefined;
|
|
238
291
|
let partialCaptureNeeded = false;
|
|
292
|
+
let partialCaptureKey: string | undefined;
|
|
239
293
|
|
|
240
294
|
// --- Axis 2: integrated PPR shell serve (docs/design/ppr-shell-resume.md) ---
|
|
241
295
|
//
|
|
@@ -263,7 +317,7 @@ async function handleRscRenderingInner<TEnv>(
|
|
|
263
317
|
// the provider-only check missed the latter (issue #656).
|
|
264
318
|
const activeNonce = nonce ?? contextGet(reqCtx._variables, nonceToken);
|
|
265
319
|
const store = reqCtx._cacheStore;
|
|
266
|
-
const key = buildShellKey(url);
|
|
320
|
+
const key = buildShellKey(url, reqCtx._searchParamsFilter);
|
|
267
321
|
// Dev Server-Timing mirror (issue #651): a capture completes AFTER its
|
|
268
322
|
// triggering response committed, so its outcome can only ride a LATER
|
|
269
323
|
// response's header. Read-and-clear keeps one capture = one report;
|
|
@@ -417,6 +471,7 @@ async function handleRscRenderingInner<TEnv>(
|
|
|
417
471
|
// only (production's exact candidate set). Folded away in
|
|
418
472
|
// production builds (NODE_ENV is a compile-time constant).
|
|
419
473
|
resolveDevShellLookup(reqCtx, pprConfig),
|
|
474
|
+
reqCtx._searchParamsFilter,
|
|
420
475
|
);
|
|
421
476
|
if (buildHit) {
|
|
422
477
|
// Past ppr.ttl: still serve the baked entry, recapture upgrades it.
|
|
@@ -444,6 +499,7 @@ async function handleRscRenderingInner<TEnv>(
|
|
|
444
499
|
pprReplayStatus = replay.status;
|
|
445
500
|
partialCaptureNeeded =
|
|
446
501
|
"captureNeeded" in replay && replay.captureNeeded === true;
|
|
502
|
+
partialCaptureKey = "captureKey" in replay ? replay.captureKey : undefined;
|
|
447
503
|
|
|
448
504
|
if (!result) {
|
|
449
505
|
// Fall back to full render
|
|
@@ -562,7 +618,7 @@ async function handleRscRenderingInner<TEnv>(
|
|
|
562
618
|
|
|
563
619
|
const rscHeaders: Record<string, string> = {
|
|
564
620
|
"content-type": "text/x-component;charset=utf-8",
|
|
565
|
-
vary:
|
|
621
|
+
vary: `accept, X-Rango-State, X-RSC-Router-Client-Path, ${SEGMENT_FRAGMENT_CAPABILITY_HEADER}, ${SEGMENT_FRAGMENT_RECOVERY_HEADER}`,
|
|
566
622
|
// Router identity, so the client can verify pre-decode (before importing
|
|
567
623
|
// chunks) that this content payload belongs to its app and refuse a
|
|
568
624
|
// foreign one (cache/proxy/bug). Control-only reload/redirect responses
|
|
@@ -671,7 +727,8 @@ async function handleRscRenderingInner<TEnv>(
|
|
|
671
727
|
},
|
|
672
728
|
createShellCaptureDescriptor(
|
|
673
729
|
ctx,
|
|
674
|
-
|
|
730
|
+
partialCaptureKey ??
|
|
731
|
+
buildNavigationShellKey(url, reqCtx._searchParamsFilter),
|
|
675
732
|
pprConfig,
|
|
676
733
|
store,
|
|
677
734
|
true,
|
|
@@ -710,10 +767,39 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
710
767
|
describePprReplayStatus(status),
|
|
711
768
|
);
|
|
712
769
|
};
|
|
770
|
+
const finalizeReplayStatus = (status: PprReplayStatus): PprReplayStatus => {
|
|
771
|
+
const finalStatus = reclassifyReplayStatus(reqCtx, status);
|
|
772
|
+
recordReplayStatus(finalStatus);
|
|
773
|
+
return finalStatus;
|
|
774
|
+
};
|
|
775
|
+
let armFragments = false;
|
|
776
|
+
/**
|
|
777
|
+
* Every matchPartial in this function runs through this helper so the
|
|
778
|
+
* fragment flag (#700 passthrough, armed below the navigation-context gate)
|
|
779
|
+
* can never outlive a match or miss a lane — a thrown-Response redirect
|
|
780
|
+
* exit included. Mutate-restore on the SHARED reqCtx, never a derived
|
|
781
|
+
* context: the pipeline writes ambient state during the match that must
|
|
782
|
+
* land on reqCtx (_pprReplayPostMatchReason, location state,
|
|
783
|
+
* _treeHasStreaming read by the render-barrier closure). Assign-back
|
|
784
|
+
* restore leaves an own `undefined` after the first arm, matching the
|
|
785
|
+
* _shellImplicitCache idiom.
|
|
786
|
+
*/
|
|
787
|
+
const matchPartialForReplay = async () => {
|
|
788
|
+
if (!armFragments) return ctx.router.matchPartial(request, { env });
|
|
789
|
+
const prevFragmentPayload = reqCtx._shellFragmentPayload;
|
|
790
|
+
reqCtx._shellFragmentPayload = true;
|
|
791
|
+
try {
|
|
792
|
+
return await ctx.router.matchPartial(request, { env });
|
|
793
|
+
} finally {
|
|
794
|
+
reqCtx._shellFragmentPayload = prevFragmentPayload;
|
|
795
|
+
}
|
|
796
|
+
};
|
|
713
797
|
const runMatch = async (status?: PprReplayStatus) => {
|
|
714
|
-
const result = await
|
|
715
|
-
|
|
716
|
-
|
|
798
|
+
const result = await matchPartialForReplay();
|
|
799
|
+
// The match may have settled a fact the pre-match gate could only guess
|
|
800
|
+
// at (prerender serve, intercept resolution) — report the truth.
|
|
801
|
+
const finalStatus = status ? finalizeReplayStatus(status) : undefined;
|
|
802
|
+
return { result, status: finalStatus };
|
|
717
803
|
};
|
|
718
804
|
const pprConfig = resolvePprConfig(reqCtx._classifiedRoute?.manifestEntry);
|
|
719
805
|
const activeNonce = nonce ?? contextGet(reqCtx._variables, nonceToken);
|
|
@@ -738,9 +824,72 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
738
824
|
reason: "passive-read-unsupported",
|
|
739
825
|
});
|
|
740
826
|
}
|
|
827
|
+
// A partial without navigation context (curl probes, synthetic monitors)
|
|
828
|
+
// can never produce a partial match — createMatchContextForPartial returns
|
|
829
|
+
// null and the seeded record could not have been consulted, which used to
|
|
830
|
+
// read as a misleading `snapshot-miss` AFTER two wasted getShell reads.
|
|
831
|
+
// Same predicate as resolveNavigation, decided before any store I/O.
|
|
832
|
+
if (!getNavigationContextHeader(request)) {
|
|
833
|
+
return runMatch({ outcome: "BYPASS", reason: "no-navigation-context" });
|
|
834
|
+
}
|
|
835
|
+
// Fragment passthrough (#700), extended to partial replay. Navigation
|
|
836
|
+
// context proves the request can be matched; the separate capability header
|
|
837
|
+
// proves its payload consumer can expand envelopes. Older clients and the
|
|
838
|
+
// one-shot corruption recovery request still replay the same segment record,
|
|
839
|
+
// but through the server decode path.
|
|
840
|
+
armFragments =
|
|
841
|
+
request.headers.get(SEGMENT_FRAGMENT_RECOVERY_HEADER) !== "1" &&
|
|
842
|
+
request.headers.get(SEGMENT_FRAGMENT_CAPABILITY_HEADER) === "1";
|
|
843
|
+
// The prerender probe and the cache-opt-out gate below both need the
|
|
844
|
+
// classified snapshot; resolve (and persist) it once.
|
|
845
|
+
const routeSnapshot = classifiedRouteSnapshot(reqCtx);
|
|
846
|
+
// Prerender routes short-circuit in withCacheLookup and serve the partial
|
|
847
|
+
// from build-time segments — a better-than-HIT outcome. Their captures
|
|
848
|
+
// record no doc segment record (withCacheStore skips on the prerender hit),
|
|
849
|
+
// so seeding could never succeed; skip the reads and report the store that
|
|
850
|
+
// actually serves instead of blaming a "broken" capture. Bypass ONLY when
|
|
851
|
+
// the baked artifact actually exists — the trie's pr flag alone is not a
|
|
852
|
+
// serve guarantee: a Passthrough(Prerender()) route with an unbaked or
|
|
853
|
+
// ctx.passthrough()-skipped param misses the store and renders live, and
|
|
854
|
+
// replay (including its heal capture) must stay available for it. The
|
|
855
|
+
// probe goes through the same memoized store the middleware serves from.
|
|
856
|
+
// Shared predicate with the middleware (it declines on dev HMR — such
|
|
857
|
+
// partials fall through to the ordinary replay decision here too).
|
|
858
|
+
//
|
|
859
|
+
// The probe is a PRE-match fast path, not the truth: it reads only the
|
|
860
|
+
// non-intercept artifact, and whether the navigation IS an intercept (and
|
|
861
|
+
// therefore whether tryPrerenderLookup reads `paramHash` or
|
|
862
|
+
// `paramHash + "/i"`) is resolved during the match by match-api's
|
|
863
|
+
// findInterceptForRoute — an intercept-source header proves nothing in
|
|
864
|
+
// either direction. runMatch reclassifies every BYPASS from the stamped
|
|
865
|
+
// post-match facts (reclassifyReplayStatus), so a wrong guess here can
|
|
866
|
+
// skip the two getShell reads but never mis-report or mis-heal.
|
|
867
|
+
if (
|
|
868
|
+
prerenderStoreShortCircuits(routeSnapshot?.matched?.pr, request) &&
|
|
869
|
+
(await prerenderEntryExists(
|
|
870
|
+
routeSnapshot?.matched?.routeKey,
|
|
871
|
+
routeSnapshot?.params ?? {},
|
|
872
|
+
url.pathname,
|
|
873
|
+
routeSnapshot?.entries ?? [],
|
|
874
|
+
))
|
|
875
|
+
) {
|
|
876
|
+
return runMatch({ outcome: "BYPASS", reason: "prerender-store" });
|
|
877
|
+
}
|
|
878
|
+
// Consumer cache opt-outs are absolute: a STATICALLY disabled scope
|
|
879
|
+
// (cache(false)) bypasses before any shell read — no heal capture (its
|
|
880
|
+
// snapshot would be equally unusable). A `condition()` predicate is
|
|
881
|
+
// request-time state and must NOT be pre-decided here: evaluating it at the
|
|
882
|
+
// gate and again at the lookup lets a false-then-true flap report
|
|
883
|
+
// cache-disabled while the explicit tier serves. The lookup's own
|
|
884
|
+
// evaluation governs (withCacheLookup fires the marker's onExplicitBypass,
|
|
885
|
+
// reported as cache-disabled post-match).
|
|
886
|
+
const routeCacheScope = routeSnapshot?.cacheScope ?? null;
|
|
887
|
+
if (routeCacheScope && !routeCacheScope.enabled) {
|
|
888
|
+
return runMatch({ outcome: "BYPASS", reason: "cache-disabled" });
|
|
889
|
+
}
|
|
741
890
|
|
|
742
|
-
const key = buildShellKey(url);
|
|
743
|
-
const navigationKey =
|
|
891
|
+
const key = buildShellKey(url, reqCtx._searchParamsFilter);
|
|
892
|
+
const navigationKey = `${key}:navigation`;
|
|
744
893
|
let cached: Awaited<ReturnType<typeof store.getShell>> = null;
|
|
745
894
|
try {
|
|
746
895
|
cached = await store.getShell(key, { claimRevalidation: false });
|
|
@@ -751,11 +900,13 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
751
900
|
|
|
752
901
|
let bypassReason: PprReplayBypassReason | undefined;
|
|
753
902
|
let snapshot: ShellSnapshotRecord[] | undefined;
|
|
903
|
+
let snapshotStoreKey: string | undefined;
|
|
754
904
|
let freshness: "fresh" | "stale" = "fresh";
|
|
755
905
|
if (cached) {
|
|
756
906
|
const decision = replayableShellSnapshot(cached.entry, ctx.version);
|
|
757
907
|
if ("snapshot" in decision) {
|
|
758
908
|
snapshot = decision.snapshot;
|
|
909
|
+
snapshotStoreKey = key;
|
|
759
910
|
freshness = cached.shouldRevalidate ? "stale" : "fresh";
|
|
760
911
|
} else {
|
|
761
912
|
bypassReason = decision.reason;
|
|
@@ -783,6 +934,7 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
783
934
|
);
|
|
784
935
|
if ("snapshot" in decision) {
|
|
785
936
|
snapshot = decision.snapshot;
|
|
937
|
+
snapshotStoreKey = navigationKey;
|
|
786
938
|
freshness = navigationCached.shouldRevalidate ? "stale" : "fresh";
|
|
787
939
|
} else {
|
|
788
940
|
bypassReason = decision.reason;
|
|
@@ -794,7 +946,13 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
794
946
|
// Production build manifests are local module data. In dev, resolving a
|
|
795
947
|
// missing build shell would foreground-fetch /__rsc_shell and block an
|
|
796
948
|
// otherwise ordinary navigation on capture, so replay remains runtime-only.
|
|
797
|
-
const buildHit = await lookupBuildShell(
|
|
949
|
+
const buildHit = await lookupBuildShell(
|
|
950
|
+
url,
|
|
951
|
+
ctx.version,
|
|
952
|
+
store,
|
|
953
|
+
undefined,
|
|
954
|
+
reqCtx._searchParamsFilter,
|
|
955
|
+
);
|
|
798
956
|
if (buildHit?.stale) {
|
|
799
957
|
bypassReason ??= "stale-build-entry";
|
|
800
958
|
} else if (buildHit) {
|
|
@@ -811,15 +969,79 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
811
969
|
}
|
|
812
970
|
|
|
813
971
|
if (!snapshot) {
|
|
972
|
+
// Report-only marker for routes with an ENABLED route-derived scope: the
|
|
973
|
+
// lookup's own outcome must stay reportable even without a replayable
|
|
974
|
+
// snapshot. An always-false condition() route never produces a doc
|
|
975
|
+
// record (the consumer's write refusal is absolute — see
|
|
976
|
+
// recordShellCaptureDocRecord), so without this its lookup-time refusal
|
|
977
|
+
// would be misreported as the eligibility reason and heal captures would
|
|
978
|
+
// be scheduled for snapshots that can never become consumable. The
|
|
979
|
+
// marker carries NO store: the seeded fallback in withCacheLookup
|
|
980
|
+
// requires one, so nothing can be served through it — it only reports.
|
|
981
|
+
// Bare routes never see it (an installed marker would otherwise mint an
|
|
982
|
+
// implicit scope over the REAL doc: partition in
|
|
983
|
+
// resolveShellImplicitCacheScope).
|
|
984
|
+
if (routeCacheScope?.enabled) {
|
|
985
|
+
let explicitCacheHit = false;
|
|
986
|
+
let explicitCacheBypass = false;
|
|
987
|
+
const previousImplicitCache = reqCtx._shellImplicitCache;
|
|
988
|
+
reqCtx._shellImplicitCache = {
|
|
989
|
+
onExplicitHit: () => {
|
|
990
|
+
explicitCacheHit = true;
|
|
991
|
+
},
|
|
992
|
+
onExplicitBypass: () => {
|
|
993
|
+
explicitCacheBypass = true;
|
|
994
|
+
},
|
|
995
|
+
};
|
|
996
|
+
try {
|
|
997
|
+
const result = await matchPartialForReplay();
|
|
998
|
+
const provisionalStatus: PprReplayStatus = explicitCacheBypass
|
|
999
|
+
? { outcome: "BYPASS", reason: "cache-disabled" }
|
|
1000
|
+
: explicitCacheHit
|
|
1001
|
+
? { outcome: "BYPASS", reason: "explicit-cache-hit" }
|
|
1002
|
+
: { outcome: "BYPASS", reason: bypassReason ?? "no-entry" };
|
|
1003
|
+
const status = finalizeReplayStatus(provisionalStatus);
|
|
1004
|
+
return {
|
|
1005
|
+
result,
|
|
1006
|
+
status,
|
|
1007
|
+
// A lookup-time opt-out makes every heal snapshot unusable
|
|
1008
|
+
// (recordShellCaptureDocRecord refuses under the same predicate),
|
|
1009
|
+
// and a prerender-served or intercept match never consults a heal
|
|
1010
|
+
// snapshot at all. Otherwise heal the shouldHealReplayMiss set PLUS
|
|
1011
|
+
// `no-segment-snapshot`: an entry captured while condition() was
|
|
1012
|
+
// false legitimately lacks a snapshot, and a later request whose
|
|
1013
|
+
// lookup did NOT refuse (condition true now) can heal it — the
|
|
1014
|
+
// capture derives from THIS request's context, so its doc record
|
|
1015
|
+
// records. Excluding it left replay dead until the document
|
|
1016
|
+
// recaptured. The always-false route stays protected: its every
|
|
1017
|
+
// lookup refuses, so explicitCacheBypass suppresses the heal.
|
|
1018
|
+
captureNeeded:
|
|
1019
|
+
!explicitCacheBypass &&
|
|
1020
|
+
reqCtx._pprReplayPostMatchReason === undefined &&
|
|
1021
|
+
(shouldHealReplayMiss(bypassReason) ||
|
|
1022
|
+
bypassReason === "no-segment-snapshot"),
|
|
1023
|
+
};
|
|
1024
|
+
} finally {
|
|
1025
|
+
reqCtx._shellImplicitCache = previousImplicitCache;
|
|
1026
|
+
}
|
|
1027
|
+
}
|
|
814
1028
|
const match = await runMatch({
|
|
815
1029
|
outcome: "BYPASS",
|
|
816
1030
|
reason: bypassReason ?? "no-entry",
|
|
817
1031
|
});
|
|
818
|
-
return {
|
|
1032
|
+
return {
|
|
1033
|
+
...match,
|
|
1034
|
+
captureNeeded:
|
|
1035
|
+
reqCtx._pprReplayPostMatchReason === undefined &&
|
|
1036
|
+
shouldHealReplayMiss(bypassReason),
|
|
1037
|
+
};
|
|
819
1038
|
}
|
|
820
1039
|
|
|
821
1040
|
const previousImplicitCache = reqCtx._shellImplicitCache;
|
|
822
1041
|
let segmentReplayHit = false;
|
|
1042
|
+
let segmentReplayCorrupt = false;
|
|
1043
|
+
let explicitCacheHit = false;
|
|
1044
|
+
let explicitCacheBypass = false;
|
|
823
1045
|
reqCtx._shellImplicitCache = {
|
|
824
1046
|
ttl: pprConfig.ttl,
|
|
825
1047
|
swr: pprConfig.swr,
|
|
@@ -830,20 +1052,78 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
830
1052
|
onHit: () => {
|
|
831
1053
|
segmentReplayHit = true;
|
|
832
1054
|
},
|
|
1055
|
+
onCorrupt: () => {
|
|
1056
|
+
segmentReplayCorrupt = true;
|
|
1057
|
+
},
|
|
1058
|
+
// Arms the explicit-scope composition in withCacheLookup: a route-derived
|
|
1059
|
+
// cache() scope stays authoritative, the seeded doc record supplies the
|
|
1060
|
+
// match only on its miss. An explicit-tier hit must NOT report a replay
|
|
1061
|
+
// HIT — it served under the consumer's own semantics.
|
|
1062
|
+
onExplicitHit: () => {
|
|
1063
|
+
explicitCacheHit = true;
|
|
1064
|
+
},
|
|
1065
|
+
// Lookup-time condition() refusal (or a scope with no store): the gate
|
|
1066
|
+
// deliberately does not pre-decide predicates, so the truthful
|
|
1067
|
+
// cache-disabled report comes from the lookup that actually refused.
|
|
1068
|
+
onExplicitBypass: () => {
|
|
1069
|
+
explicitCacheBypass = true;
|
|
1070
|
+
},
|
|
833
1071
|
};
|
|
834
1072
|
|
|
835
1073
|
try {
|
|
836
|
-
const result = await
|
|
837
|
-
const
|
|
1074
|
+
const result = await matchPartialForReplay();
|
|
1075
|
+
const provisionalStatus: PprReplayStatus = segmentReplayHit
|
|
838
1076
|
? { outcome: "HIT", freshness }
|
|
839
|
-
:
|
|
840
|
-
|
|
841
|
-
|
|
1077
|
+
: explicitCacheHit
|
|
1078
|
+
? { outcome: "BYPASS", reason: "explicit-cache-hit" }
|
|
1079
|
+
: explicitCacheBypass
|
|
1080
|
+
? { outcome: "BYPASS", reason: "cache-disabled" }
|
|
1081
|
+
: { outcome: "BYPASS", reason: "snapshot-miss" };
|
|
1082
|
+
// A prerender serve or intercept resolution leaves the seeded record
|
|
1083
|
+
// unconsulted (prerender short-circuits before the scope; intercepts
|
|
1084
|
+
// keep snapshot.cacheScope) — the "snapshot-miss" guess would blame the
|
|
1085
|
+
// capture for a lane that was never in play.
|
|
1086
|
+
const status = finalizeReplayStatus(provisionalStatus);
|
|
1087
|
+
return {
|
|
1088
|
+
result,
|
|
1089
|
+
status,
|
|
1090
|
+
captureNeeded:
|
|
1091
|
+
segmentReplayCorrupt && reqCtx._pprReplayPostMatchReason === undefined,
|
|
1092
|
+
// A corrupt document snapshot must be overwritten at the document key;
|
|
1093
|
+
// writing only the secondary navigation key would leave the preferred
|
|
1094
|
+
// document entry shadowing the repair forever. The capture remains marked
|
|
1095
|
+
// navigationOnly, so a document request ignores it and recaptures a
|
|
1096
|
+
// document-safe shell under the same key.
|
|
1097
|
+
captureKey: segmentReplayCorrupt ? snapshotStoreKey : undefined,
|
|
1098
|
+
};
|
|
842
1099
|
} finally {
|
|
843
1100
|
reqCtx._shellImplicitCache = previousImplicitCache;
|
|
844
1101
|
}
|
|
845
1102
|
}
|
|
846
1103
|
|
|
1104
|
+
/**
|
|
1105
|
+
* The full route snapshot for the classified route, or null when
|
|
1106
|
+
* classification is unavailable (the gates then fall open to the ordinary
|
|
1107
|
+
* replay decision). Persists the enriched snapshot back onto
|
|
1108
|
+
* `_classifiedRoute` so the manifest-chain walk runs once per request:
|
|
1109
|
+
* matchPartial's createMatchContextForPartial re-reads `_classifiedRoute` and
|
|
1110
|
+
* calls ensureFullRouteSnapshot again, and the write-back lets that call hit
|
|
1111
|
+
* the entries-already-built fast path and reuse this same scope chain instead
|
|
1112
|
+
* of rebuilding it.
|
|
1113
|
+
*/
|
|
1114
|
+
function classifiedRouteSnapshot(
|
|
1115
|
+
reqCtx: RequestContext<any>,
|
|
1116
|
+
): RouteSnapshot<any> | null {
|
|
1117
|
+
const classified = reqCtx._classifiedRoute;
|
|
1118
|
+
if (!classified?.manifestEntry) return null;
|
|
1119
|
+
const full = ensureFullRouteSnapshot({
|
|
1120
|
+
...classified,
|
|
1121
|
+
entries: classified.entries ?? [],
|
|
1122
|
+
});
|
|
1123
|
+
reqCtx._classifiedRoute = full;
|
|
1124
|
+
return full;
|
|
1125
|
+
}
|
|
1126
|
+
|
|
847
1127
|
/**
|
|
848
1128
|
* Neutralize the shell-HIT degradation redirect target. The inline
|
|
849
1129
|
* `location.replace` in a committed 200 body bypasses the 3xx chokepoint
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
import type { SegmentCacheStore, ShellCacheEntry } from "../cache/types.js";
|
|
29
29
|
import { sortedSearchString } from "../cache/cache-key-utils.js";
|
|
30
|
+
import type { SearchParamsFilter } from "../cache/search-params-filter.js";
|
|
30
31
|
import {
|
|
31
32
|
DEV_SHELL_PROBE_TIMEOUT_MS,
|
|
32
33
|
hasIntactShellPayload,
|
|
@@ -252,12 +253,18 @@ async function fetchDevShellEntry(
|
|
|
252
253
|
* version validity, payload integrity, and tag-invalidation markers. Returns
|
|
253
254
|
* null on any gate failure — the caller degrades to the ordinary MISS path
|
|
254
255
|
* (axis 1 + runtime capture), never a broken serve.
|
|
256
|
+
*
|
|
257
|
+
* "Search-less" is evaluated AFTER the request's `cache.searchParams` filter:
|
|
258
|
+
* a URL whose only params are excluded ones (`?fbclid=…` under a tracking
|
|
259
|
+
* exclusion) matches the baked shell — ad-click traffic is exactly the
|
|
260
|
+
* traffic the shell was prerendered for.
|
|
255
261
|
*/
|
|
256
262
|
export async function lookupBuildShell(
|
|
257
263
|
url: URL,
|
|
258
264
|
buildVersion: string,
|
|
259
265
|
store: SegmentCacheStore,
|
|
260
266
|
dev?: DevShellLookup,
|
|
267
|
+
filter?: SearchParamsFilter,
|
|
261
268
|
): Promise<BuildShellHit | null> {
|
|
262
269
|
try {
|
|
263
270
|
// Source-presence first: with no manifest and no dev context this is the
|
|
@@ -265,7 +272,7 @@ export async function lookupBuildShell(
|
|
|
265
272
|
// the searchParams sort/allocation below.
|
|
266
273
|
const hasManifest = globalThis.__loadShellManifestModule !== undefined;
|
|
267
274
|
if (!hasManifest && !dev) return null;
|
|
268
|
-
if (sortedSearchString(url.searchParams) !== "") return null;
|
|
275
|
+
if (sortedSearchString(url.searchParams, filter) !== "") return null;
|
|
269
276
|
let record: BuildShellEntry | undefined;
|
|
270
277
|
if (hasManifest) {
|
|
271
278
|
const mod = await loadManifest();
|
package/src/rsc/shell-capture.ts
CHANGED
|
@@ -945,8 +945,9 @@ export function scheduleShellCapture(
|
|
|
945
945
|
* I/O failure is reported separately and does NOT make the attempt retryable —
|
|
946
946
|
* the capture itself worked).
|
|
947
947
|
* - `redirect`: the matched route redirects, so there is no shell to capture.
|
|
948
|
-
* - `no-shell`:
|
|
949
|
-
*
|
|
948
|
+
* - `no-shell`: captureShellHTML returned null because the prelude was unusable
|
|
949
|
+
* or its private capture abort landed before the shell completed. This is the
|
|
950
|
+
* only RETRYABLE outcome.
|
|
950
951
|
*/
|
|
951
952
|
type CaptureAttemptOutcome = "stored" | "redirect" | "no-shell" | "refused";
|
|
952
953
|
|
|
@@ -995,9 +996,9 @@ type CaptureAttemptStats = Pick<
|
|
|
995
996
|
* when we froze the shell; the attempt itself warmed the module graph, so a second
|
|
996
997
|
* attempt a short beat later usually completes the shell in the SAME background
|
|
997
998
|
* task. That kills the old multi-request warmup where the caller had to re-issue
|
|
998
|
-
* several HTTP requests before a capture stuck. We retry ONLY on `no-shell
|
|
999
|
-
*
|
|
1000
|
-
*
|
|
999
|
+
* several HTTP requests before a capture stuck. We retry ONLY on `no-shell`; a
|
|
1000
|
+
* genuine render error is NOT retried — it propagates to scheduleShellCapture's
|
|
1001
|
+
* reportCacheError. See docs/design/ppr-shell-resume.md.
|
|
1001
1002
|
*
|
|
1002
1003
|
* `retryDelayMs` is a parameter (defaulting to the module const) so unit tests can
|
|
1003
1004
|
* drive the retry without a real 400ms wall-clock wait.
|
|
@@ -1329,6 +1330,10 @@ export function deriveShellCaptureContext(
|
|
|
1329
1330
|
derivedCtx._explicitTaggedStores = new Set();
|
|
1330
1331
|
derivedCtx._transitionWhen = [];
|
|
1331
1332
|
derivedCtx._shellCaptureRun = true;
|
|
1333
|
+
// Own-property reset: an inherited flag would make serializeSegments store
|
|
1334
|
+
// a double-encoded fragment. No current arming site reaches a capture
|
|
1335
|
+
// render (kept as defense-in-depth for a future one).
|
|
1336
|
+
derivedCtx._shellFragmentPayload = false;
|
|
1332
1337
|
derivedCtx._metricsStore = undefined;
|
|
1333
1338
|
// Spans, like perf metrics above, are a FOREGROUND surface: the capture
|
|
1334
1339
|
// re-render must not emit a second rango.render/loader/ssr set after the
|
|
@@ -1395,9 +1400,10 @@ export function deriveShellCaptureContext(
|
|
|
1395
1400
|
* capture worked; only the store I/O failed). `ssrModule.captureShellHTML` MUST be
|
|
1396
1401
|
* present (eligibility is checked before scheduling).
|
|
1397
1402
|
*
|
|
1398
|
-
* A `no-shell` result
|
|
1399
|
-
*
|
|
1400
|
-
*
|
|
1403
|
+
* A `no-shell` result from captureShellHTML is the only retryable outcome. Every
|
|
1404
|
+
* captureShellHTML error propagates to reportCacheError and is NOT retried. The
|
|
1405
|
+
* capture handler converts only its own private abort sentinel to null before this
|
|
1406
|
+
* layer sees it.
|
|
1401
1407
|
*/
|
|
1402
1408
|
async function captureAndStoreShell(
|
|
1403
1409
|
ssrModule: SSRModule,
|
|
@@ -1504,19 +1510,13 @@ async function captureAndStoreShell(
|
|
|
1504
1510
|
}),
|
|
1505
1511
|
);
|
|
1506
1512
|
} catch (error) {
|
|
1507
|
-
// Guard-tripped rejection arrives here (not at the drain)
|
|
1508
|
-
//
|
|
1513
|
+
// Guard-tripped rejection arrives here (not at the drain), so refuse it
|
|
1514
|
+
// before propagating other capture errors.
|
|
1509
1515
|
const refused = refuseOnGuardTrip();
|
|
1510
1516
|
if (refused) return refused;
|
|
1511
|
-
// captureShellHTML
|
|
1512
|
-
//
|
|
1513
|
-
//
|
|
1514
|
-
// guard), treat it as the same retryable "no usable shell" degradation rather
|
|
1515
|
-
// than a failure — do NOT report it as an error. A genuine (non-abort) render
|
|
1516
|
-
// error is a real failure: rethrow so it reaches reportCacheError (no retry).
|
|
1517
|
-
if ((error as { name?: string } | null)?.name === "AbortError") {
|
|
1518
|
-
return "no-shell";
|
|
1519
|
-
}
|
|
1517
|
+
// captureShellHTML converts its OWN deliberate abort to null by sentinel
|
|
1518
|
+
// identity. An escaped AbortError can therefore be a component's real
|
|
1519
|
+
// cancellation and must not be hidden or retried by name.
|
|
1520
1520
|
throw error;
|
|
1521
1521
|
}
|
|
1522
1522
|
|
|
@@ -1707,6 +1707,11 @@ async function captureAndStoreShell(
|
|
|
1707
1707
|
// ShellCacheEntry.initialTheme.
|
|
1708
1708
|
initialTheme: reqCtx.theme,
|
|
1709
1709
|
snapshot,
|
|
1710
|
+
// The canonical doc segment record's key, published by the doc
|
|
1711
|
+
// scope's cacheRoute during this capture's match (undefined when no
|
|
1712
|
+
// doc record was recorded — the entry then never claims navigation
|
|
1713
|
+
// replayability). Only meaningful alongside a snapshot.
|
|
1714
|
+
docKey: snapshot ? reqCtx._shellImplicitCache?.docKey : undefined,
|
|
1710
1715
|
navigationOnly: capture.navigationOnly,
|
|
1711
1716
|
// Handler-layer liveness folded at the barrier: nested thenables in
|
|
1712
1717
|
// handler-scoped pushes, handler pushes still pending (liveness
|
package/src/rsc/shell-serve.ts
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
import React from "react";
|
|
20
20
|
import { isPprEntry, type EntryData } from "../server/context.js";
|
|
21
21
|
import { sortedSearchString } from "../cache/cache-key-utils.js";
|
|
22
|
+
import type { SearchParamsFilter } from "../cache/search-params-filter.js";
|
|
22
23
|
import type { ShellCacheEntry, SegmentCacheStore } from "../cache/types.js";
|
|
23
24
|
import { SHELL_CAPTURE_MAX_WAIT_MS } from "./shell-capture-constants.js";
|
|
24
25
|
|
|
@@ -117,9 +118,14 @@ export function resolvePprConfig(
|
|
|
117
118
|
* The key includes the request HOST: in a multi-tenant host-router deployment
|
|
118
119
|
* (one worker, one shared KV/runtime-cache store) a host-less key would serve
|
|
119
120
|
* tenant A's captured shell to tenant B's users.
|
|
121
|
+
*
|
|
122
|
+
* `filter` is the request's compiled `cache.searchParams` config
|
|
123
|
+
* (ctx._searchParamsFilter): excluded params collapse onto one shell slot.
|
|
124
|
+
* Callers on the serve/capture path MUST pass it -- key drift between capture
|
|
125
|
+
* and lookup makes every shell request a permanent miss.
|
|
120
126
|
*/
|
|
121
|
-
export function buildShellKey(url: URL): string {
|
|
122
|
-
const sorted = sortedSearchString(url.searchParams);
|
|
127
|
+
export function buildShellKey(url: URL, filter?: SearchParamsFilter): string {
|
|
128
|
+
const sorted = sortedSearchString(url.searchParams, filter);
|
|
123
129
|
const searchSuffix = sorted ? `?${sorted}` : "";
|
|
124
130
|
return `${url.host}${url.pathname}${searchSuffix}:shell`;
|
|
125
131
|
}
|