@rangojs/router 0.0.0-experimental.8 → 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 +13 -0
- package/README.md +472 -7
- 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 +2343 -0
- package/dist/bin/rango.js.map +1 -0
- package/dist/browser/event-controller.d.ts +191 -0
- package/dist/browser/event-controller.d.ts.map +1 -0
- package/dist/browser/event-controller.js +559 -0
- package/dist/browser/event-controller.js.map +1 -0
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +14 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/link-interceptor.d.ts +38 -0
- package/dist/browser/link-interceptor.d.ts.map +1 -0
- package/dist/browser/link-interceptor.js +99 -0
- package/dist/browser/link-interceptor.js.map +1 -0
- package/dist/browser/logging.d.ts +10 -0
- package/dist/browser/logging.d.ts.map +1 -0
- package/dist/browser/logging.js +29 -0
- package/dist/browser/logging.js.map +1 -0
- package/dist/browser/lru-cache.d.ts +17 -0
- package/dist/browser/lru-cache.d.ts.map +1 -0
- package/dist/browser/lru-cache.js +50 -0
- package/dist/browser/lru-cache.js.map +1 -0
- package/dist/browser/merge-segment-loaders.d.ts +39 -0
- package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
- package/dist/browser/merge-segment-loaders.js +102 -0
- package/dist/browser/merge-segment-loaders.js.map +1 -0
- package/dist/browser/navigation-bridge.d.ts +102 -0
- package/dist/browser/navigation-bridge.d.ts.map +1 -0
- package/dist/browser/navigation-bridge.js +708 -0
- package/dist/browser/navigation-bridge.js.map +1 -0
- package/dist/browser/navigation-client.d.ts +25 -0
- package/dist/browser/navigation-client.d.ts.map +1 -0
- package/dist/browser/navigation-client.js +157 -0
- package/dist/browser/navigation-client.js.map +1 -0
- package/dist/browser/navigation-store.d.ts +101 -0
- package/dist/browser/navigation-store.d.ts.map +1 -0
- package/dist/browser/navigation-store.js +625 -0
- package/dist/browser/navigation-store.js.map +1 -0
- package/dist/browser/partial-update.d.ts +75 -0
- package/dist/browser/partial-update.d.ts.map +1 -0
- package/dist/browser/partial-update.js +426 -0
- package/dist/browser/partial-update.js.map +1 -0
- package/dist/browser/react/Link.d.ts +86 -0
- package/dist/browser/react/Link.d.ts.map +1 -0
- package/dist/browser/react/Link.js +128 -0
- package/dist/browser/react/Link.js.map +1 -0
- package/dist/browser/react/NavigationProvider.d.ts +63 -0
- package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
- package/dist/browser/react/NavigationProvider.js +216 -0
- package/dist/browser/react/NavigationProvider.js.map +1 -0
- package/dist/browser/react/ScrollRestoration.d.ts +75 -0
- package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
- package/dist/browser/react/ScrollRestoration.js +57 -0
- package/dist/browser/react/ScrollRestoration.js.map +1 -0
- package/dist/browser/react/context.d.ts +46 -0
- package/dist/browser/react/context.d.ts.map +1 -0
- package/dist/browser/react/context.js +10 -0
- package/dist/browser/react/context.js.map +1 -0
- package/dist/browser/react/index.d.ts +11 -0
- package/dist/browser/react/index.d.ts.map +1 -0
- package/dist/browser/react/index.js +22 -0
- package/dist/browser/react/index.js.map +1 -0
- package/dist/browser/react/location-state-shared.d.ts +63 -0
- package/dist/browser/react/location-state-shared.d.ts.map +1 -0
- package/dist/browser/react/location-state-shared.js +81 -0
- package/dist/browser/react/location-state-shared.js.map +1 -0
- package/dist/browser/react/location-state.d.ts +23 -0
- package/dist/browser/react/location-state.d.ts.map +1 -0
- package/dist/browser/react/location-state.js +29 -0
- package/dist/browser/react/location-state.js.map +1 -0
- package/dist/browser/react/mount-context.d.ts +24 -0
- package/dist/browser/react/mount-context.d.ts.map +1 -0
- package/dist/browser/react/mount-context.js +24 -0
- package/dist/browser/react/mount-context.js.map +1 -0
- package/dist/browser/react/use-action.d.ts +64 -0
- package/dist/browser/react/use-action.d.ts.map +1 -0
- package/dist/browser/react/use-action.js +134 -0
- package/dist/browser/react/use-action.js.map +1 -0
- package/dist/browser/react/use-client-cache.d.ts +41 -0
- package/dist/browser/react/use-client-cache.d.ts.map +1 -0
- package/{src/browser/react/use-client-cache.ts → dist/browser/react/use-client-cache.js} +9 -26
- package/dist/browser/react/use-client-cache.js.map +1 -0
- package/dist/browser/react/use-handle.d.ts +31 -0
- package/dist/browser/react/use-handle.d.ts.map +1 -0
- package/dist/browser/react/use-handle.js +144 -0
- package/dist/browser/react/use-handle.js.map +1 -0
- package/dist/browser/react/use-href.d.ts +33 -0
- package/dist/browser/react/use-href.d.ts.map +1 -0
- package/dist/browser/react/use-href.js +39 -0
- package/dist/browser/react/use-href.js.map +1 -0
- package/dist/browser/react/use-link-status.d.ts +37 -0
- package/dist/browser/react/use-link-status.d.ts.map +1 -0
- package/dist/browser/react/use-link-status.js +99 -0
- package/dist/browser/react/use-link-status.js.map +1 -0
- package/dist/browser/react/use-mount.d.ts +25 -0
- package/dist/browser/react/use-mount.d.ts.map +1 -0
- package/dist/browser/react/use-mount.js +30 -0
- package/dist/browser/react/use-mount.js.map +1 -0
- package/dist/browser/react/use-navigation.d.ts +27 -0
- package/dist/browser/react/use-navigation.d.ts.map +1 -0
- package/dist/browser/react/use-navigation.js +87 -0
- package/dist/browser/react/use-navigation.js.map +1 -0
- package/dist/browser/react/use-segments.d.ts +38 -0
- package/dist/browser/react/use-segments.d.ts.map +1 -0
- package/dist/browser/react/use-segments.js +130 -0
- package/dist/browser/react/use-segments.js.map +1 -0
- package/dist/browser/request-controller.d.ts +26 -0
- package/dist/browser/request-controller.d.ts.map +1 -0
- package/dist/browser/request-controller.js +147 -0
- package/dist/browser/request-controller.js.map +1 -0
- package/dist/browser/rsc-router.d.ts +129 -0
- package/dist/browser/rsc-router.d.ts.map +1 -0
- package/dist/browser/rsc-router.js +195 -0
- package/dist/browser/rsc-router.js.map +1 -0
- package/dist/browser/scroll-restoration.d.ts +93 -0
- package/dist/browser/scroll-restoration.d.ts.map +1 -0
- package/dist/browser/scroll-restoration.js +321 -0
- package/dist/browser/scroll-restoration.js.map +1 -0
- package/dist/browser/segment-structure-assert.d.ts +17 -0
- package/dist/browser/segment-structure-assert.d.ts.map +1 -0
- package/dist/browser/segment-structure-assert.js +59 -0
- package/dist/browser/segment-structure-assert.js.map +1 -0
- package/dist/browser/server-action-bridge.d.ts +26 -0
- package/dist/browser/server-action-bridge.d.ts.map +1 -0
- package/dist/browser/server-action-bridge.js +668 -0
- package/dist/browser/server-action-bridge.js.map +1 -0
- package/dist/browser/shallow.d.ts +12 -0
- package/dist/browser/shallow.d.ts.map +1 -0
- package/dist/browser/shallow.js +34 -0
- package/dist/browser/shallow.js.map +1 -0
- package/dist/browser/types.d.ts +369 -0
- package/dist/browser/types.d.ts.map +1 -0
- package/dist/browser/types.js +2 -0
- package/dist/browser/types.js.map +1 -0
- package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
- package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-cli.test.js +237 -0
- package/dist/build/__tests__/generate-cli.test.js.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.js +119 -0
- package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.js +620 -0
- package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.js +308 -0
- package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
- package/dist/build/generate-manifest.d.ts +81 -0
- package/dist/build/generate-manifest.d.ts.map +1 -0
- package/dist/build/generate-manifest.js +276 -0
- package/dist/build/generate-manifest.js.map +1 -0
- package/dist/build/generate-route-types.d.ts +115 -0
- package/dist/build/generate-route-types.d.ts.map +1 -0
- package/dist/build/generate-route-types.js +740 -0
- package/dist/build/generate-route-types.js.map +1 -0
- package/dist/build/index.d.ts +21 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +21 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/route-trie.d.ts +71 -0
- package/dist/build/route-trie.d.ts.map +1 -0
- package/dist/build/route-trie.js +175 -0
- package/dist/build/route-trie.js.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.js +208 -0
- package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
- package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
- package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
- package/dist/cache/__tests__/document-cache.test.js +345 -0
- package/dist/cache/__tests__/document-cache.test.js.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
- package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
- package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-store.test.js +367 -0
- package/dist/cache/__tests__/memory-store.test.js.map +1 -0
- package/dist/cache/cache-scope.d.ts +102 -0
- package/dist/cache/cache-scope.d.ts.map +1 -0
- package/dist/cache/cache-scope.js +440 -0
- package/dist/cache/cache-scope.js.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
- package/dist/cache/cf/cf-cache-store.d.ts +165 -0
- package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
- package/dist/cache/cf/cf-cache-store.js +242 -0
- package/dist/cache/cf/cf-cache-store.js.map +1 -0
- package/dist/cache/cf/index.d.ts +14 -0
- package/dist/cache/cf/index.d.ts.map +1 -0
- package/dist/cache/cf/index.js +17 -0
- package/dist/cache/cf/index.js.map +1 -0
- package/dist/cache/document-cache.d.ts +64 -0
- package/dist/cache/document-cache.d.ts.map +1 -0
- package/dist/cache/document-cache.js +228 -0
- package/dist/cache/document-cache.js.map +1 -0
- package/dist/cache/index.d.ts +19 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +21 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/memory-segment-store.d.ts +110 -0
- package/dist/cache/memory-segment-store.d.ts.map +1 -0
- package/dist/cache/memory-segment-store.js +117 -0
- package/dist/cache/memory-segment-store.js.map +1 -0
- package/dist/cache/memory-store.d.ts +41 -0
- package/dist/cache/memory-store.d.ts.map +1 -0
- package/dist/cache/memory-store.js +191 -0
- package/dist/cache/memory-store.js.map +1 -0
- package/dist/cache/types.d.ts +317 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +12 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/client.d.ts +248 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +367 -0
- package/dist/client.js.map +1 -0
- package/dist/client.rsc.d.ts +26 -0
- package/dist/client.rsc.d.ts.map +1 -0
- package/dist/client.rsc.js +46 -0
- package/dist/client.rsc.js.map +1 -0
- package/dist/component-utils.d.ts +36 -0
- package/dist/component-utils.d.ts.map +1 -0
- package/dist/component-utils.js +61 -0
- package/dist/component-utils.js.map +1 -0
- package/dist/components/DefaultDocument.d.ts +13 -0
- package/dist/components/DefaultDocument.d.ts.map +1 -0
- package/dist/components/DefaultDocument.js +15 -0
- package/dist/components/DefaultDocument.js.map +1 -0
- package/dist/debug.d.ts +58 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +157 -0
- package/dist/debug.js.map +1 -0
- package/dist/default-error-boundary.d.ts +11 -0
- package/dist/default-error-boundary.d.ts.map +1 -0
- package/dist/default-error-boundary.js +45 -0
- package/dist/default-error-boundary.js.map +1 -0
- package/dist/deps/browser.d.ts +2 -0
- package/dist/deps/browser.d.ts.map +1 -0
- package/dist/deps/browser.js +3 -0
- package/dist/deps/browser.js.map +1 -0
- package/dist/deps/html-stream-client.d.ts +2 -0
- package/dist/deps/html-stream-client.d.ts.map +1 -0
- package/dist/deps/html-stream-client.js +3 -0
- package/dist/deps/html-stream-client.js.map +1 -0
- package/dist/deps/html-stream-server.d.ts +2 -0
- package/dist/deps/html-stream-server.d.ts.map +1 -0
- package/dist/deps/html-stream-server.js +3 -0
- package/dist/deps/html-stream-server.js.map +1 -0
- package/dist/deps/rsc.d.ts +2 -0
- package/dist/deps/rsc.d.ts.map +1 -0
- package/dist/deps/rsc.js +4 -0
- package/dist/deps/rsc.js.map +1 -0
- package/dist/deps/ssr.d.ts +2 -0
- package/dist/deps/ssr.d.ts.map +1 -0
- package/dist/deps/ssr.js +3 -0
- package/dist/deps/ssr.js.map +1 -0
- package/dist/errors.d.ts +174 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +241 -0
- package/dist/errors.js.map +1 -0
- package/dist/handle.d.ts +78 -0
- package/dist/handle.d.ts.map +1 -0
- package/dist/handle.js +82 -0
- package/dist/handle.js.map +1 -0
- package/dist/handles/MetaTags.d.ts +14 -0
- package/dist/handles/MetaTags.d.ts.map +1 -0
- package/dist/handles/MetaTags.js +136 -0
- package/dist/handles/MetaTags.js.map +1 -0
- package/dist/handles/index.d.ts +6 -0
- package/dist/handles/index.d.ts.map +1 -0
- package/{src/handles/index.ts → dist/handles/index.js} +1 -1
- 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/{src/href-context.ts → dist/href-context.d.ts} +7 -11
- 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 -8
- 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 +12042 -1346
- 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/{src/vite/package-resolution.ts → dist/vite/package-resolution.js} +53 -66
- 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/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +12 -16
- package/dist/vite/virtual-entries.js.map +1 -0
- package/package.json +170 -77
- package/skills/api-client/SKILL.md +211 -0
- package/skills/breadcrumbs/SKILL.md +359 -0
- package/skills/bundle-analysis/SKILL.md +159 -0
- package/skills/cache-guide/SKILL.md +492 -0
- package/skills/caching/SKILL.md +452 -26
- 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 +292 -0
- package/skills/css/SKILL.md +76 -0
- package/skills/debug-manifest/SKILL.md +16 -18
- package/skills/defer-hydration/SKILL.md +235 -0
- package/skills/deployment-caching/SKILL.md +176 -0
- package/skills/document-cache/SKILL.md +125 -65
- package/skills/fonts/SKILL.md +167 -0
- package/skills/handler-use/SKILL.md +364 -0
- package/skills/hooks/SKILL.md +76 -432
- 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 +320 -0
- package/skills/i18n/SKILL.md +276 -0
- package/skills/intercept/SKILL.md +215 -16
- package/skills/layout/SKILL.md +147 -7
- package/skills/links/SKILL.md +360 -33
- package/skills/loader/SKILL.md +762 -51
- package/skills/middleware/SKILL.md +251 -38
- package/skills/migrate-nextjs/SKILL.md +854 -0
- package/skills/migrate-nextjs/backend-host-swap.md +120 -0
- package/skills/migrate-react-router/SKILL.md +189 -0
- 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 +165 -0
- package/skills/observability/SKILL.md +231 -0
- package/skills/parallel/SKILL.md +327 -4
- package/skills/ppr/SKILL.md +918 -0
- package/skills/prerender/SKILL.md +751 -0
- package/skills/rango/SKILL.md +387 -17
- package/skills/react-compiler/SKILL.md +168 -0
- package/skills/response-routes/SKILL.md +539 -0
- package/skills/route/SKILL.md +399 -15
- package/skills/router-setup/SKILL.md +270 -34
- 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 +153 -0
- 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 +16 -12
- package/skills/typesafety/SKILL.md +45 -387
- 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 +430 -0
- 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 +77 -44
- package/src/bin/rango.ts +325 -0
- package/src/browser/action-coordinator.ts +114 -0
- package/src/browser/action-fence.ts +47 -0
- package/src/browser/app-shell.ts +39 -0
- package/src/browser/app-version.ts +14 -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 +477 -217
- package/src/browser/history-state.ts +101 -0
- package/src/browser/index.ts +3 -3
- package/src/browser/intercept-utils.ts +52 -0
- package/src/browser/invalidate-client-cache.ts +52 -0
- package/src/browser/link-interceptor.ts +487 -18
- package/src/browser/logging.ts +83 -0
- package/src/browser/merge-segment-loaders.ts +23 -13
- package/src/browser/navigation-bridge.ts +471 -570
- package/src/browser/navigation-client.ts +343 -79
- package/src/browser/navigation-store-handle.ts +38 -0
- package/src/browser/navigation-store.ts +228 -366
- package/src/browser/navigation-transaction.ts +247 -0
- package/src/browser/network-error-handler.ts +88 -0
- package/src/browser/notify-listeners.ts +22 -0
- package/src/browser/partial-update.ts +491 -365
- package/src/browser/prefetch/cache.ts +457 -0
- package/src/browser/prefetch/default-strategy.ts +74 -0
- package/src/browser/prefetch/fetch.ts +548 -0
- package/src/browser/prefetch/invalidation.ts +30 -0
- package/src/browser/prefetch/loader.ts +111 -0
- package/src/browser/prefetch/observer.ts +93 -0
- package/src/browser/prefetch/policy.ts +48 -0
- package/src/browser/prefetch/queue.ts +209 -0
- package/src/browser/prefetch/resource-ready.ts +77 -0
- package/src/browser/prefetch/runtime.ts +6 -0
- package/src/browser/rango-state.ts +215 -0
- package/src/browser/react/Link.tsx +332 -85
- package/src/browser/react/NavigationProvider.tsx +275 -109
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/context.ts +15 -0
- package/src/browser/react/filter-segment-order.ts +70 -0
- package/src/browser/react/index.ts +0 -48
- package/src/browser/react/location-state-shared.ts +272 -60
- package/src/browser/react/location-state.ts +90 -20
- package/src/browser/react/mount-context.ts +6 -1
- package/src/browser/react/nonce-context.ts +23 -0
- package/src/browser/react/shallow-equal.ts +27 -0
- package/src/browser/react/use-action.ts +35 -66
- package/src/browser/react/use-handle.ts +39 -132
- package/src/browser/react/use-href.tsx +9 -2
- package/src/browser/react/use-link-status.ts +39 -13
- package/src/browser/react/use-navigation.ts +53 -69
- package/src/browser/react/use-params.ts +75 -0
- package/src/browser/react/use-pathname.ts +47 -0
- package/src/browser/react/use-reverse.ts +106 -0
- package/src/browser/react/use-router.ts +127 -0
- package/src/browser/react/use-search-params.ts +174 -0
- package/src/browser/react/use-segments.ts +72 -99
- package/src/browser/response-adapter.ts +164 -0
- package/src/browser/rsc-router.tsx +446 -74
- package/src/browser/scroll-restoration.ts +140 -50
- package/src/browser/segment-reconciler.ts +253 -0
- package/src/browser/segment-structure-assert.ts +17 -1
- package/src/browser/server-action-bridge.ts +707 -603
- package/src/browser/types.ts +266 -75
- package/src/browser/validate-redirect-origin.ts +56 -0
- package/src/build/collect-fallback-refs.ts +107 -0
- package/src/build/generate-manifest.ts +324 -84
- package/src/build/generate-route-types.ts +41 -0
- package/src/build/index.ts +22 -1
- package/src/build/merge-full-manifests.ts +161 -0
- package/src/build/prefix-tree-utils.ts +123 -0
- package/src/build/route-trie.ts +54 -0
- package/src/build/route-types/ast-helpers.ts +25 -0
- package/src/build/route-types/ast-route-extraction.ts +105 -0
- package/src/build/route-types/codegen.ts +113 -0
- package/src/build/route-types/include-resolution.ts +867 -0
- package/src/build/route-types/param-extraction.ts +51 -0
- package/src/build/route-types/per-module-writer.ts +149 -0
- package/src/build/route-types/router-processing.ts +726 -0
- package/src/build/route-types/scan-filter.ts +85 -0
- package/src/build/route-types/source-scan.ts +216 -0
- package/src/build/runtime-discovery.ts +234 -0
- package/src/cache/background-task.ts +34 -0
- package/src/cache/cache-error.ts +104 -0
- package/src/cache/cache-exec-scope.ts +47 -0
- package/src/cache/cache-key-utils.ts +102 -0
- package/src/cache/cache-policy.ts +199 -0
- package/src/cache/cache-runtime.ts +787 -0
- package/src/cache/cache-scope.ts +478 -342
- 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 +3397 -152
- 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 +21 -16
- package/src/cache/document-cache.ts +275 -105
- package/src/cache/handle-capture.ts +81 -0
- package/src/cache/handle-snapshot.ts +132 -0
- package/src/cache/index.ts +33 -35
- package/src/cache/memory-segment-store.ts +457 -30
- package/src/cache/profile-registry.ts +88 -0
- package/src/cache/read-through-swr.ts +184 -0
- package/src/cache/search-params-filter.ts +118 -0
- package/src/cache/segment-codec.ts +311 -0
- package/src/cache/shell-snapshot.ts +516 -0
- package/src/cache/tag-invalidation.ts +230 -0
- package/src/cache/taint.ts +172 -0
- package/src/cache/types.ts +405 -212
- 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 +55 -21
- package/src/client.tsx +179 -330
- package/src/cloudflare/index.ts +11 -0
- package/src/cloudflare/tracing.ts +112 -0
- package/src/component-utils.ts +23 -4
- package/src/components/DefaultDocument.tsx +13 -3
- package/src/context-var.ts +168 -0
- package/src/debug.ts +19 -9
- 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 +149 -3
- package/src/escape-script.ts +52 -0
- package/src/handle.ts +111 -55
- package/src/handles/MetaTags.tsx +83 -59
- package/src/handles/Scripts.tsx +183 -0
- package/src/handles/breadcrumbs.ts +93 -0
- package/src/handles/deferred-resolution.ts +134 -0
- package/src/handles/is-thenable.ts +16 -0
- package/src/handles/meta.ts +44 -53
- package/src/handles/script.ts +244 -0
- package/src/host/cookie-handler.ts +20 -65
- package/src/host/errors.ts +21 -30
- package/src/host/index.ts +13 -9
- package/src/host/pattern-matcher.ts +50 -79
- package/src/host/router.ts +151 -121
- package/src/host/testing.ts +45 -32
- package/src/host/types.ts +52 -11
- package/src/host/utils.ts +2 -2
- package/src/href-client.ts +236 -31
- package/src/index.rsc.ts +252 -20
- package/src/index.ts +343 -30
- package/src/internal-debug.ts +12 -0
- package/src/loader-redirect.tsx +64 -0
- package/src/loader-store.ts +500 -0
- package/src/loader.rsc.ts +39 -163
- package/src/loader.ts +31 -13
- package/src/missing-id-error.ts +68 -0
- package/src/outlet-context.ts +21 -1
- package/src/outlet-provider.tsx +59 -0
- package/src/prerender/build-shell-capture.ts +453 -0
- package/src/prerender/param-hash.ts +37 -0
- package/src/prerender/shell-manifest-key.ts +20 -0
- package/src/prerender/store.ts +195 -0
- package/src/prerender.ts +592 -0
- 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 +380 -0
- package/src/root-error-boundary.tsx +42 -48
- package/src/route-content-wrapper.tsx +123 -78
- package/src/route-definition/dsl-helpers.ts +1150 -0
- package/src/route-definition/helper-factories.ts +88 -0
- package/src/route-definition/helpers-types.ts +522 -0
- package/src/route-definition/index.ts +54 -0
- package/src/route-definition/redirect.ts +133 -0
- package/src/route-definition/resolve-handler-use.ts +160 -0
- package/src/route-definition/use-item-types.ts +29 -0
- package/src/route-definition.ts +1 -1428
- package/src/route-map-builder.ts +249 -127
- package/src/route-name.ts +53 -0
- package/src/route-types.ts +87 -45
- package/src/router/basename.ts +14 -0
- package/src/router/content-negotiation.ts +305 -0
- package/src/router/debug-manifest.ts +72 -0
- package/src/router/error-handling.ts +119 -38
- package/src/router/find-match.ts +259 -0
- package/src/router/handler-context.ts +439 -86
- package/src/router/instrument.ts +401 -0
- package/src/router/intercept-resolution.ts +479 -0
- package/src/router/lazy-includes.ts +261 -0
- package/src/router/loader-resolution.ts +714 -142
- package/src/router/logging.ts +245 -0
- package/src/router/manifest.ts +225 -63
- package/src/router/match-api.ts +591 -0
- package/src/router/match-context.ts +5 -25
- package/src/router/match-handlers.ts +537 -0
- package/src/router/match-middleware/background-revalidation.ts +128 -97
- package/src/router/match-middleware/cache-lookup.ts +537 -73
- package/src/router/match-middleware/cache-store.ts +214 -60
- package/src/router/match-middleware/intercept-resolution.ts +56 -38
- package/src/router/match-middleware/segment-resolution.ts +71 -19
- package/src/router/match-pipelines.ts +11 -87
- package/src/router/match-result.ts +150 -53
- package/src/router/metrics.ts +235 -29
- package/src/router/middleware-types.ts +110 -0
- package/src/router/middleware.ts +526 -441
- package/src/router/navigation-snapshot.ts +173 -0
- package/src/router/params-util.ts +23 -0
- package/src/router/parse-pattern.ts +115 -0
- package/src/router/pattern-matching.ts +348 -149
- 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 +592 -0
- package/src/router/preview-match.ts +102 -0
- package/src/router/request-classification.ts +291 -0
- package/src/router/revalidation.ts +252 -90
- package/src/router/route-snapshot.ts +256 -0
- package/src/router/route-trie-builder.ts +334 -0
- package/src/router/router-context.ts +45 -48
- package/src/router/router-interfaces.ts +614 -0
- package/src/router/router-options.ts +842 -0
- package/src/router/router-registry.ts +21 -0
- package/src/router/segment-resolution/fresh.ts +879 -0
- package/src/router/segment-resolution/helpers.ts +346 -0
- package/src/router/segment-resolution/loader-cache.ts +368 -0
- 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 +1376 -0
- package/src/router/segment-resolution/static-store.ts +107 -0
- 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 +25 -0
- package/src/router/segment-wrappers.ts +292 -0
- package/src/router/state-cookie-name.ts +33 -0
- package/src/router/substitute-pattern-params.ts +75 -0
- package/src/router/telemetry-otel.ts +270 -0
- package/src/router/telemetry.ts +386 -0
- package/src/router/timeout.ts +179 -0
- package/src/router/tracing.ts +235 -0
- package/src/router/transition-when.ts +76 -0
- package/src/router/trie-matching.ts +351 -0
- package/src/router/types.ts +60 -39
- package/src/router/url-params.ts +57 -0
- package/src/router.ts +911 -4253
- package/src/rsc/capture-queue.ts +218 -0
- package/src/rsc/full-payload.ts +77 -0
- package/src/rsc/handler-context.ts +47 -0
- package/src/rsc/handler.ts +1226 -834
- package/src/rsc/helpers.ts +351 -19
- package/src/rsc/index.ts +2 -25
- package/src/rsc/json-route-result.ts +38 -0
- package/src/rsc/loader-fetch.ts +305 -0
- package/src/rsc/manifest-init.ts +89 -0
- package/src/rsc/nonce.ts +39 -0
- package/src/rsc/origin-guard.ts +155 -0
- package/src/rsc/progressive-enhancement.ts +686 -0
- 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 +104 -0
- package/src/rsc/response-route-handler.ts +221 -0
- package/src/rsc/routine-plan.ts +359 -0
- package/src/rsc/rsc-rendering.ts +1729 -0
- package/src/rsc/runtime-warnings.ts +55 -0
- package/src/rsc/server-action.ts +639 -0
- 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 +236 -0
- package/src/rsc/stream-idle.ts +137 -0
- package/src/rsc/transition-gate.ts +86 -0
- package/src/rsc/types.ts +167 -14
- package/src/runtime-env.ts +18 -0
- package/src/search-params.ts +235 -0
- package/src/segment-content-promise.ts +67 -0
- package/src/segment-fragments.ts +165 -0
- package/src/segment-loader-promise.ts +167 -0
- package/src/segment-system.tsx +544 -136
- package/src/serialize.ts +243 -0
- package/src/server/context.ts +741 -90
- package/src/server/cookie-parse.ts +32 -0
- package/src/server/cookie-store.ts +337 -0
- package/src/server/fetchable-loader-store.ts +37 -0
- package/src/server/handle-store.ts +278 -60
- package/src/server/loader-registry.ts +51 -100
- package/src/server/request-context.ts +1296 -161
- package/src/server.ts +38 -128
- package/src/ssr/index.tsx +716 -140
- 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 +139 -0
- 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 +76 -98
- package/src/theme/ThemeScript.tsx +12 -14
- package/src/theme/constants.ts +57 -15
- package/src/theme/index.ts +3 -20
- package/src/theme/theme-context.ts +5 -35
- package/src/theme/theme-script.ts +43 -39
- package/src/theme/use-theme.ts +0 -3
- package/src/types/boundaries.ts +142 -0
- package/src/types/cache-types.ts +207 -0
- package/src/types/error-types.ts +132 -0
- package/src/types/global-namespace.ts +113 -0
- package/src/types/handler-context.ts +850 -0
- package/src/types/index.ts +82 -0
- package/src/types/loader-types.ts +273 -0
- package/src/types/request-scope.ts +112 -0
- package/src/types/route-config.ts +138 -0
- package/src/types/route-entry.ts +117 -0
- package/src/types/segments.ts +291 -0
- package/src/types.ts +1 -1623
- package/src/urls/include-helper.ts +181 -0
- package/src/urls/include-provider.ts +71 -0
- package/src/urls/index.ts +44 -0
- package/src/urls/path-helper-types.ts +435 -0
- package/src/urls/path-helper.ts +284 -0
- package/src/urls/pattern-types.ts +189 -0
- package/src/urls/response-types.ts +109 -0
- package/src/urls/type-extraction.ts +316 -0
- package/src/urls/urls-function.ts +80 -0
- package/src/urls.ts +1 -802
- package/src/use-loader.tsx +487 -138
- 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 +185 -0
- 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 +375 -0
- 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 +494 -0
- package/src/vite/discovery/route-types-writer.ts +214 -0
- package/src/vite/discovery/self-gen-tracking.ts +73 -0
- package/src/vite/discovery/shell-prerender-phase.ts +397 -0
- package/src/vite/discovery/state.ts +215 -0
- package/src/vite/discovery/virtual-module-codegen.ts +342 -0
- package/src/vite/encryption-key.ts +29 -0
- package/src/vite/index.ts +31 -1137
- package/src/vite/inject-client-debug.ts +88 -0
- package/src/vite/plugin-types.ts +336 -0
- package/src/vite/plugins/cjs-to-esm.ts +90 -0
- package/src/vite/plugins/client-ref-dedup.ts +382 -0
- package/src/vite/plugins/client-ref-hashing.ts +118 -0
- 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/{expose-action-id.ts → plugins/expose-action-id.ts} +130 -136
- package/src/vite/plugins/expose-id-utils.ts +332 -0
- package/src/vite/plugins/expose-ids/export-analysis.ts +363 -0
- package/src/vite/plugins/expose-ids/handler-transform.ts +130 -0
- package/src/vite/plugins/expose-ids/loader-transform.ts +64 -0
- package/src/vite/plugins/expose-ids/router-transform.ts +199 -0
- package/src/vite/plugins/expose-ids/types.ts +45 -0
- package/src/vite/plugins/expose-internal-ids.ts +851 -0
- package/src/vite/plugins/performance-tracks.ts +89 -0
- package/src/vite/plugins/refresh-cmd.ts +127 -0
- 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 +313 -0
- package/src/vite/plugins/vercel-output.ts +384 -0
- package/src/vite/plugins/version-injector.ts +93 -0
- package/src/vite/plugins/version-plugin.ts +271 -0
- package/src/vite/plugins/virtual-entries.ts +286 -0
- package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
- package/src/vite/rango.ts +609 -0
- package/src/vite/router-discovery.ts +2400 -0
- package/src/vite/utils/ast-handler-extract.ts +508 -0
- package/src/vite/utils/banner.ts +36 -0
- package/src/vite/utils/bundle-analysis.ts +132 -0
- 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 +12 -0
- package/src/vite/utils/package-resolution.ts +90 -0
- package/src/vite/utils/prerender-utils.ts +268 -0
- package/src/vite/utils/shared-utils.ts +283 -0
- package/CLAUDE.md +0 -43
- package/src/browser/lru-cache.ts +0 -69
- package/src/browser/request-controller.ts +0 -164
- package/src/browser/shallow.ts +0 -35
- package/src/cache/memory-store.ts +0 -253
- package/src/href.ts +0 -255
- package/src/server/route-manifest-cache.ts +0 -173
- package/src/vite/expose-handle-id.ts +0 -209
- package/src/vite/expose-loader-id.ts +0 -426
- package/src/vite/expose-location-state-id.ts +0 -177
- /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
package/src/server/context.ts
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
2
|
import type { ReactNode } from "react";
|
|
3
|
-
import type {
|
|
4
|
-
|
|
3
|
+
import type {
|
|
4
|
+
PartialCacheOptions,
|
|
5
|
+
ErrorBoundaryHandler,
|
|
6
|
+
Handler,
|
|
7
|
+
LoaderDefinition,
|
|
8
|
+
MiddlewareFn,
|
|
9
|
+
NotFoundBoundaryHandler,
|
|
10
|
+
ShouldRevalidateFn,
|
|
11
|
+
TransitionConfig,
|
|
12
|
+
} from "../types";
|
|
13
|
+
import { invariant, DslContextError } from "../errors";
|
|
14
|
+
import type { DefaultRouteName } from "../types/global-namespace.js";
|
|
5
15
|
|
|
6
16
|
// ============================================================================
|
|
7
17
|
// Performance Metrics Types
|
|
@@ -13,9 +23,11 @@ import { invariant } from "../errors";
|
|
|
13
23
|
* @internal This type is an implementation detail and may change without notice.
|
|
14
24
|
*/
|
|
15
25
|
export interface PerformanceMetric {
|
|
16
|
-
label: string;
|
|
17
|
-
duration: number;
|
|
18
|
-
startTime: number;
|
|
26
|
+
label: string; // e.g., "route-matching", "loader:UserLoader"
|
|
27
|
+
duration: number; // milliseconds
|
|
28
|
+
startTime: number; // relative to request start
|
|
29
|
+
depth?: number; // nesting level for hierarchical display (0 = top-level)
|
|
30
|
+
desc?: string; // free-form outcome detail, emitted as Server-Timing desc="..."
|
|
19
31
|
}
|
|
20
32
|
|
|
21
33
|
/**
|
|
@@ -29,7 +41,7 @@ export interface MetricsStore {
|
|
|
29
41
|
metrics: PerformanceMetric[];
|
|
30
42
|
}
|
|
31
43
|
// ============================================================================
|
|
32
|
-
//
|
|
44
|
+
// Rango Context
|
|
33
45
|
// ============================================================================
|
|
34
46
|
|
|
35
47
|
/**
|
|
@@ -60,6 +72,10 @@ export type EntryPropCommon = {
|
|
|
60
72
|
};
|
|
61
73
|
|
|
62
74
|
/**
|
|
75
|
+
* Attachments resolved by walking the parent chain, not owned by the entry:
|
|
76
|
+
* middleware composes downward; revalidate and the error/notFound boundaries are
|
|
77
|
+
* resolved by nearest-ancestor lookup. Inherited, not a single execution chain.
|
|
78
|
+
*
|
|
63
79
|
* @internal This type is an implementation detail and may change without notice.
|
|
64
80
|
*/
|
|
65
81
|
export type EntryPropDatas = {
|
|
@@ -69,6 +85,16 @@ export type EntryPropDatas = {
|
|
|
69
85
|
notFoundBoundary: (ReactNode | NotFoundBoundaryHandler)[];
|
|
70
86
|
};
|
|
71
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Render-time presentation fields shared by every entry variant.
|
|
90
|
+
*
|
|
91
|
+
* @internal This type is an implementation detail and may change without notice.
|
|
92
|
+
*/
|
|
93
|
+
export type EntryPropRender = {
|
|
94
|
+
loading?: ReactNode | false;
|
|
95
|
+
transition?: TransitionConfig;
|
|
96
|
+
};
|
|
97
|
+
|
|
72
98
|
/**
|
|
73
99
|
* Loader entry stored in EntryData
|
|
74
100
|
* Contains the loader definition and its revalidation rules
|
|
@@ -80,6 +106,16 @@ export type LoaderEntry = {
|
|
|
80
106
|
revalidate: ShouldRevalidateFn<any, any>[];
|
|
81
107
|
/** Cache config for this specific loader (loaders are NOT cached by default) */
|
|
82
108
|
cache?: EntryCacheConfig;
|
|
109
|
+
/**
|
|
110
|
+
* Document renders await this loader before segment resolution returns
|
|
111
|
+
* (loader(Def, { ssr: false })), so its data, handle pushes, and
|
|
112
|
+
* thrown notFound()/redirect() deterministically precede first flush.
|
|
113
|
+
* Resolved at DSL-evaluation time from ctx.isSSR — entries are cached
|
|
114
|
+
* per-isSSR (router/manifest.ts cache key), so the flag is already
|
|
115
|
+
* request-mode-correct when resolveLoaders (fresh.ts) reads it and never
|
|
116
|
+
* appears on navigation-lane entries.
|
|
117
|
+
*/
|
|
118
|
+
awaitBeforeFlush?: true;
|
|
83
119
|
};
|
|
84
120
|
|
|
85
121
|
/**
|
|
@@ -105,12 +141,14 @@ export type InterceptSegmentsState = {
|
|
|
105
141
|
* @internal This type is an implementation detail and may change without notice.
|
|
106
142
|
*/
|
|
107
143
|
export type InterceptSelectorContext<TEnv = any> = {
|
|
108
|
-
from: URL;
|
|
109
|
-
to: URL;
|
|
110
|
-
params: Record<string, string>;
|
|
111
|
-
request: Request;
|
|
112
|
-
env: TEnv;
|
|
113
|
-
segments: InterceptSegmentsState;
|
|
144
|
+
from: URL; // Source URL (where user is coming from)
|
|
145
|
+
to: URL; // Destination URL (where user is navigating to)
|
|
146
|
+
params: Record<string, string>; // Matched route params
|
|
147
|
+
request: Request; // The HTTP request object
|
|
148
|
+
env: TEnv; // Platform bindings (Cloudflare env, etc.)
|
|
149
|
+
segments: InterceptSegmentsState; // Client's current segments (where navigating FROM)
|
|
150
|
+
fromRouteName?: DefaultRouteName; // Named route being navigated away from (undefined for unnamed routes)
|
|
151
|
+
toRouteName?: DefaultRouteName; // Named route being navigated to (undefined for unnamed routes)
|
|
114
152
|
};
|
|
115
153
|
|
|
116
154
|
/**
|
|
@@ -119,7 +157,22 @@ export type InterceptSelectorContext<TEnv = any> = {
|
|
|
119
157
|
*
|
|
120
158
|
* @internal This type is an implementation detail and may change without notice.
|
|
121
159
|
*/
|
|
122
|
-
export type InterceptWhenFn<TEnv = any> = (
|
|
160
|
+
export type InterceptWhenFn<TEnv = any> = (
|
|
161
|
+
ctx: InterceptSelectorContext<TEnv>,
|
|
162
|
+
) => boolean;
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Config object passed to intercept() (its 4th argument). `when` gates whether
|
|
166
|
+
* the intercept activates on a soft navigation — a single match-time selector or
|
|
167
|
+
* an array of them (ALL must return true; omit to always activate). This is the
|
|
168
|
+
* intercept counterpart to transition({ when }); both express conditional
|
|
169
|
+
* behavior as a config field rather than a separate DSL helper.
|
|
170
|
+
*
|
|
171
|
+
* @internal This type is an implementation detail and may change without notice.
|
|
172
|
+
*/
|
|
173
|
+
export interface InterceptConfig<TEnv = any> {
|
|
174
|
+
when?: InterceptWhenFn<TEnv> | InterceptWhenFn<TEnv>[];
|
|
175
|
+
}
|
|
123
176
|
|
|
124
177
|
/**
|
|
125
178
|
* Intercept entry stored in EntryData
|
|
@@ -128,58 +181,100 @@ export type InterceptWhenFn<TEnv = any> = (ctx: InterceptSelectorContext<TEnv>)
|
|
|
128
181
|
* @internal This type is an implementation detail and may change without notice.
|
|
129
182
|
*/
|
|
130
183
|
export type InterceptEntry = {
|
|
131
|
-
slotName: `@${string}`;
|
|
132
|
-
routeName: string;
|
|
133
|
-
handler: ReactNode | Handler<any, any>;
|
|
184
|
+
slotName: `@${string}`; // e.g., "@modal"
|
|
185
|
+
routeName: string; // e.g., "card"
|
|
186
|
+
handler: ReactNode | Handler<any, any, any>;
|
|
134
187
|
middleware: MiddlewareFn<any, any>[];
|
|
135
188
|
revalidate: ShouldRevalidateFn<any, any>[];
|
|
136
189
|
errorBoundary: (ReactNode | ErrorBoundaryHandler)[];
|
|
137
190
|
notFoundBoundary: (ReactNode | NotFoundBoundaryHandler)[];
|
|
138
191
|
loader: LoaderEntry[];
|
|
139
192
|
loading?: ReactNode | false;
|
|
140
|
-
|
|
141
|
-
|
|
193
|
+
transition?: TransitionConfig;
|
|
194
|
+
layout?: ReactNode | Handler<any, any, any>; // Wrapper layout with <Outlet /> for content
|
|
195
|
+
when: InterceptWhenFn[]; // Selector conditions - all must return true to intercept
|
|
142
196
|
};
|
|
143
197
|
|
|
198
|
+
export interface ParallelEntryData
|
|
199
|
+
extends EntryPropCommon, EntryPropDatas, EntryPropSegments, EntryPropRender {
|
|
200
|
+
type: "parallel";
|
|
201
|
+
handler: Record<`@${string}`, Handler<any, any, any> | ReactNode>;
|
|
202
|
+
/** Set when any parallel slot is a Static definition */
|
|
203
|
+
isStaticPrerender?: true;
|
|
204
|
+
/** Per-slot static handler $$ids for build-time store lookup */
|
|
205
|
+
staticHandlerIds?: Record<string, string>;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
export type ParallelEntries = Partial<Record<`@${string}`, ParallelEntryData>>;
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* This entry's own structural children plus its owned loaders. `loader` lives
|
|
212
|
+
* here (not in EntryPropDatas) because loaders are owned by the entry, not
|
|
213
|
+
* inherited from ancestors.
|
|
214
|
+
*
|
|
215
|
+
* @internal This type is an implementation detail and may change without notice.
|
|
216
|
+
*/
|
|
144
217
|
export type EntryPropSegments = {
|
|
145
218
|
loader: LoaderEntry[];
|
|
146
219
|
layout: EntryData[];
|
|
147
|
-
parallel:
|
|
220
|
+
parallel: ParallelEntries; // slot -> parallel entry (same entry may back multiple slots)
|
|
148
221
|
intercept: InterceptEntry[]; // intercept definitions for soft navigation
|
|
149
222
|
};
|
|
150
223
|
|
|
151
224
|
export type EntryData =
|
|
152
225
|
| ({
|
|
153
226
|
type: "route";
|
|
154
|
-
handler: Handler<any, any>;
|
|
155
|
-
loading?: ReactNode | false;
|
|
227
|
+
handler: Handler<any, any, any>;
|
|
156
228
|
/** URL pattern for this route (used by path() in urls()) */
|
|
157
229
|
pattern?: string;
|
|
230
|
+
/** Set when handler is a Prerender definition */
|
|
231
|
+
isPrerender?: true;
|
|
232
|
+
/** Original PrerenderHandlerDefinition (for build-time getParams access) */
|
|
233
|
+
prerenderDef?: {
|
|
234
|
+
getParams?: (ctx: any) => Promise<any[]> | any[];
|
|
235
|
+
options?: { concurrency?: number };
|
|
236
|
+
};
|
|
237
|
+
/** Set when route is wrapped with Passthrough() — has a separate live handler */
|
|
238
|
+
isPassthrough?: true;
|
|
239
|
+
/** Live handler for runtime fallback (only set on Passthrough routes) */
|
|
240
|
+
liveHandler?: Handler<any, any, any>;
|
|
241
|
+
/** Set when handler is a Static definition (build-time only) */
|
|
242
|
+
isStaticPrerender?: true;
|
|
243
|
+
/** Static handler $$id for build-time store lookup */
|
|
244
|
+
staticHandlerId?: string;
|
|
245
|
+
/** Response type for non-RSC routes (json, text, image, any) */
|
|
246
|
+
responseType?: string;
|
|
247
|
+
/**
|
|
248
|
+
* PPR (partial pre-rendering) opt-in from the path() `ppr` option. A
|
|
249
|
+
* document-level property of the page route: `true` uses the default
|
|
250
|
+
* shell policy, an object carries ttl/swr/tags. Read by the integrated
|
|
251
|
+
* PPR serve path (rsc/shell-serve.ts resolvePprConfig).
|
|
252
|
+
*/
|
|
253
|
+
ppr?: boolean | import("../urls/pattern-types.js").PartialPrerenderProps;
|
|
158
254
|
} & EntryPropCommon &
|
|
159
255
|
EntryPropDatas &
|
|
160
|
-
EntryPropSegments
|
|
256
|
+
EntryPropSegments &
|
|
257
|
+
EntryPropRender)
|
|
161
258
|
| ({
|
|
162
259
|
type: "layout";
|
|
163
|
-
handler: ReactNode | Handler<any, any>;
|
|
164
|
-
|
|
260
|
+
handler: ReactNode | Handler<any, any, any>;
|
|
261
|
+
/** Set when handler is a Static definition (build-time only) */
|
|
262
|
+
isStaticPrerender?: true;
|
|
263
|
+
/** Static handler $$id for build-time store lookup */
|
|
264
|
+
staticHandlerId?: string;
|
|
165
265
|
} & EntryPropCommon &
|
|
166
266
|
EntryPropDatas &
|
|
167
|
-
EntryPropSegments
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
handler: Record<`@${string}`, Handler<any, any> | ReactNode>;
|
|
171
|
-
loading?: ReactNode | false;
|
|
172
|
-
} & EntryPropCommon &
|
|
173
|
-
EntryPropDatas &
|
|
174
|
-
EntryPropSegments)
|
|
267
|
+
EntryPropSegments &
|
|
268
|
+
EntryPropRender)
|
|
269
|
+
| ParallelEntryData
|
|
175
270
|
| ({
|
|
176
271
|
type: "cache";
|
|
177
272
|
/** Cache entries create cache boundaries and render like layouts (with Outlet) */
|
|
178
|
-
handler: ReactNode | Handler<any, any>;
|
|
179
|
-
loading?: ReactNode | false;
|
|
273
|
+
handler: ReactNode | Handler<any, any, any>;
|
|
180
274
|
} & EntryPropCommon &
|
|
181
275
|
EntryPropDatas &
|
|
182
|
-
EntryPropSegments
|
|
276
|
+
EntryPropSegments &
|
|
277
|
+
EntryPropRender);
|
|
183
278
|
|
|
184
279
|
/**
|
|
185
280
|
* Tracked include info for build-time manifest generation
|
|
@@ -192,6 +287,17 @@ export interface TrackedInclude {
|
|
|
192
287
|
lazy: boolean;
|
|
193
288
|
}
|
|
194
289
|
|
|
290
|
+
/**
|
|
291
|
+
* Cached response-header write scope (issue #713). `kind` selects the error
|
|
292
|
+
* wording; `routeKey` names the route in the error.
|
|
293
|
+
*
|
|
294
|
+
* @internal This type is an implementation detail and may change without notice.
|
|
295
|
+
*/
|
|
296
|
+
export type CachedHeaderScope = {
|
|
297
|
+
kind: "cache" | "ppr";
|
|
298
|
+
routeKey?: string;
|
|
299
|
+
};
|
|
300
|
+
|
|
195
301
|
/**
|
|
196
302
|
* Context stored in AsyncLocalStorage
|
|
197
303
|
*/
|
|
@@ -202,6 +308,10 @@ interface HelperContext {
|
|
|
202
308
|
counters: Record<string, number>;
|
|
203
309
|
forRoute?: string;
|
|
204
310
|
mountIndex?: number;
|
|
311
|
+
/** Owning router id, when known (threaded by generateManifestFull). Scopes
|
|
312
|
+
* the search-schema/root-scope registries so same-named routes in
|
|
313
|
+
* different routers don't clobber each other (route-map-builder.ts). */
|
|
314
|
+
routerId?: string;
|
|
205
315
|
metrics?: MetricsStore;
|
|
206
316
|
/** True when rendering for SSR (document requests) */
|
|
207
317
|
isSSR?: boolean;
|
|
@@ -211,17 +321,78 @@ interface HelperContext {
|
|
|
211
321
|
patternsByPrefix?: Map<string, Map<string, string>>;
|
|
212
322
|
/** Trailing slash config per route name */
|
|
213
323
|
trailingSlash?: Map<string, "never" | "always" | "ignore">;
|
|
324
|
+
/** Search param schemas per route name */
|
|
325
|
+
searchSchemas?: Map<string, Record<string, string>>;
|
|
214
326
|
/** URL prefix from include() - applied to all path() patterns */
|
|
215
327
|
urlPrefix?: string;
|
|
216
328
|
/** Name prefix from include() - applied to all named routes */
|
|
217
329
|
namePrefix?: string;
|
|
330
|
+
/** True when this scope is at root level (no named include boundary above).
|
|
331
|
+
* Routes at root scope allow dot-local reverse to fall back to bare names. */
|
|
332
|
+
rootScoped?: boolean;
|
|
218
333
|
/** Run helper for cleaner middleware code */
|
|
219
334
|
run?: <T>(fn: () => T | Promise<T>) => T | Promise<T>;
|
|
220
335
|
/** Tracked includes for build-time manifest generation */
|
|
221
336
|
trackedIncludes?: TrackedInclude[];
|
|
337
|
+
/** Cache profiles for DSL-time cache("profileName") resolution */
|
|
338
|
+
cacheProfiles?: Record<
|
|
339
|
+
string,
|
|
340
|
+
import("../cache/profile-registry.js").CacheProfile
|
|
341
|
+
>;
|
|
342
|
+
/** True when resolving handlers inside a cache() DSL boundary.
|
|
343
|
+
* Read by ctx.get() to guard non-cacheable variable reads. */
|
|
344
|
+
insideCacheScope?: boolean;
|
|
345
|
+
/**
|
|
346
|
+
* RULE (issue #713): in any cached scenario ONLY MIDDLEWARE writes response
|
|
347
|
+
* headers. Latched by the segment funnels, consulted by
|
|
348
|
+
* assertCachedHeaderWriteAllowed(); full doctrine in
|
|
349
|
+
* docs/design/ppr-shell-resume.md "The header doctrine".
|
|
350
|
+
*/
|
|
351
|
+
cachedHeaderScope?: CachedHeaderScope;
|
|
352
|
+
/**
|
|
353
|
+
* Include scope string applied to direct-descendant shortCodes.
|
|
354
|
+
*
|
|
355
|
+
* Each `include(...)` call allocates a sibling-positional token like `I0`,
|
|
356
|
+
* `I1` from its parent's include counter and stores the composed scope
|
|
357
|
+
* (`${parentScope}I${idx}`) in its lazyContext. When the include's handler
|
|
358
|
+
* evaluates lazily, the store's `includeScope` is set from that context so
|
|
359
|
+
* every direct-descendant shortCode is generated as
|
|
360
|
+
* `${parent.shortCode}${includeScope}${prefix}${index}` — preventing
|
|
361
|
+
* collisions with siblings declared outside the include.
|
|
362
|
+
*
|
|
363
|
+
* The scope is NOT propagated through `store.run(...)`, so layouts /
|
|
364
|
+
* parallels / caches inside the include absorb the scope into their own
|
|
365
|
+
* shortCodes and their children start fresh.
|
|
366
|
+
*/
|
|
367
|
+
includeScope?: string;
|
|
368
|
+
}
|
|
369
|
+
// Use a global symbol key so the AsyncLocalStorage instance survives HMR
|
|
370
|
+
// module re-evaluation. Without this, Vite's RSC module runner may create
|
|
371
|
+
// a new instance when context.ts is re-evaluated, while other modules still
|
|
372
|
+
// hold references to the old instance — causing getStore() to return
|
|
373
|
+
// undefined even inside a run() callback.
|
|
374
|
+
const RSC_CONTEXT_KEY = Symbol.for("rangojs-router:rsc-context");
|
|
375
|
+
export const RangoContext: AsyncLocalStorage<HelperContext> = ((
|
|
376
|
+
globalThis as any
|
|
377
|
+
)[RSC_CONTEXT_KEY] ??= new AsyncLocalStorage<HelperContext>());
|
|
378
|
+
|
|
379
|
+
/** shortCode prefix letter per entry type (e.g. "L0", "R2", "M1C0"). */
|
|
380
|
+
const SHORT_CODE_PREFIX: Record<
|
|
381
|
+
"layout" | "parallel" | "route" | "loader" | "cache",
|
|
382
|
+
string
|
|
383
|
+
> = {
|
|
384
|
+
layout: "L",
|
|
385
|
+
parallel: "P",
|
|
386
|
+
route: "R",
|
|
387
|
+
loader: "D",
|
|
388
|
+
cache: "C",
|
|
389
|
+
};
|
|
390
|
+
|
|
391
|
+
/** Post-increment a named per-store counter, returning the prior value. */
|
|
392
|
+
function bumpCounter(store: HelperContext, key: string): number {
|
|
393
|
+
store.counters[key] ??= 0;
|
|
394
|
+
return store.counters[key]++;
|
|
222
395
|
}
|
|
223
|
-
export const RSCRouterContext: AsyncLocalStorage<HelperContext> =
|
|
224
|
-
new AsyncLocalStorage<HelperContext>();
|
|
225
396
|
|
|
226
397
|
export const getContext = (): {
|
|
227
398
|
context: AsyncLocalStorage<HelperContext>;
|
|
@@ -229,29 +400,29 @@ export const getContext = (): {
|
|
|
229
400
|
getParent: () => EntryData | null;
|
|
230
401
|
getOrCreateStore: (forRoute?: string) => HelperContext;
|
|
231
402
|
getNextIndex: (
|
|
232
|
-
type: (string & {}) | "layout" | "parallel" | "middleware" | "revalidate"
|
|
403
|
+
type: (string & {}) | "layout" | "parallel" | "middleware" | "revalidate",
|
|
233
404
|
) => string;
|
|
234
405
|
getShortCode: (
|
|
235
|
-
type: "layout" | "parallel" | "route" | "loader" | "cache"
|
|
406
|
+
type: "layout" | "parallel" | "route" | "loader" | "cache",
|
|
236
407
|
) => string;
|
|
237
408
|
run: <T>(
|
|
238
409
|
namespace: string,
|
|
239
410
|
parent: EntryData | null,
|
|
240
|
-
callback: (...args: any[]) => T
|
|
411
|
+
callback: (...args: any[]) => T,
|
|
241
412
|
) => T;
|
|
242
413
|
runWithStore: <T>(
|
|
243
414
|
store: HelperContext,
|
|
244
415
|
namespace: string,
|
|
245
416
|
parent: EntryData | null,
|
|
246
|
-
callback: (...args: any[]) => T
|
|
417
|
+
callback: (...args: any[]) => T,
|
|
247
418
|
) => T;
|
|
248
419
|
} => {
|
|
249
|
-
const context =
|
|
420
|
+
const context = RangoContext;
|
|
250
421
|
|
|
251
422
|
return {
|
|
252
423
|
context,
|
|
253
424
|
getOrCreateStore: (forRoute?: string): HelperContext => {
|
|
254
|
-
let store =
|
|
425
|
+
let store = RangoContext.getStore();
|
|
255
426
|
if (!store) {
|
|
256
427
|
store = {
|
|
257
428
|
manifest: new Map<string, EntryData>(),
|
|
@@ -262,6 +433,7 @@ export const getContext = (): {
|
|
|
262
433
|
patterns: new Map<string, string>(),
|
|
263
434
|
patternsByPrefix: new Map<string, Map<string, string>>(),
|
|
264
435
|
trailingSlash: new Map<string, "never" | "always" | "ignore">(),
|
|
436
|
+
searchSchemas: new Map<string, Record<string, string>>(),
|
|
265
437
|
} satisfies HelperContext;
|
|
266
438
|
}
|
|
267
439
|
return store;
|
|
@@ -270,7 +442,7 @@ export const getContext = (): {
|
|
|
270
442
|
const store = context.getStore();
|
|
271
443
|
if (!store) {
|
|
272
444
|
throw new Error(
|
|
273
|
-
"
|
|
445
|
+
"Rango context store is not available. Make sure to run within Rango context.",
|
|
274
446
|
);
|
|
275
447
|
}
|
|
276
448
|
return store;
|
|
@@ -284,44 +456,46 @@ export const getContext = (): {
|
|
|
284
456
|
return store.parent;
|
|
285
457
|
},
|
|
286
458
|
getNextIndex: (
|
|
287
|
-
type: (string & {}) | "layout" | "parallel" | "middleware" | "revalidate"
|
|
459
|
+
type: (string & {}) | "layout" | "parallel" | "middleware" | "revalidate",
|
|
288
460
|
) => {
|
|
289
461
|
const store = context.getStore();
|
|
290
|
-
invariant(store, "No context
|
|
291
|
-
store
|
|
292
|
-
const index = store.counters[type];
|
|
293
|
-
store.counters[type] = index + 1;
|
|
294
|
-
return `$${type}.${index}`;
|
|
462
|
+
invariant(store, "No context RangoContext available");
|
|
463
|
+
return `$${type}.${bumpCounter(store, type)}`;
|
|
295
464
|
},
|
|
296
|
-
getShortCode: (
|
|
465
|
+
getShortCode: (
|
|
466
|
+
type: "layout" | "parallel" | "route" | "loader" | "cache",
|
|
467
|
+
) => {
|
|
297
468
|
const store = context.getStore();
|
|
298
|
-
invariant(store, "No context
|
|
469
|
+
invariant(store, "No context RangoContext available");
|
|
299
470
|
|
|
300
471
|
const parent = store.parent;
|
|
301
|
-
const prefix = type
|
|
302
|
-
const mountPrefix =
|
|
472
|
+
const prefix = SHORT_CODE_PREFIX[type];
|
|
473
|
+
const mountPrefix =
|
|
474
|
+
store.mountIndex !== undefined ? `M${store.mountIndex}` : "";
|
|
475
|
+
|
|
476
|
+
const includeScope = store.includeScope ?? "";
|
|
303
477
|
|
|
304
478
|
if (!parent) {
|
|
305
479
|
// Root entry: prefix with mount index and use mount-scoped counter
|
|
306
|
-
const counterKey = mountPrefix
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
store
|
|
310
|
-
return `${mountPrefix}${prefix}${index}`;
|
|
480
|
+
const counterKey = mountPrefix
|
|
481
|
+
? `${mountPrefix}_root_${type}`
|
|
482
|
+
: `root_${type}`;
|
|
483
|
+
return `${mountPrefix}${prefix}${bumpCounter(store, counterKey)}`;
|
|
311
484
|
} else {
|
|
312
|
-
// Child entry: use parent-scoped counter
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
485
|
+
// Child entry: use parent-scoped counter with includeScope appended.
|
|
486
|
+
// When we're evaluating a lazy include's direct children, includeScope
|
|
487
|
+
// is a per-include token like "I0" / "I1I0" that partitions the
|
|
488
|
+
// parent's counter namespace so routes inside one include cannot
|
|
489
|
+
// collide with siblings declared outside it.
|
|
490
|
+
const counterKey = `${parent.shortCode}${includeScope}_${type}`;
|
|
491
|
+
return `${parent.shortCode}${includeScope}${prefix}${bumpCounter(store, counterKey)}`;
|
|
318
492
|
}
|
|
319
493
|
},
|
|
320
494
|
runWithStore: <T>(
|
|
321
495
|
store: HelperContext,
|
|
322
496
|
namespace: string,
|
|
323
497
|
parent: EntryData | null,
|
|
324
|
-
callback: (...args: any[]) => T
|
|
498
|
+
callback: (...args: any[]) => T,
|
|
325
499
|
): T => {
|
|
326
500
|
return context.run(
|
|
327
501
|
{
|
|
@@ -331,28 +505,41 @@ export const getContext = (): {
|
|
|
331
505
|
counters: store.counters,
|
|
332
506
|
forRoute: store.forRoute,
|
|
333
507
|
mountIndex: store.mountIndex,
|
|
508
|
+
routerId: store.routerId,
|
|
334
509
|
metrics: store.metrics,
|
|
335
510
|
isSSR: store.isSSR,
|
|
336
511
|
patterns: store.patterns,
|
|
337
512
|
trailingSlash: store.trailingSlash,
|
|
513
|
+
searchSchemas: store.searchSchemas,
|
|
338
514
|
urlPrefix: store.urlPrefix,
|
|
339
515
|
namePrefix: store.namePrefix,
|
|
516
|
+
rootScoped: store.rootScoped,
|
|
340
517
|
trackedIncludes: store.trackedIncludes,
|
|
518
|
+
cacheProfiles: store.cacheProfiles,
|
|
519
|
+
includeScope: store.includeScope,
|
|
520
|
+
// cachedHeaderScope (and insideCacheScope) deliberately NOT copied —
|
|
521
|
+
// the header guard's middleware exemption depends on the latch dying
|
|
522
|
+
// with the funnel scope (see assertCachedHeaderWriteAllowed).
|
|
341
523
|
},
|
|
342
|
-
callback
|
|
524
|
+
callback,
|
|
343
525
|
);
|
|
344
526
|
},
|
|
345
527
|
run: <T>(
|
|
346
528
|
namespace: string,
|
|
347
529
|
parent: EntryData | null,
|
|
348
|
-
callback: (...args: any[]) => T
|
|
530
|
+
callback: (...args: any[]) => T,
|
|
349
531
|
) => {
|
|
350
532
|
const store = context.getStore();
|
|
351
533
|
// Preserve parent counters to ensure globally unique shortCodes
|
|
352
534
|
const counters = store?.counters || {};
|
|
353
535
|
const manifest = store ? store.manifest : new Map<string, EntryData>();
|
|
354
536
|
const patterns = store?.patterns || new Map<string, string>();
|
|
355
|
-
const
|
|
537
|
+
const patternsByPrefix = store?.patternsByPrefix;
|
|
538
|
+
const trailingSlash =
|
|
539
|
+
store?.trailingSlash ||
|
|
540
|
+
new Map<string, "never" | "always" | "ignore">();
|
|
541
|
+
const searchSchemas =
|
|
542
|
+
store?.searchSchemas || new Map<string, Record<string, string>>();
|
|
356
543
|
return context.run(
|
|
357
544
|
{
|
|
358
545
|
manifest,
|
|
@@ -361,20 +548,50 @@ export const getContext = (): {
|
|
|
361
548
|
counters,
|
|
362
549
|
forRoute: store?.forRoute,
|
|
363
550
|
mountIndex: store?.mountIndex,
|
|
551
|
+
routerId: store?.routerId,
|
|
364
552
|
metrics: store?.metrics,
|
|
365
553
|
isSSR: store?.isSSR,
|
|
366
554
|
patterns,
|
|
555
|
+
patternsByPrefix,
|
|
367
556
|
trailingSlash,
|
|
557
|
+
searchSchemas,
|
|
368
558
|
urlPrefix: store?.urlPrefix,
|
|
369
559
|
namePrefix: store?.namePrefix,
|
|
560
|
+
rootScoped: store?.rootScoped,
|
|
370
561
|
trackedIncludes: store?.trackedIncludes,
|
|
562
|
+
cacheProfiles: store?.cacheProfiles,
|
|
371
563
|
},
|
|
372
|
-
callback
|
|
564
|
+
callback,
|
|
373
565
|
);
|
|
374
566
|
},
|
|
375
567
|
};
|
|
376
568
|
};
|
|
377
569
|
|
|
570
|
+
/**
|
|
571
|
+
* Acquire the active DSL build context, throwing `message` if a helper was
|
|
572
|
+
* called outside a urls()/map() builder. Returns the store API and the live
|
|
573
|
+
* HelperContext so callers avoid a second getContext() lookup.
|
|
574
|
+
*/
|
|
575
|
+
export function requireDslContext(message: string): {
|
|
576
|
+
store: ReturnType<typeof getContext>;
|
|
577
|
+
ctx: HelperContext;
|
|
578
|
+
} {
|
|
579
|
+
const store = getContext();
|
|
580
|
+
const ctx = store.context.getStore();
|
|
581
|
+
if (!ctx) {
|
|
582
|
+
// The only reason the store is absent here is that a route-definition helper
|
|
583
|
+
// ran with no active RangoContext — i.e. outside a urls()/map() builder.
|
|
584
|
+
// Record that as the cause so the throw is self-explanatory, not a bare
|
|
585
|
+
// "must be called inside urls()" with no indication of the mechanism.
|
|
586
|
+
throw new DslContextError(message, {
|
|
587
|
+
cause:
|
|
588
|
+
"RangoContext store is undefined: a route-definition helper was called " +
|
|
589
|
+
"outside an active urls()/map() builder.",
|
|
590
|
+
});
|
|
591
|
+
}
|
|
592
|
+
return { store, ctx };
|
|
593
|
+
}
|
|
594
|
+
|
|
378
595
|
/**
|
|
379
596
|
* Run a callback with specific URL and name prefixes
|
|
380
597
|
* Used by include() to apply prefixes to nested patterns
|
|
@@ -382,30 +599,61 @@ export const getContext = (): {
|
|
|
382
599
|
export function runWithPrefixes<T>(
|
|
383
600
|
urlPrefix: string,
|
|
384
601
|
namePrefix: string | undefined,
|
|
385
|
-
callback: () => T
|
|
602
|
+
callback: () => T,
|
|
386
603
|
): T {
|
|
387
|
-
const store =
|
|
604
|
+
const store = RangoContext.getStore();
|
|
388
605
|
if (!store) {
|
|
389
606
|
throw new Error("runWithPrefixes must be called within router context");
|
|
390
607
|
}
|
|
391
608
|
|
|
392
|
-
// Combine prefixes if there are existing ones
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
609
|
+
// Combine prefixes if there are existing ones, avoiding double slashes
|
|
610
|
+
let combinedUrlPrefix: string;
|
|
611
|
+
if (store.urlPrefix) {
|
|
612
|
+
if (store.urlPrefix.endsWith("/") && urlPrefix.startsWith("/")) {
|
|
613
|
+
combinedUrlPrefix = store.urlPrefix + urlPrefix.slice(1);
|
|
614
|
+
} else {
|
|
615
|
+
combinedUrlPrefix = store.urlPrefix + urlPrefix;
|
|
616
|
+
}
|
|
617
|
+
} else {
|
|
618
|
+
combinedUrlPrefix = urlPrefix;
|
|
619
|
+
}
|
|
620
|
+
const combinedNamePrefix =
|
|
621
|
+
namePrefix !== undefined
|
|
622
|
+
? namePrefix === ""
|
|
623
|
+
? store.namePrefix
|
|
624
|
+
: store.namePrefix
|
|
625
|
+
? `${store.namePrefix}.${namePrefix}`
|
|
626
|
+
: namePrefix
|
|
627
|
+
: store.namePrefix;
|
|
628
|
+
|
|
629
|
+
// Track root scope for dot-local reverse resolution.
|
|
630
|
+
//
|
|
631
|
+
// The flag answers: "can this route reach bare names at root scope?"
|
|
632
|
+
// It propagates through the include chain:
|
|
633
|
+
//
|
|
634
|
+
// { name: "" } — transparent: inherit parent, default true
|
|
635
|
+
// { name: "foo" } — inherit parent if already set, else create boundary (false)
|
|
636
|
+
// no name — inherit parent unchanged
|
|
637
|
+
//
|
|
638
|
+
// This means { name: "" } + nested { name: "sub" } keeps rootScoped=true
|
|
639
|
+
// (the outer transparent include establishes root access, and the inner
|
|
640
|
+
// named include inherits it). But a direct { name: "sub" } at root gets
|
|
641
|
+
// rootScoped=false (no prior root-access grant, so it creates a boundary).
|
|
642
|
+
const combinedRootScoped =
|
|
643
|
+
namePrefix === ""
|
|
644
|
+
? (store.rootScoped ?? true)
|
|
645
|
+
: namePrefix !== undefined
|
|
646
|
+
? (store.rootScoped ?? false)
|
|
647
|
+
: store.rootScoped;
|
|
648
|
+
|
|
649
|
+
return RangoContext.run(
|
|
403
650
|
{
|
|
404
651
|
...store,
|
|
405
652
|
urlPrefix: combinedUrlPrefix,
|
|
406
653
|
namePrefix: combinedNamePrefix,
|
|
654
|
+
rootScoped: combinedRootScoped,
|
|
407
655
|
},
|
|
408
|
-
callback
|
|
656
|
+
callback,
|
|
409
657
|
);
|
|
410
658
|
}
|
|
411
659
|
|
|
@@ -413,7 +661,7 @@ export function runWithPrefixes<T>(
|
|
|
413
661
|
* Get current URL prefix from context
|
|
414
662
|
*/
|
|
415
663
|
export function getUrlPrefix(): string {
|
|
416
|
-
const store =
|
|
664
|
+
const store = RangoContext.getStore();
|
|
417
665
|
return store?.urlPrefix || "";
|
|
418
666
|
}
|
|
419
667
|
|
|
@@ -421,13 +669,118 @@ export function getUrlPrefix(): string {
|
|
|
421
669
|
* Get current name prefix from context
|
|
422
670
|
*/
|
|
423
671
|
export function getNamePrefix(): string | undefined {
|
|
424
|
-
const store =
|
|
672
|
+
const store = RangoContext.getStore();
|
|
425
673
|
return store?.namePrefix;
|
|
426
674
|
}
|
|
427
675
|
|
|
676
|
+
/**
|
|
677
|
+
* Get whether the current scope is at root level (no named include boundary above).
|
|
678
|
+
* Returns true at root or inside { name: "" } includes, false inside named includes.
|
|
679
|
+
*/
|
|
680
|
+
export function getRootScoped(): boolean {
|
|
681
|
+
const store = RangoContext.getStore();
|
|
682
|
+
return store?.rootScoped ?? true;
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
/**
|
|
686
|
+
* Stamp build-time scope identity onto a Static() definition at mount time.
|
|
687
|
+
* The bake collector (prerender-collection.ts) renders defs OUTSIDE any
|
|
688
|
+
* evaluation scope and used to iterate the registry first-non-null, so these
|
|
689
|
+
* are the ONLY reliable carriers of the def's owning router, root-scope, and
|
|
690
|
+
* full route name — a name-keyed registry lookup at bake time reproduces the
|
|
691
|
+
* cross-router collision #757/#762 fixed (and the collector's historical
|
|
692
|
+
* `$$routePrefix` argument is a name PREFIX, which the root-scope registry
|
|
693
|
+
* never contains, silently degrading to the dot-heuristic).
|
|
694
|
+
* A definition mounted more than once is stamped each time; the last mount wins.
|
|
695
|
+
*/
|
|
696
|
+
export function stampStaticDefScope(
|
|
697
|
+
handler: unknown,
|
|
698
|
+
routeName?: string,
|
|
699
|
+
): void {
|
|
700
|
+
const store = RangoContext.getStore();
|
|
701
|
+
const def = handler as Record<string, unknown>;
|
|
702
|
+
if (routeName !== undefined) def.$$routeName = routeName;
|
|
703
|
+
def.$$rootScoped = getRootScoped();
|
|
704
|
+
if (store?.routerId !== undefined) def.$$routerId = store.routerId;
|
|
705
|
+
}
|
|
706
|
+
|
|
428
707
|
// Export HelperContext type for use in other modules
|
|
429
708
|
export type { HelperContext };
|
|
430
709
|
|
|
710
|
+
/**
|
|
711
|
+
* Return an isolated copy of a lazy include's captured parent entry.
|
|
712
|
+
*
|
|
713
|
+
* DSL helpers (loader(), middleware(), etc.) mutate ctx.parent in place.
|
|
714
|
+
* Multiple include() scopes capture the *same* syntheticMapRoot as their
|
|
715
|
+
* parent, so without isolation one include's loaders/middleware leak into
|
|
716
|
+
* every other route that shares that root.
|
|
717
|
+
*
|
|
718
|
+
* The clone is shallow: only the mutable arrays are copied so each
|
|
719
|
+
* include pushes to its own list. The rest of the entry (id, shortCode,
|
|
720
|
+
* parent pointer, handler) stays shared, which is correct and cheap.
|
|
721
|
+
*/
|
|
722
|
+
export function getIsolatedLazyParent(
|
|
723
|
+
captured: EntryData | null | undefined,
|
|
724
|
+
): EntryData | null {
|
|
725
|
+
if (!captured) return null;
|
|
726
|
+
return {
|
|
727
|
+
...captured,
|
|
728
|
+
loader: [...captured.loader],
|
|
729
|
+
middleware: [...captured.middleware],
|
|
730
|
+
revalidate: [...captured.revalidate],
|
|
731
|
+
errorBoundary: [...captured.errorBoundary],
|
|
732
|
+
notFoundBoundary: [...captured.notFoundBoundary],
|
|
733
|
+
layout: [...captured.layout],
|
|
734
|
+
parallel: { ...captured.parallel },
|
|
735
|
+
intercept: [...captured.intercept],
|
|
736
|
+
};
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
export function getParallelEntries(
|
|
740
|
+
parallels: ParallelEntries | EntryData[] | undefined,
|
|
741
|
+
): ParallelEntryData[] {
|
|
742
|
+
if (!parallels) return [];
|
|
743
|
+
if (Array.isArray(parallels)) {
|
|
744
|
+
return parallels.filter(
|
|
745
|
+
(entry): entry is ParallelEntryData => entry.type === "parallel",
|
|
746
|
+
);
|
|
747
|
+
}
|
|
748
|
+
return Object.values(parallels).filter(
|
|
749
|
+
(entry): entry is ParallelEntryData => !!entry,
|
|
750
|
+
);
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
export function getParallelSlotEntries(
|
|
754
|
+
parallels: ParallelEntries | EntryData[] | undefined,
|
|
755
|
+
): Array<{ slot: `@${string}`; entry: ParallelEntryData }> {
|
|
756
|
+
if (!parallels) return [];
|
|
757
|
+
|
|
758
|
+
if (Array.isArray(parallels)) {
|
|
759
|
+
return getParallelEntries(parallels).flatMap((entry) =>
|
|
760
|
+
(Object.keys(entry.handler) as `@${string}`[]).map((slot) => ({
|
|
761
|
+
slot,
|
|
762
|
+
entry,
|
|
763
|
+
})),
|
|
764
|
+
);
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
return Object.entries(parallels)
|
|
768
|
+
.filter(([, entry]) => !!entry)
|
|
769
|
+
.map(([slot, entry]) => ({
|
|
770
|
+
slot: slot as `@${string}`,
|
|
771
|
+
entry: entry!,
|
|
772
|
+
}));
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
export function getParallelSlotCount(
|
|
776
|
+
parallels: ParallelEntries | EntryData[] | undefined,
|
|
777
|
+
): number {
|
|
778
|
+
if (!parallels) return 0;
|
|
779
|
+
return Array.isArray(parallels)
|
|
780
|
+
? parallels.filter((entry) => entry?.type === "parallel").length
|
|
781
|
+
: Object.keys(parallels).length;
|
|
782
|
+
}
|
|
783
|
+
|
|
431
784
|
// ============================================================================
|
|
432
785
|
// Performance Metrics Helpers
|
|
433
786
|
// ============================================================================
|
|
@@ -443,8 +796,8 @@ export type { HelperContext };
|
|
|
443
796
|
* done(); // Records duration
|
|
444
797
|
* ```
|
|
445
798
|
*/
|
|
446
|
-
export function track(label: string): () => void {
|
|
447
|
-
const store =
|
|
799
|
+
export function track(label: string, depth?: number): () => void {
|
|
800
|
+
const store = RangoContext.getStore();
|
|
448
801
|
|
|
449
802
|
// No-op if context unavailable or metrics not enabled
|
|
450
803
|
if (!store?.metrics?.enabled) {
|
|
@@ -454,7 +807,305 @@ export function track(label: string): () => void {
|
|
|
454
807
|
const startTime = performance.now() - store.metrics.requestStart;
|
|
455
808
|
|
|
456
809
|
return () => {
|
|
457
|
-
const duration =
|
|
458
|
-
|
|
810
|
+
const duration =
|
|
811
|
+
performance.now() - store.metrics!.requestStart - startTime;
|
|
812
|
+
store.metrics!.metrics.push({
|
|
813
|
+
label,
|
|
814
|
+
duration,
|
|
815
|
+
startTime,
|
|
816
|
+
...(depth != null ? { depth } : {}),
|
|
817
|
+
});
|
|
459
818
|
};
|
|
460
819
|
}
|
|
820
|
+
|
|
821
|
+
/**
|
|
822
|
+
* Separate ALS for tracking loader execution scope.
|
|
823
|
+
* Uses a dedicated ALS (not RangoContext) to avoid issues with
|
|
824
|
+
* nested RangoContext.run() calls in Vite's module runner.
|
|
825
|
+
*/
|
|
826
|
+
const LOADER_SCOPE_KEY = Symbol.for("rangojs-router:loader-scope");
|
|
827
|
+
const loaderScopeALS: AsyncLocalStorage<{ active: true }> = ((
|
|
828
|
+
globalThis as any
|
|
829
|
+
)[LOADER_SCOPE_KEY] ??= new AsyncLocalStorage<{ active: true }>());
|
|
830
|
+
|
|
831
|
+
// Purity-only scope: marks that a loader FUNCTION BODY is executing, regardless
|
|
832
|
+
// of how the loader was invoked (DSL via runInsideLoaderScope, or handler-
|
|
833
|
+
// invoked via ctx.use). Consulted by isInsideCacheScope() to exempt
|
|
834
|
+
// request-scoped reads, by getCurrentLoaderBodyId() for guard-warning
|
|
835
|
+
// attribution, and by isInsideHandlerInvokedLoaderBody() for the
|
|
836
|
+
// consumption-lane rule (the shell-capture guard exemption). It deliberately
|
|
837
|
+
// does NOT affect isInsideLoaderScope(), so rendered()/barrier/deadlock
|
|
838
|
+
// gating (which must distinguish DSL from handler-invoked loaders) is
|
|
839
|
+
// unchanged.
|
|
840
|
+
const LOADER_BODY_SCOPE_KEY = Symbol.for("rangojs-router:loader-body-scope");
|
|
841
|
+
const loaderBodyScopeALS: AsyncLocalStorage<{
|
|
842
|
+
active: true;
|
|
843
|
+
loaderId?: string;
|
|
844
|
+
handlerInvoked?: boolean;
|
|
845
|
+
}> = ((globalThis as any)[LOADER_BODY_SCOPE_KEY] ??= new AsyncLocalStorage<{
|
|
846
|
+
active: true;
|
|
847
|
+
loaderId?: string;
|
|
848
|
+
handlerInvoked?: boolean;
|
|
849
|
+
}>());
|
|
850
|
+
|
|
851
|
+
/**
|
|
852
|
+
* Check if the current execution is inside a cache() DSL boundary.
|
|
853
|
+
* Returns false inside loader execution — loaders are always fresh
|
|
854
|
+
* (never cached), so non-cacheable reads are safe.
|
|
855
|
+
*/
|
|
856
|
+
export function isInsideCacheScope(): boolean {
|
|
857
|
+
if (RangoContext.getStore()?.insideCacheScope !== true) return false;
|
|
858
|
+
// Request-scoped READS are exempt in any loader body — DSL loaders re-run on
|
|
859
|
+
// every request (including cache() HITs via resolveLoadersOnly), and a
|
|
860
|
+
// handler-invoked loader body, though skipped with its handler on a HIT,
|
|
861
|
+
// yields a BAKED shared copy in the cached artifact — an accepted
|
|
862
|
+
// consumption-lane tradeoff (#672/#674). This is deliberately BROADER than
|
|
863
|
+
// the WRITE guard (assertCachedHeaderWriteAllowed narrows the cache()
|
|
864
|
+
// exemption to DSL scope, #725): a read bakes-and-accepts, a Set-Cookie/header
|
|
865
|
+
// write drops-and-throws because it has no baked-copy semantics on a HIT.
|
|
866
|
+
if (isInsideAnyLoaderScope()) return false;
|
|
867
|
+
return true;
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
/**
|
|
871
|
+
* Check if the current execution is inside a DSL loader scope
|
|
872
|
+
* (wrapped by runInsideLoaderScope). Used by rendered() barrier
|
|
873
|
+
* to distinguish DSL loaders from handler-invoked loaders.
|
|
874
|
+
*/
|
|
875
|
+
export function isInsideLoaderScope(): boolean {
|
|
876
|
+
return loaderScopeALS.getStore()?.active === true;
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
/**
|
|
880
|
+
* Latch the cached header-write scope for the current request. First latch
|
|
881
|
+
* wins: a ppr route latched at the funnel top is not downgraded by a nested
|
|
882
|
+
* cache() entry (the document-scoped wording is the more useful one).
|
|
883
|
+
* Takes scalars so the already-latched path allocates nothing.
|
|
884
|
+
*/
|
|
885
|
+
export function latchCachedHeaderScope(
|
|
886
|
+
kind: CachedHeaderScope["kind"],
|
|
887
|
+
routeKey?: string,
|
|
888
|
+
): void {
|
|
889
|
+
const store = RangoContext.getStore();
|
|
890
|
+
if (store && !store.cachedHeaderScope) {
|
|
891
|
+
store.cachedHeaderScope = { kind, routeKey };
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
/** True inside ANY loader execution — DSL loader scope or a loader body
|
|
896
|
+
* (however invoked). The "loaders always re-run fresh" exemptions key off
|
|
897
|
+
* this. */
|
|
898
|
+
function isInsideAnyLoaderScope(): boolean {
|
|
899
|
+
return (
|
|
900
|
+
loaderScopeALS.getStore()?.active === true ||
|
|
901
|
+
loaderBodyScopeALS.getStore()?.active === true
|
|
902
|
+
);
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
/**
|
|
906
|
+
* The one ppr opt-in predicate: a page route entry that DECLARED `ppr`
|
|
907
|
+
* (`false` and undefined mean plain axis 1). Shared by the serve path
|
|
908
|
+
* (rsc/shell-serve.ts resolvePprConfig) and the header-write latch below so
|
|
909
|
+
* the two layers can never drift on what counts as a ppr route.
|
|
910
|
+
*/
|
|
911
|
+
export function isPprEntry(entry: EntryData): entry is EntryData & {
|
|
912
|
+
type: "route";
|
|
913
|
+
ppr: true | import("../urls/pattern-types.js").PartialPrerenderProps;
|
|
914
|
+
} {
|
|
915
|
+
return (
|
|
916
|
+
entry.type === "route" && entry.ppr !== undefined && entry.ppr !== false
|
|
917
|
+
);
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
/**
|
|
921
|
+
* Latch the ppr header-write scope when the entry chain about to resolve is a
|
|
922
|
+
* `ppr` page route's. Called at the TOP of every segment funnel — unlike
|
|
923
|
+
* cache() (positional: ancestors before the boundary stay writable), ppr is
|
|
924
|
+
* document-scoped: the root layout down to the page bakes into the shared
|
|
925
|
+
* shell, so the whole funnel is cached territory.
|
|
926
|
+
*
|
|
927
|
+
* Checks the LEAF entry only: `entries` is the traverseBack chain
|
|
928
|
+
* [root, ..., manifestEntry], and the serve path reads `ppr` off the same
|
|
929
|
+
* leaf (rsc-rendering.ts: resolvePprConfig(manifestEntry)) — guard and serve
|
|
930
|
+
* share the predicate (isPprEntry) AND the input, so they cannot drift.
|
|
931
|
+
*/
|
|
932
|
+
export function latchPprHeaderScopeForEntries(
|
|
933
|
+
entries: EntryData[],
|
|
934
|
+
routeKey?: string,
|
|
935
|
+
): void {
|
|
936
|
+
const store = RangoContext.getStore();
|
|
937
|
+
if (!store || store.cachedHeaderScope) return;
|
|
938
|
+
const leaf = entries[entries.length - 1];
|
|
939
|
+
if (leaf !== undefined && isPprEntry(leaf)) {
|
|
940
|
+
store.cachedHeaderScope = { kind: "ppr", routeKey };
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
|
|
944
|
+
/**
|
|
945
|
+
* Clear the ppr header-write latch for the remainder of this render (issue
|
|
946
|
+
* #735). Called by ctx.dynamic(): a dynamic() render opts off the SHELL axis
|
|
947
|
+
* (rsc-rendering.ts skips both the HIT commit and the MISS capture on
|
|
948
|
+
* `_dynamic`), so it is ALWAYS live — every request re-runs the handler and its
|
|
949
|
+
* header write lands identically each time. The guard's reason to forbid it
|
|
950
|
+
* (MISS/HIT divergence) evaporates, so the write is re-permitted.
|
|
951
|
+
*
|
|
952
|
+
* ONLY the ppr (shell) axis is dropped — dynamic() does NOT opt off the CACHE
|
|
953
|
+
* axis. Two cases:
|
|
954
|
+
* - Pure ppr funnel (no cache() boundary): clear the latch → writes re-permit.
|
|
955
|
+
* - ppr route nested under a cache() boundary: fresh.ts latches "ppr" at the
|
|
956
|
+
* funnel top (first-wins), which MASKS the positional cache() latch, but the
|
|
957
|
+
* handler still runs inside the cache scope (`insideCacheScope`). A cache()
|
|
958
|
+
* HIT skips that handler, so the write is still non-deterministic — UNMASK to
|
|
959
|
+
* "cache" instead of clearing, so the guard keeps throwing (accurate cache()
|
|
960
|
+
* wording). This is why the check keys off `insideCacheScope`, not just kind.
|
|
961
|
+
*
|
|
962
|
+
* A subsequent cache() entered AFTER dynamic() on a pure-ppr funnel re-latches
|
|
963
|
+
* "cache" via latchCachedHeaderScope's `!store.cachedHeaderScope` guard (the
|
|
964
|
+
* field is undefined again once cleared). No-op when there is no funnel store or
|
|
965
|
+
* no ppr latch (dynamic() from middleware runs outside the funnel Store.run
|
|
966
|
+
* scope, so nothing is latched — the middleware exemption is unchanged).
|
|
967
|
+
*/
|
|
968
|
+
export function clearPprHeaderScope(): void {
|
|
969
|
+
const store = RangoContext.getStore();
|
|
970
|
+
if (store?.cachedHeaderScope?.kind !== "ppr") return;
|
|
971
|
+
store.cachedHeaderScope = store.insideCacheScope
|
|
972
|
+
? { kind: "cache", routeKey: store.cachedHeaderScope.routeKey }
|
|
973
|
+
: undefined;
|
|
974
|
+
}
|
|
975
|
+
|
|
976
|
+
/**
|
|
977
|
+
* RULE (issue #713): in any cached scenario ONLY MIDDLEWARE writes response
|
|
978
|
+
* headers — handler and loader writes throw while a scope is latched; the one
|
|
979
|
+
* exemption is DSL (registered) loaders under plain cache(). A handler-invoked
|
|
980
|
+
* loader body (ctx.use from a handler, never registered with loader()) is
|
|
981
|
+
* skipped with its handler on a HIT and throws like a handler write (#725).
|
|
982
|
+
* A ctx.dynamic() render clears the ppr latch (clearPprHeaderScope, #735) so
|
|
983
|
+
* its always-live handler header writes are re-permitted. Full layer rules and
|
|
984
|
+
* rationale: docs/design/ppr-shell-resume.md "The header doctrine".
|
|
985
|
+
*/
|
|
986
|
+
export function assertCachedHeaderWriteAllowed(
|
|
987
|
+
surface: string,
|
|
988
|
+
surfaceProp?: string | symbol,
|
|
989
|
+
): void {
|
|
990
|
+
const scope = RangoContext.getStore()?.cachedHeaderScope;
|
|
991
|
+
if (!scope) return;
|
|
992
|
+
// Exempt DSL loaders (loaderScopeALS) ONLY. A registered loader re-runs on
|
|
993
|
+
// every cache HIT (fresh.ts runInsideLoaderScope -> cache-lookup.ts
|
|
994
|
+
// resolveLoadersOnly), so its header/cookie writes merge into every response
|
|
995
|
+
// with no MISS/HIT divergence. A handler-invoked loader body has
|
|
996
|
+
// loaderBodyScopeALS active but loaderScopeALS unset (loader-resolution.ts
|
|
997
|
+
// derives isDslLoader from isInsideLoaderScope()); on a HIT the handler is
|
|
998
|
+
// skipped so that loader never re-runs and its write would land only on the
|
|
999
|
+
// MISS — throw it. isInsideLoaderScope() (not isInsideAnyLoaderScope) is the
|
|
1000
|
+
// discriminator; the DSL scope ALS survives nested ctx.use bodies, so a
|
|
1001
|
+
// handler-invoked loader nested under a DSL loader stays exempt (its DSL
|
|
1002
|
+
// parent re-invokes it on every HIT). This is the exempt fast path, so the
|
|
1003
|
+
// broad predicate for the error label is deferred to the throw path below.
|
|
1004
|
+
if (scope.kind === "cache" && isInsideLoaderScope()) return;
|
|
1005
|
+
// Everything below runs only on the throw path — `surfaceProp` exists so
|
|
1006
|
+
// callers pass constants and the success path allocates nothing (the full
|
|
1007
|
+
// surface, e.g. "ctx.headers.set()", is assembled here). isInsideAnyLoaderScope
|
|
1008
|
+
// (broad) labels a now-throwing handler-invoked loader body "loader".
|
|
1009
|
+
const fullSurface =
|
|
1010
|
+
surfaceProp === undefined ? surface : `${surface}.${String(surfaceProp)}()`;
|
|
1011
|
+
const layer = isInsideAnyLoaderScope() ? "loader" : "handler";
|
|
1012
|
+
const route = scope.routeKey ? ` (route "${scope.routeKey}")` : "";
|
|
1013
|
+
const where =
|
|
1014
|
+
scope.kind === "ppr"
|
|
1015
|
+
? `on a ppr route${route} — the document shell is cached and replayed`
|
|
1016
|
+
: `inside a cache() boundary${route}`;
|
|
1017
|
+
// ppr loader writes fail by physics (headers flush before loaders settle);
|
|
1018
|
+
// every other throw — a handler, or a handler-invoked loader under cache() —
|
|
1019
|
+
// fails because the handler is skipped on a HIT, so key the reason on the
|
|
1020
|
+
// scope kind, not the layer.
|
|
1021
|
+
const why =
|
|
1022
|
+
scope.kind === "ppr" && layer === "loader"
|
|
1023
|
+
? "The response headers flush with the shell before loaders settle, so this write is dropped on cache hits."
|
|
1024
|
+
: "On a cache hit the handler is skipped, so this write would silently vanish.";
|
|
1025
|
+
throw new Error(
|
|
1026
|
+
`${fullSurface} cannot be called from a ${layer} ${where}. ${why} ` +
|
|
1027
|
+
"Set response headers in route middleware instead — middleware runs " +
|
|
1028
|
+
"on every request, including cache hits.",
|
|
1029
|
+
);
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
/**
|
|
1033
|
+
* Run `fn` inside a loader scope. While active, cache-scope guards
|
|
1034
|
+
* are bypassed because loaders are always fresh (never cached) and
|
|
1035
|
+
* their side effects (setCookie, header, etc.) are safe.
|
|
1036
|
+
*/
|
|
1037
|
+
export function runInsideLoaderScope<T>(fn: () => T): T {
|
|
1038
|
+
return loaderScopeALS.run({ active: true }, fn);
|
|
1039
|
+
}
|
|
1040
|
+
|
|
1041
|
+
/**
|
|
1042
|
+
* Run `fn` inside a loader BODY scope. Marks loader-function execution for the
|
|
1043
|
+
* cache-purity guard only (isInsideCacheScope), WITHOUT affecting
|
|
1044
|
+
* isInsideLoaderScope()/rendered() gating. Applied to every loader body (DSL
|
|
1045
|
+
* and handler-invoked via ctx.use) so request-scoped reads inside a loader
|
|
1046
|
+
* never trip the cache-scope guards — loaders always run fresh.
|
|
1047
|
+
*/
|
|
1048
|
+
export function runInsideLoaderBodyScope<T>(
|
|
1049
|
+
fn: () => T,
|
|
1050
|
+
loaderId?: string,
|
|
1051
|
+
handlerInvoked?: boolean,
|
|
1052
|
+
): T {
|
|
1053
|
+
return loaderBodyScopeALS.run({ active: true, loaderId, handlerInvoked }, fn);
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
/**
|
|
1057
|
+
* The $$id of the loader whose body is currently executing, or undefined
|
|
1058
|
+
* outside any loader body. Used by the shell-capture identity guard
|
|
1059
|
+
* (cookie-store.ts) so its refusal warning can name the loader that read
|
|
1060
|
+
* cookies()/headers() instead of blaming a lane it cannot see — the old
|
|
1061
|
+
* hardcoded "bake-lane loader" text misled a live-lane debugging session
|
|
1062
|
+
* (issue #672, secondary).
|
|
1063
|
+
*/
|
|
1064
|
+
export function getCurrentLoaderBodyId(): string | undefined {
|
|
1065
|
+
return loaderBodyScopeALS.getStore()?.loaderId;
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
/**
|
|
1069
|
+
* True while a HANDLER-invoked loader body (`await ctx.use(Loader)` from a
|
|
1070
|
+
* handler, not the DSL segment funnel) is executing. The consumption-lane
|
|
1071
|
+
* rule keys off this: handler consumption yields a BAKED copy in every shared
|
|
1072
|
+
* artifact — cache(), "use cache", and the PPR shell — so the shell-capture
|
|
1073
|
+
* identity guard (cookie-store.ts) permits cookies()/headers() here, exactly
|
|
1074
|
+
* like the cache-purity guards do. DSL segment loaders (live lane masked at
|
|
1075
|
+
* capture, bake lane guarded) never set the flag.
|
|
1076
|
+
*/
|
|
1077
|
+
export function isInsideHandlerInvokedLoaderBody(): boolean {
|
|
1078
|
+
return loaderBodyScopeALS.getStore()?.handlerInvoked === true;
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
// Scope for handle PUSH CALLBACKS (push(() => ...), including async ones).
|
|
1082
|
+
// A push callback's value is stored as-is; if it is a promise it is NOT tracked
|
|
1083
|
+
// by handleStore.settled and does not block segment resolution, so a
|
|
1084
|
+
// ctx.use(loader) made from inside such a callback can never form a rendered()
|
|
1085
|
+
// deadlock. This is an ALS (not a plain boolean) so the exemption survives the
|
|
1086
|
+
// callback's own awaits — an async push callback that resumes after `await`
|
|
1087
|
+
// still reads as "inside a push callback" and stays out of the deadlock guard.
|
|
1088
|
+
const PUSH_CALLBACK_SCOPE_KEY = Symbol.for(
|
|
1089
|
+
"rangojs-router:push-callback-scope",
|
|
1090
|
+
);
|
|
1091
|
+
const pushCallbackScopeALS: AsyncLocalStorage<{ active: true }> = ((
|
|
1092
|
+
globalThis as any
|
|
1093
|
+
)[PUSH_CALLBACK_SCOPE_KEY] ??= new AsyncLocalStorage<{ active: true }>());
|
|
1094
|
+
|
|
1095
|
+
/**
|
|
1096
|
+
* Check if the current execution is inside a handle push callback (sync or an
|
|
1097
|
+
* async callback's continuation). Used by the handler-to-loader deadlock guard
|
|
1098
|
+
* to exempt push-callback continuations.
|
|
1099
|
+
*/
|
|
1100
|
+
export function isInsidePushCallbackScope(): boolean {
|
|
1101
|
+
return pushCallbackScopeALS.getStore()?.active === true;
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
/**
|
|
1105
|
+
* Run `fn` inside a push-callback scope. Wraps the invocation of a handle push
|
|
1106
|
+
* callback so that any ctx.use(loader) it makes — including after one of its own
|
|
1107
|
+
* awaits — is exempt from the deadlock guard.
|
|
1108
|
+
*/
|
|
1109
|
+
export function runInsidePushCallbackScope<T>(fn: () => T): T {
|
|
1110
|
+
return pushCallbackScopeALS.run({ active: true }, fn);
|
|
1111
|
+
}
|