@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
|
@@ -47,6 +47,7 @@ import type {
|
|
|
47
47
|
} from "./response-types.js";
|
|
48
48
|
import type {
|
|
49
49
|
UnnamedRoute,
|
|
50
|
+
LocalOnlyInclude,
|
|
50
51
|
PathOptions,
|
|
51
52
|
UrlPatterns,
|
|
52
53
|
IncludeOptions,
|
|
@@ -149,7 +150,7 @@ export type TextResponsePathFn<TEnv> = <
|
|
|
149
150
|
export type IncludeFn<TEnv> = <
|
|
150
151
|
TRoutes extends Record<string, any>,
|
|
151
152
|
const TUrlPrefix extends string,
|
|
152
|
-
const TNamePrefix extends string =
|
|
153
|
+
const TNamePrefix extends string = LocalOnlyInclude,
|
|
153
154
|
TResponses extends Record<string, unknown> = Record<string, unknown>,
|
|
154
155
|
>(
|
|
155
156
|
prefix: TUrlPrefix,
|
|
@@ -205,14 +206,24 @@ export type PathHelpers<TEnv> = {
|
|
|
205
206
|
};
|
|
206
207
|
|
|
207
208
|
/**
|
|
208
|
-
* Include nested URL patterns
|
|
209
|
+
* Include nested URL patterns under a URL prefix.
|
|
209
210
|
*
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
* include("/blog", blogPatterns)
|
|
211
|
+
* The `name` option controls how child route names appear in the
|
|
212
|
+
* global route map and generated types:
|
|
213
213
|
*
|
|
214
|
-
*
|
|
214
|
+
* ```typescript
|
|
215
|
+
* // Named — children become "blog.index", "blog.post", etc.
|
|
216
|
+
* // Visible in generated types and globally reversible.
|
|
215
217
|
* include("/blog", blogPatterns, { name: "blog" })
|
|
218
|
+
*
|
|
219
|
+
* // Flattened — children merge into the parent namespace as-is.
|
|
220
|
+
* // Equivalent to defining those routes inline at the include site.
|
|
221
|
+
* include("/blog", blogPatterns, { name: "" })
|
|
222
|
+
*
|
|
223
|
+
* // Local-only (default) — children are scoped privately.
|
|
224
|
+
* // Hidden from generated types and global reverse resolution.
|
|
225
|
+
* // Only dot-local reverse (reverse(".child")) works inside.
|
|
226
|
+
* include("/blog", blogPatterns)
|
|
216
227
|
* ```
|
|
217
228
|
*/
|
|
218
229
|
include: IncludeFn<TEnv>;
|
|
@@ -234,12 +245,19 @@ export type PathHelpers<TEnv> = {
|
|
|
234
245
|
* Define an intercepting route for soft navigation
|
|
235
246
|
* Note: routeName must match a named path() in this urlpatterns
|
|
236
247
|
*/
|
|
237
|
-
intercept:
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
248
|
+
intercept: keyof RSCRouter.GeneratedRouteMap extends never
|
|
249
|
+
? (
|
|
250
|
+
slotName: `@${string}`,
|
|
251
|
+
routeName: string,
|
|
252
|
+
handler: ReactNode | Handler<any, any, TEnv>,
|
|
253
|
+
use?: () => InterceptUseItem[],
|
|
254
|
+
) => InterceptItem
|
|
255
|
+
: (
|
|
256
|
+
slotName: `@${string}`,
|
|
257
|
+
routeName: (keyof RSCRouter.GeneratedRouteMap & string) | `.${string}`,
|
|
258
|
+
handler: ReactNode | Handler<any, any, TEnv>,
|
|
259
|
+
use?: () => InterceptUseItem[],
|
|
260
|
+
) => InterceptItem;
|
|
243
261
|
|
|
244
262
|
/**
|
|
245
263
|
* Attach middleware to the current route/layout
|
package/src/urls/path-helper.ts
CHANGED
|
@@ -6,8 +6,14 @@ import type {
|
|
|
6
6
|
RouteUseItem,
|
|
7
7
|
UseItems,
|
|
8
8
|
} from "../route-types.js";
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
getContext,
|
|
11
|
+
getUrlPrefix,
|
|
12
|
+
getNamePrefix,
|
|
13
|
+
getRootScoped,
|
|
14
|
+
} from "../server/context";
|
|
10
15
|
import { invariant } from "../errors";
|
|
16
|
+
import { validateUserRouteName } from "../route-name.js";
|
|
11
17
|
import {
|
|
12
18
|
isPrerenderHandler,
|
|
13
19
|
type PrerenderHandlerDefinition,
|
|
@@ -16,7 +22,10 @@ import {
|
|
|
16
22
|
isStaticHandler,
|
|
17
23
|
type StaticHandlerDefinition,
|
|
18
24
|
} from "../static-handler.js";
|
|
19
|
-
import {
|
|
25
|
+
import {
|
|
26
|
+
registerSearchSchema,
|
|
27
|
+
registerRouteRootScope,
|
|
28
|
+
} from "../route-map-builder.js";
|
|
20
29
|
import { RESPONSE_TYPE } from "./response-types.js";
|
|
21
30
|
import type { PathOptions } from "./pattern-types.js";
|
|
22
31
|
import type {
|
|
@@ -143,6 +152,9 @@ export function createPathHelper<TEnv>(): PathFn<TEnv> {
|
|
|
143
152
|
// Generate route name - use provided name or generate from pattern
|
|
144
153
|
const localName =
|
|
145
154
|
options?.name || `$path_${pattern.replace(/[/:*?]/g, "_")}`;
|
|
155
|
+
if (options?.name) {
|
|
156
|
+
validateUserRouteName(options.name);
|
|
157
|
+
}
|
|
146
158
|
// Apply name prefix if set (from include())
|
|
147
159
|
const routeName = applyNamePrefix(namePrefix, localName);
|
|
148
160
|
|
|
@@ -187,7 +199,7 @@ export function createPathHelper<TEnv>(): PathFn<TEnv> {
|
|
|
187
199
|
errorBoundary: [],
|
|
188
200
|
notFoundBoundary: [],
|
|
189
201
|
layout: [],
|
|
190
|
-
parallel:
|
|
202
|
+
parallel: {},
|
|
191
203
|
intercept: [],
|
|
192
204
|
loader: [],
|
|
193
205
|
...(urlPrefix ? { mountPath: urlPrefix } : {}),
|
|
@@ -222,6 +234,9 @@ export function createPathHelper<TEnv>(): PathFn<TEnv> {
|
|
|
222
234
|
// Register route entry with prefixed name
|
|
223
235
|
ctx.manifest.set(routeName, entry);
|
|
224
236
|
|
|
237
|
+
// Register root-scope flag for dot-local reverse resolution
|
|
238
|
+
registerRouteRootScope(routeName, getRootScoped());
|
|
239
|
+
|
|
225
240
|
// Also store pattern in a separate map for URL generation
|
|
226
241
|
if (ctx.patterns) {
|
|
227
242
|
ctx.patterns.set(routeName, prefixedPattern);
|
|
@@ -7,6 +7,18 @@ import type {
|
|
|
7
7
|
} from "../route-types.js";
|
|
8
8
|
import type { SearchSchema } from "../search-params.js";
|
|
9
9
|
import { RESPONSE_TYPE } from "./response-types.js";
|
|
10
|
+
import type { DefaultEnv } from "../types.js";
|
|
11
|
+
import type { PathHelpers } from "./path-helper-types.js";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Builder function accepted by urls() and as a shorthand for routes()/urls option.
|
|
15
|
+
* When passed directly to routes() or createRouter({ urls }), it is wrapped in urls() automatically.
|
|
16
|
+
*/
|
|
17
|
+
export type UrlBuilder<
|
|
18
|
+
TEnv = DefaultEnv,
|
|
19
|
+
TItems extends readonly (AllUseItems | readonly AllUseItems[])[] =
|
|
20
|
+
readonly AllUseItems[],
|
|
21
|
+
> = (helpers: PathHelpers<TEnv>) => TItems;
|
|
10
22
|
|
|
11
23
|
/**
|
|
12
24
|
* Sentinel type for unnamed routes.
|
|
@@ -15,6 +27,16 @@ import { RESPONSE_TYPE } from "./response-types.js";
|
|
|
15
27
|
*/
|
|
16
28
|
export type UnnamedRoute = "$unnamed";
|
|
17
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Sentinel type for include() mounts that stay local to the mounted module.
|
|
32
|
+
* This keeps child route names out of the parent/global type map while still
|
|
33
|
+
* allowing the mounted module to use its own local route names internally.
|
|
34
|
+
*
|
|
35
|
+
* Branded with a symbol key so it cannot be accidentally produced by user code.
|
|
36
|
+
*/
|
|
37
|
+
declare const LOCAL_ONLY_BRAND: unique symbol;
|
|
38
|
+
export type LocalOnlyInclude = string & { [LOCAL_ONLY_BRAND]: void };
|
|
39
|
+
|
|
18
40
|
/**
|
|
19
41
|
* Options for path() function
|
|
20
42
|
*/
|
|
@@ -70,6 +92,16 @@ export interface UrlPatterns<
|
|
|
70
92
|
* Options for include()
|
|
71
93
|
*/
|
|
72
94
|
export interface IncludeOptions<TNamePrefix extends string = string> {
|
|
73
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* Name prefix for all routes in this pattern set.
|
|
97
|
+
*
|
|
98
|
+
* - `{ name: "blog" }` — children become `blog.index`, `blog.detail`, etc.
|
|
99
|
+
* Visible in generated route types and resolvable globally via `reverse("blog.index")`.
|
|
100
|
+
* - `{ name: "" }` — children merge into the parent namespace with no prefix.
|
|
101
|
+
* Equivalent to defining the routes inline at the include site.
|
|
102
|
+
* - Omitted — children live in a private local scope, hidden from the
|
|
103
|
+
* generated route map and global reverse resolution. Only dot-local
|
|
104
|
+
* reverse (e.g. `reverse(".child")`) works from inside the module.
|
|
105
|
+
*/
|
|
74
106
|
name?: TNamePrefix;
|
|
75
107
|
}
|
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
import type { ContextVar } from "../context-var.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { ReverseFunction } from "../reverse.js";
|
|
3
|
+
import type {
|
|
4
|
+
DefaultReverseRouteMap,
|
|
5
|
+
DefaultVars,
|
|
6
|
+
} from "../types/global-namespace.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Reverse function for response handler contexts.
|
|
10
|
+
* Global names get autocomplete and param validation from the generated route map.
|
|
11
|
+
* Local `.name` calls are accepted but not validated (scope unknown at type level).
|
|
12
|
+
*/
|
|
13
|
+
type ResponseReverseFunction = [DefaultReverseRouteMap] extends [
|
|
14
|
+
Record<string, string>,
|
|
15
|
+
]
|
|
16
|
+
? (
|
|
17
|
+
name: string,
|
|
18
|
+
params?: Record<string, string>,
|
|
19
|
+
search?: Record<string, unknown>,
|
|
20
|
+
) => string
|
|
21
|
+
: ReverseFunction<DefaultReverseRouteMap> & {
|
|
22
|
+
(
|
|
23
|
+
name: `.${string}`,
|
|
24
|
+
params?: Record<string, string>,
|
|
25
|
+
search?: Record<string, unknown>,
|
|
26
|
+
): string;
|
|
27
|
+
};
|
|
3
28
|
|
|
4
29
|
/**
|
|
5
30
|
* Symbol marking a route as a response route (non-RSC).
|
|
@@ -71,7 +96,7 @@ export interface ResponseHandlerContext<
|
|
|
71
96
|
url: URL;
|
|
72
97
|
/** The pathname portion of the request URL. */
|
|
73
98
|
pathname: string;
|
|
74
|
-
reverse:
|
|
99
|
+
reverse: ResponseReverseFunction;
|
|
75
100
|
/** Read a variable set by middleware via ctx.set(key, value) or ctx.set(ContextVar, value). */
|
|
76
101
|
get: {
|
|
77
102
|
<T>(contextVar: ContextVar<T>): T | undefined;
|
|
@@ -6,7 +6,11 @@ import type {
|
|
|
6
6
|
TypedCacheItem,
|
|
7
7
|
TypedTransitionItem,
|
|
8
8
|
} from "../route-types.js";
|
|
9
|
-
import type {
|
|
9
|
+
import type {
|
|
10
|
+
LocalOnlyInclude,
|
|
11
|
+
UnnamedRoute,
|
|
12
|
+
UrlPatterns,
|
|
13
|
+
} from "./pattern-types.js";
|
|
10
14
|
|
|
11
15
|
// ============================================================================
|
|
12
16
|
// Route Type Extraction Utilities
|
|
@@ -156,13 +160,15 @@ type ExtractRoutesFromItem<T, D extends number = 40> = [D] extends [never]
|
|
|
156
160
|
infer TNamePrefix,
|
|
157
161
|
infer TUrlPrefix
|
|
158
162
|
>
|
|
159
|
-
? TNamePrefix extends
|
|
160
|
-
?
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
:
|
|
163
|
+
? TNamePrefix extends LocalOnlyInclude
|
|
164
|
+
? {}
|
|
165
|
+
: TNamePrefix extends string
|
|
166
|
+
? TUrlPrefix extends string
|
|
167
|
+
? PrefixRoutes<PrefixPatterns<TRoutes, TUrlPrefix>, TNamePrefix>
|
|
168
|
+
: PrefixRoutes<TRoutes, TNamePrefix>
|
|
169
|
+
: TUrlPrefix extends string
|
|
170
|
+
? PrefixPatterns<TRoutes, TUrlPrefix>
|
|
171
|
+
: TRoutes
|
|
166
172
|
: // TypedLayoutItem: extract child routes from phantom type
|
|
167
173
|
T extends TypedLayoutItem<infer TChildRoutes>
|
|
168
174
|
? TChildRoutes
|
|
@@ -239,13 +245,15 @@ type ExtractResponsesFromItem<T, D extends number = 40> = [D] extends [never]
|
|
|
239
245
|
: { [K in TName]: TData }
|
|
240
246
|
: {}
|
|
241
247
|
: T extends TypedIncludeItem<any, infer TNamePrefix, any, infer TResponses>
|
|
242
|
-
? TNamePrefix extends
|
|
243
|
-
?
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
:
|
|
248
|
+
? TNamePrefix extends LocalOnlyInclude
|
|
249
|
+
? {}
|
|
250
|
+
: TNamePrefix extends string
|
|
251
|
+
? TResponses extends Record<string, unknown>
|
|
252
|
+
? PrefixKeys<TResponses, TNamePrefix>
|
|
253
|
+
: {}
|
|
254
|
+
: TResponses extends Record<string, unknown>
|
|
255
|
+
? TResponses
|
|
256
|
+
: {}
|
|
249
257
|
: T extends TypedLayoutItem<any, infer TChildResponses>
|
|
250
258
|
? TChildResponses extends Record<string, unknown>
|
|
251
259
|
? TChildResponses
|
package/src/use-loader.tsx
CHANGED
|
@@ -88,6 +88,7 @@ function useLoaderInternal<T>(
|
|
|
88
88
|
const [fetchedData, setFetchedData] = useState<T | undefined>(undefined);
|
|
89
89
|
const [isLoading, setIsLoading] = useState(false);
|
|
90
90
|
const [error, setError] = useState<Error | null>(null);
|
|
91
|
+
const requestIdRef = useRef(0);
|
|
91
92
|
|
|
92
93
|
// Track context data changes to reset fetched data on navigation
|
|
93
94
|
const prevContextDataRef = useRef(contextData);
|
|
@@ -118,6 +119,7 @@ function useLoaderInternal<T>(
|
|
|
118
119
|
// Supports GET (data fetching) and POST/PUT/PATCH/DELETE (mutations).
|
|
119
120
|
const load = useCallback(
|
|
120
121
|
async (loadOptions?: LoadOptions): Promise<T> => {
|
|
122
|
+
const requestId = ++requestIdRef.current;
|
|
121
123
|
const loaderId = loaderIdRef.current;
|
|
122
124
|
// Verify the loader has $$id
|
|
123
125
|
if (!loaderId) {
|
|
@@ -130,7 +132,7 @@ function useLoaderInternal<T>(
|
|
|
130
132
|
setError(null);
|
|
131
133
|
|
|
132
134
|
try {
|
|
133
|
-
const url = new URL(window.location.
|
|
135
|
+
const url = new URL(window.location.href);
|
|
134
136
|
url.searchParams.set("_rsc_loader", loaderId);
|
|
135
137
|
|
|
136
138
|
const method = loadOptions?.method ?? "GET";
|
|
@@ -212,11 +214,15 @@ function useLoaderInternal<T>(
|
|
|
212
214
|
}
|
|
213
215
|
|
|
214
216
|
const result = payload.loaderResult;
|
|
215
|
-
|
|
217
|
+
if (requestId === requestIdRef.current) {
|
|
218
|
+
setFetchedData(result);
|
|
219
|
+
}
|
|
216
220
|
return result;
|
|
217
221
|
} catch (e) {
|
|
218
222
|
const err = e instanceof Error ? e : new Error(String(e));
|
|
219
|
-
|
|
223
|
+
if (requestId === requestIdRef.current) {
|
|
224
|
+
setError(err);
|
|
225
|
+
}
|
|
220
226
|
if (throwOnError) {
|
|
221
227
|
throw err;
|
|
222
228
|
}
|
|
@@ -224,7 +230,9 @@ function useLoaderInternal<T>(
|
|
|
224
230
|
// successful value or undefined). Caller should check error state.
|
|
225
231
|
return dataRef.current as T;
|
|
226
232
|
} finally {
|
|
227
|
-
|
|
233
|
+
if (requestId === requestIdRef.current) {
|
|
234
|
+
setIsLoading(false);
|
|
235
|
+
}
|
|
228
236
|
}
|
|
229
237
|
},
|
|
230
238
|
[throwOnError],
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { resolve } from "node:path";
|
|
9
|
-
import {
|
|
10
|
-
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs";
|
|
9
|
+
import { readFileSync, writeFileSync, existsSync } from "node:fs";
|
|
11
10
|
import { evictHandlerCode } from "../utils/bundle-analysis.js";
|
|
11
|
+
import { copyStagedBuildAssets } from "../utils/prerender-utils.js";
|
|
12
12
|
import type { DiscoveryState } from "./state.js";
|
|
13
13
|
|
|
14
14
|
/**
|
|
@@ -17,11 +17,11 @@ import type { DiscoveryState } from "./state.js";
|
|
|
17
17
|
*/
|
|
18
18
|
export function postprocessBundle(state: DiscoveryState): void {
|
|
19
19
|
const hasPrerenderData =
|
|
20
|
-
state.
|
|
21
|
-
Object.keys(state.
|
|
20
|
+
state.prerenderManifestEntries &&
|
|
21
|
+
Object.keys(state.prerenderManifestEntries).length > 0;
|
|
22
22
|
const hasStaticData =
|
|
23
|
-
state.
|
|
24
|
-
Object.keys(state.
|
|
23
|
+
state.staticManifestEntries &&
|
|
24
|
+
Object.keys(state.staticManifestEntries).length > 0;
|
|
25
25
|
if (!hasPrerenderData && !hasStaticData) return;
|
|
26
26
|
|
|
27
27
|
// Find RSC entry (recorded in generateBundle, fallback to dist/rsc/index.js)
|
|
@@ -88,36 +88,30 @@ export function postprocessBundle(state: DiscoveryState): void {
|
|
|
88
88
|
state.staticHandlerChunkInfo = null;
|
|
89
89
|
|
|
90
90
|
// 2. Write prerender data as separate importable asset modules
|
|
91
|
-
// and inject a manifest
|
|
91
|
+
// and inject a lazy manifest loader into the RSC entry.
|
|
92
92
|
if (hasPrerenderData && existsSync(rscEntryPath)) {
|
|
93
93
|
const rscCode = readFileSync(rscEntryPath, "utf-8");
|
|
94
|
-
|
|
94
|
+
// Check for the specific injection marker to avoid double-injection.
|
|
95
|
+
if (!rscCode.includes("__prerender-manifest.js")) {
|
|
95
96
|
try {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
let totalBytes = 0;
|
|
97
|
+
let totalBytes = copyStagedBuildAssets(
|
|
98
|
+
state.projectRoot,
|
|
99
|
+
Object.values(state.prerenderManifestEntries!),
|
|
100
|
+
);
|
|
101
101
|
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
const manifestMap: Record<string, string> = {};
|
|
103
|
+
for (const [key, assetFileName] of Object.entries(
|
|
104
|
+
state.prerenderManifestEntries!,
|
|
104
105
|
)) {
|
|
105
|
-
|
|
106
|
-
const contentHash = createHash("sha256")
|
|
107
|
-
.update(entryJson)
|
|
108
|
-
.digest("hex")
|
|
109
|
-
.slice(0, 8);
|
|
110
|
-
const assetFileName = `__pr-${contentHash}.js`;
|
|
111
|
-
const assetPath = resolve(assetsDir, assetFileName);
|
|
112
|
-
const assetCode = `export default ${entryJson};\n`;
|
|
113
|
-
writeFileSync(assetPath, assetCode);
|
|
114
|
-
totalBytes += Buffer.byteLength(assetCode);
|
|
115
|
-
manifestEntries.push(
|
|
116
|
-
`${JSON.stringify(key)}:()=>import("./assets/${assetFileName}")`,
|
|
117
|
-
);
|
|
106
|
+
manifestMap[key] = `./assets/${assetFileName}`;
|
|
118
107
|
}
|
|
119
108
|
|
|
120
|
-
const manifestCode =
|
|
109
|
+
const manifestCode = [
|
|
110
|
+
`const m=JSON.parse('${JSON.stringify(manifestMap).replace(/'/g, "\\'")}');`,
|
|
111
|
+
`export function loadPrerenderAsset(s){return import(s)}`,
|
|
112
|
+
`export default m;`,
|
|
113
|
+
"",
|
|
114
|
+
].join("\n");
|
|
121
115
|
const manifestPath = resolve(
|
|
122
116
|
state.projectRoot,
|
|
123
117
|
"dist/rsc/__prerender-manifest.js",
|
|
@@ -125,12 +119,12 @@ export function postprocessBundle(state: DiscoveryState): void {
|
|
|
125
119
|
writeFileSync(manifestPath, manifestCode);
|
|
126
120
|
totalBytes += Buffer.byteLength(manifestCode);
|
|
127
121
|
|
|
128
|
-
const injection = `
|
|
122
|
+
const injection = `globalThis.__loadPrerenderManifestModule = () => import("./__prerender-manifest.js");\n`;
|
|
129
123
|
writeFileSync(rscEntryPath, injection + rscCode);
|
|
130
124
|
|
|
131
125
|
const totalKB = (totalBytes / 1024).toFixed(1);
|
|
132
126
|
console.log(
|
|
133
|
-
`[rsc-router] Wrote prerender assets (${totalKB} KB total, ${Object.keys(state.
|
|
127
|
+
`[rsc-router] Wrote prerender assets (${totalKB} KB total, ${Object.keys(state.prerenderManifestEntries!).length} entries)`,
|
|
134
128
|
);
|
|
135
129
|
} catch (err: any) {
|
|
136
130
|
throw new Error(
|
|
@@ -146,29 +140,15 @@ export function postprocessBundle(state: DiscoveryState): void {
|
|
|
146
140
|
const rscCode = readFileSync(rscEntryPath, "utf-8");
|
|
147
141
|
if (!rscCode.includes("__STATIC_MANIFEST")) {
|
|
148
142
|
try {
|
|
149
|
-
const assetsDir = resolve(state.projectRoot, "dist/rsc/assets");
|
|
150
|
-
mkdirSync(assetsDir, { recursive: true });
|
|
151
|
-
|
|
152
143
|
const manifestEntries: string[] = [];
|
|
153
|
-
let totalBytes =
|
|
144
|
+
let totalBytes = copyStagedBuildAssets(
|
|
145
|
+
state.projectRoot,
|
|
146
|
+
Object.values(state.staticManifestEntries!),
|
|
147
|
+
);
|
|
154
148
|
|
|
155
|
-
for (const [handlerId,
|
|
156
|
-
state.
|
|
149
|
+
for (const [handlerId, assetFileName] of Object.entries(
|
|
150
|
+
state.staticManifestEntries!,
|
|
157
151
|
)) {
|
|
158
|
-
const contentHash = createHash("sha256")
|
|
159
|
-
.update(encoded)
|
|
160
|
-
.digest("hex")
|
|
161
|
-
.slice(0, 8);
|
|
162
|
-
const assetFileName = `__st-${contentHash}.js`;
|
|
163
|
-
const assetPath = resolve(assetsDir, assetFileName);
|
|
164
|
-
// Store both the Flight payload and handle data
|
|
165
|
-
const hasHandles = Object.keys(handles).length > 0;
|
|
166
|
-
const exportValue = hasHandles
|
|
167
|
-
? JSON.stringify({ encoded, handles })
|
|
168
|
-
: JSON.stringify(encoded);
|
|
169
|
-
const assetCode = `export default ${exportValue};\n`;
|
|
170
|
-
writeFileSync(assetPath, assetCode);
|
|
171
|
-
totalBytes += Buffer.byteLength(assetCode);
|
|
172
152
|
manifestEntries.push(
|
|
173
153
|
`${JSON.stringify(handlerId)}:()=>import("./assets/${assetFileName}")`,
|
|
174
154
|
);
|
|
@@ -192,7 +172,7 @@ export function postprocessBundle(state: DiscoveryState): void {
|
|
|
192
172
|
|
|
193
173
|
const totalKB = (totalBytes / 1024).toFixed(1);
|
|
194
174
|
console.log(
|
|
195
|
-
`[rsc-router] Wrote static assets (${totalKB} KB total, ${Object.keys(state.
|
|
175
|
+
`[rsc-router] Wrote static assets (${totalKB} KB total, ${Object.keys(state.staticManifestEntries!).length} entries)`,
|
|
196
176
|
);
|
|
197
177
|
} catch (err: any) {
|
|
198
178
|
throw new Error(
|
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
* router, and builds route tries for O(path_length) matching.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
buildCombinedRouteMapForRouterFile,
|
|
11
|
+
formatNestedRouterConflictError,
|
|
12
|
+
findNestedRouterConflict,
|
|
13
|
+
} from "../../build/generate-route-types.js";
|
|
10
14
|
import {
|
|
11
15
|
flattenLeafEntries,
|
|
12
16
|
buildRouteToStaticPrefix,
|
|
@@ -44,9 +48,8 @@ export async function discoverRouters(
|
|
|
44
48
|
// No RSC routers found directly. Check for host routers with lazy handlers
|
|
45
49
|
// that need to be resolved to trigger sub-app createRouter() calls.
|
|
46
50
|
try {
|
|
47
|
-
const hostMod = await rscEnv.runner.import("@rangojs/router/host");
|
|
48
51
|
const hostRegistry: Map<string, any> | undefined =
|
|
49
|
-
|
|
52
|
+
serverMod.HostRouterRegistry;
|
|
50
53
|
|
|
51
54
|
if (hostRegistry && hostRegistry.size > 0) {
|
|
52
55
|
console.log(
|
|
@@ -85,7 +88,7 @@ export async function discoverRouters(
|
|
|
85
88
|
}
|
|
86
89
|
}
|
|
87
90
|
} catch {
|
|
88
|
-
//
|
|
91
|
+
// Host-router discovery is best-effort; skip if unavailable
|
|
89
92
|
}
|
|
90
93
|
|
|
91
94
|
// If still no routers after host router resolution, fail
|
|
@@ -100,12 +103,26 @@ export async function discoverRouters(
|
|
|
100
103
|
const buildMod = await rscEnv.runner.import("@rangojs/router/build");
|
|
101
104
|
const generateManifestFull = buildMod.generateManifestFull;
|
|
102
105
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
const nestedRouterConflict = findNestedRouterConflict(
|
|
107
|
+
[...registry.values()]
|
|
108
|
+
.map((router) => router.__sourceFile)
|
|
109
|
+
.filter(
|
|
110
|
+
(sourceFile): sourceFile is string => typeof sourceFile === "string",
|
|
111
|
+
),
|
|
112
|
+
);
|
|
113
|
+
if (nestedRouterConflict) {
|
|
114
|
+
throw new Error(formatNestedRouterConflictError(nestedRouterConflict));
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Build into local variables first. Only commit to state after the
|
|
118
|
+
// full pass succeeds, so a failed re-discovery preserves the last
|
|
119
|
+
// known-good state instead of leaving it partially wiped.
|
|
120
|
+
const newMergedRouteManifest: Record<string, string> = {};
|
|
121
|
+
const newMergedPrecomputedEntries: PrecomputedEntry[] = [];
|
|
122
|
+
const newPerRouterManifests: typeof state.perRouterManifests = [];
|
|
123
|
+
const newPerRouterManifestDataMap = new Map<string, any>();
|
|
124
|
+
const newPerRouterPrecomputedMap = new Map<string, PrecomputedEntry[]>();
|
|
125
|
+
const newPerRouterTrieMap = new Map<string, any>();
|
|
109
126
|
let mergedRouteAncestry: Record<string, string[]> = {};
|
|
110
127
|
let mergedRouteTrailingSlash: Record<string, string> = {};
|
|
111
128
|
|
|
@@ -118,7 +135,11 @@ export async function discoverRouters(
|
|
|
118
135
|
continue;
|
|
119
136
|
}
|
|
120
137
|
|
|
121
|
-
const manifest = generateManifestFull(
|
|
138
|
+
const manifest = generateManifestFull(
|
|
139
|
+
router.urlpatterns,
|
|
140
|
+
routerMountIndex,
|
|
141
|
+
router.__basename ? { urlPrefix: router.__basename } : undefined,
|
|
142
|
+
);
|
|
122
143
|
routerMountIndex++;
|
|
123
144
|
allManifests.push({ id, manifest });
|
|
124
145
|
const routeCount = Object.keys(manifest.routeManifest).length;
|
|
@@ -128,7 +149,7 @@ export async function discoverRouters(
|
|
|
128
149
|
const dynamicRoutes = routeCount - staticRoutes;
|
|
129
150
|
|
|
130
151
|
// Merge into the combined manifest
|
|
131
|
-
Object.assign(
|
|
152
|
+
Object.assign(newMergedRouteManifest, manifest.routeManifest);
|
|
132
153
|
|
|
133
154
|
// Compute factory-only prefixes: dot-prefixed groups in the runtime
|
|
134
155
|
// manifest that the static parser cannot see. These are routes created
|
|
@@ -152,7 +173,7 @@ export async function discoverRouters(
|
|
|
152
173
|
if (factoryOnlyPrefixes.size === 0) factoryOnlyPrefixes = undefined;
|
|
153
174
|
}
|
|
154
175
|
|
|
155
|
-
|
|
176
|
+
newPerRouterManifests.push({
|
|
156
177
|
id,
|
|
157
178
|
routeManifest: manifest.routeManifest,
|
|
158
179
|
routeSearchSchemas: manifest.routeSearchSchemas,
|
|
@@ -175,18 +196,18 @@ export async function discoverRouters(
|
|
|
175
196
|
flattenLeafEntries(
|
|
176
197
|
manifest.prefixTree,
|
|
177
198
|
manifest.routeManifest,
|
|
178
|
-
|
|
199
|
+
newMergedPrecomputedEntries,
|
|
179
200
|
);
|
|
180
201
|
|
|
181
202
|
// Store per-router manifest and precomputed entries for isolated virtual modules.
|
|
182
|
-
|
|
203
|
+
newPerRouterManifestDataMap.set(id, manifest.routeManifest);
|
|
183
204
|
const routerPrecomputed: PrecomputedEntry[] = [];
|
|
184
205
|
flattenLeafEntries(
|
|
185
206
|
manifest.prefixTree,
|
|
186
207
|
manifest.routeManifest,
|
|
187
208
|
routerPrecomputed,
|
|
188
209
|
);
|
|
189
|
-
|
|
210
|
+
newPerRouterPrecomputedMap.set(id, routerPrecomputed);
|
|
190
211
|
|
|
191
212
|
console.log(
|
|
192
213
|
`[rsc-router] Router "${id}" -> ${routeCount} routes ` +
|
|
@@ -214,10 +235,8 @@ export async function discoverRouters(
|
|
|
214
235
|
}
|
|
215
236
|
|
|
216
237
|
// Build route trie from merged manifest + ancestry
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
Object.keys(state.mergedRouteManifest).length > 0
|
|
220
|
-
) {
|
|
238
|
+
let newMergedRouteTrie: any = null;
|
|
239
|
+
if (Object.keys(newMergedRouteManifest).length > 0) {
|
|
221
240
|
const buildRouteTrie = buildMod.buildRouteTrie;
|
|
222
241
|
if (buildRouteTrie && mergedRouteAncestry) {
|
|
223
242
|
// Build routeToStaticPrefix from saved manifests
|
|
@@ -252,8 +271,8 @@ export async function discoverRouters(
|
|
|
252
271
|
}
|
|
253
272
|
}
|
|
254
273
|
|
|
255
|
-
|
|
256
|
-
|
|
274
|
+
newMergedRouteTrie = buildRouteTrie(
|
|
275
|
+
newMergedRouteManifest,
|
|
257
276
|
mergedRouteAncestry,
|
|
258
277
|
routeToStaticPrefix,
|
|
259
278
|
Object.keys(mergedRouteTrailingSlash).length > 0
|
|
@@ -305,11 +324,22 @@ export async function discoverRouters(
|
|
|
305
324
|
? manifest.responseTypeRoutes
|
|
306
325
|
: undefined,
|
|
307
326
|
);
|
|
308
|
-
|
|
327
|
+
newPerRouterTrieMap.set(id, perRouterTrie);
|
|
309
328
|
}
|
|
310
329
|
}
|
|
311
330
|
}
|
|
312
331
|
|
|
332
|
+
// Commit all local state to the shared discovery state atomically.
|
|
333
|
+
// This ensures a failed re-discovery (e.g. from a transient module
|
|
334
|
+
// evaluation error) preserves the last known-good state.
|
|
335
|
+
state.mergedRouteManifest = newMergedRouteManifest;
|
|
336
|
+
state.mergedPrecomputedEntries = newMergedPrecomputedEntries;
|
|
337
|
+
state.perRouterManifests = newPerRouterManifests;
|
|
338
|
+
state.perRouterManifestDataMap = newPerRouterManifestDataMap;
|
|
339
|
+
state.perRouterPrecomputedMap = newPerRouterPrecomputedMap;
|
|
340
|
+
state.perRouterTrieMap = newPerRouterTrieMap;
|
|
341
|
+
state.mergedRouteTrie = newMergedRouteTrie;
|
|
342
|
+
|
|
313
343
|
// Expand prerender routes and render static handlers (build mode only)
|
|
314
344
|
await expandPrerenderRoutes(state, rscEnv, registry, allManifests);
|
|
315
345
|
await renderStaticHandlers(state, rscEnv, registry);
|