@rangojs/router 0.0.0-experimental.259 → 0.0.0-experimental.25dbaac3
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 +471 -51
- 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 +490 -94
- 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 +3423 -1718
- package/dist/vite/index.js.bak +5448 -0
- package/dist/vite/index.js.map +1 -0
- package/dist/vite/index.named-routes.gen.ts +103 -0
- package/dist/vite/package-resolution.d.ts +43 -0
- package/dist/vite/package-resolution.d.ts.map +1 -0
- package/dist/vite/package-resolution.js +112 -0
- package/dist/vite/package-resolution.js.map +1 -0
- package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/dist/vite/virtual-entries.d.ts +25 -0
- package/dist/vite/virtual-entries.d.ts.map +1 -0
- package/dist/vite/virtual-entries.js +110 -0
- package/dist/vite/virtual-entries.js.map +1 -0
- package/package.json +21 -18
- package/skills/breadcrumbs/SKILL.md +252 -0
- package/skills/cache-guide/SKILL.md +41 -5
- package/skills/caching/SKILL.md +49 -8
- package/skills/document-cache/SKILL.md +2 -2
- package/skills/handler-use/SKILL.md +362 -0
- package/skills/hooks/SKILL.md +94 -52
- package/skills/host-router/SKILL.md +218 -0
- package/skills/intercept/SKILL.md +99 -0
- package/skills/layout/SKILL.md +84 -2
- package/skills/links/SKILL.md +93 -17
- package/skills/loader/SKILL.md +367 -36
- package/skills/middleware/SKILL.md +145 -33
- package/skills/migrate-nextjs/SKILL.md +562 -0
- package/skills/migrate-react-router/SKILL.md +769 -0
- package/skills/parallel/SKILL.md +249 -2
- package/skills/prerender/SKILL.md +261 -49
- package/skills/rango/SKILL.md +26 -24
- package/skills/response-routes/SKILL.md +11 -3
- package/skills/route/SKILL.md +100 -5
- package/skills/router-setup/SKILL.md +172 -5
- package/skills/server-actions/SKILL.md +739 -0
- package/skills/streams-and-websockets/SKILL.md +283 -0
- package/skills/theme/SKILL.md +5 -4
- package/skills/typesafety/SKILL.md +95 -38
- package/skills/use-cache/SKILL.md +16 -2
- 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-shell.ts +52 -0
- package/src/browser/app-version.ts +14 -0
- package/src/browser/event-controller.ts +78 -52
- package/src/browser/history-state.ts +80 -0
- package/src/browser/intercept-utils.ts +1 -1
- package/src/browser/link-interceptor.ts +23 -3
- package/src/browser/merge-segment-loaders.ts +9 -2
- package/src/browser/navigation-bridge.ts +234 -453
- package/src/browser/navigation-client.ts +191 -86
- package/src/browser/navigation-store.ts +71 -41
- package/src/browser/navigation-transaction.ts +297 -0
- package/src/browser/partial-update.ts +215 -167
- package/src/browser/prefetch/cache.ts +314 -0
- package/src/browser/prefetch/fetch.ts +282 -0
- package/src/browser/prefetch/observer.ts +65 -0
- package/src/browser/prefetch/policy.ts +48 -0
- package/src/browser/prefetch/queue.ts +191 -0
- package/src/browser/prefetch/resource-ready.ts +77 -0
- package/src/browser/rango-state.ts +152 -0
- package/src/browser/react/Link.tsx +241 -47
- package/src/browser/react/NavigationProvider.tsx +136 -16
- package/src/browser/react/context.ts +11 -0
- package/src/browser/react/filter-segment-order.ts +55 -0
- package/src/browser/react/index.ts +2 -6
- package/src/browser/react/location-state-shared.ts +29 -11
- package/src/browser/react/location-state.ts +6 -4
- 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 +23 -45
- package/src/browser/react/use-client-cache.ts +5 -3
- package/src/browser/react/use-handle.ts +28 -120
- package/src/browser/react/use-navigation.ts +29 -34
- package/src/browser/react/use-params.ts +16 -35
- package/src/browser/react/use-pathname.ts +2 -3
- package/src/browser/react/use-router.ts +31 -14
- package/src/browser/react/use-search-params.ts +2 -1
- package/src/browser/react/use-segments.ts +82 -118
- package/src/browser/response-adapter.ts +73 -0
- package/src/browser/rsc-router.tsx +202 -67
- package/src/browser/scroll-restoration.ts +47 -45
- package/src/browser/segment-reconciler.ts +36 -9
- package/src/browser/server-action-bridge.ts +464 -409
- package/src/browser/types.ts +100 -40
- package/src/browser/validate-redirect-origin.ts +29 -0
- package/src/build/generate-manifest.ts +44 -19
- package/src/build/generate-route-types.ts +7 -0
- package/src/build/index.ts +1 -0
- package/src/build/route-trie.ts +67 -25
- 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/route-types/scan-filter.ts +8 -1
- 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 +140 -123
- package/src/cache/cache-scope.ts +124 -90
- package/src/cache/cf/cf-cache-store.ts +467 -22
- package/src/cache/cf/index.ts +5 -1
- package/src/cache/document-cache.ts +109 -75
- package/src/cache/handle-capture.ts +81 -0
- package/src/cache/index.ts +1 -15
- package/src/cache/memory-segment-store.ts +43 -69
- package/src/cache/profile-registry.ts +43 -8
- package/src/cache/read-through-swr.ts +134 -0
- package/src/cache/segment-codec.ts +140 -117
- package/src/cache/taint.ts +85 -3
- package/src/cache/types.ts +1 -115
- package/src/client.rsc.tsx +2 -1
- package/src/client.tsx +86 -254
- package/src/context-var.ts +72 -2
- package/src/debug.ts +2 -2
- package/src/errors.ts +6 -1
- package/src/handle.ts +41 -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 +48 -32
- package/src/index.ts +104 -64
- package/src/loader.rsc.ts +12 -4
- package/src/loader.ts +8 -0
- package/src/outlet-context.ts +1 -1
- package/src/prerender/store.ts +61 -18
- package/src/prerender.ts +207 -88
- package/src/response-utils.ts +28 -0
- package/src/reverse.ts +36 -7
- package/src/root-error-boundary.tsx +30 -26
- package/src/route-definition/dsl-helpers.ts +249 -46
- package/src/route-definition/helpers-types.ts +73 -20
- package/src/route-definition/index.ts +3 -3
- package/src/route-definition/redirect.ts +24 -4
- package/src/route-definition/resolve-handler-use.ts +155 -0
- package/src/route-map-builder.ts +45 -3
- package/src/route-name.ts +53 -0
- package/src/route-types.ts +25 -0
- package/src/router/content-negotiation.ts +101 -2
- package/src/router/debug-manifest.ts +16 -3
- package/src/router/find-match.ts +4 -2
- package/src/router/handler-context.ts +221 -39
- package/src/router/intercept-resolution.ts +17 -8
- package/src/router/lazy-includes.ts +12 -5
- package/src/router/loader-resolution.ts +164 -31
- package/src/router/logging.ts +104 -4
- package/src/router/manifest.ts +53 -9
- package/src/router/match-api.ts +150 -206
- package/src/router/match-context.ts +3 -0
- package/src/router/match-handlers.ts +186 -11
- package/src/router/match-middleware/background-revalidation.ts +94 -86
- package/src/router/match-middleware/cache-lookup.ts +164 -19
- 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 +61 -5
- package/src/router/match-pipelines.ts +8 -43
- package/src/router/match-result.ts +122 -18
- package/src/router/metrics.ts +238 -13
- package/src/router/middleware-types.ts +64 -61
- package/src/router/middleware.ts +316 -145
- package/src/router/navigation-snapshot.ts +182 -0
- package/src/router/pattern-matching.ts +134 -15
- package/src/router/prerender-match.ts +150 -16
- package/src/router/preview-match.ts +30 -96
- package/src/router/request-classification.ts +310 -0
- package/src/router/revalidation.ts +102 -9
- package/src/router/route-snapshot.ts +245 -0
- package/src/router/router-context.ts +20 -0
- package/src/router/router-interfaces.ts +200 -43
- package/src/router/router-options.ts +265 -12
- package/src/router/router-registry.ts +5 -2
- package/src/router/segment-resolution/fresh.ts +365 -256
- package/src/router/segment-resolution/helpers.ts +268 -0
- package/src/router/segment-resolution/loader-cache.ts +103 -98
- package/src/router/segment-resolution/revalidation.ts +711 -423
- package/src/router/segment-resolution/static-store.ts +2 -2
- package/src/router/segment-resolution.ts +1 -3
- 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 +30 -6
- package/src/router/types.ts +8 -1
- package/src/router/url-params.ts +49 -0
- package/src/router.ts +269 -25
- package/src/rsc/handler-context.ts +13 -2
- package/src/rsc/handler.ts +784 -629
- package/src/rsc/helpers.ts +168 -20
- package/src/rsc/index.ts +0 -20
- package/src/rsc/loader-fetch.ts +105 -43
- package/src/rsc/manifest-init.ts +7 -2
- package/src/rsc/origin-guard.ts +141 -0
- package/src/rsc/progressive-enhancement.ts +262 -20
- package/src/rsc/response-route-handler.ts +360 -0
- package/src/rsc/rsc-rendering.ts +70 -44
- package/src/rsc/runtime-warnings.ts +42 -0
- package/src/rsc/server-action.ts +178 -66
- package/src/rsc/ssr-setup.ts +128 -0
- package/src/rsc/types.ts +37 -3
- package/src/search-params.ts +38 -23
- package/src/segment-content-promise.ts +67 -0
- package/src/segment-loader-promise.ts +122 -0
- package/src/segment-system.tsx +109 -23
- package/src/server/context.ts +227 -24
- package/src/server/cookie-store.ts +190 -0
- package/src/server/fetchable-loader-store.ts +11 -6
- package/src/server/handle-store.ts +103 -12
- package/src/server/loader-registry.ts +20 -54
- package/src/server/request-context.ts +475 -105
- package/src/server.ts +6 -0
- package/src/ssr/index.tsx +74 -27
- package/src/static-handler.ts +25 -6
- 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 +10 -5
- package/src/types/error-types.ts +3 -0
- package/src/types/global-namespace.ts +22 -0
- package/src/types/handler-context.ts +242 -82
- package/src/types/index.ts +1 -1
- package/src/types/loader-types.ts +50 -21
- package/src/types/request-scope.ts +126 -0
- package/src/types/route-config.ts +17 -26
- package/src/types/route-entry.ts +46 -0
- package/src/types/segments.ts +19 -5
- package/src/urls/include-helper.ts +72 -21
- package/src/urls/index.ts +1 -0
- package/src/urls/path-helper-types.ts +69 -18
- package/src/urls/path-helper.ts +65 -15
- package/src/urls/pattern-types.ts +33 -1
- package/src/urls/response-types.ts +47 -23
- package/src/urls/type-extraction.ts +23 -15
- package/src/use-loader.tsx +103 -13
- package/src/vite/debug.ts +184 -0
- package/src/vite/discovery/bundle-postprocess.ts +62 -85
- package/src/vite/discovery/discover-routers.ts +87 -29
- package/src/vite/discovery/gate-state.ts +171 -0
- package/src/vite/discovery/prerender-collection.ts +224 -106
- package/src/vite/discovery/route-types-writer.ts +7 -7
- package/src/vite/discovery/self-gen-tracking.ts +27 -1
- package/src/vite/discovery/state.ts +20 -13
- package/src/vite/discovery/virtual-module-codegen.ts +5 -2
- package/src/vite/index.ts +14 -51
- package/src/vite/plugin-types.ts +51 -79
- package/src/vite/plugins/cjs-to-esm.ts +5 -0
- package/src/vite/plugins/client-ref-dedup.ts +131 -0
- package/src/vite/plugins/client-ref-hashing.ts +19 -7
- package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
- package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
- package/src/vite/plugins/expose-action-id.ts +53 -31
- package/src/vite/plugins/expose-id-utils.ts +12 -0
- package/src/vite/plugins/expose-ids/handler-transform.ts +30 -0
- package/src/vite/plugins/expose-ids/router-transform.ts +20 -3
- package/src/vite/plugins/expose-internal-ids.ts +567 -319
- package/src/vite/plugins/performance-tracks.ts +96 -0
- package/src/vite/plugins/refresh-cmd.ts +127 -0
- package/src/vite/plugins/use-cache-transform.ts +139 -38
- package/src/vite/plugins/version-injector.ts +37 -11
- package/src/vite/plugins/version-plugin.ts +200 -18
- package/src/vite/rango.ts +233 -221
- package/src/vite/router-discovery.ts +887 -176
- package/src/vite/utils/banner.ts +4 -4
- package/src/vite/utils/package-resolution.ts +41 -1
- package/src/vite/utils/prerender-utils.ts +113 -0
- package/src/vite/utils/shared-utils.ts +22 -11
- package/skills/testing/SKILL.md +0 -226
- package/src/browser/lru-cache.ts +0 -61
- package/src/browser/react/prefetch.ts +0 -27
- package/src/browser/request-controller.ts +0 -164
- package/src/cache/memory-store.ts +0 -253
- 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/urls/path-helper.ts
CHANGED
|
@@ -6,17 +6,27 @@ import type {
|
|
|
6
6
|
RouteUseItem,
|
|
7
7
|
UseItems,
|
|
8
8
|
} from "../route-types.js";
|
|
9
|
-
import {
|
|
10
|
-
|
|
9
|
+
import {
|
|
10
|
+
getContext,
|
|
11
|
+
getUrlPrefix,
|
|
12
|
+
getNamePrefix,
|
|
13
|
+
getRootScoped,
|
|
14
|
+
} from "../server/context";
|
|
15
|
+
import { invariant, DataNotFoundError } from "../errors";
|
|
16
|
+
import { validateUserRouteName } from "../route-name.js";
|
|
11
17
|
import {
|
|
12
18
|
isPrerenderHandler,
|
|
19
|
+
isPassthroughHandler,
|
|
13
20
|
type PrerenderHandlerDefinition,
|
|
14
21
|
} from "../prerender.js";
|
|
15
22
|
import {
|
|
16
23
|
isStaticHandler,
|
|
17
24
|
type StaticHandlerDefinition,
|
|
18
25
|
} from "../static-handler.js";
|
|
19
|
-
import {
|
|
26
|
+
import {
|
|
27
|
+
registerSearchSchema,
|
|
28
|
+
registerRouteRootScope,
|
|
29
|
+
} from "../route-map-builder.js";
|
|
20
30
|
import { RESPONSE_TYPE } from "./response-types.js";
|
|
21
31
|
import type { PathOptions } from "./pattern-types.js";
|
|
22
32
|
import type {
|
|
@@ -25,6 +35,10 @@ import type {
|
|
|
25
35
|
JsonResponsePathFn,
|
|
26
36
|
TextResponsePathFn,
|
|
27
37
|
} from "./path-helper-types.js";
|
|
38
|
+
import {
|
|
39
|
+
resolveHandlerUse,
|
|
40
|
+
mergeHandlerUse,
|
|
41
|
+
} from "../route-definition/resolve-handler-use.js";
|
|
28
42
|
|
|
29
43
|
/**
|
|
30
44
|
* Check if a value is a valid use item
|
|
@@ -133,6 +147,12 @@ export function createPathHelper<TEnv>(): PathFn<TEnv> {
|
|
|
133
147
|
use = maybeUse;
|
|
134
148
|
}
|
|
135
149
|
|
|
150
|
+
// Merge handler.use() defaults with explicit use()
|
|
151
|
+
// Response routes (path.json, path.text, etc.) only allow middleware + cache
|
|
152
|
+
const handlerUseFn = resolveHandlerUse(handler);
|
|
153
|
+
const mountSite = resolveResponseType(options) ? "response" : "path";
|
|
154
|
+
const mergedUse = mergeHandlerUse(handlerUseFn, use, mountSite);
|
|
155
|
+
|
|
136
156
|
// Get prefixes from context (set by include())
|
|
137
157
|
const urlPrefix = getUrlPrefix();
|
|
138
158
|
const namePrefix = getNamePrefix();
|
|
@@ -143,6 +163,9 @@ export function createPathHelper<TEnv>(): PathFn<TEnv> {
|
|
|
143
163
|
// Generate route name - use provided name or generate from pattern
|
|
144
164
|
const localName =
|
|
145
165
|
options?.name || `$path_${pattern.replace(/[/:*?]/g, "_")}`;
|
|
166
|
+
if (options?.name) {
|
|
167
|
+
validateUserRouteName(options.name);
|
|
168
|
+
}
|
|
146
169
|
// Apply name prefix if set (from include())
|
|
147
170
|
const routeName = applyNamePrefix(namePrefix, localName);
|
|
148
171
|
|
|
@@ -164,14 +187,31 @@ export function createPathHelper<TEnv>(): PathFn<TEnv> {
|
|
|
164
187
|
}
|
|
165
188
|
|
|
166
189
|
// Ensure handler is always a function (wrap ReactNode or extract from prerender/static def)
|
|
190
|
+
// For prerender stubs (production builds where handler code is evicted),
|
|
191
|
+
// handler.handler is undefined — provide a notFound fallback so requests
|
|
192
|
+
// for non-prerendered params get 404 instead of "handler is not a function".
|
|
167
193
|
const wrappedHandler: Handler<any, any, TEnv> =
|
|
168
194
|
typeof handler === "function"
|
|
169
195
|
? (handler as Handler<any, any, TEnv>)
|
|
170
|
-
:
|
|
171
|
-
?
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
196
|
+
: isPassthroughHandler(handler)
|
|
197
|
+
? typeof handler.prerenderDef.handler === "function"
|
|
198
|
+
? (handler.prerenderDef.handler as Handler<any, any, TEnv>)
|
|
199
|
+
: () => {
|
|
200
|
+
throw new DataNotFoundError(
|
|
201
|
+
"No prerender data found for this route",
|
|
202
|
+
);
|
|
203
|
+
}
|
|
204
|
+
: isPrerenderHandler(handler)
|
|
205
|
+
? typeof handler.handler === "function"
|
|
206
|
+
? (handler.handler as Handler<any, any, TEnv>)
|
|
207
|
+
: () => {
|
|
208
|
+
throw new DataNotFoundError(
|
|
209
|
+
"No prerender data found for this route",
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
: isStaticHandler(handler)
|
|
213
|
+
? (handler.handler as Handler<any, any, TEnv>)
|
|
214
|
+
: () => handler;
|
|
175
215
|
|
|
176
216
|
const entry = {
|
|
177
217
|
id: namespace,
|
|
@@ -187,16 +227,23 @@ export function createPathHelper<TEnv>(): PathFn<TEnv> {
|
|
|
187
227
|
errorBoundary: [],
|
|
188
228
|
notFoundBoundary: [],
|
|
189
229
|
layout: [],
|
|
190
|
-
parallel:
|
|
230
|
+
parallel: {},
|
|
191
231
|
intercept: [],
|
|
192
232
|
loader: [],
|
|
193
233
|
...(urlPrefix ? { mountPath: urlPrefix } : {}),
|
|
194
|
-
...(
|
|
234
|
+
...(isPassthroughHandler(handler)
|
|
195
235
|
? {
|
|
196
236
|
isPrerender: true as const,
|
|
197
|
-
prerenderDef: handler as PrerenderHandlerDefinition,
|
|
237
|
+
prerenderDef: handler.prerenderDef as PrerenderHandlerDefinition,
|
|
238
|
+
isPassthrough: true as const,
|
|
239
|
+
liveHandler: handler.liveHandler as Handler<any, any, TEnv>,
|
|
198
240
|
}
|
|
199
|
-
:
|
|
241
|
+
: isPrerenderHandler(handler)
|
|
242
|
+
? {
|
|
243
|
+
isPrerender: true as const,
|
|
244
|
+
prerenderDef: handler as PrerenderHandlerDefinition,
|
|
245
|
+
}
|
|
246
|
+
: {}),
|
|
200
247
|
...(isStaticHandler(handler)
|
|
201
248
|
? {
|
|
202
249
|
isStaticPrerender: true as const,
|
|
@@ -222,6 +269,9 @@ export function createPathHelper<TEnv>(): PathFn<TEnv> {
|
|
|
222
269
|
// Register route entry with prefixed name
|
|
223
270
|
ctx.manifest.set(routeName, entry);
|
|
224
271
|
|
|
272
|
+
// Register root-scope flag for dot-local reverse resolution
|
|
273
|
+
registerRouteRootScope(routeName, getRootScoped());
|
|
274
|
+
|
|
225
275
|
// Also store pattern in a separate map for URL generation
|
|
226
276
|
if (ctx.patterns) {
|
|
227
277
|
ctx.patterns.set(routeName, prefixedPattern);
|
|
@@ -249,9 +299,9 @@ export function createPathHelper<TEnv>(): PathFn<TEnv> {
|
|
|
249
299
|
registerSearchSchema(routeName, options.search);
|
|
250
300
|
}
|
|
251
301
|
|
|
252
|
-
// Run use callback if
|
|
253
|
-
if (
|
|
254
|
-
const result = store.run(namespace, entry,
|
|
302
|
+
// Run merged use callback (handler.use defaults + explicit use) if present
|
|
303
|
+
if (mergedUse) {
|
|
304
|
+
const result = store.run(namespace, entry, mergedUse)?.flat(3);
|
|
255
305
|
invariant(
|
|
256
306
|
Array.isArray(result) && result.every((item) => isValidUseItem(item)),
|
|
257
307
|
`path() use() callback must return an array of use items [${namespace}]`,
|
|
@@ -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,6 +1,32 @@
|
|
|
1
|
-
import type { CookieOptions } from "../router/middleware.js";
|
|
2
1
|
import type { ContextVar } from "../context-var.js";
|
|
3
|
-
import type {
|
|
2
|
+
import type { ReverseFunction } from "../reverse.js";
|
|
3
|
+
import type {
|
|
4
|
+
DefaultReverseRouteMap,
|
|
5
|
+
DefaultVars,
|
|
6
|
+
} from "../types/global-namespace.js";
|
|
7
|
+
import type { UseItems, ResponseRouteUseItem } from "../route-types.js";
|
|
8
|
+
import type { RequestScope } from "../types/request-scope.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Reverse function for response handler contexts.
|
|
12
|
+
* Global names get autocomplete and param validation from the generated route map.
|
|
13
|
+
* Local `.name` calls are accepted but not validated (scope unknown at type level).
|
|
14
|
+
*/
|
|
15
|
+
type ResponseReverseFunction = [DefaultReverseRouteMap] extends [
|
|
16
|
+
Record<string, string>,
|
|
17
|
+
]
|
|
18
|
+
? (
|
|
19
|
+
name: string,
|
|
20
|
+
params?: Record<string, string>,
|
|
21
|
+
search?: Record<string, unknown>,
|
|
22
|
+
) => string
|
|
23
|
+
: ReverseFunction<DefaultReverseRouteMap> & {
|
|
24
|
+
(
|
|
25
|
+
name: `.${string}`,
|
|
26
|
+
params?: Record<string, string>,
|
|
27
|
+
search?: Record<string, unknown>,
|
|
28
|
+
): string;
|
|
29
|
+
};
|
|
4
30
|
|
|
5
31
|
/**
|
|
6
32
|
* Symbol marking a route as a response route (non-RSC).
|
|
@@ -14,9 +40,12 @@ export const RESPONSE_TYPE: unique symbol = Symbol.for(
|
|
|
14
40
|
* Handler that must return Response (not ReactNode).
|
|
15
41
|
* Used by path.image(), path.stream(), path.any() (binary/streaming data).
|
|
16
42
|
*/
|
|
17
|
-
export type ResponseHandler<TParams = Record<string, string>, TEnv = any> = (
|
|
43
|
+
export type ResponseHandler<TParams = Record<string, string>, TEnv = any> = ((
|
|
18
44
|
ctx: ResponseHandlerContext<TParams, TEnv>,
|
|
19
|
-
) => Response | Promise<Response
|
|
45
|
+
) => Response | Promise<Response>) & {
|
|
46
|
+
/** Composable default DSL items merged when the handler is mounted. */
|
|
47
|
+
use?: () => UseItems<ResponseRouteUseItem>;
|
|
48
|
+
};
|
|
20
49
|
|
|
21
50
|
/**
|
|
22
51
|
* JSON-serializable value type for auto-wrap support.
|
|
@@ -36,9 +65,12 @@ export type JsonValue =
|
|
|
36
65
|
export type JsonResponseHandler<
|
|
37
66
|
TParams = Record<string, string>,
|
|
38
67
|
TEnv = any,
|
|
39
|
-
> = (
|
|
68
|
+
> = ((
|
|
40
69
|
ctx: ResponseHandlerContext<TParams, TEnv>,
|
|
41
|
-
) => JsonValue | Response | Promise<JsonValue | Response
|
|
70
|
+
) => JsonValue | Response | Promise<JsonValue | Response>) & {
|
|
71
|
+
/** Composable default DSL items merged when the handler is mounted. */
|
|
72
|
+
use?: () => UseItems<ResponseRouteUseItem>;
|
|
73
|
+
};
|
|
42
74
|
|
|
43
75
|
/**
|
|
44
76
|
* Handler for text-based response routes (text, html, xml).
|
|
@@ -47,38 +79,30 @@ export type JsonResponseHandler<
|
|
|
47
79
|
export type TextResponseHandler<
|
|
48
80
|
TParams = Record<string, string>,
|
|
49
81
|
TEnv = any,
|
|
50
|
-
> = (
|
|
82
|
+
> = ((
|
|
51
83
|
ctx: ResponseHandlerContext<TParams, TEnv>,
|
|
52
|
-
) => string | Response | Promise<string | Response
|
|
84
|
+
) => string | Response | Promise<string | Response>) & {
|
|
85
|
+
/** Composable default DSL items merged when the handler is mounted. */
|
|
86
|
+
use?: () => UseItems<ResponseRouteUseItem>;
|
|
87
|
+
};
|
|
53
88
|
|
|
54
89
|
/**
|
|
55
90
|
* Lighter handler context for response routes.
|
|
56
|
-
* No ctx.use() (no loaders). Supports setting response headers
|
|
57
|
-
*
|
|
91
|
+
* No ctx.use() (no loaders). Supports setting response headers via ctx.header().
|
|
92
|
+
* Use the standalone cookies() function for cookie mutations.
|
|
58
93
|
*/
|
|
59
94
|
export interface ResponseHandlerContext<
|
|
60
95
|
TParams = Record<string, string>,
|
|
61
96
|
TEnv = any,
|
|
62
|
-
> {
|
|
63
|
-
request: Request;
|
|
97
|
+
> extends RequestScope<TEnv> {
|
|
64
98
|
params: TParams;
|
|
65
99
|
/** @internal Phantom property for params type invariance. Prevents mounting handlers on wrong routes. */
|
|
66
100
|
readonly _paramCheck?: (params: TParams) => TParams;
|
|
67
|
-
|
|
68
|
-
env: TEnv;
|
|
69
|
-
/** Query parameters from the URL (system params like `_rsc*` are filtered). */
|
|
70
|
-
searchParams: URLSearchParams;
|
|
71
|
-
/** The full URL object (with system params filtered). */
|
|
72
|
-
url: URL;
|
|
73
|
-
/** The pathname portion of the request URL. */
|
|
74
|
-
pathname: string;
|
|
75
|
-
reverse: (name: string, params?: Record<string, string>) => string;
|
|
101
|
+
reverse: ResponseReverseFunction;
|
|
76
102
|
/** Read a variable set by middleware via ctx.set(key, value) or ctx.set(ContextVar, value). */
|
|
77
103
|
get: {
|
|
78
104
|
<T>(contextVar: ContextVar<T>): T | undefined;
|
|
79
105
|
} & (<K extends keyof DefaultVars>(key: K) => DefaultVars[K]);
|
|
80
106
|
/** Set a response header. Merged into the auto-wrapped or pass-through Response. */
|
|
81
107
|
header: (name: string, value: string) => void;
|
|
82
|
-
/** Set a cookie on the response. */
|
|
83
|
-
setCookie: (name: string, value: string, options?: CookieOptions) => void;
|
|
84
108
|
}
|
|
@@ -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
|
@@ -1,9 +1,71 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
isValidElement,
|
|
5
|
+
startTransition,
|
|
6
|
+
useCallback,
|
|
7
|
+
useContext,
|
|
8
|
+
useEffect,
|
|
9
|
+
useMemo,
|
|
10
|
+
useRef,
|
|
11
|
+
useState,
|
|
12
|
+
type ReactNode,
|
|
13
|
+
} from "react";
|
|
4
14
|
import { OutletContext, type OutletContextValue } from "./outlet-context.js";
|
|
5
15
|
import type { LoaderDefinition, LoadOptions } from "./types.js";
|
|
6
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Extract a specific loader's data from a content ReactNode.
|
|
19
|
+
*
|
|
20
|
+
* When a route registers loaders via loader(), the resolved data lives in
|
|
21
|
+
* the route's OutletProvider (rendered as <Outlet /> content). Parallel
|
|
22
|
+
* slots are siblings of <Outlet />, so they can't find it by walking
|
|
23
|
+
* the parent context chain. This helper traverses wrapper elements
|
|
24
|
+
* (MountContextProvider, ViewTransition, etc.) to reach the OutletProvider
|
|
25
|
+
* and extract the loader data directly.
|
|
26
|
+
*/
|
|
27
|
+
const NOT_FOUND = Symbol("not-found");
|
|
28
|
+
|
|
29
|
+
function extractContentLoaderData(
|
|
30
|
+
node: ReactNode,
|
|
31
|
+
loaderId: string,
|
|
32
|
+
): unknown | typeof NOT_FOUND {
|
|
33
|
+
if (!isValidElement(node)) return NOT_FOUND;
|
|
34
|
+
const props = node.props as Record<string, any> | undefined;
|
|
35
|
+
if (!props) return NOT_FOUND;
|
|
36
|
+
|
|
37
|
+
// Direct OutletProvider with loaderData
|
|
38
|
+
if (props.loaderData && loaderId in props.loaderData) {
|
|
39
|
+
return props.loaderData[loaderId];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// LoaderBoundary: loaderIds + loaderDataPromise (already resolved array).
|
|
43
|
+
// When the segment has loading(), loaderData is resolved inside
|
|
44
|
+
// LoaderBoundary via use(). If the promise was pre-awaited (forceAwait
|
|
45
|
+
// or isAction), the prop is a raw array we can index into.
|
|
46
|
+
if (
|
|
47
|
+
props.loaderIds &&
|
|
48
|
+
Array.isArray(props.loaderIds) &&
|
|
49
|
+
props.loaderDataPromise &&
|
|
50
|
+
!(props.loaderDataPromise instanceof Promise)
|
|
51
|
+
) {
|
|
52
|
+
const idx = (props.loaderIds as string[]).indexOf(loaderId);
|
|
53
|
+
if (idx !== -1) {
|
|
54
|
+
const data = (props.loaderDataPromise as any[])[idx];
|
|
55
|
+
// loaderDataPromise entries may be { ok, data } result objects
|
|
56
|
+
if (data && typeof data === "object" && "ok" in data) {
|
|
57
|
+
return data.ok ? data.data : NOT_FOUND;
|
|
58
|
+
}
|
|
59
|
+
return data;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Traverse into wrapper elements (MountContextProvider, ViewTransition,
|
|
64
|
+
// Suspense wrappers, etc.)
|
|
65
|
+
if (props.children) return extractContentLoaderData(props.children, loaderId);
|
|
66
|
+
return NOT_FOUND;
|
|
67
|
+
}
|
|
68
|
+
|
|
7
69
|
/**
|
|
8
70
|
* Payload returned by loader RSC requests
|
|
9
71
|
*/
|
|
@@ -71,23 +133,32 @@ function useLoaderInternal<T>(
|
|
|
71
133
|
const context = useContext(OutletContext);
|
|
72
134
|
|
|
73
135
|
// Get data from context (SSR/navigation)
|
|
74
|
-
const
|
|
136
|
+
const contextData = useMemo((): T | undefined => {
|
|
75
137
|
let current: OutletContextValue | null | undefined = context;
|
|
76
138
|
while (current) {
|
|
77
139
|
if (current.loaderData && loader.$$id in current.loaderData) {
|
|
78
140
|
return current.loaderData[loader.$$id] as T;
|
|
79
141
|
}
|
|
142
|
+
// Check content element — the route's OutletProvider is rendered as
|
|
143
|
+
// <Outlet /> content (a child), so its loaderData isn't in the parent
|
|
144
|
+
// chain. Parallel slots need to reach into it to find route-level loaders.
|
|
145
|
+
const contentData = extractContentLoaderData(
|
|
146
|
+
current.content,
|
|
147
|
+
loader.$$id,
|
|
148
|
+
);
|
|
149
|
+
if (contentData !== NOT_FOUND) {
|
|
150
|
+
return contentData as T;
|
|
151
|
+
}
|
|
80
152
|
current = current.parent;
|
|
81
153
|
}
|
|
82
154
|
return undefined;
|
|
83
155
|
}, [context, loader.$$id]);
|
|
84
156
|
|
|
85
|
-
const contextData = getContextData();
|
|
86
|
-
|
|
87
157
|
// Local state for fetched data (from load() calls)
|
|
88
158
|
const [fetchedData, setFetchedData] = useState<T | undefined>(undefined);
|
|
89
159
|
const [isLoading, setIsLoading] = useState(false);
|
|
90
160
|
const [error, setError] = useState<Error | null>(null);
|
|
161
|
+
const requestIdRef = useRef(0);
|
|
91
162
|
|
|
92
163
|
// Track context data changes to reset fetched data on navigation
|
|
93
164
|
const prevContextDataRef = useRef(contextData);
|
|
@@ -105,12 +176,23 @@ function useLoaderInternal<T>(
|
|
|
105
176
|
|
|
106
177
|
const throwOnError = options?.throwOnError ?? true;
|
|
107
178
|
|
|
179
|
+
// Refs for values used inside load() that should NOT cause callback identity
|
|
180
|
+
// churn. loader.$$id can change if a reusable component receives a different
|
|
181
|
+
// loader without remounting; data changes on every navigation. Refs keep the
|
|
182
|
+
// callback stable while always reading the latest values.
|
|
183
|
+
const loaderIdRef = useRef(loader.$$id);
|
|
184
|
+
loaderIdRef.current = loader.$$id;
|
|
185
|
+
const dataRef = useRef(data);
|
|
186
|
+
dataRef.current = data;
|
|
187
|
+
|
|
108
188
|
// Load function for fetching data via the ?_rsc_loader endpoint.
|
|
109
189
|
// Supports GET (data fetching) and POST/PUT/PATCH/DELETE (mutations).
|
|
110
190
|
const load = useCallback(
|
|
111
191
|
async (loadOptions?: LoadOptions): Promise<T> => {
|
|
192
|
+
const requestId = ++requestIdRef.current;
|
|
193
|
+
const loaderId = loaderIdRef.current;
|
|
112
194
|
// Verify the loader has $$id
|
|
113
|
-
if (!
|
|
195
|
+
if (!loaderId) {
|
|
114
196
|
throw new Error(
|
|
115
197
|
`Loader is missing $$id. Make sure the exposeLoaderId Vite plugin is enabled.`,
|
|
116
198
|
);
|
|
@@ -120,8 +202,8 @@ function useLoaderInternal<T>(
|
|
|
120
202
|
setError(null);
|
|
121
203
|
|
|
122
204
|
try {
|
|
123
|
-
const url = new URL(window.location.
|
|
124
|
-
url.searchParams.set("_rsc_loader",
|
|
205
|
+
const url = new URL(window.location.href);
|
|
206
|
+
url.searchParams.set("_rsc_loader", loaderId);
|
|
125
207
|
|
|
126
208
|
const method = loadOptions?.method ?? "GET";
|
|
127
209
|
const isBodyMethod = method !== "GET";
|
|
@@ -202,19 +284,27 @@ function useLoaderInternal<T>(
|
|
|
202
284
|
}
|
|
203
285
|
|
|
204
286
|
const result = payload.loaderResult;
|
|
205
|
-
|
|
287
|
+
if (requestId === requestIdRef.current) {
|
|
288
|
+
startTransition(() => {
|
|
289
|
+
setFetchedData(result);
|
|
290
|
+
});
|
|
291
|
+
}
|
|
206
292
|
return result;
|
|
207
293
|
} catch (e) {
|
|
208
294
|
const err = e instanceof Error ? e : new Error(String(e));
|
|
209
|
-
|
|
295
|
+
if (requestId === requestIdRef.current) {
|
|
296
|
+
setError(err);
|
|
297
|
+
}
|
|
210
298
|
if (throwOnError) {
|
|
211
299
|
throw err;
|
|
212
300
|
}
|
|
213
|
-
// When throwOnError is false, return the
|
|
214
|
-
// value or undefined). Caller should check error state
|
|
215
|
-
return
|
|
301
|
+
// When throwOnError is false, return the latest data snapshot (previous
|
|
302
|
+
// successful value or undefined). Caller should check error state.
|
|
303
|
+
return dataRef.current as T;
|
|
216
304
|
} finally {
|
|
217
|
-
|
|
305
|
+
if (requestId === requestIdRef.current) {
|
|
306
|
+
setIsLoading(false);
|
|
307
|
+
}
|
|
218
308
|
}
|
|
219
309
|
},
|
|
220
310
|
[throwOnError],
|