@rangojs/router 0.0.0-experimental.2 → 0.0.0-experimental.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +5 -0
- package/README.md +850 -4
- 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/{src/__mocks__/version.ts → dist/__mocks__/version.js} +1 -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 +1601 -0
- package/dist/bin/rango.js.map +1 -0
- package/dist/browser/event-controller.d.ts +191 -0
- package/dist/browser/event-controller.d.ts.map +1 -0
- package/dist/browser/event-controller.js +559 -0
- package/dist/browser/event-controller.js.map +1 -0
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +14 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/link-interceptor.d.ts +38 -0
- package/dist/browser/link-interceptor.d.ts.map +1 -0
- package/dist/browser/link-interceptor.js +99 -0
- package/dist/browser/link-interceptor.js.map +1 -0
- package/dist/browser/logging.d.ts +10 -0
- package/dist/browser/logging.d.ts.map +1 -0
- package/dist/browser/logging.js +29 -0
- package/dist/browser/logging.js.map +1 -0
- package/dist/browser/lru-cache.d.ts +17 -0
- package/dist/browser/lru-cache.d.ts.map +1 -0
- package/dist/browser/lru-cache.js +50 -0
- package/dist/browser/lru-cache.js.map +1 -0
- package/dist/browser/merge-segment-loaders.d.ts +39 -0
- package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
- package/dist/browser/merge-segment-loaders.js +102 -0
- package/dist/browser/merge-segment-loaders.js.map +1 -0
- package/dist/browser/navigation-bridge.d.ts +102 -0
- package/dist/browser/navigation-bridge.d.ts.map +1 -0
- package/dist/browser/navigation-bridge.js +708 -0
- package/dist/browser/navigation-bridge.js.map +1 -0
- package/dist/browser/navigation-client.d.ts +25 -0
- package/dist/browser/navigation-client.d.ts.map +1 -0
- package/dist/browser/navigation-client.js +157 -0
- package/dist/browser/navigation-client.js.map +1 -0
- package/dist/browser/navigation-store.d.ts +101 -0
- package/dist/browser/navigation-store.d.ts.map +1 -0
- package/dist/browser/navigation-store.js +625 -0
- package/dist/browser/navigation-store.js.map +1 -0
- package/dist/browser/partial-update.d.ts +75 -0
- package/dist/browser/partial-update.d.ts.map +1 -0
- package/dist/browser/partial-update.js +426 -0
- package/dist/browser/partial-update.js.map +1 -0
- package/dist/browser/react/Link.d.ts +86 -0
- package/dist/browser/react/Link.d.ts.map +1 -0
- package/dist/browser/react/Link.js +128 -0
- package/dist/browser/react/Link.js.map +1 -0
- package/dist/browser/react/NavigationProvider.d.ts +63 -0
- package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
- package/dist/browser/react/NavigationProvider.js +216 -0
- package/dist/browser/react/NavigationProvider.js.map +1 -0
- package/dist/browser/react/ScrollRestoration.d.ts +75 -0
- package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
- package/dist/browser/react/ScrollRestoration.js +57 -0
- package/dist/browser/react/ScrollRestoration.js.map +1 -0
- package/dist/browser/react/context.d.ts +46 -0
- package/dist/browser/react/context.d.ts.map +1 -0
- package/dist/browser/react/context.js +10 -0
- package/dist/browser/react/context.js.map +1 -0
- package/dist/browser/react/index.d.ts +11 -0
- package/dist/browser/react/index.d.ts.map +1 -0
- package/dist/browser/react/index.js +22 -0
- package/dist/browser/react/index.js.map +1 -0
- package/dist/browser/react/location-state-shared.d.ts +63 -0
- package/dist/browser/react/location-state-shared.d.ts.map +1 -0
- package/dist/browser/react/location-state-shared.js +81 -0
- package/dist/browser/react/location-state-shared.js.map +1 -0
- package/dist/browser/react/location-state.d.ts +23 -0
- package/dist/browser/react/location-state.d.ts.map +1 -0
- package/dist/browser/react/location-state.js +29 -0
- package/dist/browser/react/location-state.js.map +1 -0
- package/dist/browser/react/mount-context.d.ts +24 -0
- package/dist/browser/react/mount-context.d.ts.map +1 -0
- package/dist/browser/react/mount-context.js +24 -0
- package/dist/browser/react/mount-context.js.map +1 -0
- package/dist/browser/react/use-action.d.ts +64 -0
- package/dist/browser/react/use-action.d.ts.map +1 -0
- package/dist/browser/react/use-action.js +134 -0
- package/dist/browser/react/use-action.js.map +1 -0
- package/dist/browser/react/use-client-cache.d.ts +41 -0
- package/dist/browser/react/use-client-cache.d.ts.map +1 -0
- package/dist/browser/react/use-client-cache.js +39 -0
- package/dist/browser/react/use-client-cache.js.map +1 -0
- package/dist/browser/react/use-handle.d.ts +31 -0
- package/dist/browser/react/use-handle.d.ts.map +1 -0
- package/dist/browser/react/use-handle.js +144 -0
- package/dist/browser/react/use-handle.js.map +1 -0
- package/dist/browser/react/use-href.d.ts +33 -0
- package/dist/browser/react/use-href.d.ts.map +1 -0
- package/dist/browser/react/use-href.js +39 -0
- package/dist/browser/react/use-href.js.map +1 -0
- package/dist/browser/react/use-link-status.d.ts +37 -0
- package/dist/browser/react/use-link-status.d.ts.map +1 -0
- package/dist/browser/react/use-link-status.js +99 -0
- package/dist/browser/react/use-link-status.js.map +1 -0
- package/dist/browser/react/use-mount.d.ts +25 -0
- package/dist/browser/react/use-mount.d.ts.map +1 -0
- package/dist/browser/react/use-mount.js +30 -0
- package/dist/browser/react/use-mount.js.map +1 -0
- package/dist/browser/react/use-navigation.d.ts +27 -0
- package/dist/browser/react/use-navigation.d.ts.map +1 -0
- package/dist/browser/react/use-navigation.js +87 -0
- package/dist/browser/react/use-navigation.js.map +1 -0
- package/dist/browser/react/use-segments.d.ts +38 -0
- package/dist/browser/react/use-segments.d.ts.map +1 -0
- package/dist/browser/react/use-segments.js +130 -0
- package/dist/browser/react/use-segments.js.map +1 -0
- package/dist/browser/request-controller.d.ts +26 -0
- package/dist/browser/request-controller.d.ts.map +1 -0
- package/dist/browser/request-controller.js +147 -0
- package/dist/browser/request-controller.js.map +1 -0
- package/dist/browser/rsc-router.d.ts +129 -0
- package/dist/browser/rsc-router.d.ts.map +1 -0
- package/dist/browser/rsc-router.js +195 -0
- package/dist/browser/rsc-router.js.map +1 -0
- package/dist/browser/scroll-restoration.d.ts +93 -0
- package/dist/browser/scroll-restoration.d.ts.map +1 -0
- package/dist/browser/scroll-restoration.js +321 -0
- package/dist/browser/scroll-restoration.js.map +1 -0
- package/dist/browser/segment-structure-assert.d.ts +17 -0
- package/dist/browser/segment-structure-assert.d.ts.map +1 -0
- package/dist/browser/segment-structure-assert.js +59 -0
- package/dist/browser/segment-structure-assert.js.map +1 -0
- package/dist/browser/server-action-bridge.d.ts +26 -0
- package/dist/browser/server-action-bridge.d.ts.map +1 -0
- package/dist/browser/server-action-bridge.js +668 -0
- package/dist/browser/server-action-bridge.js.map +1 -0
- package/dist/browser/shallow.d.ts +12 -0
- package/dist/browser/shallow.d.ts.map +1 -0
- package/dist/browser/shallow.js +34 -0
- package/dist/browser/shallow.js.map +1 -0
- package/dist/browser/types.d.ts +369 -0
- package/dist/browser/types.d.ts.map +1 -0
- package/dist/browser/types.js +2 -0
- package/dist/browser/types.js.map +1 -0
- package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
- package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-cli.test.js +237 -0
- package/dist/build/__tests__/generate-cli.test.js.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.js +119 -0
- package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.js +620 -0
- package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.js +308 -0
- package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
- package/dist/build/generate-manifest.d.ts +81 -0
- package/dist/build/generate-manifest.d.ts.map +1 -0
- package/dist/build/generate-manifest.js +276 -0
- package/dist/build/generate-manifest.js.map +1 -0
- package/dist/build/generate-route-types.d.ts +115 -0
- package/dist/build/generate-route-types.d.ts.map +1 -0
- package/dist/build/generate-route-types.js +740 -0
- package/dist/build/generate-route-types.js.map +1 -0
- package/dist/build/index.d.ts +21 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +21 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/route-trie.d.ts +71 -0
- package/dist/build/route-trie.d.ts.map +1 -0
- package/dist/build/route-trie.js +175 -0
- package/dist/build/route-trie.js.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.js +208 -0
- package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
- package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
- package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
- package/dist/cache/__tests__/document-cache.test.js +345 -0
- package/dist/cache/__tests__/document-cache.test.js.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
- package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
- package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-store.test.js +367 -0
- package/dist/cache/__tests__/memory-store.test.js.map +1 -0
- package/dist/cache/cache-scope.d.ts +102 -0
- package/dist/cache/cache-scope.d.ts.map +1 -0
- package/dist/cache/cache-scope.js +440 -0
- package/dist/cache/cache-scope.js.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
- package/dist/cache/cf/cf-cache-store.d.ts +165 -0
- package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
- package/dist/cache/cf/cf-cache-store.js +242 -0
- package/dist/cache/cf/cf-cache-store.js.map +1 -0
- package/dist/cache/cf/index.d.ts +14 -0
- package/dist/cache/cf/index.d.ts.map +1 -0
- package/dist/cache/cf/index.js +17 -0
- package/dist/cache/cf/index.js.map +1 -0
- package/dist/cache/document-cache.d.ts +64 -0
- package/dist/cache/document-cache.d.ts.map +1 -0
- package/dist/cache/document-cache.js +228 -0
- package/dist/cache/document-cache.js.map +1 -0
- package/dist/cache/index.d.ts +19 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +21 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/memory-segment-store.d.ts +110 -0
- package/dist/cache/memory-segment-store.d.ts.map +1 -0
- package/dist/cache/memory-segment-store.js +117 -0
- package/dist/cache/memory-segment-store.js.map +1 -0
- package/dist/cache/memory-store.d.ts +41 -0
- package/dist/cache/memory-store.d.ts.map +1 -0
- package/dist/cache/memory-store.js +191 -0
- package/dist/cache/memory-store.js.map +1 -0
- package/dist/cache/types.d.ts +317 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +12 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/client.d.ts +248 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +367 -0
- package/dist/client.js.map +1 -0
- package/dist/client.rsc.d.ts +26 -0
- package/dist/client.rsc.d.ts.map +1 -0
- package/dist/client.rsc.js +46 -0
- package/dist/client.rsc.js.map +1 -0
- package/dist/component-utils.d.ts +36 -0
- package/dist/component-utils.d.ts.map +1 -0
- package/dist/component-utils.js +61 -0
- package/dist/component-utils.js.map +1 -0
- package/dist/components/DefaultDocument.d.ts +13 -0
- package/dist/components/DefaultDocument.d.ts.map +1 -0
- package/dist/components/DefaultDocument.js +15 -0
- package/dist/components/DefaultDocument.js.map +1 -0
- package/dist/debug.d.ts +58 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +157 -0
- package/dist/debug.js.map +1 -0
- package/dist/default-error-boundary.d.ts +11 -0
- package/dist/default-error-boundary.d.ts.map +1 -0
- package/dist/default-error-boundary.js +45 -0
- package/dist/default-error-boundary.js.map +1 -0
- package/dist/deps/browser.d.ts +2 -0
- package/dist/deps/browser.d.ts.map +1 -0
- package/dist/deps/browser.js +3 -0
- package/dist/deps/browser.js.map +1 -0
- package/dist/deps/html-stream-client.d.ts +2 -0
- package/dist/deps/html-stream-client.d.ts.map +1 -0
- package/dist/deps/html-stream-client.js +3 -0
- package/dist/deps/html-stream-client.js.map +1 -0
- package/dist/deps/html-stream-server.d.ts +2 -0
- package/dist/deps/html-stream-server.d.ts.map +1 -0
- package/dist/deps/html-stream-server.js +3 -0
- package/dist/deps/html-stream-server.js.map +1 -0
- package/dist/deps/rsc.d.ts +2 -0
- package/dist/deps/rsc.d.ts.map +1 -0
- package/dist/deps/rsc.js +4 -0
- package/dist/deps/rsc.js.map +1 -0
- package/dist/deps/ssr.d.ts +2 -0
- package/dist/deps/ssr.d.ts.map +1 -0
- package/dist/deps/ssr.js +3 -0
- package/dist/deps/ssr.js.map +1 -0
- package/dist/errors.d.ts +174 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +241 -0
- package/dist/errors.js.map +1 -0
- package/dist/handle.d.ts +78 -0
- package/dist/handle.d.ts.map +1 -0
- package/dist/handle.js +82 -0
- package/dist/handle.js.map +1 -0
- package/dist/handles/MetaTags.d.ts +14 -0
- package/dist/handles/MetaTags.d.ts.map +1 -0
- package/dist/handles/MetaTags.js +136 -0
- package/dist/handles/MetaTags.js.map +1 -0
- package/dist/handles/index.d.ts +6 -0
- package/dist/handles/index.d.ts.map +1 -0
- package/dist/handles/index.js +6 -0
- package/dist/handles/index.js.map +1 -0
- package/dist/handles/meta.d.ts +39 -0
- package/dist/handles/meta.d.ts.map +1 -0
- package/dist/handles/meta.js +202 -0
- package/dist/handles/meta.js.map +1 -0
- package/dist/host/__tests__/errors.test.d.ts +2 -0
- package/dist/host/__tests__/errors.test.d.ts.map +1 -0
- package/dist/host/__tests__/errors.test.js +76 -0
- package/dist/host/__tests__/errors.test.js.map +1 -0
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
- package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
- package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
- package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
- package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
- package/dist/host/__tests__/pattern-matcher.test.js +251 -0
- package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
- package/dist/host/__tests__/router.test.d.ts +2 -0
- package/dist/host/__tests__/router.test.d.ts.map +1 -0
- package/dist/host/__tests__/router.test.js +241 -0
- package/dist/host/__tests__/router.test.js.map +1 -0
- package/dist/host/__tests__/testing.test.d.ts +2 -0
- package/dist/host/__tests__/testing.test.d.ts.map +1 -0
- package/dist/host/__tests__/testing.test.js +64 -0
- package/dist/host/__tests__/testing.test.js.map +1 -0
- package/dist/host/__tests__/utils.test.d.ts +2 -0
- package/dist/host/__tests__/utils.test.d.ts.map +1 -0
- package/dist/host/__tests__/utils.test.js +29 -0
- package/dist/host/__tests__/utils.test.js.map +1 -0
- package/dist/host/cookie-handler.d.ts +34 -0
- package/dist/host/cookie-handler.d.ts.map +1 -0
- package/dist/host/cookie-handler.js +124 -0
- package/dist/host/cookie-handler.js.map +1 -0
- package/dist/host/errors.d.ts +56 -0
- package/dist/host/errors.d.ts.map +1 -0
- package/dist/host/errors.js +79 -0
- package/dist/host/errors.js.map +1 -0
- package/dist/host/index.d.ts +29 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +32 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/pattern-matcher.d.ts +36 -0
- package/dist/host/pattern-matcher.d.ts.map +1 -0
- package/dist/host/pattern-matcher.js +172 -0
- package/dist/host/pattern-matcher.js.map +1 -0
- package/dist/host/router.d.ts +26 -0
- package/dist/host/router.d.ts.map +1 -0
- package/dist/host/router.js +218 -0
- package/dist/host/router.js.map +1 -0
- package/dist/host/testing.d.ts +36 -0
- package/dist/host/testing.d.ts.map +1 -0
- package/dist/host/testing.js +55 -0
- package/dist/host/testing.js.map +1 -0
- package/dist/host/types.d.ts +115 -0
- package/dist/host/types.d.ts.map +1 -0
- package/dist/host/types.js +7 -0
- package/dist/host/types.js.map +1 -0
- package/dist/host/utils.d.ts +21 -0
- package/dist/host/utils.d.ts.map +1 -0
- package/dist/host/utils.js +23 -0
- package/dist/host/utils.js.map +1 -0
- package/dist/href-client.d.ts +131 -0
- package/dist/href-client.d.ts.map +1 -0
- package/dist/href-client.js +64 -0
- package/dist/href-client.js.map +1 -0
- package/{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 +4630 -749
- 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/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +18 -17
- package/dist/vite/virtual-entries.js.map +1 -0
- package/package.json +82 -46
- package/skills/cache-guide/SKILL.md +262 -0
- package/skills/caching/SKILL.md +139 -238
- package/skills/composability/SKILL.md +172 -0
- package/skills/debug-manifest/SKILL.md +112 -0
- package/skills/document-cache/SKILL.md +87 -57
- package/skills/fonts/SKILL.md +167 -0
- package/skills/hooks/SKILL.md +403 -60
- package/skills/intercept/SKILL.md +224 -203
- package/skills/layout/SKILL.md +243 -149
- package/skills/links/SKILL.md +239 -0
- package/skills/loader/SKILL.md +444 -253
- package/skills/middleware/SKILL.md +222 -325
- package/skills/mime-routes/SKILL.md +128 -0
- package/skills/parallel/SKILL.md +220 -170
- package/skills/prerender/SKILL.md +643 -0
- package/skills/rango/SKILL.md +119 -0
- package/skills/response-routes/SKILL.md +411 -0
- package/skills/route/SKILL.md +334 -89
- package/skills/router-setup/SKILL.md +305 -274
- package/skills/tailwind/SKILL.md +129 -0
- package/skills/testing/SKILL.md +226 -0
- package/skills/theme/SKILL.md +36 -11
- package/skills/typesafety/SKILL.md +437 -168
- package/skills/use-cache/SKILL.md +324 -0
- package/src/__internal.ts +181 -0
- package/src/bin/rango.ts +321 -0
- package/src/browser/action-coordinator.ts +97 -0
- package/src/browser/action-response-classifier.ts +99 -0
- package/src/browser/event-controller.ts +87 -64
- package/src/browser/history-state.ts +80 -0
- package/src/browser/intercept-utils.ts +52 -0
- package/src/browser/link-interceptor.ts +20 -4
- package/src/browser/logging.ts +55 -0
- package/src/browser/merge-segment-loaders.ts +20 -12
- package/src/browser/navigation-bridge.ts +217 -549
- package/src/browser/navigation-client.ts +74 -46
- package/src/browser/navigation-store.ts +33 -50
- package/src/browser/navigation-transaction.ts +295 -0
- package/src/browser/network-error-handler.ts +61 -0
- package/src/browser/partial-update.ts +288 -297
- package/src/browser/prefetch/cache.ts +67 -0
- package/src/browser/prefetch/fetch.ts +137 -0
- package/src/browser/prefetch/observer.ts +65 -0
- package/src/browser/prefetch/policy.ts +42 -0
- package/src/browser/prefetch/queue.ts +88 -0
- package/src/browser/rango-state.ts +112 -0
- package/src/browser/react/Link.tsx +173 -73
- package/src/browser/react/NavigationProvider.tsx +138 -27
- package/src/browser/react/context.ts +6 -0
- package/src/browser/react/filter-segment-order.ts +11 -0
- package/src/browser/react/index.ts +12 -12
- package/src/browser/react/location-state-shared.ts +95 -53
- package/src/browser/react/location-state.ts +60 -15
- package/src/browser/react/mount-context.ts +37 -0
- package/src/browser/react/nonce-context.ts +23 -0
- package/src/browser/react/shallow-equal.ts +27 -0
- package/src/browser/react/use-action.ts +29 -51
- package/src/browser/react/use-client-cache.ts +5 -3
- package/src/browser/react/use-handle.ts +49 -65
- package/src/browser/react/use-href.tsx +20 -188
- package/src/browser/react/use-link-status.ts +6 -5
- package/src/browser/react/use-mount.ts +31 -0
- package/src/browser/react/use-navigation.ts +27 -78
- package/src/browser/react/use-params.ts +65 -0
- package/src/browser/react/use-pathname.ts +47 -0
- package/src/browser/react/use-router.ts +63 -0
- package/src/browser/react/use-search-params.ts +56 -0
- package/src/browser/react/use-segments.ts +80 -97
- package/src/browser/response-adapter.ts +73 -0
- package/src/browser/rsc-router.tsx +104 -34
- package/src/browser/scroll-restoration.ts +92 -16
- package/src/browser/segment-reconciler.ts +216 -0
- package/src/browser/segment-structure-assert.ts +83 -0
- package/src/browser/server-action-bridge.ts +504 -584
- package/src/browser/shallow.ts +6 -1
- package/src/browser/types.ts +107 -57
- package/src/browser/validate-redirect-origin.ts +29 -0
- package/src/build/generate-manifest.ts +438 -0
- package/src/build/generate-route-types.ts +36 -0
- package/src/build/index.ts +35 -0
- package/src/build/route-trie.ts +249 -0
- package/src/build/route-types/ast-helpers.ts +25 -0
- package/src/build/route-types/ast-route-extraction.ts +98 -0
- package/src/build/route-types/codegen.ts +102 -0
- package/src/build/route-types/include-resolution.ts +411 -0
- package/src/build/route-types/param-extraction.ts +48 -0
- package/src/build/route-types/per-module-writer.ts +128 -0
- package/src/build/route-types/router-processing.ts +469 -0
- package/src/build/route-types/scan-filter.ts +78 -0
- package/src/build/runtime-discovery.ts +231 -0
- 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 +338 -0
- package/src/cache/cache-scope.ts +120 -303
- package/src/cache/cf/cf-cache-store.ts +119 -7
- package/src/cache/cf/index.ts +8 -2
- package/src/cache/document-cache.ts +101 -72
- package/src/cache/handle-capture.ts +81 -0
- package/src/cache/handle-snapshot.ts +41 -0
- package/src/cache/index.ts +0 -15
- package/src/cache/memory-segment-store.ts +191 -13
- package/src/cache/profile-registry.ts +73 -0
- package/src/cache/read-through-swr.ts +134 -0
- package/src/cache/segment-codec.ts +256 -0
- package/src/cache/taint.ts +98 -0
- package/src/cache/types.ts +76 -121
- package/src/client.rsc.tsx +10 -14
- package/src/client.tsx +114 -89
- package/src/component-utils.ts +4 -4
- package/src/components/DefaultDocument.tsx +6 -2
- package/src/context-var.ts +86 -0
- package/src/debug.ts +243 -0
- package/src/errors.ts +108 -2
- package/src/handle.ts +34 -19
- package/src/handles/MetaTags.tsx +76 -23
- package/src/handles/meta.ts +32 -15
- package/src/host/cookie-handler.ts +165 -0
- package/src/host/errors.ts +97 -0
- package/src/host/index.ts +56 -0
- package/src/host/pattern-matcher.ts +214 -0
- package/src/host/router.ts +352 -0
- package/src/host/testing.ts +79 -0
- package/src/host/types.ts +146 -0
- package/src/host/utils.ts +25 -0
- package/src/href-client.ts +141 -47
- package/src/index.rsc.ts +209 -23
- package/src/index.ts +256 -32
- package/src/internal-debug.ts +11 -0
- package/src/loader.rsc.ts +27 -142
- package/src/loader.ts +27 -10
- package/src/network-error-thrower.tsx +3 -1
- package/src/outlet-provider.tsx +45 -0
- package/src/prerender/param-hash.ts +37 -0
- package/src/prerender/store.ts +185 -0
- package/src/prerender.ts +463 -0
- package/src/reverse.ts +330 -0
- package/src/root-error-boundary.tsx +41 -29
- package/src/route-content-wrapper.tsx +9 -11
- package/src/route-definition/dsl-helpers.ts +934 -0
- package/src/route-definition/helper-factories.ts +200 -0
- package/src/route-definition/helpers-types.ts +430 -0
- package/src/route-definition/index.ts +55 -0
- package/src/route-definition/redirect.ts +93 -0
- package/src/route-definition/route-function.ts +119 -0
- package/src/route-definition.ts +1 -1371
- package/src/route-map-builder.ts +241 -112
- package/src/route-name.ts +53 -0
- package/src/route-types.ts +70 -9
- package/src/router/content-negotiation.ts +116 -0
- package/src/router/debug-manifest.ts +72 -0
- package/src/router/error-handling.ts +9 -9
- package/src/router/find-match.ts +158 -0
- package/src/router/handler-context.ts +348 -82
- package/src/router/intercept-resolution.ts +395 -0
- package/src/router/lazy-includes.ts +234 -0
- package/src/router/loader-resolution.ts +215 -121
- package/src/router/logging.ts +248 -0
- package/src/router/manifest.ts +172 -43
- package/src/router/match-api.ts +620 -0
- package/src/router/match-context.ts +6 -4
- package/src/router/match-handlers.ts +440 -0
- package/src/router/match-middleware/background-revalidation.ts +80 -93
- package/src/router/match-middleware/cache-lookup.ts +382 -9
- package/src/router/match-middleware/cache-store.ts +51 -22
- package/src/router/match-middleware/intercept-resolution.ts +55 -17
- package/src/router/match-middleware/segment-resolution.ts +24 -6
- package/src/router/match-pipelines.ts +10 -45
- package/src/router/match-result.ts +34 -20
- package/src/router/metrics.ts +3 -3
- package/src/router/middleware-cookies.ts +55 -0
- package/src/router/middleware-types.ts +179 -0
- package/src/router/middleware.ts +239 -328
- package/src/router/pattern-matching.ts +302 -26
- package/src/router/prerender-match.ts +398 -0
- package/src/router/preview-match.ts +170 -0
- package/src/router/revalidation.ts +112 -33
- package/src/router/router-context.ts +40 -23
- package/src/router/router-interfaces.ts +439 -0
- package/src/router/router-options.ts +587 -0
- package/src/router/router-registry.ts +24 -0
- package/src/router/segment-resolution/fresh.ts +552 -0
- package/src/router/segment-resolution/helpers.ts +263 -0
- package/src/router/segment-resolution/loader-cache.ts +198 -0
- package/src/router/segment-resolution/revalidation.ts +1226 -0
- package/src/router/segment-resolution/static-store.ts +67 -0
- package/src/router/segment-resolution.ts +21 -0
- package/src/router/segment-wrappers.ts +289 -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 +221 -0
- package/src/router/types.ts +78 -4
- package/src/router.ts +672 -3566
- package/src/rsc/handler-context.ts +45 -0
- package/src/rsc/handler.ts +691 -757
- package/src/rsc/helpers.ts +140 -6
- package/src/rsc/index.ts +5 -5
- package/src/rsc/loader-fetch.ts +209 -0
- package/src/rsc/manifest-init.ts +86 -0
- package/src/rsc/nonce.ts +14 -0
- package/src/rsc/origin-guard.ts +141 -0
- package/src/rsc/progressive-enhancement.ts +366 -0
- package/src/rsc/response-error.ts +37 -0
- package/src/rsc/response-route-handler.ts +347 -0
- package/src/rsc/rsc-rendering.ts +250 -0
- package/src/rsc/runtime-warnings.ts +42 -0
- package/src/rsc/server-action.ts +344 -0
- package/src/rsc/types.ts +38 -14
- package/src/search-params.ts +227 -0
- package/src/segment-system.tsx +59 -61
- package/src/server/context.ts +217 -49
- package/src/server/cookie-store.ts +190 -0
- package/src/server/fetchable-loader-store.ts +37 -0
- package/src/server/handle-store.ts +98 -20
- package/src/server/loader-registry.ts +15 -56
- package/src/server/request-context.ts +406 -65
- package/src/server.ts +32 -133
- package/src/ssr/index.tsx +157 -26
- package/src/static-handler.ts +114 -0
- package/src/theme/ThemeProvider.tsx +21 -15
- package/src/theme/ThemeScript.tsx +5 -5
- package/src/theme/constants.ts +11 -4
- package/src/theme/index.ts +6 -7
- package/src/theme/theme-context.ts +5 -31
- package/src/theme/theme-script.ts +21 -18
- package/src/theme/types.ts +1 -1
- package/src/types/boundaries.ts +158 -0
- package/src/types/cache-types.ts +198 -0
- package/src/types/error-types.ts +192 -0
- package/src/types/global-namespace.ts +100 -0
- package/src/types/handler-context.ts +691 -0
- package/src/types/index.ts +88 -0
- package/src/types/loader-types.ts +183 -0
- package/src/types/route-config.ts +161 -0
- package/src/types/route-entry.ts +102 -0
- package/src/types/segments.ts +153 -0
- package/src/types.ts +1 -1561
- package/src/urls/include-helper.ts +197 -0
- package/src/urls/index.ts +53 -0
- package/src/urls/path-helper-types.ts +339 -0
- package/src/urls/path-helper.ts +329 -0
- package/src/urls/pattern-types.ts +95 -0
- package/src/urls/response-types.ts +106 -0
- package/src/urls/type-extraction.ts +372 -0
- package/src/urls/urls-function.ts +98 -0
- package/src/urls.ts +1 -726
- package/src/use-loader.tsx +85 -77
- package/src/vite/discovery/bundle-postprocess.ts +184 -0
- package/src/vite/discovery/discover-routers.ts +345 -0
- package/src/vite/discovery/prerender-collection.ts +385 -0
- package/src/vite/discovery/route-types-writer.ts +258 -0
- package/src/vite/discovery/self-gen-tracking.ts +47 -0
- package/src/vite/discovery/state.ts +110 -0
- package/src/vite/discovery/virtual-module-codegen.ts +203 -0
- package/src/vite/index.ts +10 -782
- package/src/vite/plugin-types.ts +131 -0
- package/src/vite/plugins/cjs-to-esm.ts +93 -0
- package/src/vite/plugins/client-ref-dedup.ts +115 -0
- package/src/vite/plugins/client-ref-hashing.ts +105 -0
- package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +72 -51
- package/src/vite/plugins/expose-id-utils.ts +287 -0
- package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
- package/src/vite/plugins/expose-ids/handler-transform.ts +179 -0
- package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
- package/src/vite/plugins/expose-ids/router-transform.ts +110 -0
- package/src/vite/plugins/expose-ids/types.ts +45 -0
- package/src/vite/plugins/expose-internal-ids.ts +569 -0
- package/src/vite/plugins/use-cache-transform.ts +323 -0
- package/src/vite/plugins/version-injector.ts +83 -0
- package/src/vite/plugins/version-plugin.ts +254 -0
- package/src/vite/plugins/virtual-entries.ts +123 -0
- package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
- package/src/vite/rango.ts +510 -0
- package/src/vite/router-discovery.ts +785 -0
- package/src/vite/utils/ast-handler-extract.ts +517 -0
- package/src/vite/utils/banner.ts +36 -0
- package/src/vite/utils/bundle-analysis.ts +137 -0
- package/src/vite/utils/manifest-utils.ts +70 -0
- package/src/vite/{package-resolution.ts → utils/package-resolution.ts} +25 -29
- package/src/vite/utils/prerender-utils.ts +189 -0
- package/src/vite/utils/shared-utils.ts +169 -0
- package/CLAUDE.md +0 -7
- package/src/__tests__/component-utils.test.ts +0 -76
- package/src/__tests__/route-definition.test.ts +0 -63
- package/src/__tests__/urls.test.tsx +0 -436
- package/src/browser/lru-cache.ts +0 -69
- package/src/browser/request-controller.ts +0 -164
- package/src/cache/__tests__/document-cache.test.ts +0 -522
- package/src/cache/__tests__/memory-segment-store.test.ts +0 -487
- package/src/cache/__tests__/memory-store.test.ts +0 -484
- package/src/cache/cf/__tests__/cf-cache-store.test.ts +0 -428
- package/src/cache/memory-store.ts +0 -253
- package/src/href.ts +0 -177
- package/src/route-utils.ts +0 -89
- package/src/router/__tests__/match-context.test.ts +0 -104
- package/src/router/__tests__/match-pipelines.test.ts +0 -537
- package/src/router/__tests__/match-result.test.ts +0 -566
- package/src/router/__tests__/on-error.test.ts +0 -935
- package/src/router/__tests__/pattern-matching.test.ts +0 -577
- package/src/router/middleware.test.ts +0 -1355
- package/src/rsc/__tests__/helpers.test.ts +0 -175
- package/src/server/__tests__/request-context.test.ts +0 -171
- package/src/ssr/__tests__/ssr-handler.test.tsx +0 -188
- package/src/theme/__tests__/theme.test.ts +0 -120
- package/src/vite/__tests__/expose-loader-id.test.ts +0 -117
- package/src/vite/expose-handle-id.ts +0 -209
- package/src/vite/expose-loader-id.ts +0 -357
- package/src/vite/expose-location-state-id.ts +0 -177
- /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
package/dist/router.d.ts
ADDED
|
@@ -0,0 +1,753 @@
|
|
|
1
|
+
import type { ComponentType } from "react";
|
|
2
|
+
import { type ReactNode } from "react";
|
|
3
|
+
import type { SegmentCacheStore } from "./cache/types.js";
|
|
4
|
+
import { type SerializedManifest } from "./debug.js";
|
|
5
|
+
import { type ReverseFunction, type PrefixRoutePatterns } from "./reverse.js";
|
|
6
|
+
import { type RouteHandlers } from "./route-definition.js";
|
|
7
|
+
import type { AllUseItems } from "./route-types.js";
|
|
8
|
+
import type { UrlPatterns } from "./urls.js";
|
|
9
|
+
import type { ErrorBoundaryHandler, ErrorInfo, HandlerContext, MatchResult, NotFoundBoundaryHandler, OnErrorCallback, RouteDefinition } from "./types";
|
|
10
|
+
import type { NonceProvider } from "./rsc/types.js";
|
|
11
|
+
import { type ExecutionContext } from "./server/request-context.js";
|
|
12
|
+
import type { SerializedSegmentData, SegmentHandleData } from "./cache/types.js";
|
|
13
|
+
import { type MiddlewareEntry, type MiddlewareFn } from "./router/middleware.js";
|
|
14
|
+
/**
|
|
15
|
+
* Props passed to the root layout component
|
|
16
|
+
*/
|
|
17
|
+
export interface RootLayoutProps {
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Router configuration options
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Brand marker for identifying router instances at build time.
|
|
25
|
+
* Used by the Vite plugin to auto-discover routers from module exports.
|
|
26
|
+
*/
|
|
27
|
+
export declare const RSC_ROUTER_BRAND: "__rsc_router__";
|
|
28
|
+
/**
|
|
29
|
+
* Global registry of all router instances created via createRouter().
|
|
30
|
+
* Each router is keyed by its id (auto-generated or user-provided).
|
|
31
|
+
* Used by the Vite plugin at build time to discover routers and extract
|
|
32
|
+
* manifests, prefix trees, and pre-render candidates.
|
|
33
|
+
*/
|
|
34
|
+
export declare const RouterRegistry: Map<string, RSCRouter<any, any>>;
|
|
35
|
+
export interface RSCRouterOptions<TEnv = any> {
|
|
36
|
+
/**
|
|
37
|
+
* Unique identifier for this router instance.
|
|
38
|
+
* Used to namespace static output files and route maps.
|
|
39
|
+
* Auto-generated if not provided.
|
|
40
|
+
*/
|
|
41
|
+
id?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Injected by the Vite transform at compile time.
|
|
44
|
+
* Hash of filename + line number for stable cross-environment ID.
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
$$id?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Enable performance metrics collection
|
|
50
|
+
* When enabled, metrics are output to console and available via Server-Timing header
|
|
51
|
+
*/
|
|
52
|
+
debugPerformance?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Allow the `?__debug_manifest` query parameter to return route manifest data as JSON.
|
|
55
|
+
* In development mode this is always enabled regardless of this setting.
|
|
56
|
+
* Defaults to true. Set to false to disable in production.
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
allowDebugManifest?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Document component that wraps the entire application.
|
|
62
|
+
*
|
|
63
|
+
* This component provides the HTML structure for your app and wraps
|
|
64
|
+
* both normal route content AND error states, preventing the app shell
|
|
65
|
+
* from unmounting during errors (avoids FOUC).
|
|
66
|
+
*
|
|
67
|
+
* Must be a client component ("use client") that accepts { children }.
|
|
68
|
+
*
|
|
69
|
+
* If not provided, a default document with basic HTML structure is used:
|
|
70
|
+
* `<html><head><meta charset/viewport></head><body>{children}</body></html>`
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* // components/Document.tsx
|
|
75
|
+
* "use client";
|
|
76
|
+
* export function Document({ children }: { children: ReactNode }) {
|
|
77
|
+
* return (
|
|
78
|
+
* <html lang="en">
|
|
79
|
+
* <head>
|
|
80
|
+
* <link rel="stylesheet" href="/styles.css" />
|
|
81
|
+
* </head>
|
|
82
|
+
* <body>
|
|
83
|
+
* <nav>...</nav>
|
|
84
|
+
* {children}
|
|
85
|
+
* </body>
|
|
86
|
+
* </html>
|
|
87
|
+
* );
|
|
88
|
+
* }
|
|
89
|
+
*
|
|
90
|
+
* // router.tsx
|
|
91
|
+
* const router = createRouter<AppEnv>({
|
|
92
|
+
* document: Document,
|
|
93
|
+
* });
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
document?: ComponentType<RootLayoutProps>;
|
|
97
|
+
/**
|
|
98
|
+
* Default error boundary fallback used when no error boundary is defined in the route tree
|
|
99
|
+
* If not provided, errors will propagate and crash the request
|
|
100
|
+
*/
|
|
101
|
+
defaultErrorBoundary?: ReactNode | ErrorBoundaryHandler;
|
|
102
|
+
/**
|
|
103
|
+
* Default not-found boundary fallback used when no notFoundBoundary is defined in the route tree
|
|
104
|
+
* If not provided, DataNotFoundError will be treated as a regular error
|
|
105
|
+
*/
|
|
106
|
+
defaultNotFoundBoundary?: ReactNode | NotFoundBoundaryHandler;
|
|
107
|
+
/**
|
|
108
|
+
* Component to render when no route matches the requested URL.
|
|
109
|
+
*
|
|
110
|
+
* This is rendered within your document/app shell with a 404 status code.
|
|
111
|
+
* Use this for a custom 404 page that maintains your app's look and feel.
|
|
112
|
+
*
|
|
113
|
+
* If not provided, a default "Page not found" component is rendered.
|
|
114
|
+
*
|
|
115
|
+
* Can be a static ReactNode or a function receiving the pathname.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* // Simple static component
|
|
120
|
+
* const router = createRouter<AppEnv>({
|
|
121
|
+
* document: Document,
|
|
122
|
+
* notFound: <NotFound404 />,
|
|
123
|
+
* });
|
|
124
|
+
*
|
|
125
|
+
* // Dynamic component with pathname
|
|
126
|
+
* const router = createRouter<AppEnv>({
|
|
127
|
+
* document: Document,
|
|
128
|
+
* notFound: ({ pathname }) => (
|
|
129
|
+
* <div>
|
|
130
|
+
* <h1>404 - Not Found</h1>
|
|
131
|
+
* <p>No page exists at {pathname}</p>
|
|
132
|
+
* <a href="/">Go home</a>
|
|
133
|
+
* </div>
|
|
134
|
+
* ),
|
|
135
|
+
* });
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
notFound?: ReactNode | ((props: {
|
|
139
|
+
pathname: string;
|
|
140
|
+
}) => ReactNode);
|
|
141
|
+
/**
|
|
142
|
+
* Callback invoked when an error occurs during request handling.
|
|
143
|
+
*
|
|
144
|
+
* This callback is for notification/logging purposes - it cannot modify
|
|
145
|
+
* the error handling flow. Use errorBoundary() in route definitions to
|
|
146
|
+
* customize error UI.
|
|
147
|
+
*
|
|
148
|
+
* The callback receives comprehensive context about the error including:
|
|
149
|
+
* - The error itself
|
|
150
|
+
* - Phase where it occurred (routing, middleware, loader, handler, etc.)
|
|
151
|
+
* - Request info (URL, method, params)
|
|
152
|
+
* - Route info (routeKey, segmentId)
|
|
153
|
+
* - Environment/bindings
|
|
154
|
+
* - Duration from request start
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```typescript
|
|
158
|
+
* const router = createRouter<AppEnv>({
|
|
159
|
+
* onError: (context) => {
|
|
160
|
+
* // Send to error tracking service
|
|
161
|
+
* Sentry.captureException(context.error, {
|
|
162
|
+
* tags: {
|
|
163
|
+
* phase: context.phase,
|
|
164
|
+
* route: context.routeKey,
|
|
165
|
+
* },
|
|
166
|
+
* extra: {
|
|
167
|
+
* url: context.url.toString(),
|
|
168
|
+
* params: context.params,
|
|
169
|
+
* duration: context.duration,
|
|
170
|
+
* },
|
|
171
|
+
* });
|
|
172
|
+
* },
|
|
173
|
+
* });
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
onError?: OnErrorCallback<TEnv>;
|
|
177
|
+
/**
|
|
178
|
+
* Cache store for segment caching.
|
|
179
|
+
*
|
|
180
|
+
* When provided, enables route-level caching via cache() boundaries.
|
|
181
|
+
* The store handles persistence (memory, KV, Redis, etc.).
|
|
182
|
+
*
|
|
183
|
+
* Can be a static config or a function receiving env for runtime bindings.
|
|
184
|
+
*
|
|
185
|
+
* @example Static config
|
|
186
|
+
* ```typescript
|
|
187
|
+
* import { MemorySegmentCacheStore } from "rsc-router/rsc";
|
|
188
|
+
*
|
|
189
|
+
* const router = createRouter({
|
|
190
|
+
* cache: {
|
|
191
|
+
* store: new MemorySegmentCacheStore({ defaults: { ttl: 60 } }),
|
|
192
|
+
* },
|
|
193
|
+
* });
|
|
194
|
+
* ```
|
|
195
|
+
*
|
|
196
|
+
* @example Dynamic config with env (e.g., Cloudflare Workers with ExecutionContext)
|
|
197
|
+
* ```typescript
|
|
198
|
+
* const router = createRouter<AppEnv>({
|
|
199
|
+
* cache: (env) => ({
|
|
200
|
+
* store: new CFCacheStore({
|
|
201
|
+
* defaults: { ttl: 60 },
|
|
202
|
+
* ctx: env.ctx, // ExecutionContext for non-blocking writes
|
|
203
|
+
* }),
|
|
204
|
+
* }),
|
|
205
|
+
* });
|
|
206
|
+
* ```
|
|
207
|
+
*/
|
|
208
|
+
cache?: {
|
|
209
|
+
store: SegmentCacheStore;
|
|
210
|
+
enabled?: boolean;
|
|
211
|
+
} | ((env: TEnv & {
|
|
212
|
+
ctx?: ExecutionContext;
|
|
213
|
+
}) => {
|
|
214
|
+
store: SegmentCacheStore;
|
|
215
|
+
enabled?: boolean;
|
|
216
|
+
});
|
|
217
|
+
/**
|
|
218
|
+
* Theme configuration for automatic theme management.
|
|
219
|
+
*
|
|
220
|
+
* When provided, enables:
|
|
221
|
+
* - ctx.theme and ctx.setTheme() in route handlers
|
|
222
|
+
* - useTheme() hook for client components
|
|
223
|
+
* - FOUC prevention via inline script in MetaTags
|
|
224
|
+
* - Automatic ThemeProvider wrapping in NavigationProvider
|
|
225
|
+
*
|
|
226
|
+
* @example
|
|
227
|
+
* ```typescript
|
|
228
|
+
* const router = createRouter<AppEnv>({
|
|
229
|
+
* theme: {
|
|
230
|
+
* defaultTheme: "system",
|
|
231
|
+
* themes: ["light", "dark"],
|
|
232
|
+
* }
|
|
233
|
+
* });
|
|
234
|
+
*
|
|
235
|
+
* // In route handler:
|
|
236
|
+
* route("settings", (ctx) => {
|
|
237
|
+
* const theme = ctx.theme; // "light" | "dark" | "system"
|
|
238
|
+
* ctx.setTheme("dark"); // Sets cookie
|
|
239
|
+
* return <SettingsPage />;
|
|
240
|
+
* });
|
|
241
|
+
*
|
|
242
|
+
* // In client component:
|
|
243
|
+
* import { useTheme } from "@rangojs/router/theme";
|
|
244
|
+
*
|
|
245
|
+
* function ThemeToggle() {
|
|
246
|
+
* const { theme, setTheme, themes } = useTheme();
|
|
247
|
+
* return <select value={theme} onChange={e => setTheme(e.target.value)}>
|
|
248
|
+
* {themes.map(t => <option key={t}>{t}</option>)}
|
|
249
|
+
* </select>;
|
|
250
|
+
* }
|
|
251
|
+
* ```
|
|
252
|
+
*
|
|
253
|
+
* Use `theme: true` to enable with all defaults.
|
|
254
|
+
*/
|
|
255
|
+
theme?: import("./theme/types.js").ThemeConfig | true;
|
|
256
|
+
/**
|
|
257
|
+
* URL patterns to register with the router.
|
|
258
|
+
*
|
|
259
|
+
* Alternative to calling `.routes()` method - allows passing patterns
|
|
260
|
+
* directly in the config for a more concise setup.
|
|
261
|
+
*
|
|
262
|
+
* @example
|
|
263
|
+
* ```typescript
|
|
264
|
+
* import { urls } from "@rangojs/router/server";
|
|
265
|
+
*
|
|
266
|
+
* const urlpatterns = urls(({ path, layout }) => [
|
|
267
|
+
* path("/", HomePage, { name: "home" }),
|
|
268
|
+
* path("/about", AboutPage, { name: "about" }),
|
|
269
|
+
* ]);
|
|
270
|
+
*
|
|
271
|
+
* const router = createRouter<AppEnv>({
|
|
272
|
+
* document: Document,
|
|
273
|
+
* urls: urlpatterns,
|
|
274
|
+
* });
|
|
275
|
+
* ```
|
|
276
|
+
*/
|
|
277
|
+
urls?: UrlPatterns<TEnv, any>;
|
|
278
|
+
/**
|
|
279
|
+
* Injected by the Vite transform at compile time.
|
|
280
|
+
* Static import of NamedRoutes from the generated named-routes file.
|
|
281
|
+
* Provides O(1) reverse() fallback when lazy includes haven't resolved.
|
|
282
|
+
* @internal
|
|
283
|
+
*/
|
|
284
|
+
$$routeNames?: Record<string, string>;
|
|
285
|
+
/**
|
|
286
|
+
* Nonce provider for Content Security Policy (CSP).
|
|
287
|
+
*
|
|
288
|
+
* Can be:
|
|
289
|
+
* - A function that returns a nonce string
|
|
290
|
+
* - A function that returns `true` to auto-generate a nonce
|
|
291
|
+
* - Undefined to disable nonce (default)
|
|
292
|
+
*
|
|
293
|
+
* The nonce will be applied to inline scripts injected by the RSC payload.
|
|
294
|
+
* It's also available to middleware via `ctx.get('nonce')`.
|
|
295
|
+
*
|
|
296
|
+
* @example Auto-generate nonce
|
|
297
|
+
* ```tsx
|
|
298
|
+
* createRouter({
|
|
299
|
+
* nonce: () => true,
|
|
300
|
+
* });
|
|
301
|
+
* ```
|
|
302
|
+
*
|
|
303
|
+
* @example Custom nonce from request context
|
|
304
|
+
* ```tsx
|
|
305
|
+
* createRouter({
|
|
306
|
+
* nonce: (request, env) => env.nonce,
|
|
307
|
+
* });
|
|
308
|
+
* ```
|
|
309
|
+
*/
|
|
310
|
+
nonce?: NonceProvider<TEnv>;
|
|
311
|
+
/**
|
|
312
|
+
* RSC version string included in metadata.
|
|
313
|
+
* The browser sends this back on partial requests to detect version mismatches.
|
|
314
|
+
*
|
|
315
|
+
* Defaults to the auto-generated VERSION from `@rangojs/router:version` virtual module.
|
|
316
|
+
* Only set this if you need a custom versioning strategy.
|
|
317
|
+
*
|
|
318
|
+
* @default VERSION from @rangojs/router:version
|
|
319
|
+
*/
|
|
320
|
+
version?: string;
|
|
321
|
+
/**
|
|
322
|
+
* Enable connection warmup to keep TCP+TLS alive after idle periods.
|
|
323
|
+
*
|
|
324
|
+
* When enabled, the client sends a HEAD request after the user returns
|
|
325
|
+
* from an idle period (60s+), prewarming the TLS connection before
|
|
326
|
+
* the next navigation.
|
|
327
|
+
*
|
|
328
|
+
* @default true
|
|
329
|
+
*/
|
|
330
|
+
warmup?: boolean;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Merge route patterns with response types into a single route map.
|
|
334
|
+
* Routes with response types get { path, response } objects; others stay as strings.
|
|
335
|
+
* Handles both plain string routes and { path, search } object routes.
|
|
336
|
+
*/
|
|
337
|
+
type MergeRoutesWithResponses<TRoutes extends Record<string, unknown>, TResponses> = {
|
|
338
|
+
[K in keyof TRoutes]: K extends keyof NonNullable<TResponses> ? unknown extends NonNullable<TResponses>[K] ? TRoutes[K] : TRoutes[K] extends {
|
|
339
|
+
readonly path: infer P extends string;
|
|
340
|
+
} ? TRoutes[K] & {
|
|
341
|
+
readonly response: NonNullable<TResponses>[K];
|
|
342
|
+
} : {
|
|
343
|
+
readonly path: TRoutes[K] & string;
|
|
344
|
+
readonly response: NonNullable<TResponses>[K];
|
|
345
|
+
} : TRoutes[K];
|
|
346
|
+
};
|
|
347
|
+
/**
|
|
348
|
+
* Extract the URL pattern from a route entry (string or { path, response } object)
|
|
349
|
+
*/
|
|
350
|
+
type PatternOfEntry<V> = V extends string ? V : V extends {
|
|
351
|
+
readonly path: infer P extends string;
|
|
352
|
+
} ? P : never;
|
|
353
|
+
/**
|
|
354
|
+
* Type-level detection of conflicting route keys.
|
|
355
|
+
* Extracts keys that exist in both TExisting and TNew but with different URL patterns.
|
|
356
|
+
* Returns `never` if no conflicts exist.
|
|
357
|
+
* Compares patterns (not full entries) to handle both string and { path, response } values.
|
|
358
|
+
*
|
|
359
|
+
* @example
|
|
360
|
+
* ```typescript
|
|
361
|
+
* ConflictingKeys<{ a: "/a" }, { a: "/b" }> // "a" (conflict - same key, different URLs)
|
|
362
|
+
* ConflictingKeys<{ a: "/a" }, { a: "/a" }> // never (no conflict - same key and URL)
|
|
363
|
+
* ConflictingKeys<{ a: "/a" }, { b: "/b" }> // never (no conflict - different keys)
|
|
364
|
+
* ```
|
|
365
|
+
*/
|
|
366
|
+
type ConflictingKeys<TExisting extends Record<string, unknown>, TNew extends Record<string, unknown>> = {
|
|
367
|
+
[K in keyof TExisting & keyof TNew]: PatternOfEntry<TExisting[K]> extends PatternOfEntry<TNew[K]> ? PatternOfEntry<TNew[K]> extends PatternOfEntry<TExisting[K]> ? never : K : K;
|
|
368
|
+
}[keyof TExisting & keyof TNew];
|
|
369
|
+
/**
|
|
370
|
+
* Error type returned when route keys conflict.
|
|
371
|
+
* Methods require an impossible `never` parameter so TypeScript errors at the call site.
|
|
372
|
+
*/
|
|
373
|
+
type RouteConflictError<TConflicts extends string> = {
|
|
374
|
+
__error: `Route key conflict! Key "${TConflicts}" already exists with a different URL pattern.`;
|
|
375
|
+
hint: "Route keys must be globally unique. Use prefixed names like 'blog.index' instead of 'index'.";
|
|
376
|
+
conflictingKeys: TConflicts;
|
|
377
|
+
routes: (__conflict: `Fix route key conflict: "${TConflicts}" is already defined with a different URL pattern`) => never;
|
|
378
|
+
map: (__conflict: `Fix route key conflict: "${TConflicts}" is already defined with a different URL pattern`) => never;
|
|
379
|
+
};
|
|
380
|
+
/**
|
|
381
|
+
* Simplified route helpers for inline route definitions.
|
|
382
|
+
* Uses TRoutes (Record<string, string>) instead of RouteDefinition.
|
|
383
|
+
*
|
|
384
|
+
* Note: Some helpers use `any` for context types as a trade-off for simpler usage.
|
|
385
|
+
* The main type safety is in the `route` helper which enforces valid route names.
|
|
386
|
+
* For full type safety, use the standard map() API with separate handler files.
|
|
387
|
+
*/
|
|
388
|
+
type InlineRouteHelpers<TRoutes extends Record<string, string>, TEnv> = {
|
|
389
|
+
/**
|
|
390
|
+
* Define a route handler for a specific route pattern
|
|
391
|
+
*/
|
|
392
|
+
route: <K extends keyof TRoutes & string>(name: K, handler: ((ctx: HandlerContext<{}, TEnv>) => ReactNode | Promise<ReactNode>) | ReactNode) => AllUseItems;
|
|
393
|
+
/**
|
|
394
|
+
* Define a layout that wraps child routes
|
|
395
|
+
*/
|
|
396
|
+
layout: (component: ReactNode | ((ctx: HandlerContext<any, TEnv>) => ReactNode | Promise<ReactNode>), use?: () => AllUseItems[]) => AllUseItems;
|
|
397
|
+
/**
|
|
398
|
+
* Define parallel routes
|
|
399
|
+
*/
|
|
400
|
+
parallel: (slots: Record<`@${string}`, ReactNode | ((ctx: HandlerContext<any, TEnv>) => ReactNode | Promise<ReactNode>)>, use?: () => AllUseItems[]) => AllUseItems;
|
|
401
|
+
/**
|
|
402
|
+
* Define route middleware
|
|
403
|
+
*/
|
|
404
|
+
middleware: (fn: (ctx: any, next: () => Promise<void>) => Promise<void>) => AllUseItems;
|
|
405
|
+
/**
|
|
406
|
+
* Define revalidation handlers
|
|
407
|
+
*/
|
|
408
|
+
revalidate: (fn: (ctx: any) => boolean | Promise<boolean>) => AllUseItems;
|
|
409
|
+
/**
|
|
410
|
+
* Define data loaders
|
|
411
|
+
*/
|
|
412
|
+
loader: (loader: any, use?: () => AllUseItems[]) => AllUseItems;
|
|
413
|
+
/**
|
|
414
|
+
* Define loading states
|
|
415
|
+
*/
|
|
416
|
+
loading: (component: ReactNode) => AllUseItems;
|
|
417
|
+
/**
|
|
418
|
+
* Define error boundaries
|
|
419
|
+
*/
|
|
420
|
+
errorBoundary: (handler: ReactNode | ((props: {
|
|
421
|
+
error: Error;
|
|
422
|
+
}) => ReactNode)) => AllUseItems;
|
|
423
|
+
/**
|
|
424
|
+
* Define not found boundaries
|
|
425
|
+
*/
|
|
426
|
+
notFoundBoundary: (handler: ReactNode | ((props: {
|
|
427
|
+
pathname: string;
|
|
428
|
+
}) => ReactNode)) => AllUseItems;
|
|
429
|
+
/**
|
|
430
|
+
* Define intercept routes
|
|
431
|
+
*/
|
|
432
|
+
intercept: (name: string, handler: ReactNode | ((ctx: HandlerContext<any, TEnv>) => ReactNode | Promise<ReactNode>), use?: () => AllUseItems[]) => AllUseItems;
|
|
433
|
+
/**
|
|
434
|
+
* Define when conditions for intercepts
|
|
435
|
+
*/
|
|
436
|
+
when: (condition: (ctx: any) => boolean | Promise<boolean>) => AllUseItems;
|
|
437
|
+
/**
|
|
438
|
+
* Define cache configuration
|
|
439
|
+
*/
|
|
440
|
+
cache: (config: {
|
|
441
|
+
ttl?: number;
|
|
442
|
+
swr?: number;
|
|
443
|
+
} | false, use?: () => AllUseItems[]) => AllUseItems;
|
|
444
|
+
};
|
|
445
|
+
/**
|
|
446
|
+
* Router builder for chaining .use() and .map()
|
|
447
|
+
* TRoutes accumulates all registered route types through the chain
|
|
448
|
+
* TLocalRoutes contains the routes for the current .routes() call (for inline handler typing)
|
|
449
|
+
*/
|
|
450
|
+
interface RouteBuilder<T extends RouteDefinition, TEnv, TRoutes extends Record<string, unknown>, TLocalRoutes extends Record<string, string> = Record<string, string>> {
|
|
451
|
+
/**
|
|
452
|
+
* Add middleware scoped to this mount
|
|
453
|
+
* Called between .routes() and .map()
|
|
454
|
+
*
|
|
455
|
+
* @example
|
|
456
|
+
* ```typescript
|
|
457
|
+
* .routes("/admin", adminRoutes)
|
|
458
|
+
* .use(authMiddleware) // All of /admin/*
|
|
459
|
+
* .use("/danger/*", superAuth) // Only /admin/danger/*
|
|
460
|
+
* .map(() => import("./admin"))
|
|
461
|
+
* ```
|
|
462
|
+
*/
|
|
463
|
+
use(patternOrMiddleware: string | MiddlewareFn<TEnv>, middleware?: MiddlewareFn<TEnv>): RouteBuilder<T, TEnv, TRoutes, TLocalRoutes>;
|
|
464
|
+
/**
|
|
465
|
+
* Map routes to handlers
|
|
466
|
+
*
|
|
467
|
+
* Supports two patterns:
|
|
468
|
+
*
|
|
469
|
+
* 1. Lazy loading (code-split):
|
|
470
|
+
* ```typescript
|
|
471
|
+
* .routes(homeRoutes)
|
|
472
|
+
* .map(() => import("./handlers/home"))
|
|
473
|
+
* ```
|
|
474
|
+
*
|
|
475
|
+
* 2. Inline definition:
|
|
476
|
+
* ```typescript
|
|
477
|
+
* .routes({ index: "/", about: "/about" })
|
|
478
|
+
* .map(({ route }) => [
|
|
479
|
+
* route("index", () => <HomePage />),
|
|
480
|
+
* route("about", () => <AboutPage />),
|
|
481
|
+
* ])
|
|
482
|
+
* ```
|
|
483
|
+
*/
|
|
484
|
+
map<H extends (helpers: InlineRouteHelpers<TLocalRoutes, TEnv>) => Array<AllUseItems>>(handler: H): RSCRouter<TEnv, TRoutes>;
|
|
485
|
+
map(handler: () => Array<AllUseItems> | Promise<{
|
|
486
|
+
default: RouteHandlers<TLocalRoutes>;
|
|
487
|
+
}> | Promise<RouteHandlers<TLocalRoutes>>): RSCRouter<TEnv, TRoutes>;
|
|
488
|
+
/**
|
|
489
|
+
* Accumulated route map for typeof extraction
|
|
490
|
+
* Used for module augmentation: `type AppRoutes = typeof _router.routeMap`
|
|
491
|
+
*/
|
|
492
|
+
readonly routeMap: TRoutes;
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* RSC Router interface
|
|
496
|
+
* TRoutes accumulates all registered route types through the builder chain
|
|
497
|
+
*/
|
|
498
|
+
export interface RSCRouter<TEnv = any, TRoutes extends Record<string, unknown> = Record<string, string>> {
|
|
499
|
+
/**
|
|
500
|
+
* Brand marker for build-time discovery.
|
|
501
|
+
* The Vite plugin uses this to identify router instances in module exports.
|
|
502
|
+
*/
|
|
503
|
+
readonly __brand: typeof RSC_ROUTER_BRAND;
|
|
504
|
+
/**
|
|
505
|
+
* Unique identifier for this router instance.
|
|
506
|
+
* Used to namespace static output and isolate route maps between routers.
|
|
507
|
+
*/
|
|
508
|
+
readonly id: string;
|
|
509
|
+
/**
|
|
510
|
+
* Register routes with a prefix
|
|
511
|
+
* Route keys stay unchanged, only URL patterns get the prefix applied.
|
|
512
|
+
* This enables composable route modules that work regardless of mount point.
|
|
513
|
+
*
|
|
514
|
+
* @throws Compile-time error if route keys conflict with previously registered routes
|
|
515
|
+
*/
|
|
516
|
+
routes<const TPrefix extends string, const T extends Record<string, string>>(prefix: TPrefix, routes: T): ConflictingKeys<TRoutes, PrefixRoutePatterns<T, TPrefix>> extends never ? RouteBuilder<RouteDefinition, TEnv, TRoutes & PrefixRoutePatterns<T, TPrefix>, T> : RouteConflictError<ConflictingKeys<TRoutes, PrefixRoutePatterns<T, TPrefix>> & string>;
|
|
517
|
+
/**
|
|
518
|
+
* Register routes without a prefix
|
|
519
|
+
* Route types are accumulated through the chain
|
|
520
|
+
*
|
|
521
|
+
* @throws Compile-time error if route keys conflict with previously registered routes
|
|
522
|
+
*/
|
|
523
|
+
routes<const T extends Record<string, string>>(routes: T): ConflictingKeys<TRoutes, T> extends never ? RouteBuilder<RouteDefinition, TEnv, TRoutes & T, T> : RouteConflictError<ConflictingKeys<TRoutes, T> & string>;
|
|
524
|
+
/**
|
|
525
|
+
* Register routes using Django-style URL patterns
|
|
526
|
+
* This is the new API for @rangojs/router - call once with urls() result
|
|
527
|
+
*
|
|
528
|
+
* @example
|
|
529
|
+
* ```typescript
|
|
530
|
+
* createRouter({})
|
|
531
|
+
* .routes(urlpatterns) // Single call with urls() result
|
|
532
|
+
* ```
|
|
533
|
+
*/
|
|
534
|
+
routes<T extends UrlPatterns<TEnv, any>>(patterns: T): RSCRouter<TEnv, TRoutes & (NonNullable<T["_routes"]> extends Record<string, unknown> ? MergeRoutesWithResponses<NonNullable<T["_routes"]>, T["_responses"]> : Record<string, string>)>;
|
|
535
|
+
/**
|
|
536
|
+
* Add global middleware that runs on all routes
|
|
537
|
+
* Position matters: middleware before any .routes() is global
|
|
538
|
+
*
|
|
539
|
+
* @example
|
|
540
|
+
* ```typescript
|
|
541
|
+
* createRouter({ document: RootLayout })
|
|
542
|
+
* .use(loggerMiddleware) // All routes
|
|
543
|
+
* .use("/api/*", rateLimiter) // Pattern match
|
|
544
|
+
* .routes(homeRoutes)
|
|
545
|
+
* .map(() => import("./home"))
|
|
546
|
+
* ```
|
|
547
|
+
*/
|
|
548
|
+
use(patternOrMiddleware: string | MiddlewareFn<TEnv>, middleware?: MiddlewareFn<TEnv>): RSCRouter<TEnv, TRoutes>;
|
|
549
|
+
/**
|
|
550
|
+
* Type-safe URL builder for registered routes
|
|
551
|
+
* Types are inferred from the accumulated route registrations
|
|
552
|
+
* Route keys stay unchanged regardless of mount prefix.
|
|
553
|
+
*
|
|
554
|
+
* @example
|
|
555
|
+
* ```typescript
|
|
556
|
+
* // Given: .routes("/shop", { cart: "/cart", detail: "/product/:slug" })
|
|
557
|
+
* router.reverse("cart"); // "/shop/cart"
|
|
558
|
+
* router.reverse("detail", { slug: "widget" }); // "/shop/product/widget"
|
|
559
|
+
* ```
|
|
560
|
+
*/
|
|
561
|
+
reverse: ReverseFunction<TRoutes>;
|
|
562
|
+
/**
|
|
563
|
+
* Accumulated route map for typeof extraction
|
|
564
|
+
* Used for module augmentation: `type AppRoutes = typeof _router.routeMap`
|
|
565
|
+
*
|
|
566
|
+
* @example
|
|
567
|
+
* ```typescript
|
|
568
|
+
* const _router = createRouter<AppEnv>()
|
|
569
|
+
* .routes(homeRoutes).map(() => import('./home'))
|
|
570
|
+
* .routes('/shop', shopRoutes).map(() => import('./shop'));
|
|
571
|
+
*
|
|
572
|
+
* type AppRoutes = typeof _router.routeMap;
|
|
573
|
+
*
|
|
574
|
+
* declare global {
|
|
575
|
+
* namespace RSCRouter {
|
|
576
|
+
* interface RegisteredRoutes extends AppRoutes {}
|
|
577
|
+
* }
|
|
578
|
+
* }
|
|
579
|
+
* ```
|
|
580
|
+
*/
|
|
581
|
+
readonly routeMap: TRoutes;
|
|
582
|
+
/**
|
|
583
|
+
* Root layout component that wraps the entire application
|
|
584
|
+
* Access this to pass to renderSegments
|
|
585
|
+
*/
|
|
586
|
+
readonly rootLayout?: ComponentType<RootLayoutProps>;
|
|
587
|
+
/**
|
|
588
|
+
* Error callback for monitoring/alerting
|
|
589
|
+
* Called when errors occur in loaders, actions, or routes
|
|
590
|
+
*/
|
|
591
|
+
readonly onError?: RSCRouterOptions<TEnv>["onError"];
|
|
592
|
+
/**
|
|
593
|
+
* Cache configuration (for internal use by RSC handler)
|
|
594
|
+
*/
|
|
595
|
+
readonly cache?: RSCRouterOptions<TEnv>["cache"];
|
|
596
|
+
/**
|
|
597
|
+
* Not found component to render when no route matches (for internal use by RSC handler)
|
|
598
|
+
*/
|
|
599
|
+
readonly notFound?: RSCRouterOptions<TEnv>["notFound"];
|
|
600
|
+
/**
|
|
601
|
+
* Resolved theme configuration (null if theme not enabled)
|
|
602
|
+
* Used by NavigationProvider to include ThemeProvider and by MetaTags to render theme script
|
|
603
|
+
*/
|
|
604
|
+
readonly themeConfig: import("./theme/types.js").ResolvedThemeConfig | null;
|
|
605
|
+
/**
|
|
606
|
+
* Whether connection warmup is enabled.
|
|
607
|
+
* When true, the client sends HEAD /?_rsc_warmup after idle periods
|
|
608
|
+
* and the server responds with 204 No Content.
|
|
609
|
+
*/
|
|
610
|
+
readonly warmupEnabled: boolean;
|
|
611
|
+
/**
|
|
612
|
+
* Whether ?__debug_manifest is allowed in production.
|
|
613
|
+
* Always enabled in development.
|
|
614
|
+
* @internal
|
|
615
|
+
*/
|
|
616
|
+
readonly allowDebugManifest: boolean;
|
|
617
|
+
/**
|
|
618
|
+
* App-level middleware entries (for internal use by RSC handler)
|
|
619
|
+
* These wrap the entire request/response cycle
|
|
620
|
+
*/
|
|
621
|
+
readonly middleware: MiddlewareEntry<TEnv>[];
|
|
622
|
+
/**
|
|
623
|
+
* Nonce provider for CSP (for internal use by createHandler)
|
|
624
|
+
*/
|
|
625
|
+
readonly nonce?: NonceProvider<TEnv>;
|
|
626
|
+
/**
|
|
627
|
+
* RSC version string (for internal use by createHandler)
|
|
628
|
+
*/
|
|
629
|
+
readonly version?: string;
|
|
630
|
+
/**
|
|
631
|
+
* URL patterns reference for build-time manifest generation
|
|
632
|
+
* @internal
|
|
633
|
+
*/
|
|
634
|
+
readonly urlpatterns?: UrlPatterns<TEnv, any>;
|
|
635
|
+
/**
|
|
636
|
+
* Source file path where createRouter() was called.
|
|
637
|
+
* Set via Error.stack parsing at construction time.
|
|
638
|
+
* Used by the Vite plugin to write per-router named-routes.gen.ts files.
|
|
639
|
+
* @internal
|
|
640
|
+
*/
|
|
641
|
+
readonly __sourceFile?: string;
|
|
642
|
+
match(request: Request, context: TEnv): Promise<MatchResult>;
|
|
643
|
+
/**
|
|
644
|
+
* Build-time pre-render match. Resolves segments with a BuildContext
|
|
645
|
+
* (no request/env/headers/cookies), skipping middleware and loaders.
|
|
646
|
+
* Used by the Vite plugin to collect pre-render data at build time.
|
|
647
|
+
* @internal
|
|
648
|
+
*/
|
|
649
|
+
matchForPrerender(pathname: string, params: Record<string, string>): Promise<{
|
|
650
|
+
segments: SerializedSegmentData[];
|
|
651
|
+
handles: Record<string, SegmentHandleData>;
|
|
652
|
+
routeName: string;
|
|
653
|
+
params: Record<string, string>;
|
|
654
|
+
} | null>;
|
|
655
|
+
/**
|
|
656
|
+
* Preview match - returns route middleware without segment resolution.
|
|
657
|
+
* Also returns responseType and handler for response routes (non-RSC short-circuit).
|
|
658
|
+
*/
|
|
659
|
+
previewMatch(request: Request, context: TEnv): Promise<{
|
|
660
|
+
routeMiddleware?: Array<{
|
|
661
|
+
handler: import("./router/middleware.js").MiddlewareFn;
|
|
662
|
+
params: Record<string, string>;
|
|
663
|
+
}>;
|
|
664
|
+
responseType?: string;
|
|
665
|
+
handler?: Function;
|
|
666
|
+
params?: Record<string, string>;
|
|
667
|
+
negotiated?: boolean;
|
|
668
|
+
} | null>;
|
|
669
|
+
matchPartial(request: Request, context: TEnv, actionContext?: {
|
|
670
|
+
actionId?: string;
|
|
671
|
+
actionUrl?: URL;
|
|
672
|
+
actionResult?: any;
|
|
673
|
+
formData?: FormData;
|
|
674
|
+
}): Promise<MatchResult | null>;
|
|
675
|
+
/**
|
|
676
|
+
* Match an error to the nearest error boundary and return error segments
|
|
677
|
+
*
|
|
678
|
+
* Used when an action or other operation fails and we need to render
|
|
679
|
+
* the error boundary UI. Finds the nearest errorBoundary in the route tree
|
|
680
|
+
* for the current URL and renders it with the error info.
|
|
681
|
+
*
|
|
682
|
+
* @param request - The current request (used to match the route)
|
|
683
|
+
* @param context - Environment context
|
|
684
|
+
* @param error - The error that occurred
|
|
685
|
+
* @param segmentType - Type of segment where error occurred (default: "route")
|
|
686
|
+
* @returns MatchResult with error segment, or null if no error boundary found
|
|
687
|
+
*/
|
|
688
|
+
matchError(request: Request, context: TEnv, error: unknown, segmentType?: ErrorInfo["segmentType"]): Promise<MatchResult | null>;
|
|
689
|
+
/**
|
|
690
|
+
* @internal
|
|
691
|
+
* Debug utility to serialize the manifest for inspection
|
|
692
|
+
* Returns a JSON-friendly representation of all routes and layouts
|
|
693
|
+
*/
|
|
694
|
+
debugManifest(): Promise<SerializedManifest>;
|
|
695
|
+
/**
|
|
696
|
+
* Handle an RSC request.
|
|
697
|
+
*
|
|
698
|
+
* Uses the router's configuration (nonce, version, cache) automatically.
|
|
699
|
+
* The handler is lazily created on first call.
|
|
700
|
+
*
|
|
701
|
+
* @example Cloudflare Workers
|
|
702
|
+
* ```tsx
|
|
703
|
+
* import { router } from "./router";
|
|
704
|
+
*
|
|
705
|
+
* export default { fetch: router.fetch };
|
|
706
|
+
* ```
|
|
707
|
+
*
|
|
708
|
+
* @example Direct export
|
|
709
|
+
* ```tsx
|
|
710
|
+
* const router = createRouter({
|
|
711
|
+
* document: Document,
|
|
712
|
+
* urls: urlpatterns,
|
|
713
|
+
* nonce: () => true,
|
|
714
|
+
* });
|
|
715
|
+
*
|
|
716
|
+
* export const fetch = router.fetch;
|
|
717
|
+
* ```
|
|
718
|
+
*/
|
|
719
|
+
fetch(request: Request, env: TEnv & {
|
|
720
|
+
ctx?: ExecutionContext;
|
|
721
|
+
}): Promise<Response>;
|
|
722
|
+
}
|
|
723
|
+
/**
|
|
724
|
+
* Create an RSC router with generic context type
|
|
725
|
+
* Route types are accumulated automatically through the builder chain
|
|
726
|
+
*
|
|
727
|
+
* @example
|
|
728
|
+
* ```typescript
|
|
729
|
+
* interface AppContext {
|
|
730
|
+
* db: Database;
|
|
731
|
+
* user?: User;
|
|
732
|
+
* }
|
|
733
|
+
*
|
|
734
|
+
* const router = createRouter<AppContext>({
|
|
735
|
+
* debugPerformance: true // Enable metrics
|
|
736
|
+
* });
|
|
737
|
+
*
|
|
738
|
+
* // Route types accumulate through the chain - no module augmentation needed!
|
|
739
|
+
* // Keys stay unchanged, only URL patterns get the prefix
|
|
740
|
+
* router
|
|
741
|
+
* .routes(homeRoutes) // accumulates homeRoutes
|
|
742
|
+
* .map(() => import('./home'))
|
|
743
|
+
* .routes('/shop', shopRoutes) // accumulates shopRoutes with prefixed URLs
|
|
744
|
+
* .map(() => import('./shop'));
|
|
745
|
+
*
|
|
746
|
+
* // router.reverse now has type-safe autocomplete for all registered routes
|
|
747
|
+
* // Given shopRoutes = { cart: "/cart" }, reverse uses original key:
|
|
748
|
+
* router.reverse("cart"); // "/shop/cart"
|
|
749
|
+
* ```
|
|
750
|
+
*/
|
|
751
|
+
export declare function createRouter<TEnv = any>(options?: RSCRouterOptions<TEnv>): RSCRouter<TEnv, {}>;
|
|
752
|
+
export {};
|
|
753
|
+
//# sourceMappingURL=router.d.ts.map
|