@rangojs/router 0.0.0-experimental.80 → 0.0.0-experimental.80daa23e
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/AGENTS.md +8 -4
- package/README.md +318 -791
- 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 +927 -273
- 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/{src/browser/react/use-client-cache.ts → dist/browser/react/use-client-cache.js} +9 -28
- 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/{src/handles/index.ts → dist/handles/index.d.ts} +1 -2
- 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/{src/network-error-thrower.tsx → dist/network-error-thrower.d.ts} +4 -10
- 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/testing/vitest.js +82 -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/__internal.d.ts +127 -0
- package/dist/types/bin/rango.d.ts +1 -0
- package/dist/types/browser/action-coordinator.d.ts +57 -0
- package/dist/types/browser/action-fence.d.ts +33 -0
- package/dist/types/browser/app-shell.d.ts +34 -0
- package/dist/types/browser/app-version.d.ts +6 -0
- package/dist/types/browser/connection-warmup.d.ts +31 -0
- package/dist/types/browser/cookie-name.d.ts +66 -0
- package/dist/types/browser/dev-discovery.d.ts +11 -0
- package/dist/types/browser/event-controller.d.ts +231 -0
- package/dist/types/browser/history-state.d.ts +26 -0
- package/dist/types/browser/index.d.ts +1 -0
- package/dist/types/browser/intercept-utils.d.ts +30 -0
- package/dist/types/browser/invalidate-client-cache.d.ts +17 -0
- package/dist/types/browser/link-interceptor.d.ts +53 -0
- package/dist/types/browser/logging.d.ts +33 -0
- package/dist/types/browser/merge-segment-loaders.d.ts +38 -0
- package/dist/types/browser/navigation-bridge.d.ts +39 -0
- package/dist/types/browser/navigation-client.d.ts +17 -0
- package/dist/types/browser/navigation-store-handle.d.ts +25 -0
- package/dist/types/browser/navigation-store.d.ts +85 -0
- package/dist/types/browser/navigation-transaction.d.ts +75 -0
- package/dist/types/browser/network-error-handler.d.ts +35 -0
- package/dist/types/browser/notify-listeners.d.ts +2 -0
- package/dist/types/browser/partial-update.d.ts +61 -0
- package/dist/types/browser/prefetch/cache.d.ts +224 -0
- package/dist/types/browser/prefetch/default-strategy.d.ts +31 -0
- package/dist/types/browser/prefetch/fetch.d.ts +52 -0
- package/dist/types/browser/prefetch/invalidation.d.ts +6 -0
- package/dist/types/browser/prefetch/loader.d.ts +12 -0
- package/dist/types/browser/prefetch/observer.d.ts +24 -0
- package/dist/types/browser/prefetch/policy.d.ts +13 -0
- package/dist/types/browser/prefetch/queue.d.ts +48 -0
- package/dist/types/browser/prefetch/resource-ready.d.ts +28 -0
- package/dist/types/browser/prefetch/runtime.d.ts +2 -0
- package/dist/types/browser/rango-state.d.ts +56 -0
- package/dist/types/browser/react/Link.d.ts +132 -0
- package/dist/types/browser/react/NavigationProvider.d.ts +88 -0
- package/dist/types/browser/react/ScrollRestoration.d.ts +78 -0
- package/dist/types/browser/react/context.d.ts +57 -0
- package/dist/types/browser/react/filter-segment-order.d.ts +35 -0
- package/dist/types/browser/react/index.d.ts +1 -0
- package/dist/types/browser/react/location-state-shared.d.ts +162 -0
- package/dist/types/browser/react/location-state.d.ts +29 -0
- package/dist/types/browser/react/mount-context.d.ts +23 -0
- package/dist/types/browser/react/nonce-context.d.ts +14 -0
- package/dist/types/browser/react/shallow-equal.d.ts +5 -0
- package/dist/types/browser/react/use-action.d.ts +61 -0
- package/dist/types/browser/react/use-handle.d.ts +21 -0
- package/dist/types/browser/react/use-href.d.ts +32 -0
- package/dist/types/browser/react/use-link-status.d.ts +36 -0
- package/dist/types/browser/react/use-mount.d.ts +24 -0
- package/dist/types/browser/react/use-navigation.d.ts +15 -0
- package/dist/types/browser/react/use-params.d.ts +21 -0
- package/dist/types/browser/react/use-pathname.d.ts +13 -0
- package/dist/types/browser/react/use-reverse.d.ts +40 -0
- package/dist/types/browser/react/use-router.d.ts +30 -0
- package/dist/types/browser/react/use-search-params.d.ts +66 -0
- package/dist/types/browser/react/use-segments.d.ts +29 -0
- package/dist/types/browser/response-adapter.d.ts +58 -0
- package/dist/types/browser/rsc-router.d.ts +146 -0
- package/dist/types/browser/scroll-restoration.d.ts +103 -0
- package/dist/types/browser/segment-reconciler.d.ts +74 -0
- package/dist/types/browser/segment-structure-assert.d.ts +16 -0
- package/dist/types/browser/server-action-bridge.d.ts +29 -0
- package/dist/types/browser/types.d.ts +546 -0
- package/dist/types/browser/validate-redirect-origin.d.ts +28 -0
- package/dist/types/build/collect-fallback-refs.d.ts +5 -0
- package/dist/types/build/generate-manifest.d.ts +106 -0
- package/dist/types/build/generate-route-types.d.ts +8 -0
- package/dist/types/build/index.d.ts +21 -0
- package/dist/types/build/merge-full-manifests.d.ts +3 -0
- package/dist/types/build/prefix-tree-utils.d.ts +56 -0
- package/dist/types/build/route-trie.d.ts +20 -0
- package/dist/types/build/route-types/ast-helpers.d.ts +3 -0
- package/dist/types/build/route-types/ast-route-extraction.d.ts +13 -0
- package/dist/types/build/route-types/codegen.d.ts +16 -0
- package/dist/types/build/route-types/include-resolution.d.ts +74 -0
- package/dist/types/build/route-types/param-extraction.d.ts +13 -0
- package/dist/types/build/route-types/per-module-writer.d.ts +20 -0
- package/dist/types/build/route-types/router-processing.d.ts +81 -0
- package/dist/types/build/route-types/scan-filter.d.ts +17 -0
- package/dist/types/build/route-types/source-scan.d.ts +13 -0
- package/dist/types/build/runtime-discovery.d.ts +24 -0
- package/dist/types/cache/background-task.d.ts +21 -0
- package/dist/types/cache/cache-error.d.ts +71 -0
- package/dist/types/cache/cache-exec-scope.d.ts +31 -0
- package/dist/types/cache/cache-key-utils.d.ts +43 -0
- package/dist/types/cache/cache-policy.d.ts +59 -0
- package/dist/types/cache/cache-runtime.d.ts +51 -0
- package/dist/types/cache/cache-scope.d.ts +215 -0
- package/dist/types/cache/cache-tag.d.ts +79 -0
- package/dist/types/cache/cf/cf-base64.d.ts +4 -0
- package/dist/types/cache/cf/cf-cache-constants.d.ts +112 -0
- package/dist/types/cache/cf/cf-cache-store.d.ts +630 -0
- package/dist/types/cache/cf/cf-cache-types.d.ts +365 -0
- package/dist/types/cache/cf/cf-kv-utils.d.ts +43 -0
- package/dist/types/cache/cf/cf-tag-marker-memo.d.ts +15 -0
- package/dist/types/cache/cf/cf-zone-purge.d.ts +31 -0
- package/dist/types/cache/cf/index.d.ts +4 -0
- package/dist/types/cache/document-cache.d.ts +71 -0
- package/dist/types/cache/handle-capture.d.ts +23 -0
- package/dist/types/cache/handle-snapshot.d.ts +39 -0
- package/dist/types/cache/index.d.ts +9 -0
- package/dist/types/cache/memory-segment-store.d.ts +163 -0
- package/dist/types/cache/profile-registry.d.ts +40 -0
- package/dist/types/cache/read-through-swr.d.ts +61 -0
- package/dist/types/cache/search-params-filter.d.ts +64 -0
- package/dist/types/cache/segment-codec.d.ts +78 -0
- package/dist/types/cache/shell-snapshot.d.ts +186 -0
- package/dist/types/cache/tag-invalidation.d.ts +74 -0
- package/dist/types/cache/taint.d.ts +77 -0
- package/dist/types/cache/types.d.ts +522 -0
- package/dist/types/cache/vercel/index.d.ts +1 -0
- package/dist/types/cache/vercel/vercel-cache-store.d.ts +268 -0
- package/dist/types/client-urls/client-root.d.ts +38 -0
- package/dist/types/client-urls/client-urls.d.ts +5 -0
- package/dist/types/client-urls/navigation.d.ts +38 -0
- package/dist/types/client-urls/revalidation-protocol.d.ts +25 -0
- package/dist/types/client-urls/server-projection.d.ts +71 -0
- package/dist/types/client-urls/types.d.ts +148 -0
- package/dist/types/client.d.ts +192 -0
- package/dist/types/client.rsc.d.ts +42 -0
- package/dist/types/cloudflare/index.d.ts +7 -0
- package/dist/types/cloudflare/tracing.d.ts +57 -0
- package/dist/types/component-utils.d.ts +46 -0
- package/dist/types/components/DefaultDocument.d.ts +13 -0
- package/dist/types/context-var.d.ts +84 -0
- package/dist/types/debug.d.ts +57 -0
- package/dist/types/decode-loader-results.d.ts +42 -0
- package/dist/types/default-error-boundary.d.ts +10 -0
- package/dist/types/defer.d.ts +89 -0
- package/dist/types/deps/browser.d.ts +1 -0
- package/dist/types/deps/html-stream-client.d.ts +1 -0
- package/dist/types/deps/html-stream-server.d.ts +1 -0
- package/dist/types/deps/rsc.d.ts +1 -0
- package/dist/types/deps/ssr.d.ts +1 -0
- package/dist/types/dev-discovery-protocol.d.ts +5 -0
- package/dist/types/encode-kv.d.ts +35 -0
- package/dist/types/errors.d.ts +227 -0
- package/dist/types/escape-script.d.ts +44 -0
- package/dist/types/handle.d.ts +93 -0
- package/dist/types/handles/MetaTags.d.ts +17 -0
- package/dist/types/handles/Scripts.d.ts +38 -0
- package/dist/types/handles/breadcrumbs.d.ts +43 -0
- package/dist/types/handles/deferred-resolution.d.ts +53 -0
- package/dist/types/handles/is-thenable.d.ts +10 -0
- package/dist/types/handles/meta.d.ts +43 -0
- package/dist/types/handles/script.d.ts +139 -0
- package/dist/types/host/cookie-handler.d.ts +8 -0
- package/dist/types/host/errors.d.ts +40 -0
- package/dist/types/host/index.d.ts +33 -0
- package/dist/types/host/pattern-matcher.d.ts +30 -0
- package/dist/types/host/router.d.ts +12 -0
- package/dist/types/host/testing.d.ts +41 -0
- package/dist/types/host/types.d.ts +148 -0
- package/dist/types/host/utils.d.ts +20 -0
- package/dist/types/href-client.d.ts +214 -0
- package/dist/types/index.d.ts +113 -0
- package/dist/types/index.rsc.d.ts +52 -0
- package/dist/types/internal-debug.d.ts +1 -0
- package/dist/types/loader-redirect.d.ts +27 -0
- package/dist/types/loader-store.d.ts +193 -0
- package/dist/types/loader.d.ts +18 -0
- package/dist/types/loader.rsc.d.ts +18 -0
- package/dist/types/missing-id-error.d.ts +1 -0
- package/dist/types/outlet-context.d.ts +32 -0
- package/dist/types/outlet-provider.d.ts +15 -0
- package/dist/types/prerender/build-shell-capture.d.ts +104 -0
- package/dist/types/prerender/param-hash.d.ts +6 -0
- package/dist/types/prerender/shell-manifest-key.d.ts +18 -0
- package/dist/types/prerender/store.d.ts +63 -0
- package/dist/types/prerender.d.ts +292 -0
- package/dist/types/redirect-origin.d.ts +71 -0
- package/dist/types/regex-escape.d.ts +6 -0
- package/dist/types/render-error-thrower.d.ts +13 -0
- package/dist/types/response-utils.d.ts +35 -0
- package/dist/types/reverse.d.ts +206 -0
- package/dist/types/root-error-boundary.d.ts +32 -0
- package/dist/types/route-content-wrapper.d.ts +84 -0
- package/dist/types/route-definition/dsl-helpers.d.ts +130 -0
- package/dist/types/route-definition/helper-factories.d.ts +22 -0
- package/dist/types/route-definition/helpers-types.d.ts +405 -0
- package/dist/types/route-definition/index.d.ts +7 -0
- package/dist/types/route-definition/redirect.d.ts +48 -0
- package/dist/types/route-definition/resolve-handler-use.d.ts +19 -0
- package/dist/types/route-definition/use-item-types.d.ts +1 -0
- package/dist/types/route-definition.d.ts +1 -0
- package/dist/types/route-map-builder.d.ts +102 -0
- package/dist/types/route-name.d.ts +27 -0
- package/dist/types/route-types.d.ts +172 -0
- package/dist/types/router/basename.d.ts +10 -0
- package/dist/types/router/content-negotiation.d.ts +91 -0
- package/dist/types/router/debug-manifest.d.ts +7 -0
- package/dist/types/router/error-handling.d.ts +110 -0
- package/dist/types/router/find-match.d.ts +19 -0
- package/dist/types/router/handler-context.d.ts +41 -0
- package/dist/types/router/instrument.d.ts +191 -0
- package/dist/types/router/intercept-resolution.d.ts +91 -0
- package/dist/types/router/lazy-includes.d.ts +26 -0
- package/dist/types/router/loader-resolution.d.ts +85 -0
- package/dist/types/router/logging.d.ts +41 -0
- package/dist/types/router/manifest.d.ts +8 -0
- package/dist/types/router/match-api.d.ts +19 -0
- package/dist/types/router/match-context.d.ts +184 -0
- package/dist/types/router/match-handlers.d.ts +48 -0
- package/dist/types/router/match-middleware/background-revalidation.d.ts +113 -0
- package/dist/types/router/match-middleware/cache-lookup.d.ts +126 -0
- package/dist/types/router/match-middleware/cache-store.d.ts +112 -0
- package/dist/types/router/match-middleware/index.d.ts +80 -0
- package/dist/types/router/match-middleware/intercept-resolution.d.ts +116 -0
- package/dist/types/router/match-middleware/segment-resolution.d.ts +94 -0
- package/dist/types/router/match-pipelines.d.ts +103 -0
- package/dist/types/router/match-result.d.ts +114 -0
- package/dist/types/router/metrics.d.ts +6 -0
- package/dist/types/router/middleware-types.d.ts +74 -0
- package/dist/types/router/middleware.d.ts +116 -0
- package/dist/types/router/navigation-snapshot.d.ts +51 -0
- package/dist/types/router/params-util.d.ts +8 -0
- package/dist/types/router/parse-pattern.d.ts +38 -0
- package/dist/types/router/pattern-matching.d.ts +169 -0
- package/dist/types/router/prefetch-cache-ttl.d.ts +27 -0
- package/dist/types/router/prefetch-default.d.ts +28 -0
- package/dist/types/router/prefetch-limits.d.ts +20 -0
- package/dist/types/router/prerender-match.d.ts +53 -0
- package/dist/types/router/preview-match.d.ts +22 -0
- package/dist/types/router/request-classification.d.ts +104 -0
- package/dist/types/router/revalidation.d.ts +64 -0
- package/dist/types/router/route-snapshot.d.ts +112 -0
- package/dist/types/router/route-trie-builder.d.ts +77 -0
- package/dist/types/router/router-context.d.ts +137 -0
- package/dist/types/router/router-interfaces.d.ts +461 -0
- package/dist/types/router/router-options.d.ts +792 -0
- package/dist/types/router/router-registry.d.ts +15 -0
- package/dist/types/router/segment-resolution/fresh.d.ts +55 -0
- package/dist/types/router/segment-resolution/helpers.d.ts +93 -0
- package/dist/types/router/segment-resolution/loader-cache.d.ts +33 -0
- package/dist/types/router/segment-resolution/loader-mask.d.ts +44 -0
- package/dist/types/router/segment-resolution/loader-snapshot.d.ts +90 -0
- package/dist/types/router/segment-resolution/mask-nested.d.ts +53 -0
- package/dist/types/router/segment-resolution/revalidation.d.ts +85 -0
- package/dist/types/router/segment-resolution/static-store.d.ts +17 -0
- package/dist/types/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
- package/dist/types/router/segment-resolution/view-transition-default.d.ts +27 -0
- package/dist/types/router/segment-resolution.d.ts +3 -0
- package/dist/types/router/segment-wrappers.d.ts +53 -0
- package/dist/types/router/state-cookie-name.d.ts +1 -0
- package/dist/types/router/substitute-pattern-params.d.ts +23 -0
- package/dist/types/router/telemetry-otel.d.ts +113 -0
- package/dist/types/router/telemetry.d.ts +216 -0
- package/dist/types/router/timeout.d.ts +107 -0
- package/dist/types/router/tracing.d.ts +139 -0
- package/dist/types/router/transition-when.d.ts +13 -0
- package/dist/types/router/trie-matching.d.ts +32 -0
- package/dist/types/router/types.d.ts +98 -0
- package/dist/types/router/url-params.d.ts +26 -0
- package/dist/types/router.d.ts +7 -0
- package/dist/types/rsc/capture-queue.d.ts +49 -0
- package/dist/types/rsc/full-payload.d.ts +22 -0
- package/dist/types/rsc/handler-context.d.ts +32 -0
- package/dist/types/rsc/handler.d.ts +9 -0
- package/dist/types/rsc/helpers.d.ts +127 -0
- package/dist/types/rsc/index.d.ts +17 -0
- package/dist/types/rsc/json-route-result.d.ts +20 -0
- package/dist/types/rsc/loader-fetch.d.ts +14 -0
- package/dist/types/rsc/manifest-init.d.ts +18 -0
- package/dist/types/rsc/nonce.d.ts +38 -0
- package/dist/types/rsc/origin-guard.d.ts +50 -0
- package/dist/types/rsc/progressive-enhancement.d.ts +19 -0
- package/dist/types/rsc/redirect-guard.d.ts +37 -0
- package/dist/types/rsc/render-pipeline.d.ts +148 -0
- package/dist/types/rsc/response-cache-serve.d.ts +46 -0
- package/dist/types/rsc/response-error.d.ts +19 -0
- package/dist/types/rsc/response-route-handler.d.ts +29 -0
- package/dist/types/rsc/routine-plan.d.ts +124 -0
- package/dist/types/rsc/rsc-rendering.d.ts +18 -0
- package/dist/types/rsc/runtime-warnings.d.ts +22 -0
- package/dist/types/rsc/server-action.d.ts +68 -0
- package/dist/types/rsc/shell-build-manifest.d.ts +90 -0
- package/dist/types/rsc/shell-capture-constants.d.ts +44 -0
- package/dist/types/rsc/shell-capture.d.ts +425 -0
- package/dist/types/rsc/shell-serve.d.ts +200 -0
- package/dist/types/rsc/ssr-setup.d.ts +73 -0
- package/dist/types/rsc/stream-idle.d.ts +60 -0
- package/dist/types/rsc/transition-gate.d.ts +23 -0
- package/dist/types/rsc/types.d.ts +353 -0
- package/dist/types/runtime-env.d.ts +1 -0
- package/dist/types/search-params.d.ts +125 -0
- package/dist/types/segment-content-promise.d.ts +13 -0
- package/dist/types/segment-fragments.d.ts +79 -0
- package/dist/types/segment-loader-promise.d.ts +22 -0
- package/dist/types/segment-system.d.ts +86 -0
- package/dist/types/serialize.d.ts +164 -0
- package/dist/types/server/context.d.ts +520 -0
- package/dist/types/server/cookie-parse.d.ts +10 -0
- package/dist/types/server/cookie-store.d.ts +107 -0
- package/dist/types/server/fetchable-loader-store.d.ts +20 -0
- package/dist/types/server/handle-store.d.ts +131 -0
- package/dist/types/server/loader-registry.d.ts +32 -0
- package/dist/types/server/request-context.d.ts +717 -0
- package/dist/types/server/root-layout.d.ts +3 -0
- package/dist/types/server.d.ts +16 -0
- package/dist/types/ssr/index.d.ts +271 -0
- package/dist/types/ssr/inject-rsc-eager.d.ts +3 -0
- package/dist/types/ssr/preinit-client-references.d.ts +71 -0
- package/dist/types/ssr/ssr-root.d.ts +84 -0
- package/dist/types/ssr-suspension-warning.d.ts +19 -0
- package/dist/types/static-handler.d.ts +71 -0
- package/dist/types/testing/cache-status.d.ts +63 -0
- package/dist/types/testing/collect-handle.d.ts +20 -0
- package/dist/types/testing/dispatch.d.ts +127 -0
- package/dist/types/testing/dom.entry.d.ts +15 -0
- package/dist/types/testing/e2e/fixture.d.ts +37 -0
- package/dist/types/testing/e2e/index.d.ts +31 -0
- package/dist/types/testing/e2e/matchers.d.ts +17 -0
- package/dist/types/testing/e2e/page-helpers.d.ts +86 -0
- package/dist/types/testing/e2e/parity.d.ts +111 -0
- package/dist/types/testing/e2e/server.d.ts +35 -0
- package/dist/types/testing/flight-matchers.d.ts +55 -0
- package/dist/types/testing/flight-normalize.d.ts +1 -0
- package/dist/types/testing/flight-tree.d.ts +192 -0
- package/dist/types/testing/flight.d.ts +115 -0
- package/dist/types/testing/flight.entry.d.ts +27 -0
- package/dist/types/testing/generated-routes.d.ts +66 -0
- package/dist/types/testing/index.d.ts +54 -0
- package/dist/types/testing/internal/context.d.ts +225 -0
- package/dist/types/testing/internal/flight-client-globals.d.ts +1 -0
- package/dist/types/testing/internal/seed-vars.d.ts +30 -0
- package/dist/types/testing/render-handler.d.ts +160 -0
- package/dist/types/testing/render-route.d.ts +265 -0
- package/dist/types/testing/run-loader.d.ts +195 -0
- package/dist/types/testing/run-middleware.d.ts +132 -0
- package/dist/types/testing/run-transition-when.d.ts +78 -0
- package/dist/types/testing/shell-status.d.ts +81 -0
- package/dist/types/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
- package/dist/types/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
- package/dist/types/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
- package/dist/types/testing/vitest-stubs/version.d.ts +1 -0
- package/dist/types/testing/vitest.d.ts +205 -0
- package/dist/types/theme/ThemeProvider.d.ts +13 -0
- package/dist/types/theme/ThemeScript.d.ts +45 -0
- package/dist/types/theme/constants.d.ts +39 -0
- package/dist/types/theme/index.d.ts +29 -0
- package/dist/types/theme/theme-context.d.ts +21 -0
- package/dist/types/theme/theme-script.d.ts +26 -0
- package/dist/types/theme/types.d.ts +162 -0
- package/dist/types/theme/use-theme.d.ts +8 -0
- package/dist/types/types/boundaries.d.ts +115 -0
- package/dist/types/types/cache-types.d.ts +191 -0
- package/dist/types/types/error-types.d.ts +114 -0
- package/dist/types/types/global-namespace.d.ts +90 -0
- package/dist/types/types/handler-context.d.ts +658 -0
- package/dist/types/types/index.d.ts +11 -0
- package/dist/types/types/loader-types.d.ts +240 -0
- package/dist/types/types/request-scope.d.ts +93 -0
- package/dist/types/types/route-config.d.ts +105 -0
- package/dist/types/types/route-entry.d.ts +98 -0
- package/dist/types/types/segments.d.ts +254 -0
- package/dist/types/types.d.ts +1 -0
- package/dist/types/urls/include-helper.d.ts +17 -0
- package/dist/types/urls/include-provider.d.ts +27 -0
- package/dist/types/urls/index.d.ts +6 -0
- package/dist/types/urls/path-helper-types.d.ts +207 -0
- package/dist/types/urls/path-helper.d.ts +12 -0
- package/dist/types/urls/pattern-types.d.ts +166 -0
- package/dist/types/urls/response-types.d.ts +67 -0
- package/dist/types/urls/type-extraction.d.ts +157 -0
- package/dist/types/urls/urls-function.d.ts +24 -0
- package/dist/types/urls.d.ts +1 -0
- package/dist/types/use-loader.d.ts +150 -0
- package/dist/types/vercel/index.d.ts +10 -0
- package/dist/types/vercel/tracing.d.ts +71 -0
- package/dist/types/vite/debug.d.ts +80 -0
- package/dist/types/vite/discovery/bundle-postprocess.d.ts +12 -0
- package/dist/types/vite/discovery/client-urls-projection.d.ts +53 -0
- package/dist/types/vite/discovery/dev-prerender-cache.d.ts +65 -0
- package/dist/types/vite/discovery/discover-routers.d.ts +17 -0
- package/dist/types/vite/discovery/discovery-errors.d.ts +113 -0
- package/dist/types/vite/discovery/gate-state.d.ts +79 -0
- package/dist/types/vite/discovery/prerender-collection.d.ts +24 -0
- package/dist/types/vite/discovery/route-types-writer.d.ts +32 -0
- package/dist/types/vite/discovery/self-gen-tracking.d.ts +22 -0
- package/dist/types/vite/discovery/shell-prerender-phase.d.ts +40 -0
- package/dist/types/vite/discovery/state.d.ts +170 -0
- package/dist/types/vite/discovery/virtual-module-codegen.d.ts +15 -0
- package/dist/types/vite/encryption-key.d.ts +2 -0
- package/dist/types/vite/index.d.ts +11 -0
- package/dist/types/vite/inject-client-debug.d.ts +56 -0
- package/dist/types/vite/plugin-types.d.ts +298 -0
- package/dist/types/vite/plugins/cjs-to-esm.d.ts +6 -0
- package/dist/types/vite/plugins/client-ref-dedup.d.ts +29 -0
- package/dist/types/vite/plugins/client-ref-hashing.d.ts +35 -0
- package/dist/types/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
- package/dist/types/vite/plugins/expose-action-id.d.ts +18 -0
- package/dist/types/vite/plugins/expose-id-utils.d.ts +37 -0
- package/dist/types/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
- package/dist/types/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
- package/dist/types/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
- package/dist/types/vite/plugins/expose-ids/router-transform.d.ts +13 -0
- package/dist/types/vite/plugins/expose-ids/types.d.ts +29 -0
- package/dist/types/vite/plugins/expose-internal-ids.d.ts +16 -0
- package/dist/types/vite/plugins/performance-tracks.d.ts +25 -0
- package/dist/types/vite/plugins/refresh-cmd.d.ts +20 -0
- package/dist/types/vite/plugins/server-ref-hashing.d.ts +24 -0
- package/dist/types/vite/plugins/server-reference-pattern.d.ts +1 -0
- package/dist/types/vite/plugins/use-cache-transform.d.ts +20 -0
- package/dist/types/vite/plugins/vercel-output.d.ts +85 -0
- package/dist/types/vite/plugins/version-injector.d.ts +21 -0
- package/dist/types/vite/plugins/version-plugin.d.ts +19 -0
- package/dist/types/vite/plugins/virtual-entries.d.ts +36 -0
- package/dist/types/vite/plugins/virtual-stub-plugin.d.ts +7 -0
- package/dist/types/vite/rango.d.ts +29 -0
- package/dist/types/vite/router-discovery.d.ts +23 -0
- package/dist/types/vite/utils/ast-handler-extract.d.ts +64 -0
- package/dist/types/vite/utils/banner.d.ts +2 -0
- package/dist/types/vite/utils/bundle-analysis.d.ts +28 -0
- package/dist/types/vite/utils/client-chunks.d.ts +55 -0
- package/dist/types/vite/utils/directive-prologue.d.ts +16 -0
- package/dist/types/vite/utils/forward-user-plugins.d.ts +37 -0
- package/dist/types/vite/utils/manifest-utils.d.ts +7 -0
- package/dist/types/vite/utils/package-resolution.d.ts +6 -0
- package/dist/types/vite/utils/prerender-utils.d.ts +32 -0
- package/dist/types/vite/utils/shared-utils.d.ts +67 -0
- 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 +10793 -4122
- 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/plugins/cloudflare-protocol-loader-hook.mjs +76 -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 +121 -38
- package/skills/api-client/SKILL.md +211 -0
- package/skills/breadcrumbs/SKILL.md +117 -8
- package/skills/bundle-analysis/SKILL.md +159 -0
- package/skills/cache-guide/SKILL.md +232 -34
- package/skills/caching/SKILL.md +375 -19
- package/skills/catalog.json +289 -0
- package/skills/client-urls/SKILL.md +339 -0
- package/skills/cloudflare/SKILL.md +153 -0
- package/skills/cloudflare/agents/openai.yaml +4 -0
- package/skills/cloudflare/references/d1-and-local-dev.md +131 -0
- package/skills/cloudflare/references/streaming-and-deploy.md +107 -0
- package/skills/cloudflare/references/webhooks-and-crypto.md +147 -0
- package/skills/comparison/SKILL.md +50 -0
- package/skills/comparison/agents/openai.yaml +4 -0
- package/skills/comparison/references/framework-comparison.md +858 -0
- package/skills/composability/SKILL.md +124 -4
- package/skills/css/SKILL.md +76 -0
- package/skills/debug-manifest/SKILL.md +5 -11
- package/skills/defer-hydration/SKILL.md +235 -0
- package/skills/deployment-caching/SKILL.md +176 -0
- package/skills/document-cache/SKILL.md +116 -58
- package/skills/fonts/SKILL.md +1 -1
- package/skills/handler-use/SKILL.md +12 -10
- package/skills/hooks/SKILL.md +73 -691
- package/skills/hooks/data.md +282 -0
- package/skills/hooks/handle-and-actions.md +110 -0
- package/skills/hooks/navigation.md +110 -0
- package/skills/hooks/outlets.md +62 -0
- package/skills/hooks/state.md +228 -0
- package/skills/hooks/urls.md +172 -0
- package/skills/host-router/SKILL.md +129 -27
- package/skills/i18n/SKILL.md +276 -0
- package/skills/intercept/SKILL.md +75 -19
- package/skills/layout/SKILL.md +40 -19
- package/skills/links/SKILL.md +283 -17
- package/skills/loader/SKILL.md +362 -11
- package/skills/middleware/SKILL.md +58 -13
- package/skills/migrate-nextjs/SKILL.md +336 -42
- package/skills/migrate-nextjs/backend-host-swap.md +120 -0
- package/skills/migrate-react-router/SKILL.md +95 -670
- package/skills/migrate-react-router/component-migration.md +201 -0
- package/skills/migrate-react-router/data-and-actions.md +236 -0
- package/skills/migrate-react-router/route-mapping.md +284 -0
- package/skills/mime-routes/SKILL.md +55 -18
- package/skills/observability/SKILL.md +231 -0
- package/skills/parallel/SKILL.md +72 -11
- package/skills/ppr/SKILL.md +918 -0
- package/skills/prerender/SKILL.md +137 -71
- package/skills/rango/SKILL.md +325 -26
- package/skills/react-compiler/SKILL.md +168 -0
- package/skills/response-routes/SKILL.md +180 -52
- package/skills/route/SKILL.md +126 -9
- package/skills/router-setup/SKILL.md +69 -11
- package/skills/scripts/SKILL.md +189 -0
- package/skills/server-actions/SKILL.md +776 -0
- package/skills/shell-manifest/SKILL.md +194 -0
- package/skills/streams-and-websockets/SKILL.md +283 -0
- package/skills/tailwind/SKILL.md +28 -4
- package/skills/testing/SKILL.md +131 -0
- package/skills/testing/bindings.md +103 -0
- package/skills/testing/cache-prerender.md +172 -0
- package/skills/testing/client-components.md +131 -0
- package/skills/testing/e2e-parity.md +125 -0
- package/skills/testing/flight.md +91 -0
- package/skills/testing/handles.md +153 -0
- package/skills/testing/loader.md +130 -0
- package/skills/testing/middleware.md +99 -0
- package/skills/testing/render-handler.md +122 -0
- package/skills/testing/response-routes.md +95 -0
- package/skills/testing/reverse-and-types.md +85 -0
- package/skills/testing/server-actions.md +107 -0
- package/skills/testing/server-tree.md +128 -0
- package/skills/testing/setup.md +123 -0
- package/skills/theme/SKILL.md +9 -6
- package/skills/typesafety/SKILL.md +45 -626
- package/skills/typesafety/env-and-bindings.md +254 -0
- package/skills/typesafety/generated-files-and-cli.md +342 -0
- package/skills/typesafety/params-and-search.md +153 -0
- package/skills/typesafety/route-types.md +213 -0
- package/skills/use-cache/SKILL.md +121 -15
- package/skills/vercel/SKILL.md +149 -0
- package/skills/view-transitions/SKILL.md +341 -0
- package/src/__augment-tests__/augment.ts +81 -0
- package/src/__augment-tests__/augmented.check.ts +116 -0
- package/src/__internal.ts +0 -65
- package/src/bin/rango.ts +7 -3
- package/src/browser/action-coordinator.ts +53 -36
- package/src/browser/action-fence.ts +47 -0
- package/src/browser/app-shell.ts +39 -0
- package/src/browser/connection-warmup.ts +134 -0
- package/src/browser/cookie-name.ts +140 -0
- package/src/browser/dev-discovery.ts +66 -0
- package/src/browser/event-controller.ts +400 -168
- package/src/browser/history-state.ts +21 -0
- package/src/browser/index.ts +3 -3
- package/src/browser/invalidate-client-cache.ts +52 -0
- package/src/browser/link-interceptor.ts +469 -20
- package/src/browser/logging.ts +28 -0
- package/src/browser/merge-segment-loaders.ts +6 -4
- package/src/browser/navigation-bridge.ts +171 -27
- package/src/browser/navigation-client.ts +216 -90
- package/src/browser/navigation-store-handle.ts +38 -0
- package/src/browser/navigation-store.ts +167 -323
- package/src/browser/navigation-transaction.ts +9 -59
- package/src/browser/network-error-handler.ts +34 -7
- package/src/browser/notify-listeners.ts +22 -0
- package/src/browser/partial-update.ts +243 -144
- package/src/browser/prefetch/cache.ts +325 -84
- package/src/browser/prefetch/default-strategy.ts +74 -0
- package/src/browser/prefetch/fetch.ts +411 -69
- package/src/browser/prefetch/invalidation.ts +30 -0
- package/src/browser/prefetch/loader.ts +111 -0
- package/src/browser/prefetch/observer.ts +50 -22
- package/src/browser/prefetch/queue.ts +61 -12
- package/src/browser/prefetch/runtime.ts +6 -0
- package/src/browser/rango-state.ts +178 -75
- package/src/browser/react/Link.tsx +160 -92
- package/src/browser/react/NavigationProvider.tsx +211 -121
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/context.ts +4 -0
- package/src/browser/react/filter-segment-order.ts +66 -7
- package/src/browser/react/index.ts +0 -48
- package/src/browser/react/location-state-shared.ts +178 -8
- package/src/browser/react/location-state.ts +39 -14
- package/src/browser/react/use-action.ts +6 -15
- package/src/browser/react/use-handle.ts +17 -14
- package/src/browser/react/use-href.tsx +8 -1
- package/src/browser/react/use-link-status.ts +33 -8
- package/src/browser/react/use-navigation.ts +10 -5
- package/src/browser/react/use-params.ts +20 -10
- package/src/browser/react/use-reverse.ts +106 -0
- package/src/browser/react/use-router.ts +62 -11
- package/src/browser/react/use-search-params.ts +140 -22
- package/src/browser/react/use-segments.ts +11 -21
- package/src/browser/response-adapter.ts +99 -8
- package/src/browser/rsc-router.tsx +248 -32
- package/src/browser/scroll-restoration.ts +37 -22
- package/src/browser/segment-reconciler.ts +31 -21
- package/src/browser/segment-structure-assert.ts +2 -2
- package/src/browser/server-action-bridge.ts +262 -65
- package/src/browser/types.ts +132 -34
- package/src/browser/validate-redirect-origin.ts +43 -16
- package/src/build/collect-fallback-refs.ts +107 -0
- package/src/build/generate-manifest.ts +213 -184
- package/src/build/generate-route-types.ts +3 -1
- package/src/build/index.ts +11 -3
- package/src/build/merge-full-manifests.ts +161 -0
- package/src/build/prefix-tree-utils.ts +123 -0
- package/src/build/route-trie.ts +43 -280
- package/src/build/route-types/ast-route-extraction.ts +15 -8
- package/src/build/route-types/codegen.ts +16 -5
- package/src/build/route-types/include-resolution.ts +513 -64
- package/src/build/route-types/param-extraction.ts +6 -3
- package/src/build/route-types/per-module-writer.ts +33 -12
- package/src/build/route-types/router-processing.ts +312 -204
- package/src/build/route-types/scan-filter.ts +1 -1
- package/src/build/route-types/source-scan.ts +216 -0
- package/src/build/runtime-discovery.ts +32 -29
- package/src/cache/cache-error.ts +104 -0
- package/src/cache/cache-exec-scope.ts +47 -0
- package/src/cache/cache-key-utils.ts +73 -15
- package/src/cache/cache-policy.ts +108 -34
- package/src/cache/cache-runtime.ts +566 -121
- package/src/cache/cache-scope.ts +383 -105
- package/src/cache/cache-tag.ts +149 -0
- package/src/cache/cf/cf-base64.ts +33 -0
- package/src/cache/cf/cf-cache-constants.ts +134 -0
- package/src/cache/cf/cf-cache-store.ts +3083 -392
- package/src/cache/cf/cf-cache-types.ts +417 -0
- package/src/cache/cf/cf-kv-utils.ts +84 -0
- package/src/cache/cf/cf-tag-marker-memo.ts +108 -0
- package/src/cache/cf/cf-zone-purge.ts +101 -0
- package/src/cache/cf/index.ts +11 -16
- package/src/cache/document-cache.ts +184 -53
- package/src/cache/handle-snapshot.ts +92 -1
- package/src/cache/index.ts +32 -20
- package/src/cache/memory-segment-store.ts +286 -37
- package/src/cache/profile-registry.ts +46 -31
- package/src/cache/read-through-swr.ts +66 -16
- package/src/cache/search-params-filter.ts +118 -0
- package/src/cache/segment-codec.ts +80 -25
- package/src/cache/shell-snapshot.ts +516 -0
- package/src/cache/tag-invalidation.ts +230 -0
- package/src/cache/taint.ts +28 -9
- package/src/cache/types.ts +343 -100
- package/src/cache/vercel/index.ts +11 -0
- package/src/cache/vercel/vercel-cache-store.ts +1264 -0
- package/src/client-urls/client-root.tsx +168 -0
- package/src/client-urls/client-urls.ts +779 -0
- package/src/client-urls/navigation.ts +237 -0
- package/src/client-urls/revalidation-protocol.ts +56 -0
- package/src/client-urls/server-projection.ts +670 -0
- package/src/client-urls/types.ts +202 -0
- package/src/client.rsc.tsx +53 -21
- package/src/client.tsx +82 -67
- package/src/cloudflare/index.ts +11 -0
- package/src/cloudflare/tracing.ts +112 -0
- package/src/component-utils.ts +19 -0
- package/src/components/DefaultDocument.tsx +8 -2
- package/src/context-var.ts +18 -6
- package/src/decode-loader-results.ts +165 -0
- package/src/defer.ts +185 -0
- package/src/deps/ssr.ts +4 -2
- package/src/dev-discovery-protocol.ts +11 -0
- package/src/encode-kv.ts +49 -0
- package/src/errors.ts +44 -4
- package/src/escape-script.ts +52 -0
- package/src/handle.ts +67 -37
- package/src/handles/MetaTags.tsx +24 -53
- package/src/handles/Scripts.tsx +183 -0
- package/src/handles/breadcrumbs.ts +35 -8
- package/src/handles/deferred-resolution.ts +134 -0
- package/src/handles/is-thenable.ts +16 -0
- package/src/handles/meta.ts +14 -40
- package/src/handles/script.ts +244 -0
- package/src/host/cookie-handler.ts +9 -60
- package/src/host/errors.ts +13 -22
- package/src/host/index.ts +9 -2
- package/src/host/pattern-matcher.ts +23 -52
- package/src/host/router.ts +107 -99
- package/src/host/testing.ts +40 -27
- package/src/host/types.ts +37 -4
- package/src/host/utils.ts +1 -1
- package/src/href-client.ts +137 -22
- package/src/index.rsc.ts +108 -12
- package/src/index.ts +106 -14
- package/src/internal-debug.ts +11 -10
- package/src/loader-redirect.tsx +64 -0
- package/src/loader-store.ts +500 -0
- package/src/loader.rsc.ts +20 -13
- package/src/loader.ts +12 -11
- package/src/missing-id-error.ts +68 -0
- package/src/outlet-context.ts +21 -1
- package/src/outlet-provider.tsx +20 -6
- package/src/prerender/build-shell-capture.ts +453 -0
- package/src/prerender/param-hash.ts +16 -16
- package/src/prerender/shell-manifest-key.ts +20 -0
- package/src/prerender/store.ts +47 -38
- package/src/prerender.ts +81 -13
- package/src/redirect-origin.ts +172 -0
- package/src/regex-escape.ts +8 -0
- package/src/render-error-thrower.tsx +20 -0
- package/src/response-utils.ts +62 -0
- package/src/reverse.ts +65 -39
- package/src/root-error-boundary.tsx +1 -19
- package/src/route-content-wrapper.tsx +120 -78
- package/src/route-definition/dsl-helpers.ts +342 -313
- package/src/route-definition/helper-factories.ts +28 -140
- package/src/route-definition/helpers-types.ts +106 -62
- package/src/route-definition/index.ts +1 -2
- package/src/route-definition/redirect.ts +60 -28
- package/src/route-definition/resolve-handler-use.ts +12 -1
- package/src/route-definition/use-item-types.ts +29 -0
- package/src/route-map-builder.ts +102 -74
- package/src/route-types.ts +19 -46
- package/src/router/basename.ts +14 -0
- package/src/router/content-negotiation.ts +120 -30
- package/src/router/error-handling.ts +110 -29
- package/src/router/find-match.ts +129 -30
- package/src/router/handler-context.ts +58 -57
- package/src/router/instrument.ts +401 -0
- package/src/router/intercept-resolution.ts +98 -21
- package/src/router/lazy-includes.ts +83 -59
- package/src/router/loader-resolution.ts +429 -85
- package/src/router/logging.ts +0 -6
- package/src/router/manifest.ts +74 -40
- package/src/router/match-api.ts +94 -58
- package/src/router/match-context.ts +0 -22
- package/src/router/match-handlers.ts +268 -171
- package/src/router/match-middleware/background-revalidation.ts +40 -24
- package/src/router/match-middleware/cache-lookup.ts +316 -302
- package/src/router/match-middleware/cache-store.ts +134 -52
- package/src/router/match-middleware/intercept-resolution.ts +0 -22
- package/src/router/match-middleware/segment-resolution.ts +0 -22
- package/src/router/match-pipelines.ts +1 -42
- package/src/router/match-result.ts +76 -79
- package/src/router/metrics.ts +17 -36
- package/src/router/middleware-types.ts +20 -130
- package/src/router/middleware.ts +302 -172
- package/src/router/navigation-snapshot.ts +51 -60
- package/src/router/params-util.ts +23 -0
- package/src/router/parse-pattern.ts +115 -0
- package/src/router/pattern-matching.ts +181 -150
- package/src/router/prefetch-cache-ttl.ts +51 -0
- package/src/router/prefetch-default.ts +59 -0
- package/src/router/prefetch-limits.ts +37 -0
- package/src/router/prerender-match.ts +159 -69
- package/src/router/preview-match.ts +6 -2
- package/src/router/request-classification.ts +50 -69
- package/src/router/revalidation.ts +146 -83
- package/src/router/route-snapshot.ts +14 -3
- package/src/router/route-trie-builder.ts +334 -0
- package/src/router/router-context.ts +6 -29
- package/src/router/router-interfaces.ts +168 -38
- package/src/router/router-options.ts +235 -11
- package/src/router/router-registry.ts +2 -5
- package/src/router/segment-resolution/fresh.ts +219 -88
- package/src/router/segment-resolution/helpers.ts +96 -18
- package/src/router/segment-resolution/loader-cache.ts +208 -39
- package/src/router/segment-resolution/loader-mask.ts +60 -0
- package/src/router/segment-resolution/loader-snapshot.ts +259 -0
- package/src/router/segment-resolution/mask-nested.ts +99 -0
- package/src/router/segment-resolution/revalidation.ts +318 -321
- package/src/router/segment-resolution/static-store.ts +55 -15
- package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
- package/src/router/segment-resolution/view-transition-default.ts +60 -0
- package/src/router/segment-resolution.ts +5 -1
- package/src/router/segment-wrappers.ts +6 -5
- package/src/router/state-cookie-name.ts +33 -0
- package/src/router/substitute-pattern-params.ts +75 -0
- package/src/router/telemetry-otel.ts +171 -200
- package/src/router/telemetry.ts +106 -20
- package/src/router/timeout.ts +53 -22
- package/src/router/tracing.ts +235 -0
- package/src/router/transition-when.ts +76 -0
- package/src/router/trie-matching.ts +171 -59
- package/src/router/types.ts +9 -63
- package/src/router/url-params.ts +57 -0
- package/src/router.ts +249 -79
- package/src/rsc/capture-queue.ts +218 -0
- package/src/rsc/full-payload.ts +77 -0
- package/src/rsc/handler-context.ts +4 -2
- package/src/rsc/handler.ts +570 -288
- package/src/rsc/helpers.ts +245 -47
- package/src/rsc/index.ts +2 -5
- package/src/rsc/json-route-result.ts +38 -0
- package/src/rsc/loader-fetch.ts +116 -40
- package/src/rsc/manifest-init.ts +55 -56
- package/src/rsc/nonce.ts +26 -1
- package/src/rsc/origin-guard.ts +39 -25
- package/src/rsc/progressive-enhancement.ts +378 -83
- package/src/rsc/redirect-guard.ts +102 -0
- package/src/rsc/render-pipeline.ts +611 -0
- package/src/rsc/response-cache-serve.ts +259 -0
- package/src/rsc/response-error.ts +79 -12
- package/src/rsc/response-route-handler.ts +80 -206
- package/src/rsc/routine-plan.ts +359 -0
- package/src/rsc/rsc-rendering.ts +1647 -164
- package/src/rsc/runtime-warnings.ts +23 -10
- package/src/rsc/server-action.ts +421 -138
- package/src/rsc/shell-build-manifest.ts +343 -0
- package/src/rsc/shell-capture-constants.ts +45 -0
- package/src/rsc/shell-capture.ts +2135 -0
- package/src/rsc/shell-serve.ts +350 -0
- package/src/rsc/ssr-setup.ts +124 -16
- package/src/rsc/stream-idle.ts +137 -0
- package/src/rsc/transition-gate.ts +86 -0
- package/src/rsc/types.ts +125 -7
- package/src/runtime-env.ts +18 -0
- package/src/search-params.ts +35 -30
- package/src/segment-fragments.ts +165 -0
- package/src/segment-loader-promise.ts +49 -4
- package/src/segment-system.tsx +463 -153
- package/src/serialize.ts +243 -0
- package/src/server/context.ts +426 -55
- package/src/server/cookie-parse.ts +32 -0
- package/src/server/cookie-store.ts +162 -15
- package/src/server/handle-store.ts +190 -70
- package/src/server/loader-registry.ts +33 -42
- package/src/server/request-context.ts +824 -215
- package/src/server.ts +7 -2
- package/src/ssr/index.tsx +687 -184
- package/src/ssr/inject-rsc-eager.ts +167 -0
- package/src/ssr/preinit-client-references.ts +106 -0
- package/src/ssr/ssr-root.tsx +305 -0
- package/src/ssr-suspension-warning.ts +67 -0
- package/src/static-handler.ts +28 -15
- package/src/testing/cache-status.ts +162 -0
- package/src/testing/collect-handle.ts +46 -0
- package/src/testing/dispatch.ts +951 -0
- package/src/testing/dom.entry.ts +22 -0
- package/src/testing/e2e/fixture.ts +188 -0
- package/src/testing/e2e/index.ts +147 -0
- package/src/testing/e2e/matchers.ts +35 -0
- package/src/testing/e2e/page-helpers.ts +319 -0
- package/src/testing/e2e/parity.ts +400 -0
- package/src/testing/e2e/server.ts +195 -0
- package/src/testing/flight-matchers.ts +97 -0
- package/src/testing/flight-normalize.ts +11 -0
- package/src/testing/flight-runtime.d.ts +57 -0
- package/src/testing/flight-tree.ts +682 -0
- package/src/testing/flight.entry.ts +52 -0
- package/src/testing/flight.ts +257 -0
- package/src/testing/generated-routes.ts +199 -0
- package/src/testing/index.ts +121 -0
- package/src/testing/internal/context.ts +380 -0
- package/src/testing/internal/flight-client-globals.ts +30 -0
- package/src/testing/internal/seed-vars.ts +54 -0
- package/src/testing/render-handler.ts +371 -0
- package/src/testing/render-route.tsx +667 -0
- package/src/testing/run-loader.ts +423 -0
- package/src/testing/run-middleware.ts +219 -0
- package/src/testing/run-transition-when.ts +197 -0
- package/src/testing/shell-status.ts +206 -0
- package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
- package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
- package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
- package/src/testing/vitest-stubs/version.ts +5 -0
- package/src/testing/vitest.ts +305 -0
- package/src/theme/ThemeProvider.tsx +56 -84
- package/src/theme/ThemeScript.tsx +7 -9
- package/src/theme/constants.ts +52 -13
- package/src/theme/index.ts +0 -7
- package/src/theme/theme-context.ts +1 -5
- package/src/theme/theme-script.ts +22 -21
- package/src/theme/use-theme.ts +0 -3
- package/src/types/boundaries.ts +19 -35
- package/src/types/cache-types.ts +13 -4
- package/src/types/error-types.ts +30 -90
- package/src/types/global-namespace.ts +54 -41
- package/src/types/handler-context.ts +123 -64
- package/src/types/index.ts +4 -10
- package/src/types/loader-types.ts +76 -13
- package/src/types/request-scope.ts +112 -0
- package/src/types/route-config.ts +20 -52
- package/src/types/route-entry.ts +3 -6
- package/src/types/segments.ts +155 -14
- package/src/urls/include-helper.ts +38 -64
- package/src/urls/include-provider.ts +71 -0
- package/src/urls/index.ts +2 -11
- package/src/urls/path-helper-types.ts +88 -25
- package/src/urls/path-helper.ts +30 -110
- package/src/urls/pattern-types.ts +101 -19
- package/src/urls/response-types.ts +22 -29
- package/src/urls/type-extraction.ts +98 -154
- package/src/urls/urls-function.ts +1 -19
- package/src/use-loader.tsx +379 -110
- package/src/vercel/index.ts +11 -0
- package/src/vercel/tracing.ts +89 -0
- package/src/vite/debug.ts +185 -0
- package/src/vite/discovery/bundle-postprocess.ts +18 -14
- package/src/vite/discovery/client-urls-projection.ts +322 -0
- package/src/vite/discovery/dev-prerender-cache.ts +117 -0
- package/src/vite/discovery/discover-routers.ts +178 -151
- package/src/vite/discovery/discovery-errors.ts +255 -0
- package/src/vite/discovery/gate-state.ts +171 -0
- package/src/vite/discovery/prerender-collection.ts +125 -70
- package/src/vite/discovery/route-types-writer.ts +40 -84
- package/src/vite/discovery/self-gen-tracking.ts +27 -1
- package/src/vite/discovery/shell-prerender-phase.ts +397 -0
- package/src/vite/discovery/state.ts +104 -6
- package/src/vite/discovery/virtual-module-codegen.ts +226 -87
- package/src/vite/encryption-key.ts +29 -0
- package/src/vite/index.ts +12 -0
- package/src/vite/inject-client-debug.ts +88 -0
- package/src/vite/plugin-types.ts +243 -10
- package/src/vite/plugins/cjs-to-esm.ts +16 -19
- package/src/vite/plugins/client-ref-dedup.ts +296 -29
- package/src/vite/plugins/client-ref-hashing.ts +28 -15
- package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
- package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
- package/src/vite/plugins/expose-action-id.ts +95 -120
- package/src/vite/plugins/expose-id-utils.ts +88 -55
- package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
- package/src/vite/plugins/expose-ids/handler-transform.ts +11 -90
- package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
- package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
- package/src/vite/plugins/expose-internal-ids.ts +551 -486
- package/src/vite/plugins/performance-tracks.ts +26 -25
- package/src/vite/plugins/refresh-cmd.ts +1 -1
- package/src/vite/plugins/server-ref-hashing.ts +74 -0
- package/src/vite/plugins/server-reference-pattern.ts +10 -0
- package/src/vite/plugins/use-cache-transform.ts +73 -83
- package/src/vite/plugins/vercel-output.ts +384 -0
- package/src/vite/plugins/version-injector.ts +39 -29
- package/src/vite/plugins/version-plugin.ts +45 -40
- package/src/vite/plugins/virtual-entries.ts +193 -30
- package/src/vite/rango.ts +287 -140
- package/src/vite/router-discovery.ts +1639 -157
- package/src/vite/utils/ast-handler-extract.ts +26 -35
- package/src/vite/utils/banner.ts +1 -1
- package/src/vite/utils/bundle-analysis.ts +10 -15
- package/src/vite/utils/client-chunks.ts +184 -0
- package/src/vite/utils/directive-prologue.ts +40 -0
- package/src/vite/utils/forward-user-plugins.ts +171 -0
- package/src/vite/utils/manifest-utils.ts +1 -59
- package/src/vite/utils/package-resolution.ts +21 -52
- package/src/vite/utils/prerender-utils.ts +96 -49
- package/src/vite/utils/shared-utils.ts +156 -43
- package/src/browser/action-response-classifier.ts +0 -99
- package/src/browser/shallow.ts +0 -40
- package/src/router/middleware-cookies.ts +0 -55
package/src/rsc/handler.ts
CHANGED
|
@@ -7,13 +7,11 @@
|
|
|
7
7
|
* and progressive enhancement (no-JS form submissions).
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import {
|
|
11
|
-
import { RouteNotFoundError } from "../errors.js";
|
|
10
|
+
import { isRouteNotFoundError } from "../errors.js";
|
|
12
11
|
import { matchMiddleware, executeMiddleware } from "../router/middleware.js";
|
|
13
12
|
import {
|
|
14
13
|
runWithRequestContext,
|
|
15
14
|
setRequestContextParams,
|
|
16
|
-
requireRequestContext,
|
|
17
15
|
getRequestContext,
|
|
18
16
|
_getRequestContext,
|
|
19
17
|
createRequestContext,
|
|
@@ -31,31 +29,48 @@ import {
|
|
|
31
29
|
interceptRedirectForPartial,
|
|
32
30
|
buildRouteMiddlewareEntries,
|
|
33
31
|
} from "./helpers.js";
|
|
32
|
+
import { renderRscFlightStage, renderRscResponse } from "./render-pipeline.js";
|
|
33
|
+
import { guardOutgoingRedirect } from "./redirect-guard.js";
|
|
34
|
+
import {
|
|
35
|
+
resolveSoftRedirectUrl,
|
|
36
|
+
resolveExternalRedirect,
|
|
37
|
+
safeSameOriginLanding,
|
|
38
|
+
} from "../redirect-origin.js";
|
|
39
|
+
import { resolvedHandleStream } from "../handles/deferred-resolution.js";
|
|
40
|
+
import {
|
|
41
|
+
isWebSocketUpgradeResponse,
|
|
42
|
+
appendVaryAccept,
|
|
43
|
+
} from "../response-utils.js";
|
|
34
44
|
import {
|
|
35
45
|
handleResponseRoute,
|
|
36
46
|
type ResponseRouteMatch,
|
|
37
47
|
} from "./response-route-handler.js";
|
|
38
|
-
import {
|
|
48
|
+
import { nonce as nonceToken, resolveProviderNonce } from "./nonce.js";
|
|
39
49
|
import { VERSION } from "@rangojs/router:version";
|
|
40
50
|
import type { ErrorPhase } from "../types.js";
|
|
41
51
|
import type { RouterRequestInput } from "../router/router-interfaces.js";
|
|
42
|
-
import {
|
|
52
|
+
import {
|
|
53
|
+
invokeOnError,
|
|
54
|
+
resolveDefaultNotFound,
|
|
55
|
+
} from "../router/error-handling.js";
|
|
43
56
|
import {
|
|
44
57
|
createReverseFunction,
|
|
45
58
|
stripInternalParams,
|
|
46
59
|
} from "../router/handler-context.js";
|
|
47
|
-
import { getRouterContext } from "../router/router-context.js";
|
|
48
|
-
import { resolveSink, safeEmit } from "../router/telemetry.js";
|
|
49
60
|
import { contextSet } from "../context-var.js";
|
|
50
61
|
import {
|
|
51
62
|
hasCachedManifest,
|
|
52
|
-
getRouteTrie,
|
|
53
|
-
getPrecomputedEntries,
|
|
54
63
|
waitForManifestReady,
|
|
55
64
|
getRouterManifest,
|
|
56
65
|
getRouterTrie,
|
|
57
66
|
} from "../route-map-builder.js";
|
|
58
67
|
import type { HandlerContext } from "./handler-context.js";
|
|
68
|
+
import type { CacheErrorCategory } from "../cache/cache-error.js";
|
|
69
|
+
import {
|
|
70
|
+
compileSearchParamsFilter,
|
|
71
|
+
type SearchParamsFilter,
|
|
72
|
+
} from "../cache/search-params-filter.js";
|
|
73
|
+
import type { SegmentCacheStore } from "../cache/types.js";
|
|
59
74
|
import { buildRouterTrieFromUrlpatterns } from "./manifest-init.js";
|
|
60
75
|
import { handleProgressiveEnhancement } from "./progressive-enhancement.js";
|
|
61
76
|
import {
|
|
@@ -64,23 +79,32 @@ import {
|
|
|
64
79
|
type ActionContinuation,
|
|
65
80
|
} from "./server-action.js";
|
|
66
81
|
import { handleLoaderFetch } from "./loader-fetch.js";
|
|
67
|
-
import {
|
|
82
|
+
import { applyStreamIdleTimeout } from "./stream-idle.js";
|
|
83
|
+
import {
|
|
84
|
+
checkRequestOrigin,
|
|
85
|
+
ORIGIN_CHECK_PHASE_BY_MODE,
|
|
86
|
+
} from "./origin-guard.js";
|
|
68
87
|
import { handleRscRendering } from "./rsc-rendering.js";
|
|
69
88
|
import {
|
|
70
89
|
withTimeout,
|
|
90
|
+
isTimeoutEnabled,
|
|
71
91
|
RouterTimeoutError,
|
|
72
92
|
createDefaultTimeoutResponse,
|
|
73
93
|
type TimeoutPhase,
|
|
94
|
+
type RenderTimeoutContext,
|
|
74
95
|
} from "../router/timeout.js";
|
|
75
96
|
import {
|
|
76
97
|
createMetricsStore,
|
|
77
98
|
appendMetric,
|
|
78
99
|
buildMetricsTiming,
|
|
79
100
|
} from "../router/metrics.js";
|
|
101
|
+
import { observePhase, PHASES } from "../router/instrument.js";
|
|
102
|
+
import { safeEmit, resolveSink, getRequestId } from "../router/telemetry.js";
|
|
80
103
|
import {
|
|
81
104
|
startSSRSetup,
|
|
82
|
-
|
|
105
|
+
createSsrHtmlStage,
|
|
83
106
|
mayNeedSSR,
|
|
107
|
+
isRscRequest,
|
|
84
108
|
SSR_SETUP_VAR,
|
|
85
109
|
} from "./ssr-setup.js";
|
|
86
110
|
import {
|
|
@@ -88,6 +112,7 @@ import {
|
|
|
88
112
|
type RequestPlan,
|
|
89
113
|
type ExecutableRequestPlan,
|
|
90
114
|
} from "../router/request-classification.js";
|
|
115
|
+
import { INTERNAL_RANGO_DEBUG } from "../internal-debug.js";
|
|
91
116
|
|
|
92
117
|
/**
|
|
93
118
|
* Create an RSC request handler.
|
|
@@ -122,12 +147,35 @@ import {
|
|
|
122
147
|
* });
|
|
123
148
|
* ```
|
|
124
149
|
*/
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Response that tells the client to do a full document navigation. Shared by
|
|
153
|
+
* the terminal reload plans (version-mismatch and app-switch): an empty 200
|
|
154
|
+
* carrying X-RSC-Reload, which the client turns into window.location.href.
|
|
155
|
+
*/
|
|
156
|
+
function createReloadResponse(reloadUrl: string) {
|
|
157
|
+
return createResponseWithMergedHeaders(null, {
|
|
158
|
+
status: 200,
|
|
159
|
+
headers: {
|
|
160
|
+
"X-RSC-Reload": reloadUrl,
|
|
161
|
+
"content-type": "text/x-component;charset=utf-8",
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
|
|
125
166
|
export function createRSCHandler<
|
|
126
167
|
TEnv = unknown,
|
|
127
168
|
TRoutes extends Record<string, string> = Record<string, string>,
|
|
128
169
|
>(options: CreateRSCHandlerOptions<TEnv, TRoutes>) {
|
|
129
170
|
const { router, version = VERSION, nonce: nonceProvider } = options;
|
|
130
171
|
|
|
172
|
+
// Handler-owned registry of explicit per-scope stores from cache({ store }).
|
|
173
|
+
// Lives in the closure so it is scoped per handler (multi-router deployments
|
|
174
|
+
// get separate registries) and accumulates every explicit store this handler
|
|
175
|
+
// resolves across requests. updateTag()/revalidateTag() iterate it to reach
|
|
176
|
+
// stores not covered by the app-level ctx._cacheStore.
|
|
177
|
+
const explicitTaggedStores = new Set<SegmentCacheStore>();
|
|
178
|
+
|
|
131
179
|
// Use provided deps or default to @vitejs/plugin-rsc/rsc exports
|
|
132
180
|
const deps = options.deps ?? rscDeps;
|
|
133
181
|
const {
|
|
@@ -202,7 +250,44 @@ export function createRSCHandler<
|
|
|
202
250
|
actionId?: string,
|
|
203
251
|
): Promise<Response> {
|
|
204
252
|
const timeoutError = new RouterTimeoutError(phase, durationMs);
|
|
253
|
+
const requestContext = _getRequestContext<TEnv>();
|
|
254
|
+
const cursor = requestContext?._renderForeground;
|
|
255
|
+
const render: RenderTimeoutContext | undefined =
|
|
256
|
+
phase === "render-start" && cursor
|
|
257
|
+
? {
|
|
258
|
+
mode: cursor.mode,
|
|
259
|
+
phase: cursor.phase,
|
|
260
|
+
state: cursor.state,
|
|
261
|
+
completed: cursor.completed,
|
|
262
|
+
total: cursor.total,
|
|
263
|
+
...(cursor.phaseStartedAt !== undefined && {
|
|
264
|
+
phaseDurationMs: performance.now() - cursor.phaseStartedAt,
|
|
265
|
+
}),
|
|
266
|
+
}
|
|
267
|
+
: undefined;
|
|
268
|
+
const trace =
|
|
269
|
+
phase === "render-start" ? requestContext?._activeRoutine : undefined;
|
|
270
|
+
const activeEntries = trace?.active() ?? [];
|
|
271
|
+
const activeStep = activeEntries.at(-1);
|
|
272
|
+
const activeAt = performance.now();
|
|
273
|
+
const routineSnapshot =
|
|
274
|
+
trace && activeStep
|
|
275
|
+
? {
|
|
276
|
+
name: trace.name,
|
|
277
|
+
path: activeEntries.map((entry) => entry.name),
|
|
278
|
+
durationMs: activeAt - activeStep.startedAt,
|
|
279
|
+
}
|
|
280
|
+
: undefined;
|
|
281
|
+
|
|
282
|
+
if (INTERNAL_RANGO_DEBUG && trace && activeStep) {
|
|
283
|
+
console.log(
|
|
284
|
+
`[routine] TIMEOUT ${request.method} ${url.pathname} (${trace.name})\n${trace.formatActive(activeEntries, activeAt)}`,
|
|
285
|
+
);
|
|
286
|
+
}
|
|
205
287
|
|
|
288
|
+
// Each surface gets its OWN shallow render snapshot. A consumer that mutates
|
|
289
|
+
// its copy must not corrupt what the other two observe. The internal-debug
|
|
290
|
+
// routine snapshot is bounded metadata sent only to onError.
|
|
206
291
|
callOnError(timeoutError, phase === "action" ? "action" : "handler", {
|
|
207
292
|
request,
|
|
208
293
|
url,
|
|
@@ -210,26 +295,28 @@ export function createRSCHandler<
|
|
|
210
295
|
routeKey,
|
|
211
296
|
actionId,
|
|
212
297
|
handledByBoundary: false,
|
|
213
|
-
metadata: {
|
|
298
|
+
metadata: {
|
|
299
|
+
timeout: true,
|
|
300
|
+
phase,
|
|
301
|
+
durationMs,
|
|
302
|
+
...(render && { render: { ...render } }),
|
|
303
|
+
...(routineSnapshot && { routine: routineSnapshot }),
|
|
304
|
+
},
|
|
214
305
|
});
|
|
215
306
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
} catch {
|
|
232
|
-
// Router context may not be available
|
|
307
|
+
if (router.telemetry) {
|
|
308
|
+
safeEmit(resolveSink(router.telemetry), {
|
|
309
|
+
type: "request.timeout",
|
|
310
|
+
timestamp: performance.now(),
|
|
311
|
+
requestId: getRequestId(request),
|
|
312
|
+
phase,
|
|
313
|
+
pathname: url.pathname,
|
|
314
|
+
routeKey,
|
|
315
|
+
actionId,
|
|
316
|
+
durationMs,
|
|
317
|
+
customHandler: !!router.onTimeout,
|
|
318
|
+
...(render && { render: { ...render } }),
|
|
319
|
+
});
|
|
233
320
|
}
|
|
234
321
|
|
|
235
322
|
if (router.onTimeout) {
|
|
@@ -242,6 +329,7 @@ export function createRSCHandler<
|
|
|
242
329
|
routeKey,
|
|
243
330
|
actionId,
|
|
244
331
|
durationMs,
|
|
332
|
+
...(render && { render: { ...render } }),
|
|
245
333
|
});
|
|
246
334
|
} catch (e) {
|
|
247
335
|
if (process.env.NODE_ENV !== "production") {
|
|
@@ -258,20 +346,66 @@ export function createRSCHandler<
|
|
|
258
346
|
* Build a 200 Flight response that carries a redirect URL and optional state.
|
|
259
347
|
* Used when a partial/action request results in a redirect -- fetch
|
|
260
348
|
* auto-follows 3xx so we send the redirect as payload metadata instead.
|
|
349
|
+
*
|
|
350
|
+
* The redirect URL is resolved with {@link resolveSoftRedirectUrl} against
|
|
351
|
+
* the current request origin so an unsafe target never leaves as Flight
|
|
352
|
+
* metadata (client validators remain defense-in-depth).
|
|
261
353
|
*/
|
|
262
354
|
function createRedirectFlightResponse(
|
|
263
355
|
redirectUrl: string,
|
|
264
356
|
locationState?: Record<string, unknown>,
|
|
357
|
+
external?: boolean,
|
|
265
358
|
): Response {
|
|
359
|
+
const reqCtx = _getRequestContext<TEnv>();
|
|
360
|
+
const requestOrigin =
|
|
361
|
+
reqCtx?.url.origin ?? new URL("http://localhost").origin;
|
|
362
|
+
// Resolve with the same policy as 3xx guardOutgoingRedirect. Keep
|
|
363
|
+
// external:true only when the external scheme check passed; a neutralized
|
|
364
|
+
// landing (javascript:/blocked) must not advertise external.
|
|
365
|
+
let resolvedUrl: string;
|
|
366
|
+
let resolvedExternal = false;
|
|
367
|
+
if (external) {
|
|
368
|
+
const ext = resolveExternalRedirect(redirectUrl, requestOrigin);
|
|
369
|
+
if (ext !== null) {
|
|
370
|
+
resolvedUrl = ext;
|
|
371
|
+
resolvedExternal = true;
|
|
372
|
+
} else {
|
|
373
|
+
resolvedUrl = safeSameOriginLanding(router.basename);
|
|
374
|
+
}
|
|
375
|
+
} else {
|
|
376
|
+
resolvedUrl = resolveSoftRedirectUrl(
|
|
377
|
+
redirectUrl,
|
|
378
|
+
requestOrigin,
|
|
379
|
+
router.basename,
|
|
380
|
+
false,
|
|
381
|
+
);
|
|
382
|
+
}
|
|
266
383
|
const redirectPayload: RscPayload = {
|
|
267
384
|
metadata: {
|
|
268
|
-
pathname:
|
|
385
|
+
pathname: resolvedUrl,
|
|
269
386
|
segments: [],
|
|
270
|
-
redirect: {
|
|
387
|
+
redirect: {
|
|
388
|
+
url: resolvedUrl,
|
|
389
|
+
...(resolvedExternal && { external: true }),
|
|
390
|
+
},
|
|
271
391
|
...(locationState && { locationState }),
|
|
272
392
|
},
|
|
273
393
|
};
|
|
274
|
-
const rscStream =
|
|
394
|
+
const rscStream = reqCtx
|
|
395
|
+
? renderRscFlightStage({
|
|
396
|
+
ctx: { renderToReadableStream, callOnError },
|
|
397
|
+
request: reqCtx.request,
|
|
398
|
+
url: reqCtx.url,
|
|
399
|
+
env: reqCtx.env,
|
|
400
|
+
payload: redirectPayload,
|
|
401
|
+
tracking: {
|
|
402
|
+
mode: reqCtx.url.searchParams.has("_rsc_action")
|
|
403
|
+
? "action-revalidation"
|
|
404
|
+
: "partial",
|
|
405
|
+
routeKey: reqCtx._routeName,
|
|
406
|
+
},
|
|
407
|
+
}).stream
|
|
408
|
+
: renderToReadableStream<RscPayload>(redirectPayload);
|
|
275
409
|
return createResponseWithMergedHeaders(rscStream, {
|
|
276
410
|
status: 200,
|
|
277
411
|
headers: { "content-type": "text/x-component;charset=utf-8" },
|
|
@@ -283,6 +417,7 @@ export function createRSCHandler<
|
|
|
283
417
|
const handlerCtx: HandlerContext<TEnv> = {
|
|
284
418
|
router,
|
|
285
419
|
version,
|
|
420
|
+
devDiscoveryEpoch: router.__devDiscoveryEpoch,
|
|
286
421
|
renderToReadableStream,
|
|
287
422
|
decodeReply,
|
|
288
423
|
createTemporaryReferenceSet,
|
|
@@ -321,12 +456,12 @@ export function createRSCHandler<
|
|
|
321
456
|
}
|
|
322
457
|
}
|
|
323
458
|
|
|
324
|
-
// Resolve nonce if provider is set
|
|
459
|
+
// Resolve nonce if provider is set. false/"" normalize to undefined —
|
|
460
|
+
// the per-request opt-out (resolveProviderNonce).
|
|
325
461
|
const nonceStart = performance.now();
|
|
326
462
|
let nonce: string | undefined;
|
|
327
463
|
if (nonceProvider) {
|
|
328
|
-
|
|
329
|
-
nonce = result === true ? generateNonce() : result;
|
|
464
|
+
nonce = resolveProviderNonce(await nonceProvider(request, env));
|
|
330
465
|
}
|
|
331
466
|
const nonceDur = performance.now() - nonceStart;
|
|
332
467
|
|
|
@@ -352,7 +487,8 @@ export function createRSCHandler<
|
|
|
352
487
|
// Resolve cache store configuration
|
|
353
488
|
// Priority: options.cache (handler override) > router.cache (router default)
|
|
354
489
|
// Store is enabled only if: config provided, enabled, and no ?__no_cache query param
|
|
355
|
-
let cacheStore
|
|
490
|
+
let cacheStore: SegmentCacheStore | undefined;
|
|
491
|
+
let searchParamsFilter: SearchParamsFilter | undefined;
|
|
356
492
|
const cacheOption = options.cache ?? router.cache;
|
|
357
493
|
if (cacheOption && !url.searchParams.has("__no_cache")) {
|
|
358
494
|
const cacheConfig =
|
|
@@ -362,6 +498,9 @@ export function createRSCHandler<
|
|
|
362
498
|
|
|
363
499
|
if (cacheConfig.enabled !== false) {
|
|
364
500
|
cacheStore = cacheConfig.store;
|
|
501
|
+
searchParamsFilter = compileSearchParamsFilter(
|
|
502
|
+
cacheConfig.searchParams,
|
|
503
|
+
);
|
|
365
504
|
}
|
|
366
505
|
}
|
|
367
506
|
|
|
@@ -419,10 +558,25 @@ export function createRSCHandler<
|
|
|
419
558
|
url,
|
|
420
559
|
variables,
|
|
421
560
|
cacheStore,
|
|
561
|
+
searchParamsFilter,
|
|
562
|
+
explicitTaggedStores,
|
|
422
563
|
cacheProfiles: router.cacheProfiles,
|
|
423
564
|
executionContext: executionCtx,
|
|
424
565
|
themeConfig: router.themeConfig,
|
|
566
|
+
stateCookieName: router.resolvedStateCookieName,
|
|
567
|
+
version,
|
|
425
568
|
});
|
|
569
|
+
// Gate on the SAME enabled-semantics withTimeout uses (isTimeoutEnabled):
|
|
570
|
+
// a `renderStartMs: 0` / negative opt-out disables the timeout, so the
|
|
571
|
+
// driver's cursor bookkeeping (which only the timeout reads) must be off too.
|
|
572
|
+
requestContext._renderDiagnosticsEnabled = isTimeoutEnabled(
|
|
573
|
+
router.timeouts.renderStartMs,
|
|
574
|
+
);
|
|
575
|
+
// Thread the true request entry timestamp onto the context so a metrics
|
|
576
|
+
// store created MID-request (ctx.debugPerformance() / getMetricsStore) anchors
|
|
577
|
+
// to the real start, not the opt-in moment — phases that began earlier then
|
|
578
|
+
// report non-negative offsets. Set unconditionally: debug may be enabled later.
|
|
579
|
+
requestContext._handlerStart = handlerStart;
|
|
426
580
|
if (earlyMetricsStore) {
|
|
427
581
|
requestContext._debugPerformance = true;
|
|
428
582
|
requestContext._metricsStore = earlyMetricsStore;
|
|
@@ -431,7 +585,7 @@ export function createRSCHandler<
|
|
|
431
585
|
// can surface non-fatal errors through the router's onError callback.
|
|
432
586
|
requestContext._reportBackgroundError = (
|
|
433
587
|
error: unknown,
|
|
434
|
-
category:
|
|
588
|
+
category: CacheErrorCategory,
|
|
435
589
|
) => {
|
|
436
590
|
callOnError(error, "cache", {
|
|
437
591
|
request,
|
|
@@ -463,80 +617,206 @@ export function createRSCHandler<
|
|
|
463
617
|
// - Streaming
|
|
464
618
|
// Store basename on request context (scoped per-request via existing ALS)
|
|
465
619
|
requestContext._basename = router.basename;
|
|
620
|
+
requestContext._routerId = router.id;
|
|
621
|
+
|
|
622
|
+
// Resolved span tracing for this request (read at each traced phase).
|
|
623
|
+
requestContext._tracing = router.tracing;
|
|
624
|
+
|
|
625
|
+
// The "rango.request" span is opened inside the request context so the
|
|
626
|
+
// Cloudflare runner can read executionContext.tracing, and so every nested
|
|
627
|
+
// phase span (and the platform's automatic KV/D1/fetch spans) nests under
|
|
628
|
+
// it. Construction-bound: the span ends when the Response is built, never
|
|
629
|
+
// wrapping the streamed body. metric:false — handler:total is metered
|
|
630
|
+
// directly below (a grand total incl. the pre-context bootstrap timings).
|
|
631
|
+
// When tracing is off this is a direct pass-through.
|
|
632
|
+
return runWithRequestContext(requestContext, () =>
|
|
633
|
+
observePhase(PHASES.request, async (span) => {
|
|
634
|
+
span.setAttribute("http.method", request.method);
|
|
635
|
+
// The matched route template is not known until match() runs later, so
|
|
636
|
+
// emit the concrete path as url.path (low-level), NOT http.route — the
|
|
637
|
+
// latter is reserved for the low-cardinality template (OTel convention).
|
|
638
|
+
span.setAttribute("url.path", url.pathname);
|
|
639
|
+
|
|
640
|
+
// Core handler logic (wrapped by middleware)
|
|
641
|
+
const coreHandler = async (): Promise<Response> => {
|
|
642
|
+
return coreRequestHandler(request, env, url, variables, nonce);
|
|
643
|
+
};
|
|
466
644
|
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
645
|
+
// Execute middleware chain if any, otherwise call core handler
|
|
646
|
+
// directly; the response is finalized below, inside the response span.
|
|
647
|
+
const hasMiddleware = matchedMiddleware.length > 0;
|
|
648
|
+
const downstream = hasMiddleware
|
|
649
|
+
? await executeMiddleware(
|
|
650
|
+
matchedMiddleware,
|
|
651
|
+
request,
|
|
652
|
+
env,
|
|
653
|
+
variables,
|
|
654
|
+
coreHandler,
|
|
655
|
+
createReverseFunction(getRequiredRouteMap()),
|
|
656
|
+
)
|
|
657
|
+
: await coreHandler();
|
|
658
|
+
|
|
659
|
+
// Final response construction + host handoff, wrapped in rango.response
|
|
660
|
+
// — the explicit stream-handoff marker. The callback is synchronous, so
|
|
661
|
+
// the span ends immediately before the handler returns the response to
|
|
662
|
+
// the host; it never reads or wraps response.body. A downstream throw
|
|
663
|
+
// skips it entirely (no response exists to hand off).
|
|
664
|
+
return observePhase(PHASES.response, (responseSpan) => {
|
|
665
|
+
let response: Response;
|
|
666
|
+
if (hasMiddleware) {
|
|
667
|
+
if (
|
|
668
|
+
url.searchParams.has("_rsc_partial") ||
|
|
669
|
+
url.searchParams.has("_rsc_action")
|
|
670
|
+
) {
|
|
671
|
+
const intercepted = interceptRedirectForPartial(
|
|
672
|
+
downstream,
|
|
673
|
+
createRedirectFlightResponse,
|
|
674
|
+
{ requestOrigin: url.origin, basename: router.basename },
|
|
675
|
+
);
|
|
676
|
+
response = intercepted ?? finalizeResponse(downstream);
|
|
677
|
+
} else {
|
|
678
|
+
response = finalizeResponse(downstream);
|
|
679
|
+
}
|
|
680
|
+
} else {
|
|
681
|
+
response = downstream;
|
|
682
|
+
}
|
|
472
683
|
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
684
|
+
// Finalize metrics after all middleware (including post-next work)
|
|
685
|
+
// has completed so :post spans are captured in the timeline.
|
|
686
|
+
// Handler timing parts are always emitted (even without debug metrics)
|
|
687
|
+
// so non-debug requests still get bootstrap Server-Timing entries.
|
|
688
|
+
const handlerTimingArr: string[] = variables.__handlerTiming || [];
|
|
689
|
+
// Preserve any existing Server-Timing set by response routes or middleware
|
|
690
|
+
const existingTiming = response.headers.get("Server-Timing");
|
|
691
|
+
const timingParts = existingTiming
|
|
692
|
+
? [existingTiming, ...handlerTimingArr]
|
|
693
|
+
: [...handlerTimingArr];
|
|
694
|
+
|
|
695
|
+
const metricsStore = requestContext._metricsStore;
|
|
696
|
+
if (metricsStore) {
|
|
697
|
+
// When the store was created at handler start (earlyMetricsStore),
|
|
698
|
+
// handler:total covers the full request. When ctx.debugPerformance()
|
|
699
|
+
// created the store mid-request its requestStart is now the threaded
|
|
700
|
+
// _handlerStart (== handlerStart), so both branches yield the true
|
|
701
|
+
// request entry; reading the store's own anchor keeps this correct even
|
|
702
|
+
// if a store ever lands without the threading (falls back to its start).
|
|
703
|
+
const totalStart = earlyMetricsStore
|
|
704
|
+
? handlerStart
|
|
705
|
+
: metricsStore.requestStart;
|
|
706
|
+
appendMetric(
|
|
707
|
+
metricsStore,
|
|
708
|
+
"handler:total",
|
|
709
|
+
totalStart,
|
|
710
|
+
performance.now() - totalStart,
|
|
711
|
+
);
|
|
712
|
+
const metricsTiming = buildMetricsTiming(
|
|
713
|
+
request.method,
|
|
714
|
+
url.pathname,
|
|
715
|
+
metricsStore,
|
|
716
|
+
);
|
|
717
|
+
if (metricsTiming) timingParts.push(metricsTiming);
|
|
718
|
+
}
|
|
484
719
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
response = finalizeResponse(mwResponse);
|
|
496
|
-
}
|
|
497
|
-
} else {
|
|
498
|
-
response = await coreHandler();
|
|
499
|
-
}
|
|
720
|
+
const fullTiming = timingParts.join(", ");
|
|
721
|
+
if (fullTiming && !isWebSocketUpgradeResponse(response)) {
|
|
722
|
+
try {
|
|
723
|
+
response.headers.set("Server-Timing", fullTiming);
|
|
724
|
+
} catch {
|
|
725
|
+
// Immutable headers (e.g. a passed-through platform Response) — drop
|
|
726
|
+
// the timing header, never the response. Instrumentation must not
|
|
727
|
+
// 500 a request.
|
|
728
|
+
}
|
|
729
|
+
}
|
|
500
730
|
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
const metricsStore = requestContext._metricsStore;
|
|
513
|
-
if (metricsStore) {
|
|
514
|
-
// When the store was created at handler start (earlyMetricsStore),
|
|
515
|
-
// handler:total covers the full request. When ctx.debugPerformance()
|
|
516
|
-
// created the store mid-request, use its requestStart to avoid a
|
|
517
|
-
// negative startTime offset.
|
|
518
|
-
const totalStart = earlyMetricsStore
|
|
519
|
-
? handlerStart
|
|
520
|
-
: metricsStore.requestStart;
|
|
521
|
-
appendMetric(
|
|
522
|
-
metricsStore,
|
|
523
|
-
"handler:total",
|
|
524
|
-
totalStart,
|
|
525
|
-
performance.now() - totalStart,
|
|
526
|
-
);
|
|
527
|
-
const metricsTiming = buildMetricsTiming(
|
|
528
|
-
request.method,
|
|
529
|
-
url.pathname,
|
|
530
|
-
metricsStore,
|
|
531
|
-
);
|
|
532
|
-
if (metricsTiming) timingParts.push(metricsTiming);
|
|
533
|
-
}
|
|
731
|
+
// Single open-redirect chokepoint: every response (PE, full-page,
|
|
732
|
+
// middleware short-circuit, response-route) funnels through here, so
|
|
733
|
+
// guarding browser-followed (3xx) redirects once covers them all and any
|
|
734
|
+
// future redirect exit. Soft SPA/Flight redirects are 200/204 and pass
|
|
735
|
+
// through untouched (validated client-side instead).
|
|
736
|
+
const guarded = guardOutgoingRedirect(
|
|
737
|
+
response,
|
|
738
|
+
url.origin,
|
|
739
|
+
router.basename,
|
|
740
|
+
);
|
|
534
741
|
|
|
535
|
-
|
|
536
|
-
|
|
742
|
+
// Stream-idle watchdog (opt-in via timeouts.streamIdleMs): bounds
|
|
743
|
+
// end-to-end idle flow on the streamed body — see rsc/stream-idle.ts
|
|
744
|
+
// for the semantics. Applied at this finalization chokepoint so every
|
|
745
|
+
// streaming exit is covered; websocket upgrades must never be
|
|
746
|
+
// reconstructed and bodiless responses have nothing to bound. The
|
|
747
|
+
// trip fires POST-handoff (the request ALS may be gone), so it
|
|
748
|
+
// reports via the eagerly captured surfaces — callOnError +
|
|
749
|
+
// router.telemetry directly — mirroring handleStore.onError.
|
|
750
|
+
// onTimeout does NOT apply: the response already left the handler,
|
|
751
|
+
// so no replacement Response can be served mid-stream.
|
|
752
|
+
let finalResponse = guarded;
|
|
753
|
+
const streamIdleMs = router.timeouts.streamIdleMs;
|
|
754
|
+
// Websocket check FIRST: a workerd upgrade response must never have
|
|
755
|
+
// its body getter poked (same invariant as the body_kind attribute
|
|
756
|
+
// below).
|
|
757
|
+
if (
|
|
758
|
+
isTimeoutEnabled(streamIdleMs) &&
|
|
759
|
+
!isWebSocketUpgradeResponse(guarded) &&
|
|
760
|
+
guarded.body
|
|
761
|
+
) {
|
|
762
|
+
const routeKey = requestContext._routeName;
|
|
763
|
+
finalResponse = applyStreamIdleTimeout(
|
|
764
|
+
guarded,
|
|
765
|
+
streamIdleMs!,
|
|
766
|
+
(tripInfo) => {
|
|
767
|
+
callOnError(tripInfo.error, "handler", {
|
|
768
|
+
request,
|
|
769
|
+
url,
|
|
770
|
+
env,
|
|
771
|
+
routeKey,
|
|
772
|
+
handledByBoundary: false,
|
|
773
|
+
metadata: {
|
|
774
|
+
timeout: true,
|
|
775
|
+
phase: "stream-idle",
|
|
776
|
+
durationMs: tripInfo.totalMs,
|
|
777
|
+
},
|
|
778
|
+
});
|
|
779
|
+
if (router.telemetry) {
|
|
780
|
+
safeEmit(resolveSink(router.telemetry), {
|
|
781
|
+
type: "request.timeout",
|
|
782
|
+
timestamp: performance.now(),
|
|
783
|
+
requestId: getRequestId(request),
|
|
784
|
+
phase: "stream-idle",
|
|
785
|
+
pathname: url.pathname,
|
|
786
|
+
routeKey,
|
|
787
|
+
durationMs: tripInfo.totalMs,
|
|
788
|
+
customHandler: false,
|
|
789
|
+
});
|
|
790
|
+
}
|
|
791
|
+
},
|
|
792
|
+
);
|
|
793
|
+
}
|
|
537
794
|
|
|
538
|
-
|
|
539
|
-
|
|
795
|
+
// Attributes describe the response actually handed to the host (after
|
|
796
|
+
// unsafe-redirect replacement), low-cardinality only. body_kind checks
|
|
797
|
+
// the websocket marker before the body getter so a workerd upgrade
|
|
798
|
+
// Response is never poked; `.body` is a getter access, not a read of
|
|
799
|
+
// the stream.
|
|
800
|
+
responseSpan.setAttribute(
|
|
801
|
+
"http.response.status_code",
|
|
802
|
+
finalResponse.status,
|
|
803
|
+
);
|
|
804
|
+
responseSpan.setAttribute(
|
|
805
|
+
"rango.response.mode",
|
|
806
|
+
requestContext._requestMode ?? "middleware-short-circuit",
|
|
807
|
+
);
|
|
808
|
+
responseSpan.setAttribute(
|
|
809
|
+
"rango.response.body_kind",
|
|
810
|
+
isWebSocketUpgradeResponse(finalResponse)
|
|
811
|
+
? "websocket"
|
|
812
|
+
: finalResponse.body === null
|
|
813
|
+
? "empty"
|
|
814
|
+
: "stream",
|
|
815
|
+
);
|
|
816
|
+
return finalResponse;
|
|
817
|
+
});
|
|
818
|
+
}),
|
|
819
|
+
);
|
|
540
820
|
};
|
|
541
821
|
|
|
542
822
|
// Core request handling logic (separated for middleware wrapping).
|
|
@@ -551,35 +831,6 @@ export function createRSCHandler<
|
|
|
551
831
|
): Promise<Response> {
|
|
552
832
|
const handlerTiming: string[] = variables.__handlerTiming || [];
|
|
553
833
|
|
|
554
|
-
// Debug manifest endpoint: handled before classification since it
|
|
555
|
-
// doesn't need a route match and needs trie access from the closure.
|
|
556
|
-
const isDev = process.env.NODE_ENV !== "production";
|
|
557
|
-
if (
|
|
558
|
-
url.searchParams.has("__debug_manifest") &&
|
|
559
|
-
(isDev || router.allowDebugManifest)
|
|
560
|
-
) {
|
|
561
|
-
const trie = getRouterTrie(router.id) ?? getRouteTrie();
|
|
562
|
-
const routeManifest = getRequiredRouteMap();
|
|
563
|
-
const { extractAncestryFromTrie } =
|
|
564
|
-
await import("../build/route-trie.js");
|
|
565
|
-
return new Response(
|
|
566
|
-
JSON.stringify(
|
|
567
|
-
{
|
|
568
|
-
routerId: router.id,
|
|
569
|
-
routeManifest,
|
|
570
|
-
routeAncestry: trie ? extractAncestryFromTrie(trie) : {},
|
|
571
|
-
routeTrie: trie,
|
|
572
|
-
precomputedEntries: getPrecomputedEntries(),
|
|
573
|
-
},
|
|
574
|
-
null,
|
|
575
|
-
2,
|
|
576
|
-
),
|
|
577
|
-
{
|
|
578
|
-
headers: { "Content-Type": "application/json" },
|
|
579
|
-
},
|
|
580
|
-
);
|
|
581
|
-
}
|
|
582
|
-
|
|
583
834
|
// ---- 1. Classify ----
|
|
584
835
|
// classifyRequest may throw RouteNotFoundError for unknown routes.
|
|
585
836
|
// In that case, fall through to a full-render plan so the pipeline
|
|
@@ -593,10 +844,7 @@ export function createRSCHandler<
|
|
|
593
844
|
routerId: router.id,
|
|
594
845
|
});
|
|
595
846
|
} catch (error) {
|
|
596
|
-
if (
|
|
597
|
-
error instanceof RouteNotFoundError ||
|
|
598
|
-
(error instanceof Error && error.name === "RouteNotFoundError")
|
|
599
|
-
) {
|
|
847
|
+
if (isRouteNotFoundError(error)) {
|
|
600
848
|
// Let the render path handle 404 — match()/matchPartial() will
|
|
601
849
|
// re-throw RouteNotFoundError and the catch block in
|
|
602
850
|
// executeRenderWithMiddleware renders the not-found page.
|
|
@@ -622,6 +870,12 @@ export function createRSCHandler<
|
|
|
622
870
|
const classifyDur = performance.now() - classifyStart;
|
|
623
871
|
handlerTiming.push(`handler-classify;dur=${classifyDur.toFixed(2)}`);
|
|
624
872
|
|
|
873
|
+
// Stash the classified mode for the rango.response span (rango.response.mode)
|
|
874
|
+
// — the outer handler tail cannot see the plan. Stays unset when middleware
|
|
875
|
+
// short-circuits before core execution runs (reported as
|
|
876
|
+
// "middleware-short-circuit").
|
|
877
|
+
getRequestContext()._requestMode = plan.mode;
|
|
878
|
+
|
|
625
879
|
// ---- 2. Terminal plans (no execution needed) ----
|
|
626
880
|
if (plan.mode === "redirect") {
|
|
627
881
|
// Redirects are handled by the pipeline (match/matchPartial),
|
|
@@ -637,24 +891,18 @@ export function createRSCHandler<
|
|
|
637
891
|
console.log(
|
|
638
892
|
`[RSC] Version mismatch: client=${url.searchParams.get("_rsc_v")}, server=${version}. Forcing reload.`,
|
|
639
893
|
);
|
|
640
|
-
return
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
894
|
+
return createReloadResponse(plan.reloadUrl);
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
if (plan.mode === "app-switch") {
|
|
898
|
+
// Cross-app SPA navigation crossed a host-router app boundary. Force a
|
|
899
|
+
// real document navigation so the target app's document is re-established
|
|
900
|
+
// (stylesheets, theme, warmup, prefetch-TTL). See request-classification.
|
|
901
|
+
return createReloadResponse(plan.reloadUrl);
|
|
647
902
|
}
|
|
648
903
|
|
|
649
904
|
// ---- 3. Origin guard (gate for action/loader/PE modes) ----
|
|
650
|
-
const originPhase
|
|
651
|
-
plan.mode === "action"
|
|
652
|
-
? "action"
|
|
653
|
-
: plan.mode === "loader"
|
|
654
|
-
? "loader"
|
|
655
|
-
: plan.mode === "pe-render"
|
|
656
|
-
? "pe-form"
|
|
657
|
-
: null;
|
|
905
|
+
const originPhase = ORIGIN_CHECK_PHASE_BY_MODE[plan.mode];
|
|
658
906
|
if (originPhase) {
|
|
659
907
|
const originResult = await checkRequestOrigin(
|
|
660
908
|
request,
|
|
@@ -682,22 +930,17 @@ export function createRSCHandler<
|
|
|
682
930
|
},
|
|
683
931
|
});
|
|
684
932
|
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
host: request.headers.get("host"),
|
|
697
|
-
});
|
|
698
|
-
}
|
|
699
|
-
} catch {
|
|
700
|
-
// Router context may not be available
|
|
933
|
+
if (router.telemetry) {
|
|
934
|
+
safeEmit(resolveSink(router.telemetry), {
|
|
935
|
+
type: "request.origin-rejected",
|
|
936
|
+
timestamp: performance.now(),
|
|
937
|
+
requestId: getRequestId(request),
|
|
938
|
+
method: request.method,
|
|
939
|
+
pathname: url.pathname,
|
|
940
|
+
phase: originPhase,
|
|
941
|
+
origin: request.headers.get("origin"),
|
|
942
|
+
host: request.headers.get("host"),
|
|
943
|
+
});
|
|
701
944
|
}
|
|
702
945
|
|
|
703
946
|
return originResult;
|
|
@@ -728,11 +971,11 @@ export function createRSCHandler<
|
|
|
728
971
|
nonce: string | undefined,
|
|
729
972
|
): Promise<Response> {
|
|
730
973
|
// Common setup
|
|
731
|
-
const handleStore =
|
|
974
|
+
const handleStore = getRequestContext()._handleStore;
|
|
732
975
|
|
|
733
976
|
// Wire up error reporting for late streaming-handle failures
|
|
734
977
|
handleStore.onError = (error: Error) => {
|
|
735
|
-
const reqCtx =
|
|
978
|
+
const reqCtx = getRequestContext();
|
|
736
979
|
callOnError(error, "handler", {
|
|
737
980
|
request,
|
|
738
981
|
url,
|
|
@@ -740,22 +983,17 @@ export function createRSCHandler<
|
|
|
740
983
|
params: reqCtx.params as Record<string, string>,
|
|
741
984
|
handledByBoundary: true,
|
|
742
985
|
});
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
params: reqCtx.params as Record<string, string>,
|
|
755
|
-
});
|
|
756
|
-
}
|
|
757
|
-
} catch {
|
|
758
|
-
// Router context may not be available (e.g. prerender path)
|
|
986
|
+
if (router.telemetry) {
|
|
987
|
+
safeEmit(resolveSink(router.telemetry), {
|
|
988
|
+
type: "handler.error",
|
|
989
|
+
timestamp: performance.now(),
|
|
990
|
+
requestId: getRequestId(request),
|
|
991
|
+
error,
|
|
992
|
+
handledByBoundary: true,
|
|
993
|
+
pathname: url.pathname,
|
|
994
|
+
routeKey: reqCtx._routeName,
|
|
995
|
+
params: reqCtx.params as Record<string, string>,
|
|
996
|
+
});
|
|
759
997
|
}
|
|
760
998
|
};
|
|
761
999
|
|
|
@@ -764,7 +1002,7 @@ export function createRSCHandler<
|
|
|
764
1002
|
// instead of calling resolveRoute again.
|
|
765
1003
|
if (plan.mode !== "redirect") {
|
|
766
1004
|
setRequestContextParams(plan.route.params, plan.route.routeKey);
|
|
767
|
-
|
|
1005
|
+
getRequestContext()._classifiedRoute = plan.route;
|
|
768
1006
|
}
|
|
769
1007
|
|
|
770
1008
|
const routeReverse = createReverseFunction(getRequiredRouteMap());
|
|
@@ -804,8 +1042,10 @@ export function createRSCHandler<
|
|
|
804
1042
|
);
|
|
805
1043
|
}
|
|
806
1044
|
const response = responseOutcome.result;
|
|
807
|
-
if (plan.negotiated) {
|
|
808
|
-
|
|
1045
|
+
if (plan.negotiated && !isWebSocketUpgradeResponse(response)) {
|
|
1046
|
+
// handleResponseRoute (callHandlerWithVary) already appends Vary: Accept
|
|
1047
|
+
// for negotiated responses; dedup so we don't emit Vary: Accept, Accept.
|
|
1048
|
+
appendVaryAccept(response);
|
|
809
1049
|
}
|
|
810
1050
|
return response;
|
|
811
1051
|
}
|
|
@@ -813,16 +1053,41 @@ export function createRSCHandler<
|
|
|
813
1053
|
// SSR setup: kick off in parallel for modes that need HTML rendering.
|
|
814
1054
|
// Placed after response-route short-circuit so response/mime routes
|
|
815
1055
|
// never pay for SSR work.
|
|
816
|
-
|
|
817
|
-
|
|
1056
|
+
//
|
|
1057
|
+
// Only kick off when the request will actually render HTML, so the
|
|
1058
|
+
// eager loadSSRModule() + user resolveStreaming() are not started (and
|
|
1059
|
+
// never consumed) for a request that returns an RSC stream — that wasted
|
|
1060
|
+
// work also leaves an orphaned Promise.all that can reject (D7). PE form
|
|
1061
|
+
// submissions always render HTML (handleProgressiveEnhancement renders via
|
|
1062
|
+
// getSSRSetup regardless of Accept). For full/partial-render and action,
|
|
1063
|
+
// the render-time HTML decision is exactly !isRscRequest — mayNeedSSR is
|
|
1064
|
+
// the coarse transport pre-filter, isRscRequest adds the partial/__rsc
|
|
1065
|
+
// flags; both share the same Accept rule (acceptsFlightExplicitly in
|
|
1066
|
+
// ssr-setup.ts), so the Accept call cannot drift between them. Both must
|
|
1067
|
+
// pass.
|
|
1068
|
+
const willRenderHtml =
|
|
1069
|
+
plan.mode === "pe-render" ||
|
|
1070
|
+
(mayNeedSSR(request, url) &&
|
|
1071
|
+
!isRscRequest(request, url, plan.mode === "partial-render"));
|
|
1072
|
+
if (plan.mode !== "loader" && willRenderHtml) {
|
|
1073
|
+
const ssrSetup = startSSRSetup(
|
|
818
1074
|
handlerCtx,
|
|
819
1075
|
request,
|
|
820
1076
|
env,
|
|
821
1077
|
url,
|
|
822
1078
|
router.debugPerformance
|
|
823
|
-
? () =>
|
|
1079
|
+
? () => getRequestContext()._metricsStore
|
|
824
1080
|
: undefined,
|
|
825
1081
|
);
|
|
1082
|
+
variables[SSR_SETUP_VAR] = ssrSetup;
|
|
1083
|
+
|
|
1084
|
+
// A handler can short-circuit before HTML rendering consumes this promise
|
|
1085
|
+
// (for example, by returning a redirect). Workerd cancels untracked dynamic
|
|
1086
|
+
// imports at the request boundary; retaining that cancelled promise in the
|
|
1087
|
+
// production SSR module memo makes every later document request hang.
|
|
1088
|
+
// Extending the request lifetime lets the shared setup settle without
|
|
1089
|
+
// delaying the short-circuit response.
|
|
1090
|
+
getRequestContext().executionContext?.waitUntil(ssrSetup);
|
|
826
1091
|
}
|
|
827
1092
|
|
|
828
1093
|
// ---- Loader fetch ----
|
|
@@ -861,14 +1126,20 @@ export function createRSCHandler<
|
|
|
861
1126
|
if (plan.mode === "action") {
|
|
862
1127
|
let actionContinuation: ActionContinuation | undefined;
|
|
863
1128
|
try {
|
|
1129
|
+
// Instrument the action execution as its own phase (action:<actionId> +
|
|
1130
|
+
// rango.action), so a POST shows the mutation time AND which action ran,
|
|
1131
|
+
// not just the downstream revalidation render. The action's own
|
|
1132
|
+
// loaders/fetches nest under rango.action.
|
|
864
1133
|
const actionOutcome = await withTimeout(
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
1134
|
+
observePhase(PHASES.action(plan.actionId), () =>
|
|
1135
|
+
executeServerAction(
|
|
1136
|
+
handlerCtx,
|
|
1137
|
+
request,
|
|
1138
|
+
env,
|
|
1139
|
+
url,
|
|
1140
|
+
plan.actionId,
|
|
1141
|
+
handleStore,
|
|
1142
|
+
),
|
|
872
1143
|
),
|
|
873
1144
|
router.timeouts.actionMs,
|
|
874
1145
|
"action",
|
|
@@ -921,47 +1192,17 @@ export function createRSCHandler<
|
|
|
921
1192
|
);
|
|
922
1193
|
}
|
|
923
1194
|
|
|
924
|
-
//
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
plan.
|
|
931
|
-
|
|
932
|
-
request,
|
|
933
|
-
env,
|
|
934
|
-
url,
|
|
935
|
-
variables,
|
|
936
|
-
nonce,
|
|
937
|
-
handleStore,
|
|
938
|
-
isPartial,
|
|
939
|
-
);
|
|
940
|
-
}
|
|
941
|
-
|
|
942
|
-
// PE that fell through (handleProgressiveEnhancement returned null)
|
|
943
|
-
// falls back to full render
|
|
944
|
-
if (plan.mode === "pe-render") {
|
|
945
|
-
return executeRenderWithMiddleware(
|
|
946
|
-
plan.route.routeMiddleware,
|
|
947
|
-
false,
|
|
948
|
-
plan.route.routeKey,
|
|
949
|
-
routeReverse,
|
|
950
|
-
request,
|
|
951
|
-
env,
|
|
952
|
-
url,
|
|
953
|
-
variables,
|
|
954
|
-
nonce,
|
|
955
|
-
handleStore,
|
|
956
|
-
false,
|
|
957
|
-
);
|
|
958
|
-
}
|
|
959
|
-
|
|
960
|
-
// Redirect plan that wasn't handled above (full-page redirect — let
|
|
961
|
-
// the pipeline handle it via match() which returns { redirect: url })
|
|
1195
|
+
// Full render, partial render, fallen-through PE, and full-page redirect all
|
|
1196
|
+
// render through the same middleware-wrapped path. Only full/partial-render
|
|
1197
|
+
// carry negotiation + the partial flag; pe/redirect render plainly.
|
|
1198
|
+
const isPartial = plan.mode === "partial-render";
|
|
1199
|
+
const negotiated =
|
|
1200
|
+
plan.mode === "full-render" || plan.mode === "partial-render"
|
|
1201
|
+
? plan.negotiated
|
|
1202
|
+
: false;
|
|
962
1203
|
return executeRenderWithMiddleware(
|
|
963
1204
|
plan.route.routeMiddleware,
|
|
964
|
-
|
|
1205
|
+
negotiated,
|
|
965
1206
|
plan.route.routeKey,
|
|
966
1207
|
routeReverse,
|
|
967
1208
|
request,
|
|
@@ -970,7 +1211,7 @@ export function createRSCHandler<
|
|
|
970
1211
|
variables,
|
|
971
1212
|
nonce,
|
|
972
1213
|
handleStore,
|
|
973
|
-
|
|
1214
|
+
isPartial,
|
|
974
1215
|
);
|
|
975
1216
|
}
|
|
976
1217
|
|
|
@@ -987,7 +1228,7 @@ export function createRSCHandler<
|
|
|
987
1228
|
url: URL,
|
|
988
1229
|
variables: Record<string, any>,
|
|
989
1230
|
nonce: string | undefined,
|
|
990
|
-
handleStore: ReturnType<typeof
|
|
1231
|
+
handleStore: ReturnType<typeof getRequestContext>["_handleStore"],
|
|
991
1232
|
isPartial: boolean,
|
|
992
1233
|
actionContinuation?: ActionContinuation,
|
|
993
1234
|
): Promise<Response> {
|
|
@@ -1014,17 +1255,28 @@ export function createRSCHandler<
|
|
|
1014
1255
|
nonce,
|
|
1015
1256
|
);
|
|
1016
1257
|
}
|
|
1017
|
-
if (negotiated) {
|
|
1018
|
-
response
|
|
1258
|
+
if (negotiated && !isWebSocketUpgradeResponse(response)) {
|
|
1259
|
+
// handleRscRendering bakes `accept` into the RSC response's Vary list;
|
|
1260
|
+
// dedup so the negotiated append does not list accept twice.
|
|
1261
|
+
appendVaryAccept(response);
|
|
1019
1262
|
}
|
|
1020
1263
|
return response;
|
|
1021
1264
|
} catch (error) {
|
|
1022
1265
|
// Check if middleware/handler returned Response
|
|
1023
1266
|
if (error instanceof Response) {
|
|
1267
|
+
// An action revalidation render is delivered to the client over the
|
|
1268
|
+
// same Flight-parsing path as a partial navigation, so a Response
|
|
1269
|
+
// thrown during it must be converted exactly like a partial one
|
|
1270
|
+
// (raw 200 -> hard-nav hint, 3xx -> Flight redirect). Without this,
|
|
1271
|
+
// the no-middleware path returns the raw Response (the with-middleware
|
|
1272
|
+
// path is already covered by the isPartial || actionContinuation
|
|
1273
|
+
// guard below).
|
|
1274
|
+
const treatAsPartial = isPartial || actionContinuation != null;
|
|
1275
|
+
|
|
1024
1276
|
// During partial (client-side navigation), a 200 Response from a handler
|
|
1025
1277
|
// means the route serves raw content (JSON, text, etc.), not JSX.
|
|
1026
1278
|
// Signal the browser to hard-navigate so it renders the raw response.
|
|
1027
|
-
if (
|
|
1279
|
+
if (treatAsPartial && error.status === 200) {
|
|
1028
1280
|
console.warn(
|
|
1029
1281
|
`[RSC] Route handler at ${url.pathname} returned a Response during client-side navigation. ` +
|
|
1030
1282
|
`Falling back to hard navigation. Use data-external on the <Link> to avoid the extra round-trip.`,
|
|
@@ -1038,10 +1290,11 @@ export function createRSCHandler<
|
|
|
1038
1290
|
});
|
|
1039
1291
|
}
|
|
1040
1292
|
|
|
1041
|
-
if (
|
|
1293
|
+
if (treatAsPartial) {
|
|
1042
1294
|
const intercepted = interceptRedirectForPartial(
|
|
1043
1295
|
error,
|
|
1044
1296
|
createRedirectFlightResponse,
|
|
1297
|
+
{ requestOrigin: url.origin, basename: router.basename },
|
|
1045
1298
|
);
|
|
1046
1299
|
if (intercepted) return intercepted;
|
|
1047
1300
|
}
|
|
@@ -1050,10 +1303,7 @@ export function createRSCHandler<
|
|
|
1050
1303
|
}
|
|
1051
1304
|
|
|
1052
1305
|
// Render 404 page for unmatched routes
|
|
1053
|
-
|
|
1054
|
-
error instanceof RouteNotFoundError ||
|
|
1055
|
-
(error instanceof Error && error.name === "RouteNotFoundError");
|
|
1056
|
-
if (isRouteNotFound) {
|
|
1306
|
+
if (isRouteNotFoundError(error)) {
|
|
1057
1307
|
callOnError(error, "routing", {
|
|
1058
1308
|
request,
|
|
1059
1309
|
url,
|
|
@@ -1061,11 +1311,12 @@ export function createRSCHandler<
|
|
|
1061
1311
|
handledByBoundary: true,
|
|
1062
1312
|
});
|
|
1063
1313
|
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1314
|
+
// No boundary to consult: an unmatched route has no entry chain, so
|
|
1315
|
+
// this always lands on the router option or the shared default.
|
|
1316
|
+
const notFoundComponent = resolveDefaultNotFound(
|
|
1317
|
+
router.notFound,
|
|
1318
|
+
url.pathname,
|
|
1319
|
+
);
|
|
1069
1320
|
|
|
1070
1321
|
const notFoundSegment = {
|
|
1071
1322
|
id: "notFound",
|
|
@@ -1084,51 +1335,81 @@ export function createRSCHandler<
|
|
|
1084
1335
|
segments: [notFoundSegment],
|
|
1085
1336
|
matched: [],
|
|
1086
1337
|
diff: [],
|
|
1338
|
+
// Shape parity with buildFullPayload (rsc-rendering.ts): the 404
|
|
1339
|
+
// payload carries params/resolvedIds/prefetchCacheTTL the same way a
|
|
1340
|
+
// matched full render does. resolvedIds mirrors the rendered segment
|
|
1341
|
+
// list (the single notFound segment) like the error-boundary path
|
|
1342
|
+
// (match-api.ts) does for its boundary segment.
|
|
1343
|
+
resolvedIds: [notFoundSegment.id],
|
|
1344
|
+
params: {},
|
|
1087
1345
|
isPartial: false,
|
|
1088
1346
|
rootLayout: router.rootLayout,
|
|
1089
|
-
|
|
1347
|
+
// Full (404) render: resolve deferred handle values server-side.
|
|
1348
|
+
handles: resolvedHandleStream(handleStore),
|
|
1090
1349
|
version,
|
|
1350
|
+
prefetchCacheTTL: router.prefetchCacheTTL,
|
|
1351
|
+
prefetchCacheSize: router.prefetchCacheSize,
|
|
1352
|
+
prefetchConcurrency: router.prefetchConcurrency,
|
|
1353
|
+
defaultPrefetch: router.defaultPrefetch,
|
|
1354
|
+
stateCookieName: router.resolvedStateCookieName,
|
|
1091
1355
|
themeConfig: router.themeConfig,
|
|
1092
1356
|
warmupEnabled: router.warmupEnabled,
|
|
1093
|
-
|
|
1357
|
+
strictMode: router.strictMode,
|
|
1358
|
+
initialTheme: getRequestContext().theme,
|
|
1094
1359
|
},
|
|
1095
1360
|
};
|
|
1096
1361
|
|
|
1097
|
-
const
|
|
1098
|
-
onError: (error: unknown) => {
|
|
1099
|
-
callOnError(error, "rendering", { request, url, env });
|
|
1100
|
-
},
|
|
1101
|
-
});
|
|
1102
|
-
|
|
1103
|
-
const isRscRequest =
|
|
1104
|
-
isPartial ||
|
|
1105
|
-
(!request.headers.get("accept")?.includes("text/html") &&
|
|
1106
|
-
!url.searchParams.has("__html")) ||
|
|
1107
|
-
url.searchParams.has("__rsc");
|
|
1108
|
-
|
|
1109
|
-
if (isRscRequest) {
|
|
1110
|
-
return createResponseWithMergedHeaders(rscStream, {
|
|
1111
|
-
status: 404,
|
|
1112
|
-
headers: { "content-type": "text/x-component;charset=utf-8" },
|
|
1113
|
-
});
|
|
1114
|
-
}
|
|
1115
|
-
|
|
1116
|
-
const [ssrModule, streamMode] = await getSSRSetup(
|
|
1117
|
-
handlerCtx,
|
|
1362
|
+
const isNotFoundFlightResponse = isRscRequest(
|
|
1118
1363
|
request,
|
|
1119
|
-
env,
|
|
1120
1364
|
url,
|
|
1121
|
-
|
|
1365
|
+
isPartial,
|
|
1366
|
+
);
|
|
1367
|
+
const notFoundStageTracking = {
|
|
1368
|
+
mode: isPartial ? ("partial" as const) : ("full" as const),
|
|
1369
|
+
routeKey,
|
|
1370
|
+
};
|
|
1371
|
+
return renderRscResponse(
|
|
1372
|
+
{
|
|
1373
|
+
ctx: handlerCtx,
|
|
1374
|
+
request,
|
|
1375
|
+
url,
|
|
1376
|
+
env,
|
|
1377
|
+
payload,
|
|
1378
|
+
// The 404 path historically records no rsc-serialize metric (it
|
|
1379
|
+
// used the standalone Flight constructor, whose gate was opt-in);
|
|
1380
|
+
// opt out explicitly since renderRscResponse defaults the gate on.
|
|
1381
|
+
recordSerializeMetric: false,
|
|
1382
|
+
init: isNotFoundFlightResponse
|
|
1383
|
+
? {
|
|
1384
|
+
status: 404,
|
|
1385
|
+
headers: {
|
|
1386
|
+
"content-type": "text/x-component;charset=utf-8",
|
|
1387
|
+
// Router identity for the client's pre-decode integrity
|
|
1388
|
+
// check; a same-app 404 applies in place.
|
|
1389
|
+
"X-RSC-Router-Id": router.id,
|
|
1390
|
+
},
|
|
1391
|
+
}
|
|
1392
|
+
: {
|
|
1393
|
+
status: 404,
|
|
1394
|
+
headers: {
|
|
1395
|
+
"content-type": "text/html;charset=utf-8",
|
|
1396
|
+
},
|
|
1397
|
+
},
|
|
1398
|
+
tracking: notFoundStageTracking,
|
|
1399
|
+
},
|
|
1400
|
+
isNotFoundFlightResponse
|
|
1401
|
+
? undefined
|
|
1402
|
+
: {
|
|
1403
|
+
html: createSsrHtmlStage({
|
|
1404
|
+
ctx: handlerCtx,
|
|
1405
|
+
request,
|
|
1406
|
+
env,
|
|
1407
|
+
url,
|
|
1408
|
+
metricsStore: getRequestContext()._metricsStore,
|
|
1409
|
+
render: { nonce },
|
|
1410
|
+
}),
|
|
1411
|
+
},
|
|
1122
1412
|
);
|
|
1123
|
-
const htmlStream = await ssrModule.renderHTML(rscStream, {
|
|
1124
|
-
nonce,
|
|
1125
|
-
streamMode,
|
|
1126
|
-
});
|
|
1127
|
-
|
|
1128
|
-
return createResponseWithMergedHeaders(htmlStream, {
|
|
1129
|
-
status: 404,
|
|
1130
|
-
headers: { "content-type": "text/html;charset=utf-8" },
|
|
1131
|
-
});
|
|
1132
1413
|
}
|
|
1133
1414
|
|
|
1134
1415
|
// Report unhandled errors
|
|
@@ -1159,6 +1440,7 @@ export function createRSCHandler<
|
|
|
1159
1440
|
const intercepted = interceptRedirectForPartial(
|
|
1160
1441
|
mwResponse,
|
|
1161
1442
|
createRedirectFlightResponse,
|
|
1443
|
+
{ requestOrigin: url.origin, basename: router.basename },
|
|
1162
1444
|
);
|
|
1163
1445
|
if (intercepted) return intercepted;
|
|
1164
1446
|
}
|