@rangojs/router 0.0.0-experimental.18 → 0.0.0-experimental.1878aa49
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/{CLAUDE.md → AGENTS.md} +4 -0
- package/README.md +91 -19
- 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 +348 -80
- package/dist/bin/rango.js.map +1 -0
- package/dist/browser/event-controller.d.ts +191 -0
- package/dist/browser/event-controller.d.ts.map +1 -0
- package/dist/browser/event-controller.js +559 -0
- package/dist/browser/event-controller.js.map +1 -0
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +14 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/link-interceptor.d.ts +38 -0
- package/dist/browser/link-interceptor.d.ts.map +1 -0
- package/dist/browser/link-interceptor.js +99 -0
- package/dist/browser/link-interceptor.js.map +1 -0
- package/dist/browser/logging.d.ts +10 -0
- package/dist/browser/logging.d.ts.map +1 -0
- package/dist/browser/logging.js +29 -0
- package/dist/browser/logging.js.map +1 -0
- package/dist/browser/lru-cache.d.ts +17 -0
- package/dist/browser/lru-cache.d.ts.map +1 -0
- package/dist/browser/lru-cache.js +50 -0
- package/dist/browser/lru-cache.js.map +1 -0
- package/dist/browser/merge-segment-loaders.d.ts +39 -0
- package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
- package/dist/browser/merge-segment-loaders.js +102 -0
- package/dist/browser/merge-segment-loaders.js.map +1 -0
- package/dist/browser/navigation-bridge.d.ts +102 -0
- package/dist/browser/navigation-bridge.d.ts.map +1 -0
- package/dist/browser/navigation-bridge.js +708 -0
- package/dist/browser/navigation-bridge.js.map +1 -0
- package/dist/browser/navigation-client.d.ts +25 -0
- package/dist/browser/navigation-client.d.ts.map +1 -0
- package/dist/browser/navigation-client.js +157 -0
- package/dist/browser/navigation-client.js.map +1 -0
- package/dist/browser/navigation-store.d.ts +101 -0
- package/dist/browser/navigation-store.d.ts.map +1 -0
- package/dist/browser/navigation-store.js +625 -0
- package/dist/browser/navigation-store.js.map +1 -0
- package/dist/browser/partial-update.d.ts +75 -0
- package/dist/browser/partial-update.d.ts.map +1 -0
- package/dist/browser/partial-update.js +426 -0
- package/dist/browser/partial-update.js.map +1 -0
- package/dist/browser/react/Link.d.ts +86 -0
- package/dist/browser/react/Link.d.ts.map +1 -0
- package/dist/browser/react/Link.js +128 -0
- package/dist/browser/react/Link.js.map +1 -0
- package/dist/browser/react/NavigationProvider.d.ts +63 -0
- package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
- package/dist/browser/react/NavigationProvider.js +216 -0
- package/dist/browser/react/NavigationProvider.js.map +1 -0
- package/dist/browser/react/ScrollRestoration.d.ts +75 -0
- package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
- package/dist/browser/react/ScrollRestoration.js +57 -0
- package/dist/browser/react/ScrollRestoration.js.map +1 -0
- package/dist/browser/react/context.d.ts +46 -0
- package/dist/browser/react/context.d.ts.map +1 -0
- package/dist/browser/react/context.js +10 -0
- package/dist/browser/react/context.js.map +1 -0
- package/dist/browser/react/index.d.ts +11 -0
- package/dist/browser/react/index.d.ts.map +1 -0
- package/dist/browser/react/index.js +22 -0
- package/dist/browser/react/index.js.map +1 -0
- package/dist/browser/react/location-state-shared.d.ts +63 -0
- package/dist/browser/react/location-state-shared.d.ts.map +1 -0
- package/dist/browser/react/location-state-shared.js +81 -0
- package/dist/browser/react/location-state-shared.js.map +1 -0
- package/dist/browser/react/location-state.d.ts +23 -0
- package/dist/browser/react/location-state.d.ts.map +1 -0
- package/dist/browser/react/location-state.js +29 -0
- package/dist/browser/react/location-state.js.map +1 -0
- package/dist/browser/react/mount-context.d.ts +24 -0
- package/dist/browser/react/mount-context.d.ts.map +1 -0
- package/dist/browser/react/mount-context.js +24 -0
- package/dist/browser/react/mount-context.js.map +1 -0
- package/dist/browser/react/use-action.d.ts +64 -0
- package/dist/browser/react/use-action.d.ts.map +1 -0
- package/dist/browser/react/use-action.js +134 -0
- package/dist/browser/react/use-action.js.map +1 -0
- package/dist/browser/react/use-client-cache.d.ts +41 -0
- package/dist/browser/react/use-client-cache.d.ts.map +1 -0
- package/dist/browser/react/use-client-cache.js +39 -0
- package/dist/browser/react/use-client-cache.js.map +1 -0
- package/dist/browser/react/use-handle.d.ts +31 -0
- package/dist/browser/react/use-handle.d.ts.map +1 -0
- package/dist/browser/react/use-handle.js +144 -0
- package/dist/browser/react/use-handle.js.map +1 -0
- package/dist/browser/react/use-href.d.ts +33 -0
- package/dist/browser/react/use-href.d.ts.map +1 -0
- package/dist/browser/react/use-href.js +39 -0
- package/dist/browser/react/use-href.js.map +1 -0
- package/dist/browser/react/use-link-status.d.ts +37 -0
- package/dist/browser/react/use-link-status.d.ts.map +1 -0
- package/dist/browser/react/use-link-status.js +99 -0
- package/dist/browser/react/use-link-status.js.map +1 -0
- package/dist/browser/react/use-mount.d.ts +25 -0
- package/dist/browser/react/use-mount.d.ts.map +1 -0
- package/dist/browser/react/use-mount.js +30 -0
- package/dist/browser/react/use-mount.js.map +1 -0
- package/dist/browser/react/use-navigation.d.ts +27 -0
- package/dist/browser/react/use-navigation.d.ts.map +1 -0
- package/dist/browser/react/use-navigation.js +87 -0
- package/dist/browser/react/use-navigation.js.map +1 -0
- package/dist/browser/react/use-segments.d.ts +38 -0
- package/dist/browser/react/use-segments.d.ts.map +1 -0
- package/dist/browser/react/use-segments.js +130 -0
- package/dist/browser/react/use-segments.js.map +1 -0
- package/dist/browser/request-controller.d.ts +26 -0
- package/dist/browser/request-controller.d.ts.map +1 -0
- package/dist/browser/request-controller.js +147 -0
- package/dist/browser/request-controller.js.map +1 -0
- package/dist/browser/rsc-router.d.ts +129 -0
- package/dist/browser/rsc-router.d.ts.map +1 -0
- package/dist/browser/rsc-router.js +195 -0
- package/dist/browser/rsc-router.js.map +1 -0
- package/dist/browser/scroll-restoration.d.ts +93 -0
- package/dist/browser/scroll-restoration.d.ts.map +1 -0
- package/dist/browser/scroll-restoration.js +321 -0
- package/dist/browser/scroll-restoration.js.map +1 -0
- package/dist/browser/segment-structure-assert.d.ts +17 -0
- package/dist/browser/segment-structure-assert.d.ts.map +1 -0
- package/dist/browser/segment-structure-assert.js +59 -0
- package/dist/browser/segment-structure-assert.js.map +1 -0
- package/dist/browser/server-action-bridge.d.ts +26 -0
- package/dist/browser/server-action-bridge.d.ts.map +1 -0
- package/dist/browser/server-action-bridge.js +668 -0
- package/dist/browser/server-action-bridge.js.map +1 -0
- package/dist/browser/shallow.d.ts +12 -0
- package/dist/browser/shallow.d.ts.map +1 -0
- package/dist/browser/shallow.js +34 -0
- package/dist/browser/shallow.js.map +1 -0
- package/dist/browser/types.d.ts +369 -0
- package/dist/browser/types.d.ts.map +1 -0
- package/dist/browser/types.js +2 -0
- package/dist/browser/types.js.map +1 -0
- package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
- package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-cli.test.js +237 -0
- package/dist/build/__tests__/generate-cli.test.js.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.js +119 -0
- package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.js +620 -0
- package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.js +308 -0
- package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
- package/dist/build/generate-manifest.d.ts +81 -0
- package/dist/build/generate-manifest.d.ts.map +1 -0
- package/dist/build/generate-manifest.js +276 -0
- package/dist/build/generate-manifest.js.map +1 -0
- package/dist/build/generate-route-types.d.ts +115 -0
- package/dist/build/generate-route-types.d.ts.map +1 -0
- package/dist/build/generate-route-types.js +740 -0
- package/dist/build/generate-route-types.js.map +1 -0
- package/dist/build/index.d.ts +21 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +21 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/route-trie.d.ts +71 -0
- package/dist/build/route-trie.d.ts.map +1 -0
- package/dist/build/route-trie.js +175 -0
- package/dist/build/route-trie.js.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.js +208 -0
- package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
- package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
- package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
- package/dist/cache/__tests__/document-cache.test.js +345 -0
- package/dist/cache/__tests__/document-cache.test.js.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
- package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
- package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-store.test.js +367 -0
- package/dist/cache/__tests__/memory-store.test.js.map +1 -0
- package/dist/cache/cache-scope.d.ts +102 -0
- package/dist/cache/cache-scope.d.ts.map +1 -0
- package/dist/cache/cache-scope.js +440 -0
- package/dist/cache/cache-scope.js.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
- package/dist/cache/cf/cf-cache-store.d.ts +165 -0
- package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
- package/dist/cache/cf/cf-cache-store.js +242 -0
- package/dist/cache/cf/cf-cache-store.js.map +1 -0
- package/dist/cache/cf/index.d.ts +14 -0
- package/dist/cache/cf/index.d.ts.map +1 -0
- package/dist/cache/cf/index.js +17 -0
- package/dist/cache/cf/index.js.map +1 -0
- package/dist/cache/document-cache.d.ts +64 -0
- package/dist/cache/document-cache.d.ts.map +1 -0
- package/dist/cache/document-cache.js +228 -0
- package/dist/cache/document-cache.js.map +1 -0
- package/dist/cache/index.d.ts +19 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +21 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/memory-segment-store.d.ts +110 -0
- package/dist/cache/memory-segment-store.d.ts.map +1 -0
- package/dist/cache/memory-segment-store.js +117 -0
- package/dist/cache/memory-segment-store.js.map +1 -0
- package/dist/cache/memory-store.d.ts +41 -0
- package/dist/cache/memory-store.d.ts.map +1 -0
- package/dist/cache/memory-store.js +191 -0
- package/dist/cache/memory-store.js.map +1 -0
- package/dist/cache/types.d.ts +317 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +12 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/client.d.ts +248 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +367 -0
- package/dist/client.js.map +1 -0
- package/dist/client.rsc.d.ts +26 -0
- package/dist/client.rsc.d.ts.map +1 -0
- package/dist/client.rsc.js +46 -0
- package/dist/client.rsc.js.map +1 -0
- package/dist/component-utils.d.ts +36 -0
- package/dist/component-utils.d.ts.map +1 -0
- package/dist/component-utils.js +61 -0
- package/dist/component-utils.js.map +1 -0
- package/dist/components/DefaultDocument.d.ts +13 -0
- package/dist/components/DefaultDocument.d.ts.map +1 -0
- package/dist/components/DefaultDocument.js +15 -0
- package/dist/components/DefaultDocument.js.map +1 -0
- package/dist/debug.d.ts +58 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +157 -0
- package/dist/debug.js.map +1 -0
- package/dist/default-error-boundary.d.ts +11 -0
- package/dist/default-error-boundary.d.ts.map +1 -0
- package/dist/default-error-boundary.js +45 -0
- package/dist/default-error-boundary.js.map +1 -0
- package/dist/deps/browser.d.ts +2 -0
- package/dist/deps/browser.d.ts.map +1 -0
- package/dist/deps/browser.js +3 -0
- package/dist/deps/browser.js.map +1 -0
- package/dist/deps/html-stream-client.d.ts +2 -0
- package/dist/deps/html-stream-client.d.ts.map +1 -0
- package/dist/deps/html-stream-client.js +3 -0
- package/dist/deps/html-stream-client.js.map +1 -0
- package/dist/deps/html-stream-server.d.ts +2 -0
- package/dist/deps/html-stream-server.d.ts.map +1 -0
- package/dist/deps/html-stream-server.js +3 -0
- package/dist/deps/html-stream-server.js.map +1 -0
- package/dist/deps/rsc.d.ts +2 -0
- package/dist/deps/rsc.d.ts.map +1 -0
- package/dist/deps/rsc.js +4 -0
- package/dist/deps/rsc.js.map +1 -0
- package/dist/deps/ssr.d.ts +2 -0
- package/dist/deps/ssr.d.ts.map +1 -0
- package/dist/deps/ssr.js +3 -0
- package/dist/deps/ssr.js.map +1 -0
- package/dist/errors.d.ts +174 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +241 -0
- package/dist/errors.js.map +1 -0
- package/dist/handle.d.ts +78 -0
- package/dist/handle.d.ts.map +1 -0
- package/dist/handle.js +82 -0
- package/dist/handle.js.map +1 -0
- package/dist/handles/MetaTags.d.ts +14 -0
- package/dist/handles/MetaTags.d.ts.map +1 -0
- package/dist/handles/MetaTags.js +136 -0
- package/dist/handles/MetaTags.js.map +1 -0
- package/dist/handles/index.d.ts +6 -0
- package/dist/handles/index.d.ts.map +1 -0
- package/dist/handles/index.js +6 -0
- package/dist/handles/index.js.map +1 -0
- package/dist/handles/meta.d.ts +39 -0
- package/dist/handles/meta.d.ts.map +1 -0
- package/dist/handles/meta.js +202 -0
- package/dist/handles/meta.js.map +1 -0
- package/dist/host/__tests__/errors.test.d.ts +2 -0
- package/dist/host/__tests__/errors.test.d.ts.map +1 -0
- package/dist/host/__tests__/errors.test.js +76 -0
- package/dist/host/__tests__/errors.test.js.map +1 -0
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
- package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
- package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
- package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
- package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
- package/dist/host/__tests__/pattern-matcher.test.js +251 -0
- package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
- package/dist/host/__tests__/router.test.d.ts +2 -0
- package/dist/host/__tests__/router.test.d.ts.map +1 -0
- package/dist/host/__tests__/router.test.js +241 -0
- package/dist/host/__tests__/router.test.js.map +1 -0
- package/dist/host/__tests__/testing.test.d.ts +2 -0
- package/dist/host/__tests__/testing.test.d.ts.map +1 -0
- package/dist/host/__tests__/testing.test.js +64 -0
- package/dist/host/__tests__/testing.test.js.map +1 -0
- package/dist/host/__tests__/utils.test.d.ts +2 -0
- package/dist/host/__tests__/utils.test.d.ts.map +1 -0
- package/dist/host/__tests__/utils.test.js +29 -0
- package/dist/host/__tests__/utils.test.js.map +1 -0
- package/dist/host/cookie-handler.d.ts +34 -0
- package/dist/host/cookie-handler.d.ts.map +1 -0
- package/dist/host/cookie-handler.js +124 -0
- package/dist/host/cookie-handler.js.map +1 -0
- package/dist/host/errors.d.ts +56 -0
- package/dist/host/errors.d.ts.map +1 -0
- package/dist/host/errors.js +79 -0
- package/dist/host/errors.js.map +1 -0
- package/dist/host/index.d.ts +29 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +32 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/pattern-matcher.d.ts +36 -0
- package/dist/host/pattern-matcher.d.ts.map +1 -0
- package/dist/host/pattern-matcher.js +172 -0
- package/dist/host/pattern-matcher.js.map +1 -0
- package/dist/host/router.d.ts +26 -0
- package/dist/host/router.d.ts.map +1 -0
- package/dist/host/router.js +218 -0
- package/dist/host/router.js.map +1 -0
- package/dist/host/testing.d.ts +36 -0
- package/dist/host/testing.d.ts.map +1 -0
- package/dist/host/testing.js +55 -0
- package/dist/host/testing.js.map +1 -0
- package/dist/host/types.d.ts +115 -0
- package/dist/host/types.d.ts.map +1 -0
- package/dist/host/types.js +7 -0
- package/dist/host/types.js.map +1 -0
- package/dist/host/utils.d.ts +21 -0
- package/dist/host/utils.d.ts.map +1 -0
- package/dist/host/utils.js +23 -0
- package/dist/host/utils.js.map +1 -0
- package/dist/href-client.d.ts +131 -0
- package/dist/href-client.d.ts.map +1 -0
- package/dist/href-client.js +64 -0
- package/dist/href-client.js.map +1 -0
- package/{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/dist/network-error-thrower.d.ts +17 -0
- package/dist/network-error-thrower.d.ts.map +1 -0
- package/dist/network-error-thrower.js +14 -0
- package/dist/network-error-thrower.js.map +1 -0
- package/dist/outlet-context.d.ts +13 -0
- package/dist/outlet-context.d.ts.map +1 -0
- package/dist/outlet-context.js +3 -0
- package/dist/outlet-context.js.map +1 -0
- package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
- package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
- package/dist/prerender/__tests__/param-hash.test.js +148 -0
- package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
- package/dist/prerender/param-hash.d.ts +16 -0
- package/dist/prerender/param-hash.d.ts.map +1 -0
- package/dist/prerender/param-hash.js +36 -0
- package/dist/prerender/param-hash.js.map +1 -0
- package/dist/prerender/store.d.ts +38 -0
- package/dist/prerender/store.d.ts.map +1 -0
- package/dist/prerender/store.js +61 -0
- package/dist/prerender/store.js.map +1 -0
- package/dist/prerender.d.ts +66 -0
- package/dist/prerender.d.ts.map +1 -0
- package/dist/prerender.js +57 -0
- package/dist/prerender.js.map +1 -0
- package/dist/reverse.d.ts +196 -0
- package/dist/reverse.d.ts.map +1 -0
- package/dist/reverse.js +78 -0
- package/dist/reverse.js.map +1 -0
- package/dist/root-error-boundary.d.ts +33 -0
- package/dist/root-error-boundary.d.ts.map +1 -0
- package/dist/root-error-boundary.js +165 -0
- package/dist/root-error-boundary.js.map +1 -0
- package/dist/route-content-wrapper.d.ts +46 -0
- package/dist/route-content-wrapper.d.ts.map +1 -0
- package/dist/route-content-wrapper.js +77 -0
- package/dist/route-content-wrapper.js.map +1 -0
- package/dist/route-definition.d.ts +421 -0
- package/dist/route-definition.d.ts.map +1 -0
- package/dist/route-definition.js +868 -0
- package/dist/route-definition.js.map +1 -0
- package/dist/route-map-builder.d.ts +155 -0
- package/dist/route-map-builder.d.ts.map +1 -0
- package/dist/route-map-builder.js +237 -0
- package/dist/route-map-builder.js.map +1 -0
- package/dist/route-types.d.ts +165 -0
- package/dist/route-types.d.ts.map +1 -0
- package/dist/route-types.js +7 -0
- package/dist/route-types.js.map +1 -0
- package/dist/router/__tests__/handler-context.test.d.ts +2 -0
- package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
- package/dist/router/__tests__/handler-context.test.js +65 -0
- package/dist/router/__tests__/handler-context.test.js.map +1 -0
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
- package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
- package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
- package/dist/router/__tests__/match-context.test.d.ts +2 -0
- package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
- package/dist/router/__tests__/match-context.test.js +92 -0
- package/dist/router/__tests__/match-context.test.js.map +1 -0
- package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
- package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
- package/dist/router/__tests__/match-pipelines.test.js +417 -0
- package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
- package/dist/router/__tests__/match-result.test.d.ts +2 -0
- package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
- package/dist/router/__tests__/match-result.test.js +457 -0
- package/dist/router/__tests__/match-result.test.js.map +1 -0
- package/dist/router/__tests__/on-error.test.d.ts +2 -0
- package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
- package/dist/router/__tests__/on-error.test.js +678 -0
- package/dist/router/__tests__/on-error.test.js.map +1 -0
- package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
- package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
- package/dist/router/__tests__/pattern-matching.test.js +629 -0
- package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
- package/dist/router/error-handling.d.ts +77 -0
- package/dist/router/error-handling.d.ts.map +1 -0
- package/dist/router/error-handling.js +202 -0
- package/dist/router/error-handling.js.map +1 -0
- package/dist/router/handler-context.d.ts +20 -0
- package/dist/router/handler-context.d.ts.map +1 -0
- package/dist/router/handler-context.js +198 -0
- package/dist/router/handler-context.js.map +1 -0
- package/dist/router/intercept-resolution.d.ts +66 -0
- package/dist/router/intercept-resolution.d.ts.map +1 -0
- package/dist/router/intercept-resolution.js +246 -0
- package/dist/router/intercept-resolution.js.map +1 -0
- package/dist/router/loader-resolution.d.ts +64 -0
- package/dist/router/loader-resolution.d.ts.map +1 -0
- package/dist/router/loader-resolution.js +284 -0
- package/dist/router/loader-resolution.js.map +1 -0
- package/dist/router/logging.d.ts +15 -0
- package/dist/router/logging.d.ts.map +1 -0
- package/dist/router/logging.js +99 -0
- package/dist/router/logging.js.map +1 -0
- package/dist/router/manifest.d.ts +22 -0
- package/dist/router/manifest.d.ts.map +1 -0
- package/dist/router/manifest.js +181 -0
- package/dist/router/manifest.js.map +1 -0
- package/dist/router/match-api.d.ts +35 -0
- package/dist/router/match-api.d.ts.map +1 -0
- package/dist/router/match-api.js +406 -0
- package/dist/router/match-api.js.map +1 -0
- package/dist/router/match-context.d.ts +206 -0
- package/dist/router/match-context.d.ts.map +1 -0
- package/dist/router/match-context.js +17 -0
- package/dist/router/match-context.js.map +1 -0
- package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
- package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
- package/dist/router/match-middleware/background-revalidation.js +75 -0
- package/dist/router/match-middleware/background-revalidation.js.map +1 -0
- package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
- package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
- package/dist/router/match-middleware/cache-lookup.js +257 -0
- package/dist/router/match-middleware/cache-lookup.js.map +1 -0
- package/dist/router/match-middleware/cache-store.d.ts +113 -0
- package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
- package/dist/router/match-middleware/cache-store.js +108 -0
- package/dist/router/match-middleware/cache-store.js.map +1 -0
- package/dist/router/match-middleware/index.d.ts +81 -0
- package/dist/router/match-middleware/index.d.ts.map +1 -0
- package/dist/router/match-middleware/index.js +80 -0
- package/dist/router/match-middleware/index.js.map +1 -0
- package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
- package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
- package/dist/router/match-middleware/intercept-resolution.js +134 -0
- package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
- package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
- package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
- package/dist/router/match-middleware/segment-resolution.js +53 -0
- package/dist/router/match-middleware/segment-resolution.js.map +1 -0
- package/dist/router/match-pipelines.d.ts +147 -0
- package/dist/router/match-pipelines.d.ts.map +1 -0
- package/dist/router/match-pipelines.js +82 -0
- package/dist/router/match-pipelines.js.map +1 -0
- package/dist/router/match-result.d.ts +126 -0
- package/dist/router/match-result.d.ts.map +1 -0
- package/dist/router/match-result.js +93 -0
- package/dist/router/match-result.js.map +1 -0
- package/dist/router/metrics.d.ts +20 -0
- package/dist/router/metrics.d.ts.map +1 -0
- package/dist/router/metrics.js +47 -0
- package/dist/router/metrics.js.map +1 -0
- package/dist/router/middleware.d.ts +249 -0
- package/dist/router/middleware.d.ts.map +1 -0
- package/dist/router/middleware.js +434 -0
- package/dist/router/middleware.js.map +1 -0
- package/dist/router/middleware.test.d.ts +2 -0
- package/dist/router/middleware.test.d.ts.map +1 -0
- package/dist/router/middleware.test.js +816 -0
- package/dist/router/middleware.test.js.map +1 -0
- package/dist/router/pattern-matching.d.ts +149 -0
- package/dist/router/pattern-matching.d.ts.map +1 -0
- package/dist/router/pattern-matching.js +349 -0
- package/dist/router/pattern-matching.js.map +1 -0
- package/dist/router/revalidation.d.ts +44 -0
- package/dist/router/revalidation.d.ts.map +1 -0
- package/dist/router/revalidation.js +147 -0
- package/dist/router/revalidation.js.map +1 -0
- package/dist/router/router-context.d.ts +135 -0
- package/dist/router/router-context.d.ts.map +1 -0
- package/dist/router/router-context.js +36 -0
- package/dist/router/router-context.js.map +1 -0
- package/dist/router/segment-resolution.d.ts +127 -0
- package/dist/router/segment-resolution.d.ts.map +1 -0
- package/dist/router/segment-resolution.js +919 -0
- package/dist/router/segment-resolution.js.map +1 -0
- package/dist/router/trie-matching.d.ts +40 -0
- package/dist/router/trie-matching.d.ts.map +1 -0
- package/dist/router/trie-matching.js +127 -0
- package/dist/router/trie-matching.js.map +1 -0
- package/dist/router/types.d.ts +136 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +7 -0
- package/dist/router/types.js.map +1 -0
- package/dist/router.d.ts +753 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.gen.d.ts +6 -0
- package/dist/router.gen.d.ts.map +1 -0
- package/dist/router.gen.js +6 -0
- package/dist/router.gen.js.map +1 -0
- package/dist/router.js +1304 -0
- package/dist/router.js.map +1 -0
- package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
- package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
- package/dist/rsc/__tests__/helpers.test.js +140 -0
- package/dist/rsc/__tests__/helpers.test.js.map +1 -0
- package/dist/rsc/handler.d.ts +45 -0
- package/dist/rsc/handler.d.ts.map +1 -0
- package/dist/rsc/handler.js +1172 -0
- package/dist/rsc/handler.js.map +1 -0
- package/dist/rsc/helpers.d.ts +16 -0
- package/dist/rsc/helpers.d.ts.map +1 -0
- package/dist/rsc/helpers.js +55 -0
- package/dist/rsc/helpers.js.map +1 -0
- package/dist/rsc/index.d.ts +22 -0
- package/dist/rsc/index.d.ts.map +1 -0
- package/dist/rsc/index.js +23 -0
- package/dist/rsc/index.js.map +1 -0
- package/dist/rsc/nonce.d.ts +9 -0
- package/dist/rsc/nonce.d.ts.map +1 -0
- package/dist/rsc/nonce.js +18 -0
- package/dist/rsc/nonce.js.map +1 -0
- package/dist/rsc/types.d.ts +206 -0
- package/dist/rsc/types.d.ts.map +1 -0
- package/dist/rsc/types.js +8 -0
- package/dist/rsc/types.js.map +1 -0
- package/dist/search-params.d.ts +103 -0
- package/dist/search-params.d.ts.map +1 -0
- package/dist/search-params.js +74 -0
- package/dist/search-params.js.map +1 -0
- package/dist/segment-system.d.ts +75 -0
- package/dist/segment-system.d.ts.map +1 -0
- package/dist/segment-system.js +336 -0
- package/dist/segment-system.js.map +1 -0
- package/dist/server/context.d.ts +245 -0
- package/dist/server/context.d.ts.map +1 -0
- package/dist/server/context.js +197 -0
- package/dist/server/context.js.map +1 -0
- package/dist/server/fetchable-loader-store.d.ts +18 -0
- package/dist/server/fetchable-loader-store.d.ts.map +1 -0
- package/dist/server/fetchable-loader-store.js +18 -0
- package/dist/server/fetchable-loader-store.js.map +1 -0
- package/dist/server/handle-store.d.ts +85 -0
- package/dist/server/handle-store.d.ts.map +1 -0
- package/dist/server/handle-store.js +142 -0
- package/dist/server/handle-store.js.map +1 -0
- package/dist/server/loader-registry.d.ts +55 -0
- package/dist/server/loader-registry.d.ts.map +1 -0
- package/dist/server/loader-registry.js +132 -0
- package/dist/server/loader-registry.js.map +1 -0
- package/dist/server/request-context.d.ts +226 -0
- package/dist/server/request-context.d.ts.map +1 -0
- package/dist/server/request-context.js +290 -0
- package/dist/server/request-context.js.map +1 -0
- package/dist/server/root-layout.d.ts +4 -0
- package/dist/server/root-layout.d.ts.map +1 -0
- package/dist/server/root-layout.js +5 -0
- package/dist/server/root-layout.js.map +1 -0
- package/dist/server.d.ts +15 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +20 -0
- package/dist/server.js.map +1 -0
- package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
- package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
- package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
- package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
- package/dist/ssr/index.d.ts +98 -0
- package/dist/ssr/index.d.ts.map +1 -0
- package/dist/ssr/index.js +158 -0
- package/dist/ssr/index.js.map +1 -0
- package/dist/static-handler.d.ts +50 -0
- package/dist/static-handler.d.ts.map +1 -0
- package/dist/static-handler.gen.d.ts +5 -0
- package/dist/static-handler.gen.d.ts.map +1 -0
- package/dist/static-handler.gen.js +5 -0
- package/dist/static-handler.gen.js.map +1 -0
- package/dist/static-handler.js +29 -0
- package/dist/static-handler.js.map +1 -0
- package/dist/theme/ThemeProvider.d.ts +20 -0
- package/dist/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/theme/ThemeProvider.js +240 -0
- package/dist/theme/ThemeProvider.js.map +1 -0
- package/dist/theme/ThemeScript.d.ts +48 -0
- package/dist/theme/ThemeScript.d.ts.map +1 -0
- package/dist/theme/ThemeScript.js +13 -0
- package/dist/theme/ThemeScript.js.map +1 -0
- package/dist/theme/__tests__/theme.test.d.ts +2 -0
- package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
- package/dist/theme/__tests__/theme.test.js +103 -0
- package/dist/theme/__tests__/theme.test.js.map +1 -0
- package/dist/theme/constants.d.ts +29 -0
- package/dist/theme/constants.d.ts.map +1 -0
- package/dist/theme/constants.js +48 -0
- package/dist/theme/constants.js.map +1 -0
- package/dist/theme/index.d.ts +31 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +36 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/theme-context.d.ts +40 -0
- package/dist/theme/theme-context.d.ts.map +1 -0
- package/dist/theme/theme-context.js +60 -0
- package/dist/theme/theme-context.js.map +1 -0
- package/dist/theme/theme-script.d.ts +27 -0
- package/dist/theme/theme-script.d.ts.map +1 -0
- package/dist/theme/theme-script.js +147 -0
- package/dist/theme/theme-script.js.map +1 -0
- package/dist/theme/types.d.ts +163 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme/types.js +11 -0
- package/dist/theme/types.js.map +1 -0
- package/dist/theme/use-theme.d.ts +12 -0
- package/dist/theme/use-theme.d.ts.map +1 -0
- package/dist/theme/use-theme.js +40 -0
- package/dist/theme/use-theme.js.map +1 -0
- package/dist/types.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 +883 -444
- package/dist/vite/index.js.map +1 -0
- package/dist/vite/index.named-routes.gen.ts +103 -0
- package/dist/vite/package-resolution.d.ts +43 -0
- package/dist/vite/package-resolution.d.ts.map +1 -0
- package/dist/vite/package-resolution.js +112 -0
- package/dist/vite/package-resolution.js.map +1 -0
- package/dist/vite/virtual-entries.d.ts +25 -0
- package/dist/vite/virtual-entries.d.ts.map +1 -0
- package/dist/vite/virtual-entries.js +110 -0
- package/dist/vite/virtual-entries.js.map +1 -0
- package/package.json +17 -16
- package/skills/breadcrumbs/SKILL.md +250 -0
- package/skills/cache-guide/SKILL.md +32 -0
- package/skills/caching/SKILL.md +49 -8
- package/skills/document-cache/SKILL.md +2 -2
- package/skills/hooks/SKILL.md +34 -32
- package/skills/host-router/SKILL.md +218 -0
- package/skills/intercept/SKILL.md +79 -0
- package/skills/layout/SKILL.md +62 -2
- package/skills/links/SKILL.md +3 -1
- package/skills/loader/SKILL.md +166 -23
- package/skills/middleware/SKILL.md +83 -0
- package/skills/parallel/SKILL.md +183 -2
- package/skills/prerender/SKILL.md +189 -19
- package/skills/rango/SKILL.md +0 -1
- package/skills/route/SKILL.md +76 -5
- package/skills/router-setup/SKILL.md +172 -5
- package/skills/typesafety/SKILL.md +35 -23
- package/src/__internal.ts +93 -1
- package/src/bin/rango.ts +56 -19
- package/src/browser/action-coordinator.ts +97 -0
- package/src/browser/app-version.ts +14 -0
- package/src/browser/event-controller.ts +30 -27
- package/src/browser/history-state.ts +80 -0
- package/src/browser/intercept-utils.ts +1 -1
- package/src/browser/link-interceptor.ts +4 -3
- package/src/browser/merge-segment-loaders.ts +9 -2
- package/src/browser/navigation-bridge.ts +160 -31
- package/src/browser/navigation-client.ts +141 -88
- package/src/browser/navigation-store.ts +44 -39
- package/src/browser/navigation-transaction.ts +55 -214
- package/src/browser/partial-update.ts +181 -164
- package/src/browser/prefetch/cache.ts +206 -0
- package/src/browser/prefetch/fetch.ts +150 -0
- package/src/browser/prefetch/policy.ts +48 -0
- package/src/browser/prefetch/queue.ts +160 -0
- package/src/browser/prefetch/resource-ready.ts +77 -0
- package/src/browser/react/Link.tsx +97 -36
- package/src/browser/react/NavigationProvider.tsx +49 -5
- package/src/browser/react/context.ts +7 -2
- package/src/browser/react/index.ts +2 -6
- package/src/browser/react/location-state-shared.ts +1 -1
- package/src/browser/react/location-state.ts +2 -0
- package/src/browser/react/nonce-context.ts +23 -0
- package/src/browser/react/use-action.ts +9 -1
- package/src/browser/react/use-handle.ts +3 -25
- package/src/browser/react/use-params.ts +2 -4
- package/src/browser/react/use-pathname.ts +2 -3
- package/src/browser/react/use-router.ts +22 -9
- package/src/browser/react/use-search-params.ts +2 -1
- package/src/browser/react/use-segments.ts +7 -60
- package/src/browser/response-adapter.ts +73 -0
- package/src/browser/rsc-router.tsx +154 -64
- package/src/browser/scroll-restoration.ts +37 -37
- package/src/browser/segment-reconciler.ts +6 -1
- package/src/browser/server-action-bridge.ts +463 -426
- package/src/browser/types.ts +61 -36
- package/src/browser/validate-redirect-origin.ts +29 -0
- package/src/build/generate-manifest.ts +8 -0
- package/src/build/generate-route-types.ts +7 -0
- package/src/build/route-trie.ts +19 -3
- package/src/build/route-types/codegen.ts +13 -4
- package/src/build/route-types/include-resolution.ts +21 -1
- package/src/build/route-types/per-module-writer.ts +15 -3
- package/src/build/route-types/router-processing.ts +391 -90
- package/src/build/runtime-discovery.ts +13 -1
- package/src/cache/background-task.ts +34 -0
- package/src/cache/cache-key-utils.ts +44 -0
- package/src/cache/cache-policy.ts +125 -0
- package/src/cache/cache-runtime.ts +136 -96
- package/src/cache/cache-scope.ts +119 -80
- package/src/cache/cf/cf-cache-store.ts +462 -15
- package/src/cache/cf/index.ts +5 -1
- package/src/cache/document-cache.ts +88 -53
- package/src/cache/handle-capture.ts +81 -0
- package/src/cache/index.ts +1 -0
- package/src/cache/memory-segment-store.ts +18 -7
- package/src/cache/profile-registry.ts +43 -8
- package/src/cache/read-through-swr.ts +134 -0
- package/src/cache/segment-codec.ts +101 -112
- package/src/cache/taint.ts +81 -0
- package/src/client.rsc.tsx +2 -1
- package/src/client.tsx +54 -76
- package/src/context-var.ts +72 -2
- package/src/debug.ts +2 -2
- package/src/errors.ts +6 -1
- package/src/handle.ts +1 -1
- package/src/handles/MetaTags.tsx +5 -2
- package/src/handles/breadcrumbs.ts +66 -0
- package/src/handles/index.ts +1 -0
- package/src/host/cookie-handler.ts +8 -3
- package/src/host/index.ts +0 -3
- package/src/host/router.ts +14 -1
- package/src/href-client.ts +3 -1
- package/src/index.rsc.ts +24 -23
- package/src/index.ts +45 -52
- package/src/loader.rsc.ts +12 -4
- package/src/loader.ts +8 -0
- package/src/prerender/store.ts +60 -18
- package/src/prerender.ts +76 -18
- package/src/reverse.ts +11 -7
- package/src/root-error-boundary.tsx +30 -26
- package/src/route-definition/dsl-helpers.ts +41 -13
- package/src/route-definition/helpers-types.ts +6 -5
- package/src/route-definition/index.ts +0 -3
- package/src/route-definition/redirect.ts +24 -4
- package/src/route-map-builder.ts +45 -3
- package/src/route-name.ts +53 -0
- package/src/route-types.ts +7 -0
- package/src/router/content-negotiation.ts +1 -1
- package/src/router/debug-manifest.ts +16 -3
- package/src/router/find-match.ts +4 -2
- package/src/router/handler-context.ts +159 -34
- package/src/router/intercept-resolution.ts +17 -8
- package/src/router/lazy-includes.ts +8 -1
- package/src/router/loader-resolution.ts +11 -3
- package/src/router/logging.ts +104 -4
- package/src/router/manifest.ts +45 -7
- package/src/router/match-api.ts +62 -8
- package/src/router/match-context.ts +3 -0
- package/src/router/match-handlers.ts +185 -11
- package/src/router/match-middleware/background-revalidation.ts +94 -86
- package/src/router/match-middleware/cache-lookup.ts +138 -13
- package/src/router/match-middleware/cache-store.ts +55 -10
- package/src/router/match-middleware/intercept-resolution.ts +9 -7
- package/src/router/match-middleware/segment-resolution.ts +8 -5
- package/src/router/match-pipelines.ts +8 -43
- package/src/router/match-result.ts +22 -15
- package/src/router/metrics.ts +238 -13
- package/src/router/middleware-types.ts +60 -12
- package/src/router/middleware.ts +214 -42
- package/src/router/pattern-matching.ts +61 -10
- package/src/router/prerender-match.ts +40 -8
- package/src/router/preview-match.ts +7 -1
- package/src/router/revalidation.ts +87 -8
- package/src/router/router-context.ts +20 -0
- package/src/router/router-interfaces.ts +73 -5
- package/src/router/router-options.ts +250 -19
- package/src/router/segment-resolution/fresh.ts +277 -45
- package/src/router/segment-resolution/helpers.ts +49 -25
- package/src/router/segment-resolution/loader-cache.ts +38 -146
- package/src/router/segment-resolution/revalidation.ts +619 -275
- package/src/router/segment-wrappers.ts +5 -0
- package/src/router/telemetry-otel.ts +299 -0
- package/src/router/telemetry.ts +300 -0
- package/src/router/timeout.ts +148 -0
- package/src/router/trie-matching.ts +20 -2
- package/src/router/types.ts +8 -1
- package/src/router.ts +230 -25
- package/src/rsc/handler-context.ts +11 -0
- package/src/rsc/handler.ts +492 -96
- package/src/rsc/helpers.ts +25 -16
- package/src/rsc/index.ts +0 -20
- package/src/rsc/loader-fetch.ts +84 -42
- package/src/rsc/manifest-init.ts +5 -1
- package/src/rsc/origin-guard.ts +141 -0
- package/src/rsc/progressive-enhancement.ts +249 -19
- package/src/rsc/response-route-handler.ts +37 -26
- package/src/rsc/rsc-rendering.ts +40 -41
- package/src/rsc/runtime-warnings.ts +42 -0
- package/src/rsc/server-action.ts +150 -68
- package/src/rsc/ssr-setup.ts +128 -0
- package/src/rsc/types.ts +18 -1
- package/src/search-params.ts +38 -23
- package/src/segment-system.tsx +140 -4
- package/src/server/context.ts +187 -20
- package/src/server/fetchable-loader-store.ts +11 -6
- package/src/server/handle-store.ts +66 -9
- package/src/server/loader-registry.ts +20 -54
- package/src/server/request-context.ts +188 -41
- package/src/server.ts +6 -0
- package/src/ssr/index.tsx +66 -26
- package/src/static-handler.ts +7 -0
- package/src/theme/ThemeProvider.tsx +6 -1
- package/src/theme/index.ts +4 -18
- package/src/theme/theme-context.ts +1 -28
- package/src/theme/theme-script.ts +2 -1
- package/src/types/cache-types.ts +9 -4
- package/src/types/error-types.ts +3 -0
- package/src/types/global-namespace.ts +9 -0
- package/src/types/handler-context.ts +167 -55
- package/src/types/loader-types.ts +11 -5
- package/src/types/route-config.ts +17 -8
- package/src/types/route-entry.ts +35 -0
- package/src/types/segments.ts +2 -5
- package/src/urls/include-helper.ts +49 -8
- package/src/urls/index.ts +1 -0
- package/src/urls/path-helper-types.ts +30 -12
- package/src/urls/path-helper.ts +18 -3
- package/src/urls/pattern-types.ts +33 -1
- package/src/urls/response-types.ts +27 -2
- package/src/urls/type-extraction.ts +23 -15
- package/src/use-loader.tsx +12 -4
- package/src/vite/discovery/bundle-postprocess.ts +32 -52
- package/src/vite/discovery/discover-routers.ts +53 -23
- package/src/vite/discovery/prerender-collection.ts +58 -41
- package/src/vite/discovery/route-types-writer.ts +7 -7
- package/src/vite/discovery/state.ts +4 -9
- package/src/vite/discovery/virtual-module-codegen.ts +5 -2
- package/src/vite/index.ts +4 -3
- package/src/vite/plugin-types.ts +0 -83
- package/src/vite/plugins/client-ref-dedup.ts +115 -0
- package/src/vite/plugins/client-ref-hashing.ts +3 -3
- package/src/vite/plugins/expose-action-id.ts +1 -3
- package/src/vite/plugins/performance-tracks.ts +88 -0
- package/src/vite/plugins/refresh-cmd.ts +65 -0
- package/src/vite/plugins/use-cache-transform.ts +91 -3
- package/src/vite/plugins/version-plugin.ts +13 -1
- package/src/vite/rango.ts +172 -210
- package/src/vite/router-discovery.ts +115 -44
- package/src/vite/utils/banner.ts +3 -3
- package/src/vite/utils/prerender-utils.ts +81 -0
- package/src/vite/utils/shared-utils.ts +6 -3
- package/skills/testing/SKILL.md +0 -226
- package/src/browser/prefetch-cache.ts +0 -48
- package/src/browser/prefetch-fetch.ts +0 -109
- package/src/browser/prefetch-queue.ts +0 -81
- package/src/browser/request-controller.ts +0 -164
- package/src/route-definition/route-function.ts +0 -119
- package/src/router.gen.ts +0 -6
- package/src/static-handler.gen.ts +0 -5
- package/src/urls.gen.ts +0 -8
- /package/src/browser/{prefetch-observer.ts → prefetch/observer.ts} +0 -0
|
@@ -6,13 +6,10 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import type { LoaderFn } from "../types.js";
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
fn: LoaderFn<any, any, any>;
|
|
14
|
-
middleware: MiddlewareFn[];
|
|
15
|
-
}
|
|
9
|
+
import {
|
|
10
|
+
getFetchableLoader,
|
|
11
|
+
type LoaderRegistryEntry,
|
|
12
|
+
} from "./fetchable-loader-store.js";
|
|
16
13
|
|
|
17
14
|
// Server-side cache - maps loader $$id to function and middleware
|
|
18
15
|
// This is a CACHE populated by getLoaderLazy() when loaders are first accessed.
|
|
@@ -21,7 +18,7 @@ interface RegisteredLoader {
|
|
|
21
18
|
// 1. Avoid repeated lookups/imports for the same loader
|
|
22
19
|
// 2. Support lazy loading in production (loaders imported on-demand)
|
|
23
20
|
// 3. Provide a stable reference for the RSC handler
|
|
24
|
-
const loaderRegistry = new Map<string,
|
|
21
|
+
const loaderRegistry = new Map<string, LoaderRegistryEntry>();
|
|
25
22
|
|
|
26
23
|
// Lazy import map - set by the loader manifest
|
|
27
24
|
// Maps loader $$id to a function that imports the loader module
|
|
@@ -37,28 +34,6 @@ export function setLoaderImports(
|
|
|
37
34
|
lazyLoaderImports = new Map(Object.entries(imports));
|
|
38
35
|
}
|
|
39
36
|
|
|
40
|
-
/**
|
|
41
|
-
* Register a fetchable loader by $$id
|
|
42
|
-
* Called by createLoader when fetchable option is provided
|
|
43
|
-
*/
|
|
44
|
-
export function registerLoader(
|
|
45
|
-
id: string,
|
|
46
|
-
fn: LoaderFn<any, any, any>,
|
|
47
|
-
middleware: MiddlewareFn[] = [],
|
|
48
|
-
): void {
|
|
49
|
-
// Always update the registry entry. During HMR, the module is re-executed
|
|
50
|
-
// with the new loader function, so we must replace the stale reference.
|
|
51
|
-
loaderRegistry.set(id, { fn, middleware });
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Get a registered loader by $$id (synchronous)
|
|
56
|
-
* Returns undefined if loader is not registered
|
|
57
|
-
*/
|
|
58
|
-
export function getLoader(id: string): RegisteredLoader | undefined {
|
|
59
|
-
return loaderRegistry.get(id);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
37
|
/**
|
|
63
38
|
* Get a loader by $$id, loading it lazily if needed
|
|
64
39
|
* This is the primary method for the RSC handler to get loaders
|
|
@@ -68,21 +43,22 @@ export function getLoader(id: string): RegisteredLoader | undefined {
|
|
|
68
43
|
*/
|
|
69
44
|
export async function getLoaderLazy(
|
|
70
45
|
id: string,
|
|
71
|
-
): Promise<
|
|
72
|
-
//
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return existing;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Check the fetchable loader registry (populated by createLoader)
|
|
46
|
+
): Promise<LoaderRegistryEntry | undefined> {
|
|
47
|
+
// Always check fetchableLoaderRegistry first — it's the source of truth.
|
|
48
|
+
// createLoader() updates it during module re-evaluation (HMR), so checking
|
|
49
|
+
// here ensures we pick up the fresh function after a loader file change.
|
|
79
50
|
const fetchable = getFetchableLoader(id);
|
|
80
51
|
if (fetchable) {
|
|
81
|
-
// Cache in main registry for future requests
|
|
82
52
|
loaderRegistry.set(id, fetchable);
|
|
83
53
|
return fetchable;
|
|
84
54
|
}
|
|
85
55
|
|
|
56
|
+
// Fall back to local cache (populated by previous lazy imports in production)
|
|
57
|
+
const existing = loaderRegistry.get(id);
|
|
58
|
+
if (existing) {
|
|
59
|
+
return existing;
|
|
60
|
+
}
|
|
61
|
+
|
|
86
62
|
// Try to lazy load from the import map (production mode)
|
|
87
63
|
if (lazyLoaderImports && lazyLoaderImports.size > 0) {
|
|
88
64
|
const lazyImport = lazyLoaderImports.get(id);
|
|
@@ -128,20 +104,6 @@ export async function getLoaderLazy(
|
|
|
128
104
|
return undefined;
|
|
129
105
|
}
|
|
130
106
|
|
|
131
|
-
/**
|
|
132
|
-
* Check if a loader is registered by $$id
|
|
133
|
-
*/
|
|
134
|
-
export function hasLoader(id: string): boolean {
|
|
135
|
-
return loaderRegistry.has(id) || getFetchableLoader(id) !== undefined;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Get all registered loader IDs (for debugging)
|
|
140
|
-
*/
|
|
141
|
-
export function getRegisteredLoaderIds(): string[] {
|
|
142
|
-
return Array.from(loaderRegistry.keys());
|
|
143
|
-
}
|
|
144
|
-
|
|
145
107
|
/**
|
|
146
108
|
* Register a loader by its $$id (injected by Vite plugin)
|
|
147
109
|
* This is called during module loading to cache loaders
|
|
@@ -163,6 +125,10 @@ export function registerLoaderById(loader: {
|
|
|
163
125
|
|
|
164
126
|
// Fall back to using fn from the loader object (non-fetchable loaders)
|
|
165
127
|
if (loader.fn) {
|
|
166
|
-
loaderRegistry.set(loader.$$id, {
|
|
128
|
+
loaderRegistry.set(loader.$$id, {
|
|
129
|
+
fn: loader.fn,
|
|
130
|
+
middleware: [],
|
|
131
|
+
fetchable: false,
|
|
132
|
+
});
|
|
167
133
|
}
|
|
168
134
|
}
|
|
@@ -14,21 +14,35 @@ import { AsyncLocalStorage } from "node:async_hooks";
|
|
|
14
14
|
import type { CookieOptions } from "../router/middleware.js";
|
|
15
15
|
import type { LoaderDefinition, LoaderContext } from "../types.js";
|
|
16
16
|
import type { ScopedReverseFunction } from "../reverse.js";
|
|
17
|
-
import type {
|
|
17
|
+
import type {
|
|
18
|
+
DefaultEnv,
|
|
19
|
+
DefaultReverseRouteMap,
|
|
20
|
+
DefaultRouteName,
|
|
21
|
+
} from "../types/global-namespace.js";
|
|
18
22
|
import type { Handle } from "../handle.js";
|
|
19
|
-
import {
|
|
23
|
+
import {
|
|
24
|
+
type ContextVar,
|
|
25
|
+
contextGet,
|
|
26
|
+
contextSet,
|
|
27
|
+
isNonCacheable,
|
|
28
|
+
} from "../context-var.js";
|
|
20
29
|
import { createHandleStore, type HandleStore } from "./handle-store.js";
|
|
21
30
|
import { isHandle } from "../handle.js";
|
|
22
|
-
import { track } from "./context.js";
|
|
31
|
+
import { track, type MetricsStore } from "./context.js";
|
|
23
32
|
import { getFetchableLoader } from "./fetchable-loader-store.js";
|
|
24
33
|
import type { SegmentCacheStore } from "../cache/types.js";
|
|
25
34
|
import type { Theme, ResolvedThemeConfig } from "../theme/types.js";
|
|
26
35
|
import { THEME_COOKIE } from "../theme/constants.js";
|
|
27
36
|
import type { LocationStateEntry } from "../browser/react/location-state-shared.js";
|
|
28
37
|
import { NOCACHE_SYMBOL, assertNotInsideCacheExec } from "../cache/taint.js";
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
38
|
+
import { isInsideCacheScope } from "./context.js";
|
|
39
|
+
import {
|
|
40
|
+
createReverseFunction,
|
|
41
|
+
stripInternalParams,
|
|
42
|
+
} from "../router/handler-context.js";
|
|
43
|
+
import { getGlobalRouteMap, isRouteRootScoped } from "../route-map-builder.js";
|
|
31
44
|
import { invariant } from "../errors.js";
|
|
45
|
+
import { isAutoGeneratedRouteName } from "../route-name.js";
|
|
32
46
|
|
|
33
47
|
/**
|
|
34
48
|
* Unified request context available via getRequestContext()
|
|
@@ -37,21 +51,26 @@ import { invariant } from "../errors.js";
|
|
|
37
51
|
* Use this when you need access to request data outside of route handlers.
|
|
38
52
|
*/
|
|
39
53
|
export interface RequestContext<
|
|
40
|
-
TEnv =
|
|
54
|
+
TEnv = DefaultEnv,
|
|
41
55
|
TParams = Record<string, string>,
|
|
42
56
|
> {
|
|
43
57
|
/** Platform bindings (Cloudflare env, etc.) */
|
|
44
58
|
env: TEnv;
|
|
45
59
|
/** Original HTTP request */
|
|
46
60
|
request: Request;
|
|
47
|
-
/** Parsed URL (
|
|
61
|
+
/** Parsed URL (with internal `_rsc*` params stripped) */
|
|
48
62
|
url: URL;
|
|
63
|
+
/**
|
|
64
|
+
* The original request URL with all parameters intact, including
|
|
65
|
+
* internal `_rsc*` transport params.
|
|
66
|
+
*/
|
|
67
|
+
originalUrl: URL;
|
|
49
68
|
/** URL pathname */
|
|
50
69
|
pathname: string;
|
|
51
|
-
/** URL search params (
|
|
70
|
+
/** URL search params (with internal `_rsc*` params stripped, same as `url.searchParams`) */
|
|
52
71
|
searchParams: URLSearchParams;
|
|
53
|
-
/**
|
|
54
|
-
|
|
72
|
+
/** @internal Shared variable backing store for ctx.get()/ctx.set(). */
|
|
73
|
+
_variables: Record<string, any>;
|
|
55
74
|
/** Get a variable set by middleware */
|
|
56
75
|
get: {
|
|
57
76
|
<T>(contextVar: ContextVar<T>): T | undefined;
|
|
@@ -59,20 +78,19 @@ export interface RequestContext<
|
|
|
59
78
|
};
|
|
60
79
|
/** Set a variable (shared with middleware and handlers) */
|
|
61
80
|
set: {
|
|
62
|
-
<T>(
|
|
63
|
-
|
|
81
|
+
<T>(
|
|
82
|
+
contextVar: ContextVar<T>,
|
|
83
|
+
value: T,
|
|
84
|
+
options?: { cache?: boolean },
|
|
85
|
+
): void;
|
|
86
|
+
<K extends string>(key: K, value: any, options?: { cache?: boolean }): void;
|
|
64
87
|
};
|
|
65
88
|
/**
|
|
66
89
|
* Route params (populated after route matching)
|
|
67
90
|
* Initially empty, then set to matched params
|
|
68
91
|
*/
|
|
69
92
|
params: TParams;
|
|
70
|
-
/**
|
|
71
|
-
* Stub response for setting headers/cookies (read-only).
|
|
72
|
-
* Headers set here are merged into the final response.
|
|
73
|
-
* Use header() or setStatus() to mutate response headers/status.
|
|
74
|
-
* Use cookies().set()/cookies().delete() for cookie mutations.
|
|
75
|
-
*/
|
|
93
|
+
/** @internal Stub response for collecting headers/cookies. Use ctx.headers or ctx.header() instead. */
|
|
76
94
|
readonly res: Response;
|
|
77
95
|
|
|
78
96
|
/** @internal Get a cookie value (effective: request + response mutations). Use cookies().get() instead. */
|
|
@@ -90,6 +108,8 @@ export interface RequestContext<
|
|
|
90
108
|
header(name: string, value: string): void;
|
|
91
109
|
/** Set the response status code */
|
|
92
110
|
setStatus(status: number): void;
|
|
111
|
+
/** @internal Set status bypassing cache-exec guard (for framework error handling) */
|
|
112
|
+
_setStatus(status: number): void;
|
|
93
113
|
|
|
94
114
|
/**
|
|
95
115
|
* Access loader data or push handle data.
|
|
@@ -128,6 +148,12 @@ export interface RequestContext<
|
|
|
128
148
|
/** @internal Cache store for segment caching (optional, used by CacheScope) */
|
|
129
149
|
_cacheStore?: SegmentCacheStore;
|
|
130
150
|
|
|
151
|
+
/** @internal Cache profiles for "use cache" profile resolution (per-router) */
|
|
152
|
+
_cacheProfiles?: Record<
|
|
153
|
+
string,
|
|
154
|
+
import("../cache/profile-registry.js").CacheProfile
|
|
155
|
+
>;
|
|
156
|
+
|
|
131
157
|
/**
|
|
132
158
|
* Schedule work to run after the response is sent.
|
|
133
159
|
* On Cloudflare Workers, uses ctx.waitUntil().
|
|
@@ -214,14 +240,21 @@ export interface RequestContext<
|
|
|
214
240
|
*
|
|
215
241
|
* @example
|
|
216
242
|
* ```typescript
|
|
217
|
-
* ctx.setLocationState(
|
|
243
|
+
* ctx.setLocationState(Flash({ text: "Item saved!" }));
|
|
218
244
|
* ```
|
|
219
245
|
*/
|
|
220
|
-
setLocationState(entries: LocationStateEntry[]): void;
|
|
246
|
+
setLocationState(entries: LocationStateEntry | LocationStateEntry[]): void;
|
|
221
247
|
|
|
222
248
|
/** @internal Accumulated location state entries */
|
|
223
249
|
_locationState?: LocationStateEntry[];
|
|
224
250
|
|
|
251
|
+
/**
|
|
252
|
+
* The matched route name, if the route has an explicit name.
|
|
253
|
+
* Undefined before route matching or for unnamed routes.
|
|
254
|
+
* Includes the namespace prefix from include() (e.g., "blog.post").
|
|
255
|
+
*/
|
|
256
|
+
routeName?: DefaultRouteName;
|
|
257
|
+
|
|
225
258
|
/**
|
|
226
259
|
* Generate URLs from route names.
|
|
227
260
|
* Uses the global route map. After route matching, scoped (`.name`) resolution
|
|
@@ -234,6 +267,29 @@ export interface RequestContext<
|
|
|
234
267
|
|
|
235
268
|
/** @internal Route name from route matching, used for scoped reverse resolution */
|
|
236
269
|
_routeName?: string;
|
|
270
|
+
|
|
271
|
+
/** @internal Previous route key (from the navigation source), used for revalidation */
|
|
272
|
+
_prevRouteKey?: string;
|
|
273
|
+
|
|
274
|
+
/** @internal Per-request error dedup set for onError reporting */
|
|
275
|
+
_reportedErrors: WeakSet<object>;
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* @internal Report a non-fatal background error through the router's
|
|
279
|
+
* onError callback. Wired by the RSC handler / router during request
|
|
280
|
+
* creation. Cache-runtime and other subsystems call this to surface
|
|
281
|
+
* errors without failing the response.
|
|
282
|
+
*/
|
|
283
|
+
_reportBackgroundError?: (error: unknown, category: string) => void;
|
|
284
|
+
|
|
285
|
+
/** @internal Per-request debug performance override (set via ctx.debugPerformance()) */
|
|
286
|
+
_debugPerformance?: boolean;
|
|
287
|
+
|
|
288
|
+
/** @internal Request-scoped performance metrics store */
|
|
289
|
+
_metricsStore?: MetricsStore;
|
|
290
|
+
|
|
291
|
+
/** @internal Router basename for this request (used by redirect()) */
|
|
292
|
+
_basename?: string;
|
|
237
293
|
}
|
|
238
294
|
|
|
239
295
|
/**
|
|
@@ -243,7 +299,7 @@ export interface RequestContext<
|
|
|
243
299
|
* use the full RequestContext interface directly.
|
|
244
300
|
*/
|
|
245
301
|
export type PublicRequestContext<
|
|
246
|
-
TEnv =
|
|
302
|
+
TEnv = DefaultEnv,
|
|
247
303
|
TParams = Record<string, string>,
|
|
248
304
|
> = Omit<
|
|
249
305
|
RequestContext<TEnv, TParams>,
|
|
@@ -253,10 +309,20 @@ export type PublicRequestContext<
|
|
|
253
309
|
| "deleteCookie"
|
|
254
310
|
| "_handleStore"
|
|
255
311
|
| "_cacheStore"
|
|
312
|
+
| "_cacheProfiles"
|
|
256
313
|
| "_onResponseCallbacks"
|
|
257
314
|
| "_themeConfig"
|
|
258
315
|
| "_locationState"
|
|
259
316
|
| "_routeName"
|
|
317
|
+
| "_prevRouteKey"
|
|
318
|
+
| "_reportedErrors"
|
|
319
|
+
| "_reportBackgroundError"
|
|
320
|
+
| "_debugPerformance"
|
|
321
|
+
| "_metricsStore"
|
|
322
|
+
| "_basename"
|
|
323
|
+
| "_setStatus"
|
|
324
|
+
| "_variables"
|
|
325
|
+
| "res"
|
|
260
326
|
>;
|
|
261
327
|
|
|
262
328
|
// AsyncLocalStorage instance for request context
|
|
@@ -277,7 +343,7 @@ export function runWithRequestContext<TEnv, T>(
|
|
|
277
343
|
* Get the current request context
|
|
278
344
|
* Throws if called outside of a request context
|
|
279
345
|
*/
|
|
280
|
-
export function getRequestContext<TEnv =
|
|
346
|
+
export function getRequestContext<TEnv = DefaultEnv>(): RequestContext<TEnv> {
|
|
281
347
|
const ctx = requestContextStorage.getStore() as
|
|
282
348
|
| RequestContext<TEnv>
|
|
283
349
|
| undefined;
|
|
@@ -294,7 +360,7 @@ export function getRequestContext<TEnv = unknown>(): RequestContext<TEnv> {
|
|
|
294
360
|
* @internal Get the request context without throwing — for internal code that
|
|
295
361
|
* may run outside a request context (cache stores, optional handle lookups, etc.)
|
|
296
362
|
*/
|
|
297
|
-
export function _getRequestContext<TEnv =
|
|
363
|
+
export function _getRequestContext<TEnv = DefaultEnv>():
|
|
298
364
|
| RequestContext<TEnv>
|
|
299
365
|
| undefined {
|
|
300
366
|
return requestContextStorage.getStore() as RequestContext<TEnv> | undefined;
|
|
@@ -313,9 +379,34 @@ export function setRequestContextParams(
|
|
|
313
379
|
ctx.params = params;
|
|
314
380
|
if (routeName !== undefined) {
|
|
315
381
|
ctx._routeName = routeName;
|
|
382
|
+
ctx.routeName = (
|
|
383
|
+
routeName && !isAutoGeneratedRouteName(routeName)
|
|
384
|
+
? routeName
|
|
385
|
+
: undefined
|
|
386
|
+
) as DefaultRouteName | undefined;
|
|
316
387
|
}
|
|
317
388
|
// Update reverse with scoped resolution now that route is known
|
|
318
|
-
ctx.reverse = createReverseFunction(
|
|
389
|
+
ctx.reverse = createReverseFunction(
|
|
390
|
+
getGlobalRouteMap(),
|
|
391
|
+
routeName,
|
|
392
|
+
params,
|
|
393
|
+
routeName ? isRouteRootScoped(routeName) : undefined,
|
|
394
|
+
);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* Store the previous route key on the request context.
|
|
400
|
+
* Called during partial-match context creation to make the navigation source
|
|
401
|
+
* route key available for revalidation and intercept evaluation.
|
|
402
|
+
* @internal
|
|
403
|
+
*/
|
|
404
|
+
export function setRequestContextPrevRouteKey(
|
|
405
|
+
prevRouteKey: string | undefined,
|
|
406
|
+
): void {
|
|
407
|
+
const ctx = requestContextStorage.getStore();
|
|
408
|
+
if (ctx && prevRouteKey !== undefined) {
|
|
409
|
+
ctx._prevRouteKey = prevRouteKey;
|
|
319
410
|
}
|
|
320
411
|
}
|
|
321
412
|
|
|
@@ -334,7 +425,9 @@ export function getLocationState(): LocationStateEntry[] | undefined {
|
|
|
334
425
|
* Get the current request context, throwing if not available
|
|
335
426
|
* @deprecated Use getRequestContext() directly — it now throws if outside context
|
|
336
427
|
*/
|
|
337
|
-
export function requireRequestContext<
|
|
428
|
+
export function requireRequestContext<
|
|
429
|
+
TEnv = DefaultEnv,
|
|
430
|
+
>(): RequestContext<TEnv> {
|
|
338
431
|
return getRequestContext<TEnv>();
|
|
339
432
|
}
|
|
340
433
|
|
|
@@ -354,8 +447,15 @@ export interface CreateRequestContextOptions<TEnv> {
|
|
|
354
447
|
request: Request;
|
|
355
448
|
url: URL;
|
|
356
449
|
variables: Record<string, any>;
|
|
450
|
+
/** Optional initial response stub headers/status to seed effective cookie reads */
|
|
451
|
+
initialResponse?: Response;
|
|
357
452
|
/** Optional cache store for segment caching (used by CacheScope) */
|
|
358
453
|
cacheStore?: SegmentCacheStore;
|
|
454
|
+
/** Optional cache profiles for "use cache" resolution (per-router) */
|
|
455
|
+
cacheProfiles?: Record<
|
|
456
|
+
string,
|
|
457
|
+
import("../cache/profile-registry.js").CacheProfile
|
|
458
|
+
>;
|
|
359
459
|
/** Optional Cloudflare execution context for waitUntil support */
|
|
360
460
|
executionContext?: ExecutionContext;
|
|
361
461
|
/** Optional theme configuration (enables ctx.theme and ctx.setTheme) */
|
|
@@ -378,7 +478,9 @@ export function createRequestContext<TEnv>(
|
|
|
378
478
|
request,
|
|
379
479
|
url,
|
|
380
480
|
variables,
|
|
481
|
+
initialResponse,
|
|
381
482
|
cacheStore,
|
|
483
|
+
cacheProfiles,
|
|
382
484
|
executionContext,
|
|
383
485
|
themeConfig,
|
|
384
486
|
} = options;
|
|
@@ -387,7 +489,13 @@ export function createRequestContext<TEnv>(
|
|
|
387
489
|
|
|
388
490
|
// Create stub response for collecting headers/cookies.
|
|
389
491
|
// All cookie/header mutations go here; cookie reads derive from it.
|
|
390
|
-
let stubResponse =
|
|
492
|
+
let stubResponse = initialResponse
|
|
493
|
+
? new Response(null, {
|
|
494
|
+
status: initialResponse.status,
|
|
495
|
+
statusText: initialResponse.statusText,
|
|
496
|
+
headers: new Headers(initialResponse.headers),
|
|
497
|
+
})
|
|
498
|
+
: new Response(null, { status: 200 });
|
|
391
499
|
|
|
392
500
|
// Create handle store and loader memoization for this request
|
|
393
501
|
const handleStore = createHandleStore();
|
|
@@ -413,6 +521,18 @@ export function createRequestContext<TEnv>(
|
|
|
413
521
|
responseCookieCache = null;
|
|
414
522
|
};
|
|
415
523
|
|
|
524
|
+
// Guard: throw if a response-level side effect is called inside a cache() scope.
|
|
525
|
+
// Uses ALS to detect the scope (set during segment resolution).
|
|
526
|
+
function assertNotInsideCacheScopeALS(methodName: string): void {
|
|
527
|
+
if (isInsideCacheScope()) {
|
|
528
|
+
throw new Error(
|
|
529
|
+
`ctx.${methodName}() cannot be called inside a cache() boundary. ` +
|
|
530
|
+
`On cache hit the handler is skipped, so this side effect would be lost. ` +
|
|
531
|
+
`Move ctx.${methodName}() to a middleware or layout outside the cache() scope.`,
|
|
532
|
+
);
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
|
|
416
536
|
// Effective cookie read: response stub Set-Cookie wins, then original header.
|
|
417
537
|
// The stub IS the source of truth for same-request mutations.
|
|
418
538
|
const effectiveCookie = (name: string): string | undefined => {
|
|
@@ -465,19 +585,31 @@ export function createRequestContext<TEnv>(
|
|
|
465
585
|
invalidateResponseCookieCache();
|
|
466
586
|
};
|
|
467
587
|
|
|
588
|
+
// Strip internal _rsc* params so userland sees a clean URL.
|
|
589
|
+
const cleanUrl = stripInternalParams(url);
|
|
590
|
+
|
|
468
591
|
// Build the context object first (without use), then add use
|
|
469
592
|
const ctx: RequestContext<TEnv> = {
|
|
470
593
|
env,
|
|
471
594
|
request,
|
|
472
|
-
url,
|
|
595
|
+
url: cleanUrl,
|
|
596
|
+
originalUrl: new URL(request.url),
|
|
473
597
|
pathname: url.pathname,
|
|
474
|
-
searchParams:
|
|
475
|
-
|
|
476
|
-
get: ((keyOrVar: any) =>
|
|
477
|
-
|
|
478
|
-
|
|
598
|
+
searchParams: cleanUrl.searchParams,
|
|
599
|
+
_variables: variables,
|
|
600
|
+
get: ((keyOrVar: any) => {
|
|
601
|
+
if (isNonCacheable(variables, keyOrVar) && isInsideCacheScope()) {
|
|
602
|
+
throw new Error(
|
|
603
|
+
`ctx.get() for a non-cacheable variable cannot be called inside a cache() boundary. ` +
|
|
604
|
+
`The variable was created with { cache: false } or set with { cache: false }, ` +
|
|
605
|
+
`and its value would be stale on cache hit. Move the read outside the cached scope.`,
|
|
606
|
+
);
|
|
607
|
+
}
|
|
608
|
+
return contextGet(variables, keyOrVar);
|
|
609
|
+
}) as RequestContext<TEnv>["get"],
|
|
610
|
+
set: ((keyOrVar: any, value: any, options?: any) => {
|
|
479
611
|
assertNotInsideCacheExec(ctx, "set");
|
|
480
|
-
contextSet(variables, keyOrVar, value);
|
|
612
|
+
contextSet(variables, keyOrVar, value, options);
|
|
481
613
|
}) as RequestContext<TEnv>["set"],
|
|
482
614
|
params: {} as Record<string, string>,
|
|
483
615
|
|
|
@@ -515,6 +647,7 @@ export function createRequestContext<TEnv>(
|
|
|
515
647
|
|
|
516
648
|
setCookie(name: string, value: string, options?: CookieOptions): void {
|
|
517
649
|
assertNotInsideCacheExec(ctx, "setCookie");
|
|
650
|
+
assertNotInsideCacheScopeALS("setCookie");
|
|
518
651
|
stubResponse.headers.append(
|
|
519
652
|
"Set-Cookie",
|
|
520
653
|
serializeCookieValue(name, value, options),
|
|
@@ -527,6 +660,7 @@ export function createRequestContext<TEnv>(
|
|
|
527
660
|
options?: Pick<CookieOptions, "domain" | "path">,
|
|
528
661
|
): void {
|
|
529
662
|
assertNotInsideCacheExec(ctx, "deleteCookie");
|
|
663
|
+
assertNotInsideCacheScopeALS("deleteCookie");
|
|
530
664
|
stubResponse.headers.append(
|
|
531
665
|
"Set-Cookie",
|
|
532
666
|
serializeCookieValue(name, "", { ...options, maxAge: 0 }),
|
|
@@ -536,13 +670,20 @@ export function createRequestContext<TEnv>(
|
|
|
536
670
|
|
|
537
671
|
header(name: string, value: string): void {
|
|
538
672
|
assertNotInsideCacheExec(ctx, "header");
|
|
673
|
+
assertNotInsideCacheScopeALS("header");
|
|
539
674
|
stubResponse.headers.set(name, value);
|
|
540
675
|
},
|
|
541
676
|
|
|
542
677
|
setStatus(status: number): void {
|
|
543
678
|
assertNotInsideCacheExec(ctx, "setStatus");
|
|
544
|
-
|
|
545
|
-
|
|
679
|
+
assertNotInsideCacheScopeALS("setStatus");
|
|
680
|
+
stubResponse = new Response(null, {
|
|
681
|
+
status,
|
|
682
|
+
headers: stubResponse.headers,
|
|
683
|
+
});
|
|
684
|
+
},
|
|
685
|
+
|
|
686
|
+
_setStatus(status: number): void {
|
|
546
687
|
stubResponse = new Response(null, {
|
|
547
688
|
status,
|
|
548
689
|
headers: stubResponse.headers,
|
|
@@ -556,6 +697,7 @@ export function createRequestContext<TEnv>(
|
|
|
556
697
|
|
|
557
698
|
_handleStore: handleStore,
|
|
558
699
|
_cacheStore: cacheStore,
|
|
700
|
+
_cacheProfiles: cacheProfiles,
|
|
559
701
|
|
|
560
702
|
waitUntil(fn: () => Promise<void>): void {
|
|
561
703
|
if (executionContext?.waitUntil) {
|
|
@@ -573,6 +715,7 @@ export function createRequestContext<TEnv>(
|
|
|
573
715
|
|
|
574
716
|
onResponse(callback: (response: Response) => Response): void {
|
|
575
717
|
assertNotInsideCacheExec(ctx, "onResponse");
|
|
718
|
+
assertNotInsideCacheScopeALS("onResponse");
|
|
576
719
|
this._onResponseCallbacks.push(callback);
|
|
577
720
|
},
|
|
578
721
|
|
|
@@ -588,14 +731,18 @@ export function createRequestContext<TEnv>(
|
|
|
588
731
|
: undefined,
|
|
589
732
|
_themeConfig: themeConfig,
|
|
590
733
|
|
|
591
|
-
setLocationState(entries: LocationStateEntry[]): void {
|
|
734
|
+
setLocationState(entries: LocationStateEntry | LocationStateEntry[]): void {
|
|
592
735
|
assertNotInsideCacheExec(ctx, "setLocationState");
|
|
736
|
+
const arr = Array.isArray(entries) ? entries : [entries];
|
|
593
737
|
this._locationState = this._locationState
|
|
594
|
-
? [...this._locationState, ...
|
|
595
|
-
:
|
|
738
|
+
? [...this._locationState, ...arr]
|
|
739
|
+
: arr;
|
|
596
740
|
},
|
|
597
741
|
_locationState: undefined,
|
|
598
742
|
|
|
743
|
+
_reportedErrors: new WeakSet<object>(),
|
|
744
|
+
_metricsStore: undefined,
|
|
745
|
+
|
|
599
746
|
reverse: createReverseFunction(getGlobalRouteMap(), undefined, {}),
|
|
600
747
|
};
|
|
601
748
|
|
|
@@ -774,13 +921,13 @@ export function createUseFunction<TEnv>(
|
|
|
774
921
|
// Create loader context with recursive use() support
|
|
775
922
|
const loaderCtx: LoaderContext<Record<string, string | undefined>, TEnv> = {
|
|
776
923
|
params: ctx.params,
|
|
924
|
+
routeParams: (ctx.params ?? {}) as Record<string, string>,
|
|
777
925
|
request: ctx.request,
|
|
778
926
|
searchParams: ctx.searchParams,
|
|
779
927
|
search: (ctx as any).search ?? {},
|
|
780
928
|
pathname: ctx.pathname,
|
|
781
929
|
url: ctx.url,
|
|
782
930
|
env: ctx.env as any,
|
|
783
|
-
var: ctx.var as any,
|
|
784
931
|
get: ctx.get as any,
|
|
785
932
|
use: <TDep, TDepParams = any>(
|
|
786
933
|
dep: LoaderDefinition<TDep, TDepParams>,
|
|
@@ -794,11 +941,11 @@ export function createUseFunction<TEnv>(
|
|
|
794
941
|
getGlobalRouteMap(),
|
|
795
942
|
ctx._routeName,
|
|
796
943
|
ctx.params as Record<string, string>,
|
|
944
|
+
ctx._routeName ? isRouteRootScoped(ctx._routeName) : undefined,
|
|
797
945
|
),
|
|
798
946
|
};
|
|
799
947
|
|
|
800
|
-
|
|
801
|
-
const doneLoader = track(`loader:${loader.$$id}`);
|
|
948
|
+
const doneLoader = track(`loader:${loader.$$id}`, 2);
|
|
802
949
|
const promise = Promise.resolve(loaderFn(loaderCtx)).finally(() => {
|
|
803
950
|
doneLoader();
|
|
804
951
|
});
|
package/src/server.ts
CHANGED
|
@@ -11,6 +11,12 @@
|
|
|
11
11
|
// Router registry (used by Vite plugin for build-time discovery)
|
|
12
12
|
export { RSC_ROUTER_BRAND, RouterRegistry } from "./router.js";
|
|
13
13
|
|
|
14
|
+
// Host router registry (used by Vite plugin for host-router lazy discovery)
|
|
15
|
+
export {
|
|
16
|
+
HostRouterRegistry,
|
|
17
|
+
type HostRouterRegistryEntry,
|
|
18
|
+
} from "./host/router.js";
|
|
19
|
+
|
|
14
20
|
// Route map builder (Vite plugin injects these via virtual modules)
|
|
15
21
|
export {
|
|
16
22
|
registerRouteMap,
|