@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
|
@@ -10,6 +10,7 @@ import type {
|
|
|
10
10
|
DefaultEnv,
|
|
11
11
|
DefaultHandlerRouteMap,
|
|
12
12
|
DefaultReverseRouteMap,
|
|
13
|
+
DefaultRouteName,
|
|
13
14
|
DefaultVars,
|
|
14
15
|
} from "./global-namespace.js";
|
|
15
16
|
import type {
|
|
@@ -166,24 +167,22 @@ export type Handler<
|
|
|
166
167
|
*
|
|
167
168
|
* Provides type-safe access to:
|
|
168
169
|
* - Route params (from URL pattern)
|
|
169
|
-
* -
|
|
170
|
+
* - Cleaned route URL (`url`, `searchParams`, `pathname` — no `_rsc*` params)
|
|
171
|
+
* - Original request (`request` — raw transport URL, headers, method, body)
|
|
170
172
|
* - Platform bindings (env.DB, env.KV, env.SECRETS)
|
|
171
|
-
* - Middleware variables (
|
|
173
|
+
* - Middleware variables (`get("user")`, `get("permissions")`)
|
|
172
174
|
* - Getter/setter for variables (get('user'), set('user', ...))
|
|
173
175
|
*
|
|
174
|
-
* **Note:** System parameters (query params starting with `_rsc`) are automatically
|
|
175
|
-
* filtered from `url`, `searchParams`, and `request.url` for cleaner access.
|
|
176
|
-
*
|
|
177
176
|
* @example
|
|
178
177
|
* ```typescript
|
|
179
178
|
* const handler = (ctx: HandlerContext<{ slug: string }, AppEnv>) => {
|
|
180
179
|
* ctx.params.slug // Route param (string)
|
|
181
180
|
* ctx.env.DB // Binding (D1Database)
|
|
182
|
-
* ctx.
|
|
183
|
-
* ctx.get('user') // Alternative getter
|
|
181
|
+
* ctx.get('user') // Variable (User | undefined)
|
|
184
182
|
* ctx.set('user', {...}) // Setter
|
|
185
183
|
* ctx.url // Clean URL (no _rsc* params)
|
|
186
184
|
* ctx.searchParams // Clean params (no _rsc* params)
|
|
185
|
+
* ctx.request // Raw transport request (original URL intact)
|
|
187
186
|
* }
|
|
188
187
|
* ```
|
|
189
188
|
*/
|
|
@@ -202,13 +201,15 @@ export type HandlerContext<
|
|
|
202
201
|
readonly _paramCheck?: (params: TParams) => TParams;
|
|
203
202
|
/**
|
|
204
203
|
* True during build-time pre-rendering, false at runtime.
|
|
205
|
-
*
|
|
206
|
-
*
|
|
204
|
+
* Build-time collection and dev on-demand prerender use `true`.
|
|
205
|
+
* Live request rendering, including passthrough fallback, uses `false`.
|
|
207
206
|
*/
|
|
208
207
|
build: boolean;
|
|
209
208
|
/**
|
|
210
|
-
* The incoming Request object.
|
|
211
|
-
*
|
|
209
|
+
* The original incoming Request object (transport URL intact).
|
|
210
|
+
* Use `ctx.url` / `ctx.searchParams` for application logic — those have
|
|
211
|
+
* internal `_rsc*` params stripped. `ctx.request` preserves the raw URL
|
|
212
|
+
* for cases where you need original headers, method, or body.
|
|
212
213
|
*/
|
|
213
214
|
request: Request;
|
|
214
215
|
/**
|
|
@@ -226,22 +227,25 @@ export type HandlerContext<
|
|
|
226
227
|
*/
|
|
227
228
|
pathname: string;
|
|
228
229
|
/**
|
|
229
|
-
* The full URL object (with
|
|
230
|
+
* The full URL object (with internal `_rsc*` params stripped).
|
|
231
|
+
* Use this for application logic — routing, link generation, display.
|
|
230
232
|
*/
|
|
231
233
|
url: URL;
|
|
234
|
+
/**
|
|
235
|
+
* The original request URL with all parameters intact, including
|
|
236
|
+
* internal `_rsc*` transport params. Use `ctx.url` for application
|
|
237
|
+
* logic — this is only needed for advanced cases like debugging
|
|
238
|
+
* or custom cache keying.
|
|
239
|
+
*/
|
|
240
|
+
originalUrl: URL;
|
|
232
241
|
/**
|
|
233
242
|
* Platform bindings (DB, KV, secrets, etc.).
|
|
234
243
|
* Access resources like `ctx.env.DB`, `ctx.env.KV`.
|
|
235
244
|
*/
|
|
236
245
|
env: TEnv;
|
|
237
|
-
/**
|
|
238
|
-
* Middleware-injected variables.
|
|
239
|
-
* Access values like `ctx.var.user`, `ctx.var.permissions`.
|
|
240
|
-
*/
|
|
241
|
-
var: DefaultVars;
|
|
242
246
|
/**
|
|
243
247
|
* Type-safe getter for middleware variables.
|
|
244
|
-
*
|
|
248
|
+
* Preferred way to read middleware-injected variables.
|
|
245
249
|
*
|
|
246
250
|
* @example
|
|
247
251
|
* ```typescript
|
|
@@ -262,24 +266,18 @@ export type HandlerContext<
|
|
|
262
266
|
* ```
|
|
263
267
|
*/
|
|
264
268
|
set: {
|
|
265
|
-
<T>(
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
* return <ProductPage />;
|
|
276
|
-
* });
|
|
277
|
-
* ```
|
|
278
|
-
*/
|
|
279
|
-
res: Response;
|
|
269
|
+
<T>(
|
|
270
|
+
contextVar: ContextVar<T>,
|
|
271
|
+
value: T,
|
|
272
|
+
options?: { cache?: boolean },
|
|
273
|
+
): void;
|
|
274
|
+
} & (<K extends keyof DefaultVars>(
|
|
275
|
+
key: K,
|
|
276
|
+
value: DefaultVars[K],
|
|
277
|
+
options?: { cache?: boolean },
|
|
278
|
+
) => void);
|
|
280
279
|
/**
|
|
281
|
-
*
|
|
282
|
-
* Headers set here are merged into the final response.
|
|
280
|
+
* Response headers. Headers set here are merged into the final response.
|
|
283
281
|
*
|
|
284
282
|
* @example
|
|
285
283
|
* ```typescript
|
|
@@ -293,8 +291,15 @@ export type HandlerContext<
|
|
|
293
291
|
/**
|
|
294
292
|
* Access loader data or push handle data.
|
|
295
293
|
*
|
|
294
|
+
* Available in route handlers, layout handlers, middleware, server actions,
|
|
295
|
+
* and server components rendered within the request context.
|
|
296
|
+
*
|
|
296
297
|
* For loaders: Returns a promise that resolves to the loader data.
|
|
297
298
|
* Loaders are executed in parallel and memoized per request.
|
|
299
|
+
* Prefer DSL `loader()` + client `useLoader()` over `ctx.use(Loader)` —
|
|
300
|
+
* DSL loaders are always fresh and cache-safe. Use `ctx.use(Loader)` only
|
|
301
|
+
* when you need loader data in the handler itself (e.g., to set context
|
|
302
|
+
* variables or make routing decisions).
|
|
298
303
|
*
|
|
299
304
|
* For handles: Returns a push function to add data for this segment.
|
|
300
305
|
* Handle data accumulates across all matched route segments.
|
|
@@ -302,10 +307,11 @@ export type HandlerContext<
|
|
|
302
307
|
*
|
|
303
308
|
* @example
|
|
304
309
|
* ```typescript
|
|
305
|
-
* // Loader
|
|
306
|
-
* route("
|
|
307
|
-
* const
|
|
308
|
-
*
|
|
310
|
+
* // Loader escape hatch — use when handler needs the data directly
|
|
311
|
+
* route("product", async (ctx) => {
|
|
312
|
+
* const { product } = await ctx.use(ProductLoader);
|
|
313
|
+
* ctx.set(Product, product); // make available to children
|
|
314
|
+
* return <ProductPage />;
|
|
309
315
|
* });
|
|
310
316
|
*
|
|
311
317
|
* // Handle usage - direct value
|
|
@@ -379,12 +385,26 @@ export type HandlerContext<
|
|
|
379
385
|
* @example
|
|
380
386
|
* ```typescript
|
|
381
387
|
* route("product", (ctx) => {
|
|
382
|
-
* ctx.setLocationState(
|
|
388
|
+
* ctx.setLocationState(ServerInfo({ data: "value" }));
|
|
383
389
|
* return <ProductPage />;
|
|
384
390
|
* });
|
|
385
391
|
* ```
|
|
386
392
|
*/
|
|
387
|
-
setLocationState(entries: LocationStateEntry[]): void;
|
|
393
|
+
setLocationState(entries: LocationStateEntry | LocationStateEntry[]): void;
|
|
394
|
+
/**
|
|
395
|
+
* The matched route name, if the route has an explicit name.
|
|
396
|
+
* Undefined for unnamed routes (those without a `name` option in path()).
|
|
397
|
+
* Includes the namespace prefix from include() (e.g., "blog.post").
|
|
398
|
+
*
|
|
399
|
+
* @example
|
|
400
|
+
* ```typescript
|
|
401
|
+
* route("product", (ctx) => {
|
|
402
|
+
* ctx.routeName // "product"
|
|
403
|
+
* return <ProductPage />;
|
|
404
|
+
* });
|
|
405
|
+
* ```
|
|
406
|
+
*/
|
|
407
|
+
routeName?: DefaultRouteName;
|
|
388
408
|
/**
|
|
389
409
|
* Generate URLs from route names.
|
|
390
410
|
*
|
|
@@ -420,12 +440,18 @@ export type InternalHandlerContext<
|
|
|
420
440
|
TEnv = DefaultEnv,
|
|
421
441
|
TSearch extends SearchSchema = {},
|
|
422
442
|
> = HandlerContext<TParams, TEnv, TSearch> & {
|
|
423
|
-
/**
|
|
424
|
-
|
|
443
|
+
/** @internal Stub response for collecting headers/cookies. */
|
|
444
|
+
res: Response;
|
|
445
|
+
/** @internal Shared variable backing store for ctx.get()/ctx.set(). */
|
|
446
|
+
_variables: Record<string, any>;
|
|
447
|
+
/** Prerender-only control flow helper, attached when the runtime context supports it. */
|
|
448
|
+
passthrough?: () => unknown;
|
|
425
449
|
/** Current segment ID for handle data attribution. */
|
|
426
450
|
_currentSegmentId?: string;
|
|
427
451
|
/** Response type tag (json, text, html, etc.) for cache key differentiation. */
|
|
428
452
|
_responseType?: string;
|
|
453
|
+
/** Route name for cache key scoping (prevents cross-route collisions). */
|
|
454
|
+
_routeName?: string;
|
|
429
455
|
};
|
|
430
456
|
|
|
431
457
|
/**
|
|
@@ -505,26 +531,112 @@ export type RevalidateParams<TParams = GenericParams, TEnv = any> = Parameters<
|
|
|
505
531
|
* })
|
|
506
532
|
* ```
|
|
507
533
|
*/
|
|
534
|
+
/**
|
|
535
|
+
* Revalidation function called during client-side navigation to decide whether
|
|
536
|
+
* a segment (layout, route, parallel slot, or loader) should be re-rendered.
|
|
537
|
+
*
|
|
538
|
+
* Return `true` to re-render, `false` to skip (keep client's current version),
|
|
539
|
+
* or `{ defaultShouldRevalidate: boolean }` to override the default for
|
|
540
|
+
* downstream segments.
|
|
541
|
+
*
|
|
542
|
+
* @example
|
|
543
|
+
* ```ts
|
|
544
|
+
* // Re-render only when a cart action happened or browser signals staleness
|
|
545
|
+
* revalidate(({ actionId, stale }) =>
|
|
546
|
+
* actionId?.includes("cart") || stale || false
|
|
547
|
+
* )
|
|
548
|
+
*
|
|
549
|
+
* // Always re-render when params change (default behavior made explicit)
|
|
550
|
+
* revalidate(({ defaultShouldRevalidate }) => defaultShouldRevalidate)
|
|
551
|
+
* ```
|
|
552
|
+
*/
|
|
508
553
|
export type ShouldRevalidateFn<TParams = GenericParams, TEnv = any> = (args: {
|
|
554
|
+
/** Route params from the page being navigated away from. */
|
|
509
555
|
currentParams: TParams;
|
|
556
|
+
/** Full URL of the page being navigated away from. */
|
|
510
557
|
currentUrl: URL;
|
|
558
|
+
/** Route params for the navigation target. */
|
|
511
559
|
nextParams: TParams;
|
|
560
|
+
/** Full URL of the navigation target. */
|
|
512
561
|
nextUrl: URL;
|
|
562
|
+
/**
|
|
563
|
+
* The router's default revalidation decision for this segment.
|
|
564
|
+
* `true` when params changed or the segment is new to the client.
|
|
565
|
+
* Return this when you want default behavior plus your own conditions.
|
|
566
|
+
*/
|
|
513
567
|
defaultShouldRevalidate: boolean;
|
|
568
|
+
/** Full handler context — access to `ctx.use()`, `ctx.env`, `ctx.params`, etc. */
|
|
514
569
|
context: HandlerContext<TParams, TEnv>;
|
|
515
|
-
|
|
570
|
+
|
|
571
|
+
// ── Segment metadata (which segment is being evaluated) ──────────────
|
|
572
|
+
|
|
573
|
+
/** The type of segment being revalidated. */
|
|
516
574
|
segmentType: "layout" | "route" | "parallel";
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
575
|
+
/** Layout name (e.g., `"root"`, `"shop"`, `"auth"`). Only set for layout segments. */
|
|
576
|
+
layoutName?: string;
|
|
577
|
+
/** Slot name (e.g., `"@sidebar"`, `"@modal"`). Only set for parallel segments. */
|
|
578
|
+
slotName?: string;
|
|
579
|
+
|
|
580
|
+
// ── Action context (populated when revalidation is triggered by a server action) ──
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Identifier of the server action that triggered revalidation.
|
|
584
|
+
* `undefined` during normal navigation (no action involved).
|
|
585
|
+
*
|
|
586
|
+
* Format: `"src/<path>#<exportName>"` — the file path is the source path
|
|
587
|
+
* relative to the project root, followed by `#` and the exported function name.
|
|
588
|
+
*
|
|
589
|
+
* This is stable and can be used for path-based matching to revalidate
|
|
590
|
+
* when any action in a module or directory fires:
|
|
591
|
+
*
|
|
592
|
+
* @example
|
|
593
|
+
* ```ts
|
|
594
|
+
* // Match a specific action
|
|
595
|
+
* revalidate(({ actionId }) => actionId === "src/actions/cart.ts#addToCart")
|
|
596
|
+
*
|
|
597
|
+
* // Match any action in the cart module
|
|
598
|
+
* revalidate(({ actionId }) => actionId?.includes("cart") ?? false)
|
|
599
|
+
*
|
|
600
|
+
* // Match any action under src/apps/store/actions/
|
|
601
|
+
* revalidate(({ actionId }) => actionId?.startsWith("src/apps/store/actions/") ?? false)
|
|
602
|
+
* ```
|
|
603
|
+
*/
|
|
604
|
+
actionId?: string;
|
|
605
|
+
/** URL where the action was executed (the page the user was on when they triggered the action). */
|
|
606
|
+
actionUrl?: URL;
|
|
607
|
+
/** Return value from the action execution. Can be used to conditionally revalidate based on the action's outcome. */
|
|
608
|
+
actionResult?: any;
|
|
609
|
+
/** FormData from the action request body. Only set for form-based actions (not inline `"use server"` actions). */
|
|
610
|
+
formData?: FormData;
|
|
611
|
+
/** HTTP method: `"GET"` for navigation, `"POST"` for server actions. */
|
|
612
|
+
method?: string;
|
|
613
|
+
|
|
614
|
+
// ── Route identity ───────────────────────────────────────────────────
|
|
615
|
+
|
|
616
|
+
/** Route name of the navigation target. Alias for `toRouteName`. */
|
|
617
|
+
routeName?: DefaultRouteName;
|
|
618
|
+
/**
|
|
619
|
+
* Route name being navigated away from.
|
|
620
|
+
* `undefined` for unnamed internal routes (those without a `name` option).
|
|
621
|
+
*/
|
|
622
|
+
fromRouteName?: DefaultRouteName;
|
|
623
|
+
/**
|
|
624
|
+
* Route name being navigated to.
|
|
625
|
+
* `undefined` for unnamed internal routes (those without a `name` option).
|
|
626
|
+
*/
|
|
627
|
+
toRouteName?: DefaultRouteName;
|
|
628
|
+
|
|
629
|
+
// ── Staleness signal ─────────────────────────────────────────────────
|
|
630
|
+
|
|
631
|
+
/**
|
|
632
|
+
* `true` when the browser signals that data may be stale — typically because
|
|
633
|
+
* a server action was executed in this or another tab (`_rsc_stale` header).
|
|
634
|
+
*
|
|
635
|
+
* This is NOT segment cache staleness (loaders are never segment-cached).
|
|
636
|
+
* Use this to decide whether loader data should be re-fetched after an
|
|
637
|
+
* action that may have mutated backend state.
|
|
638
|
+
*/
|
|
639
|
+
stale?: boolean;
|
|
528
640
|
}) => boolean | { defaultShouldRevalidate: boolean };
|
|
529
641
|
|
|
530
642
|
// MiddlewareFn is imported from "../router/middleware.js" and re-exported
|
|
@@ -40,13 +40,19 @@ export type LoaderContext<
|
|
|
40
40
|
TSearch extends SearchSchema = {},
|
|
41
41
|
> = {
|
|
42
42
|
params: TParams;
|
|
43
|
+
/**
|
|
44
|
+
* Route params extracted from the URL pattern match (server-side only).
|
|
45
|
+
* Unlike `params`, these cannot be overridden by client-provided loader params.
|
|
46
|
+
* Use this when you need trusted, server-matched route params for auth or
|
|
47
|
+
* resource scoping.
|
|
48
|
+
*/
|
|
49
|
+
routeParams: Record<string, string>;
|
|
43
50
|
request: Request;
|
|
44
51
|
searchParams: URLSearchParams;
|
|
45
52
|
search: {} extends TSearch ? {} : ResolveSearchSchema<TSearch>;
|
|
46
53
|
pathname: string;
|
|
47
54
|
url: URL;
|
|
48
55
|
env: TEnv;
|
|
49
|
-
var: DefaultVars;
|
|
50
56
|
get: {
|
|
51
57
|
<T>(contextVar: ContextVar<T>): T | undefined;
|
|
52
58
|
} & (<K extends keyof DefaultVars>(key: K) => DefaultVars[K]);
|
|
@@ -159,11 +165,11 @@ export type LoadOptions =
|
|
|
159
165
|
* return await db.products.findBySlug(slug);
|
|
160
166
|
* });
|
|
161
167
|
*
|
|
162
|
-
* //
|
|
163
|
-
* const
|
|
168
|
+
* // Client usage (preferred — cache-safe, always fresh)
|
|
169
|
+
* const { data } = useLoader(CartLoader);
|
|
164
170
|
*
|
|
165
|
-
* //
|
|
166
|
-
* const cart =
|
|
171
|
+
* // Server escape hatch (handler needs data directly)
|
|
172
|
+
* const cart = await ctx.use(CartLoader);
|
|
167
173
|
* ```
|
|
168
174
|
*/
|
|
169
175
|
export type LoaderDefinition<
|
|
@@ -24,17 +24,26 @@ type ParseConstraint<T extends string> =
|
|
|
24
24
|
* - :param(a|b)? -> { name: "param", optional: true, type: "a" | "b" }
|
|
25
25
|
*/
|
|
26
26
|
type ExtractParamInfo<T extends string> =
|
|
27
|
-
// Optional + constrained: :param(a|b)?
|
|
28
|
-
T extends `${infer Name}(${infer Constraint})
|
|
27
|
+
// Optional + constrained (with optional suffix): :param(a|b)?suffix
|
|
28
|
+
T extends `${infer Name}(${infer Constraint})?${string}`
|
|
29
29
|
? { name: Name; optional: true; type: ParseConstraint<Constraint> }
|
|
30
|
-
: // Constrained
|
|
31
|
-
T extends `${infer Name}(${infer Constraint})`
|
|
30
|
+
: // Constrained (with optional suffix): :param(a|b)suffix
|
|
31
|
+
T extends `${infer Name}(${infer Constraint})${string}`
|
|
32
32
|
? { name: Name; optional: false; type: ParseConstraint<Constraint> }
|
|
33
|
-
: // Optional
|
|
34
|
-
T extends `${infer Name}
|
|
33
|
+
: // Optional (with optional suffix): :param?suffix
|
|
34
|
+
T extends `${infer Name}?${string}`
|
|
35
35
|
? { name: Name; optional: true; type: string }
|
|
36
|
-
: //
|
|
37
|
-
|
|
36
|
+
: // Param with dot-suffix: :param.html
|
|
37
|
+
T extends `${infer Name}.${string}`
|
|
38
|
+
? { name: Name; optional: false; type: string }
|
|
39
|
+
: // Param with dash-suffix: :param-slug
|
|
40
|
+
T extends `${infer Name}-${string}`
|
|
41
|
+
? { name: Name; optional: false; type: string }
|
|
42
|
+
: // Param with tilde-suffix: :param~v2
|
|
43
|
+
T extends `${infer Name}~${string}`
|
|
44
|
+
? { name: Name; optional: false; type: string }
|
|
45
|
+
: // Required: :param (no suffix)
|
|
46
|
+
{ name: T; optional: false; type: string };
|
|
38
47
|
|
|
39
48
|
/**
|
|
40
49
|
* Build param object from info
|
package/src/types/route-entry.ts
CHANGED
|
@@ -8,6 +8,10 @@ export interface LazyIncludeContext {
|
|
|
8
8
|
urlPrefix: string;
|
|
9
9
|
namePrefix: string | undefined;
|
|
10
10
|
parent: unknown; // EntryData - avoid circular import
|
|
11
|
+
cacheProfiles?: Record<
|
|
12
|
+
string,
|
|
13
|
+
import("../cache/profile-registry.js").CacheProfile
|
|
14
|
+
>;
|
|
11
15
|
}
|
|
12
16
|
|
|
13
17
|
/**
|
|
@@ -37,18 +41,39 @@ export interface RouteEntry<TEnv = any> {
|
|
|
37
41
|
* If not specified for a route, defaults to pattern-based detection
|
|
38
42
|
*/
|
|
39
43
|
trailingSlash?: Record<string, TrailingSlashMode>;
|
|
44
|
+
/**
|
|
45
|
+
* Supported handler shapes:
|
|
46
|
+
* - sync: () => Array<AllUseItems>
|
|
47
|
+
* - lazy import: () => Promise<{ default: () => Array<AllUseItems> }>
|
|
48
|
+
* - lazy function: () => Promise<() => Array<AllUseItems>>
|
|
49
|
+
*
|
|
50
|
+
* Direct Promise<Array> is NOT supported and rejected at runtime.
|
|
51
|
+
*/
|
|
40
52
|
handler: () =>
|
|
41
53
|
| Array<AllUseItems>
|
|
42
54
|
| Promise<{ default: () => Array<AllUseItems> }>
|
|
43
55
|
| Promise<() => Array<AllUseItems>>;
|
|
44
56
|
mountIndex: number;
|
|
45
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Router ID that owns this entry. Used to namespace the manifest cache
|
|
60
|
+
* so multi-router setups (host routing) don't share cached EntryData
|
|
61
|
+
* across routers with overlapping mountIndex + routeKey combinations.
|
|
62
|
+
*/
|
|
63
|
+
routerId?: string;
|
|
64
|
+
|
|
46
65
|
/**
|
|
47
66
|
* Route keys in this entry that have pre-render handlers.
|
|
48
67
|
* Used by the non-trie match path to set the `pr` flag.
|
|
49
68
|
*/
|
|
50
69
|
prerenderRouteKeys?: Set<string>;
|
|
51
70
|
|
|
71
|
+
/**
|
|
72
|
+
* Route keys in this entry that use `{ passthrough: true }`.
|
|
73
|
+
* Used by the non-trie match path to set the `pt` flag.
|
|
74
|
+
*/
|
|
75
|
+
passthroughRouteKeys?: Set<string>;
|
|
76
|
+
|
|
52
77
|
// === Lazy evaluation fields ===
|
|
53
78
|
|
|
54
79
|
/**
|
|
@@ -71,4 +96,14 @@ export interface RouteEntry<TEnv = any> {
|
|
|
71
96
|
* For lazy entries: whether patterns have been evaluated
|
|
72
97
|
*/
|
|
73
98
|
lazyEvaluated?: boolean;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Cache profiles for DSL-time cache("profileName") resolution.
|
|
102
|
+
* Set on all entries (lazy and non-lazy) so loadManifest() can
|
|
103
|
+
* propagate them into the HelperContext Store.
|
|
104
|
+
*/
|
|
105
|
+
cacheProfiles?: Record<
|
|
106
|
+
string,
|
|
107
|
+
import("../cache/profile-registry.js").CacheProfile
|
|
108
|
+
>;
|
|
74
109
|
}
|
package/src/types/segments.ts
CHANGED
|
@@ -51,9 +51,11 @@ export interface ResolvedSegment {
|
|
|
51
51
|
// Loader-specific fields
|
|
52
52
|
loaderId?: string; // For loaders: the loader $$id identifier
|
|
53
53
|
loaderData?: any; // For loaders: the resolved data from loader execution
|
|
54
|
+
parallelLoading?: ReactNode; // For parallel-owned loaders: the parallel's loading fallback
|
|
54
55
|
// Intercept loader fields (for streaming loader data in parallel segments)
|
|
55
56
|
loaderDataPromise?: Promise<any[]> | any[]; // Loader data promise or resolved array
|
|
56
57
|
loaderIds?: string[]; // IDs ($$id) of loaders for this segment
|
|
58
|
+
parallelLoaderSources?: any[]; // Internal: preserves stable aggregate promise across renders
|
|
57
59
|
// Error-specific fields
|
|
58
60
|
error?: ErrorInfo; // For error segments: the error information
|
|
59
61
|
// NotFound-specific fields
|
|
@@ -124,11 +126,6 @@ export interface MatchResult {
|
|
|
124
126
|
* Used by ctx.reverse() for local name resolution.
|
|
125
127
|
*/
|
|
126
128
|
routeName?: string;
|
|
127
|
-
/**
|
|
128
|
-
* Server-Timing header value (only present when debugPerformance is enabled)
|
|
129
|
-
* Can be added to response headers for DevTools integration
|
|
130
|
-
*/
|
|
131
|
-
serverTiming?: string;
|
|
132
129
|
/**
|
|
133
130
|
* State of named slots for this route match
|
|
134
131
|
* Key is slot name (e.g., "@modal"), value is slot state
|
|
@@ -4,17 +4,37 @@ import {
|
|
|
4
4
|
runWithPrefixes,
|
|
5
5
|
getUrlPrefix,
|
|
6
6
|
getNamePrefix,
|
|
7
|
+
getRootScoped,
|
|
7
8
|
} from "../server/context";
|
|
9
|
+
import {
|
|
10
|
+
INTERNAL_INCLUDE_SCOPE_PREFIX,
|
|
11
|
+
validateUserRouteName,
|
|
12
|
+
} from "../route-name.js";
|
|
8
13
|
import type { UrlPatterns, IncludeOptions } from "./pattern-types.js";
|
|
9
14
|
import type { IncludeFn } from "./path-helper-types.js";
|
|
10
15
|
|
|
16
|
+
function hasExplicitNameOption(options: IncludeOptions | undefined): boolean {
|
|
17
|
+
return !!options && Object.prototype.hasOwnProperty.call(options, "name");
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function allocateInternalIncludeScopeId(
|
|
21
|
+
counters: Record<string, number>,
|
|
22
|
+
): string {
|
|
23
|
+
const key = "__include_scope__";
|
|
24
|
+
const index = counters[key] ?? 0;
|
|
25
|
+
counters[key] = index + 1;
|
|
26
|
+
return `${INTERNAL_INCLUDE_SCOPE_PREFIX}${index}`;
|
|
27
|
+
}
|
|
28
|
+
|
|
11
29
|
/**
|
|
12
30
|
* Process an IncludeItem by executing its nested patterns with prefixes
|
|
13
31
|
* This expands the include into actual route registrations
|
|
14
32
|
*/
|
|
15
33
|
function processIncludeItem(item: IncludeItem): AllUseItems[] {
|
|
16
|
-
const { prefix, patterns
|
|
17
|
-
const namePrefix =
|
|
34
|
+
const { prefix, patterns } = item;
|
|
35
|
+
const namePrefix =
|
|
36
|
+
(item as IncludeItem & { _lazyContext?: { namePrefix?: string } })
|
|
37
|
+
._lazyContext?.namePrefix ?? item.options?.name;
|
|
18
38
|
|
|
19
39
|
// Execute the nested patterns' handler with URL and name prefixes
|
|
20
40
|
// The urlPrefix being set tells nested urls() to skip RootLayout wrapping
|
|
@@ -91,7 +111,11 @@ export function createIncludeHelper<TEnv>(): IncludeFn<TEnv> {
|
|
|
91
111
|
const ctx = store.getStore();
|
|
92
112
|
if (!ctx) throw new Error("include() must be called inside urls()");
|
|
93
113
|
|
|
94
|
-
const
|
|
114
|
+
const explicitName = options?.name;
|
|
115
|
+
const hasExplicitName = hasExplicitNameOption(options);
|
|
116
|
+
if (hasExplicitName && explicitName) {
|
|
117
|
+
validateUserRouteName(explicitName);
|
|
118
|
+
}
|
|
95
119
|
const name = `$include_${prefix.replace(/[/:*?]/g, "_")}`;
|
|
96
120
|
|
|
97
121
|
// Capture context for deferred evaluation
|
|
@@ -103,11 +127,16 @@ export function createIncludeHelper<TEnv>(): IncludeFn<TEnv> {
|
|
|
103
127
|
? capturedUrlPrefix + prefix.slice(1)
|
|
104
128
|
: capturedUrlPrefix + prefix
|
|
105
129
|
: prefix;
|
|
106
|
-
const
|
|
107
|
-
?
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
130
|
+
const internalScope = !hasExplicitName
|
|
131
|
+
? allocateInternalIncludeScopeId(ctx.counters)
|
|
132
|
+
: undefined;
|
|
133
|
+
const nextSegment = hasExplicitName ? explicitName : internalScope;
|
|
134
|
+
const fullNamePrefix =
|
|
135
|
+
nextSegment !== undefined && nextSegment !== ""
|
|
136
|
+
? capturedNamePrefix
|
|
137
|
+
? `${capturedNamePrefix}.${nextSegment}`
|
|
138
|
+
: nextSegment
|
|
139
|
+
: capturedNamePrefix;
|
|
111
140
|
|
|
112
141
|
// Track this include for build-time manifest generation
|
|
113
142
|
if (ctx.trackedIncludes) {
|
|
@@ -136,6 +165,16 @@ export function createIncludeHelper<TEnv>(): IncludeFn<TEnv> {
|
|
|
136
165
|
ctx.counters[layoutCounterKey]++;
|
|
137
166
|
}
|
|
138
167
|
|
|
168
|
+
// Compute rootScoped at capture time, mirroring the logic in runWithPrefixes.
|
|
169
|
+
// This ensures lazy evaluation restores the correct scope state.
|
|
170
|
+
const parentRootScoped = ctx.rootScoped;
|
|
171
|
+
const capturedRootScoped =
|
|
172
|
+
nextSegment === ""
|
|
173
|
+
? (parentRootScoped ?? true)
|
|
174
|
+
: nextSegment !== undefined
|
|
175
|
+
? (parentRootScoped ?? false)
|
|
176
|
+
: parentRootScoped;
|
|
177
|
+
|
|
139
178
|
// All includes are lazy - patterns are evaluated on first matching request
|
|
140
179
|
// This improves cold start time significantly for large route sets
|
|
141
180
|
return {
|
|
@@ -150,6 +189,8 @@ export function createIncludeHelper<TEnv>(): IncludeFn<TEnv> {
|
|
|
150
189
|
namePrefix: fullNamePrefix,
|
|
151
190
|
parent: capturedParent,
|
|
152
191
|
counters: capturedCounters,
|
|
192
|
+
cacheProfiles: ctx.cacheProfiles,
|
|
193
|
+
rootScoped: capturedRootScoped,
|
|
153
194
|
},
|
|
154
195
|
} as IncludeItem;
|
|
155
196
|
};
|