@rangojs/router 0.4.1 → 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/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/navigation-client.d.ts +1 -1
- package/dist/types/browser/prefetch/cache.d.ts +9 -0
- package/dist/types/cache/cf/cf-cache-store.d.ts +19 -8
- package/dist/types/cache/cf/cf-cache-types.d.ts +4 -2
- package/dist/types/rsc/shell-capture.d.ts +10 -8
- package/dist/types/segment-fragments.d.ts +27 -4
- package/dist/types/server/request-context.d.ts +21 -8
- 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 +1 -1
- 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 +1 -1
- package/skills/cloudflare/SKILL.md +4 -2
- package/skills/ppr/SKILL.md +25 -9
- package/src/browser/navigation-client.ts +77 -27
- package/src/browser/prefetch/cache.ts +18 -0
- package/src/browser/prefetch/fetch.ts +5 -0
- package/src/browser/rsc-router.tsx +12 -6
- package/src/cache/cache-scope.ts +5 -1
- package/src/cache/cf/cf-cache-store.ts +423 -90
- package/src/cache/cf/cf-cache-types.ts +4 -2
- package/src/cache/document-cache.ts +24 -2
- package/src/rsc/rsc-rendering.ts +61 -6
- package/src/rsc/shell-capture.ts +19 -19
- package/src/segment-fragments.ts +45 -4
- package/src/server/request-context.ts +21 -8
|
@@ -24,6 +24,10 @@ import { mayNeedSSR } from "../rsc/ssr-setup.js";
|
|
|
24
24
|
import { cacheKeyBase } from "./cache-key-utils.js";
|
|
25
25
|
import { runBackground } from "./background-task.js";
|
|
26
26
|
import { reportCacheError } from "./cache-error.js";
|
|
27
|
+
import {
|
|
28
|
+
SEGMENT_FRAGMENT_CAPABILITY_HEADER,
|
|
29
|
+
SEGMENT_FRAGMENT_RECOVERY_HEADER,
|
|
30
|
+
} from "../segment-fragments.js";
|
|
27
31
|
|
|
28
32
|
const CACHE_STATUS_HEADER = "x-document-cache-status";
|
|
29
33
|
|
|
@@ -260,6 +264,8 @@ export function createDocumentCacheMiddleware<TEnv = any>(
|
|
|
260
264
|
// pipeline (stripInternalParams), so _rsc_partial, _rsc_segments, etc.
|
|
261
265
|
// are not visible on ctx.url in production.
|
|
262
266
|
const rawUrl = new URL(ctx.request.url);
|
|
267
|
+
const isFragmentRecovery =
|
|
268
|
+
ctx.request.headers.get(SEGMENT_FRAGMENT_RECOVERY_HEADER) === "1";
|
|
263
269
|
|
|
264
270
|
// Only cache GET requests — mutations and other methods must not be cached
|
|
265
271
|
if (ctx.request.method !== "GET") {
|
|
@@ -317,6 +323,16 @@ export function createDocumentCacheMiddleware<TEnv = any>(
|
|
|
317
323
|
const clientSegments = rawUrl.searchParams.get("_rsc_segments") || "";
|
|
318
324
|
const segmentHash =
|
|
319
325
|
isPartial && clientSegments ? `:${hashSegmentIds(clientSegments)}` : "";
|
|
326
|
+
// Fragment envelopes require a capable Rango decoder. Keep that wire
|
|
327
|
+
// variant out of the context-less/legacy partial slot; this middleware
|
|
328
|
+
// returns hits before request classification and cannot rely on the
|
|
329
|
+
// match-time capability gate.
|
|
330
|
+
const fragmentSuffix =
|
|
331
|
+
isPartial &&
|
|
332
|
+
(ctx.request.headers.get(SEGMENT_FRAGMENT_CAPABILITY_HEADER) === "1" ||
|
|
333
|
+
isFragmentRecovery)
|
|
334
|
+
? ":fragments"
|
|
335
|
+
: "";
|
|
320
336
|
const typeSuffix = isRscRequest ? ":rsc" : ":html";
|
|
321
337
|
|
|
322
338
|
// Default key rides the shared host-namespaced base (cacheKeyBase) so the
|
|
@@ -326,7 +342,7 @@ export function createDocumentCacheMiddleware<TEnv = any>(
|
|
|
326
342
|
// owns its own namespacing (auto-prefixing host would silently change their
|
|
327
343
|
// existing keys and double any host they already include).
|
|
328
344
|
const cacheKey = keyGenerator
|
|
329
|
-
? keyGenerator(url) + segmentHash + typeSuffix
|
|
345
|
+
? keyGenerator(url) + segmentHash + fragmentSuffix + typeSuffix
|
|
330
346
|
: cacheKeyBase(
|
|
331
347
|
url.host,
|
|
332
348
|
url.pathname,
|
|
@@ -335,9 +351,15 @@ export function createDocumentCacheMiddleware<TEnv = any>(
|
|
|
335
351
|
requestCtx?._searchParamsFilter,
|
|
336
352
|
) +
|
|
337
353
|
segmentHash +
|
|
354
|
+
fragmentSuffix +
|
|
338
355
|
typeSuffix;
|
|
339
356
|
// 1. Check cache
|
|
340
|
-
|
|
357
|
+
// Recovery must reach CacheScope's server decoder so it can evict the bad
|
|
358
|
+
// segment. Treat it as a miss, then let the ordinary write path replace
|
|
359
|
+
// the corrupt fragment-capable response with the valid fallback bytes.
|
|
360
|
+
const cached = isFragmentRecovery
|
|
361
|
+
? null
|
|
362
|
+
: await store.getResponse(cacheKey);
|
|
341
363
|
|
|
342
364
|
if (cached && cached.response.status === 200) {
|
|
343
365
|
if (!cached.shouldRevalidate) {
|
package/src/rsc/rsc-rendering.ts
CHANGED
|
@@ -83,6 +83,10 @@ import type {
|
|
|
83
83
|
ShellCacheEntry,
|
|
84
84
|
ShellSnapshotRecord,
|
|
85
85
|
} from "../cache/types.js";
|
|
86
|
+
import {
|
|
87
|
+
SEGMENT_FRAGMENT_CAPABILITY_HEADER,
|
|
88
|
+
SEGMENT_FRAGMENT_RECOVERY_HEADER,
|
|
89
|
+
} from "../segment-fragments.js";
|
|
86
90
|
|
|
87
91
|
type PprReplayBypassReason =
|
|
88
92
|
| "method"
|
|
@@ -285,6 +289,7 @@ async function handleRscRenderingInner<TEnv>(
|
|
|
285
289
|
let hasInterceptSlots = false;
|
|
286
290
|
let pprReplayStatus: PprReplayStatus | undefined;
|
|
287
291
|
let partialCaptureNeeded = false;
|
|
292
|
+
let partialCaptureKey: string | undefined;
|
|
288
293
|
|
|
289
294
|
// --- Axis 2: integrated PPR shell serve (docs/design/ppr-shell-resume.md) ---
|
|
290
295
|
//
|
|
@@ -494,6 +499,7 @@ async function handleRscRenderingInner<TEnv>(
|
|
|
494
499
|
pprReplayStatus = replay.status;
|
|
495
500
|
partialCaptureNeeded =
|
|
496
501
|
"captureNeeded" in replay && replay.captureNeeded === true;
|
|
502
|
+
partialCaptureKey = "captureKey" in replay ? replay.captureKey : undefined;
|
|
497
503
|
|
|
498
504
|
if (!result) {
|
|
499
505
|
// Fall back to full render
|
|
@@ -612,7 +618,7 @@ async function handleRscRenderingInner<TEnv>(
|
|
|
612
618
|
|
|
613
619
|
const rscHeaders: Record<string, string> = {
|
|
614
620
|
"content-type": "text/x-component;charset=utf-8",
|
|
615
|
-
vary:
|
|
621
|
+
vary: `accept, X-Rango-State, X-RSC-Router-Client-Path, ${SEGMENT_FRAGMENT_CAPABILITY_HEADER}, ${SEGMENT_FRAGMENT_RECOVERY_HEADER}`,
|
|
616
622
|
// Router identity, so the client can verify pre-decode (before importing
|
|
617
623
|
// chunks) that this content payload belongs to its app and refuse a
|
|
618
624
|
// foreign one (cache/proxy/bug). Control-only reload/redirect responses
|
|
@@ -721,7 +727,8 @@ async function handleRscRenderingInner<TEnv>(
|
|
|
721
727
|
},
|
|
722
728
|
createShellCaptureDescriptor(
|
|
723
729
|
ctx,
|
|
724
|
-
|
|
730
|
+
partialCaptureKey ??
|
|
731
|
+
buildNavigationShellKey(url, reqCtx._searchParamsFilter),
|
|
725
732
|
pprConfig,
|
|
726
733
|
store,
|
|
727
734
|
true,
|
|
@@ -765,8 +772,30 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
765
772
|
recordReplayStatus(finalStatus);
|
|
766
773
|
return finalStatus;
|
|
767
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
|
+
};
|
|
768
797
|
const runMatch = async (status?: PprReplayStatus) => {
|
|
769
|
-
const result = await
|
|
798
|
+
const result = await matchPartialForReplay();
|
|
770
799
|
// The match may have settled a fact the pre-match gate could only guess
|
|
771
800
|
// at (prerender serve, intercept resolution) — report the truth.
|
|
772
801
|
const finalStatus = status ? finalizeReplayStatus(status) : undefined;
|
|
@@ -803,6 +832,14 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
803
832
|
if (!getNavigationContextHeader(request)) {
|
|
804
833
|
return runMatch({ outcome: "BYPASS", reason: "no-navigation-context" });
|
|
805
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";
|
|
806
843
|
// The prerender probe and the cache-opt-out gate below both need the
|
|
807
844
|
// classified snapshot; resolve (and persist) it once.
|
|
808
845
|
const routeSnapshot = classifiedRouteSnapshot(reqCtx);
|
|
@@ -863,11 +900,13 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
863
900
|
|
|
864
901
|
let bypassReason: PprReplayBypassReason | undefined;
|
|
865
902
|
let snapshot: ShellSnapshotRecord[] | undefined;
|
|
903
|
+
let snapshotStoreKey: string | undefined;
|
|
866
904
|
let freshness: "fresh" | "stale" = "fresh";
|
|
867
905
|
if (cached) {
|
|
868
906
|
const decision = replayableShellSnapshot(cached.entry, ctx.version);
|
|
869
907
|
if ("snapshot" in decision) {
|
|
870
908
|
snapshot = decision.snapshot;
|
|
909
|
+
snapshotStoreKey = key;
|
|
871
910
|
freshness = cached.shouldRevalidate ? "stale" : "fresh";
|
|
872
911
|
} else {
|
|
873
912
|
bypassReason = decision.reason;
|
|
@@ -895,6 +934,7 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
895
934
|
);
|
|
896
935
|
if ("snapshot" in decision) {
|
|
897
936
|
snapshot = decision.snapshot;
|
|
937
|
+
snapshotStoreKey = navigationKey;
|
|
898
938
|
freshness = navigationCached.shouldRevalidate ? "stale" : "fresh";
|
|
899
939
|
} else {
|
|
900
940
|
bypassReason = decision.reason;
|
|
@@ -954,7 +994,7 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
954
994
|
},
|
|
955
995
|
};
|
|
956
996
|
try {
|
|
957
|
-
const result = await
|
|
997
|
+
const result = await matchPartialForReplay();
|
|
958
998
|
const provisionalStatus: PprReplayStatus = explicitCacheBypass
|
|
959
999
|
? { outcome: "BYPASS", reason: "cache-disabled" }
|
|
960
1000
|
: explicitCacheHit
|
|
@@ -999,6 +1039,7 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
999
1039
|
|
|
1000
1040
|
const previousImplicitCache = reqCtx._shellImplicitCache;
|
|
1001
1041
|
let segmentReplayHit = false;
|
|
1042
|
+
let segmentReplayCorrupt = false;
|
|
1002
1043
|
let explicitCacheHit = false;
|
|
1003
1044
|
let explicitCacheBypass = false;
|
|
1004
1045
|
reqCtx._shellImplicitCache = {
|
|
@@ -1011,6 +1052,9 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
1011
1052
|
onHit: () => {
|
|
1012
1053
|
segmentReplayHit = true;
|
|
1013
1054
|
},
|
|
1055
|
+
onCorrupt: () => {
|
|
1056
|
+
segmentReplayCorrupt = true;
|
|
1057
|
+
},
|
|
1014
1058
|
// Arms the explicit-scope composition in withCacheLookup: a route-derived
|
|
1015
1059
|
// cache() scope stays authoritative, the seeded doc record supplies the
|
|
1016
1060
|
// match only on its miss. An explicit-tier hit must NOT report a replay
|
|
@@ -1027,7 +1071,7 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
1027
1071
|
};
|
|
1028
1072
|
|
|
1029
1073
|
try {
|
|
1030
|
-
const result = await
|
|
1074
|
+
const result = await matchPartialForReplay();
|
|
1031
1075
|
const provisionalStatus: PprReplayStatus = segmentReplayHit
|
|
1032
1076
|
? { outcome: "HIT", freshness }
|
|
1033
1077
|
: explicitCacheHit
|
|
@@ -1040,7 +1084,18 @@ async function matchPartialWithPprReplay<TEnv>(
|
|
|
1040
1084
|
// keep snapshot.cacheScope) — the "snapshot-miss" guess would blame the
|
|
1041
1085
|
// capture for a lane that was never in play.
|
|
1042
1086
|
const status = finalizeReplayStatus(provisionalStatus);
|
|
1043
|
-
return {
|
|
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
|
+
};
|
|
1044
1099
|
} finally {
|
|
1045
1100
|
reqCtx._shellImplicitCache = previousImplicitCache;
|
|
1046
1101
|
}
|
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
|
|
package/src/segment-fragments.ts
CHANGED
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
* fragment STRINGS ride the outgoing payload verbatim inside these envelopes
|
|
7
7
|
* — the outer Flight render copies a string instead of re-serializing a whole
|
|
8
8
|
* element tree — and the CONSUMER expands each envelope through its own Flight
|
|
9
|
-
* deserializer: the SSR resume pass (ssr/ssr-root.tsx)
|
|
10
|
-
*
|
|
11
|
-
* independently, exactly like the segment codec's
|
|
12
|
-
* there is no Flight row-id collision or shared-row
|
|
9
|
+
* deserializer: the SSR resume pass (ssr/ssr-root.tsx), browser hydration, and
|
|
10
|
+
* capability-gated partial navigation/prefetch decoders. Each fragment is its
|
|
11
|
+
* own row space, decoded independently, exactly like the segment codec's
|
|
12
|
+
* per-record decode — so there is no Flight row-id collision or shared-row
|
|
13
|
+
* dedupe hazard.
|
|
13
14
|
*
|
|
14
15
|
* Envelopes appear ONLY on fields that hold ReactNodes (component / layout /
|
|
15
16
|
* loading). A plain object is never a valid ReactNode, so the marker cannot
|
|
@@ -22,6 +23,25 @@
|
|
|
22
23
|
|
|
23
24
|
import type { ResolvedSegment } from "./types.js";
|
|
24
25
|
|
|
26
|
+
/** Partial-request capability gate for browser-side fragment expansion. */
|
|
27
|
+
export const SEGMENT_FRAGMENT_CAPABILITY_HEADER: string =
|
|
28
|
+
"X-Rango-Fragment-Passthrough";
|
|
29
|
+
|
|
30
|
+
/** One-shot request marker that forces server-side fragment validation. */
|
|
31
|
+
export const SEGMENT_FRAGMENT_RECOVERY_HEADER: string =
|
|
32
|
+
"X-Rango-Fragment-Recovery";
|
|
33
|
+
|
|
34
|
+
/** A stored fragment failed in its consumer-side Flight decoder. */
|
|
35
|
+
export class SegmentFragmentDecodeError extends Error {
|
|
36
|
+
readonly cause: unknown;
|
|
37
|
+
|
|
38
|
+
constructor(cause: unknown) {
|
|
39
|
+
super("Failed to decode a stored RSC segment fragment");
|
|
40
|
+
this.name = "SegmentFragmentDecodeError";
|
|
41
|
+
this.cause = cause;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
25
45
|
/**
|
|
26
46
|
* One RSC-encoded fragment traveling inside an RscPayload segment field.
|
|
27
47
|
* `f` is the stored Flight document (segment-codec output) for that field.
|
|
@@ -107,6 +127,27 @@ export async function expandSegmentFragments(
|
|
|
107
127
|
if (decodes.length > 0) await Promise.all(decodes);
|
|
108
128
|
}
|
|
109
129
|
|
|
130
|
+
/**
|
|
131
|
+
* Expand every envelope in an RscPayload-shaped object, in place. Decode
|
|
132
|
+
* failures use a distinct error so partial navigation can retry once through
|
|
133
|
+
* the server's decode-and-evict path. The
|
|
134
|
+
* hasSegmentFragments pre-scan keeps envelope-free payloads — every
|
|
135
|
+
* non-replay response — to one synchronous field walk; this runs on every
|
|
136
|
+
* navigation and prefetch decode.
|
|
137
|
+
*/
|
|
138
|
+
export async function expandPayloadFragments(
|
|
139
|
+
payload: { metadata?: { segments?: ResolvedSegment[] } },
|
|
140
|
+
decode: FragmentDecoder,
|
|
141
|
+
): Promise<void> {
|
|
142
|
+
const segments = payload.metadata?.segments;
|
|
143
|
+
if (!hasSegmentFragments(segments)) return;
|
|
144
|
+
try {
|
|
145
|
+
await expandSegmentFragments(segments, decode);
|
|
146
|
+
} catch (error) {
|
|
147
|
+
throw new SegmentFragmentDecodeError(error);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
110
151
|
/**
|
|
111
152
|
* True when any segment carries an unexpanded envelope. Cheap scan used by
|
|
112
153
|
* consumers that only need to know whether an expansion pass is required.
|
|
@@ -303,6 +303,12 @@ export interface RequestContext<
|
|
|
303
303
|
keyPrefix?: "doc";
|
|
304
304
|
/** @internal Called only after the implicit cache hit decodes successfully. */
|
|
305
305
|
onHit?: () => void;
|
|
306
|
+
/**
|
|
307
|
+
* @internal Called when the seeded document record fails server-side
|
|
308
|
+
* deserialization. Partial replay uses it to replace the enclosing shell
|
|
309
|
+
* snapshot after serving the fresh fallback.
|
|
310
|
+
*/
|
|
311
|
+
onCorrupt?: () => void;
|
|
306
312
|
/**
|
|
307
313
|
* @internal The resolved key of the canonical document segment record.
|
|
308
314
|
* Written during a CAPTURE render by CacheScope.cacheRoute when a
|
|
@@ -334,15 +340,22 @@ export interface RequestContext<
|
|
|
334
340
|
};
|
|
335
341
|
|
|
336
342
|
/**
|
|
337
|
-
* @internal
|
|
338
|
-
* render emit stored segment fragments VERBATIM into the payload
|
|
343
|
+
* @internal Fragment-passthrough marker: cache/prerender-store hits during
|
|
344
|
+
* THIS render emit stored segment fragments VERBATIM into the payload
|
|
339
345
|
* (segment-codec fragmentSegments) instead of deserialize -> re-serialize
|
|
340
|
-
* per request; the payload consumers (SSR resume
|
|
341
|
-
*
|
|
342
|
-
*
|
|
343
|
-
*
|
|
344
|
-
*
|
|
345
|
-
*
|
|
346
|
+
* per request; the payload consumers (SSR resume, browser hydration, and
|
|
347
|
+
* the client partial-navigation decode chokepoints) expand them
|
|
348
|
+
* (segment-fragments.ts, issue #700). Partial requests arm only after the
|
|
349
|
+
* browser advertises `X-Rango-Fragment-Passthrough: 1`; a decode failure
|
|
350
|
+
* retries without it so CacheScope can evict the bad record. Two arming sites,
|
|
351
|
+
* both scoped to a
|
|
352
|
+
* render/match window: serveShellHit's derived tail context (document
|
|
353
|
+
* HIT), and matchPartialWithPprReplay's mutate-restore around the partial
|
|
354
|
+
* match (matchPartialForReplay). It must never be visible to a capture
|
|
355
|
+
* render: the capture SSR-prerenders the payload AND serializes segments
|
|
356
|
+
* into records (cacheRoute), and an envelope reaching serializeSegments
|
|
357
|
+
* would store a double-encoded fragment — deriveShellCaptureContext resets
|
|
358
|
+
* it as an own property for exactly that reason.
|
|
346
359
|
*/
|
|
347
360
|
_shellFragmentPayload?: boolean;
|
|
348
361
|
|