@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
|
@@ -9,8 +9,9 @@ import type { LocationStateEntry } from "../browser/react/location-state-shared.
|
|
|
9
9
|
import type {
|
|
10
10
|
DefaultEnv,
|
|
11
11
|
DefaultHandlerRouteMap,
|
|
12
|
+
DefaultReverseRouteMap,
|
|
13
|
+
DefaultRouteName,
|
|
12
14
|
DefaultVars,
|
|
13
|
-
GetRegisteredRoutes,
|
|
14
15
|
} from "./global-namespace.js";
|
|
15
16
|
import type {
|
|
16
17
|
ExtractParams,
|
|
@@ -18,6 +19,8 @@ import type {
|
|
|
18
19
|
ResolvedRouteMap,
|
|
19
20
|
} from "./route-config.js";
|
|
20
21
|
import type { LoaderDefinition } from "./loader-types.js";
|
|
22
|
+
import type { UseItems, HandlerUseItem } from "../route-types.js";
|
|
23
|
+
import type { RequestScope } from "./request-scope.js";
|
|
21
24
|
|
|
22
25
|
// Re-export MiddlewareFn for internal/advanced use
|
|
23
26
|
export type { MiddlewareFn } from "../router/middleware.js";
|
|
@@ -67,6 +70,65 @@ type ExtractSearchFromEntry<TMap, TKey> = TKey extends keyof TMap
|
|
|
67
70
|
: {}
|
|
68
71
|
: {};
|
|
69
72
|
|
|
73
|
+
type IsEmptyObject<T> = keyof T extends never ? true : false;
|
|
74
|
+
|
|
75
|
+
type AutofillParamsFromEntry<TEntry> = TEntry extends string
|
|
76
|
+
? string extends TEntry
|
|
77
|
+
? Record<string, string>
|
|
78
|
+
: Partial<ExtractParams<TEntry>>
|
|
79
|
+
: TEntry extends { readonly path: infer P extends string }
|
|
80
|
+
? string extends P
|
|
81
|
+
? Record<string, string>
|
|
82
|
+
: Partial<ExtractParams<P>>
|
|
83
|
+
: Record<string, string>;
|
|
84
|
+
|
|
85
|
+
type AutofillSearchFromEntry<TMap, TKey> = TKey extends keyof TMap
|
|
86
|
+
? TMap[TKey] extends { readonly search: infer S extends SearchSchema }
|
|
87
|
+
? ResolveSearchSchema<S>
|
|
88
|
+
: Record<string, unknown>
|
|
89
|
+
: Record<string, unknown>;
|
|
90
|
+
|
|
91
|
+
type AutofillAwareReverseFunction<TLocalRoutes, TGlobalRoutes> =
|
|
92
|
+
ScopedReverseFunction<TLocalRoutes, TGlobalRoutes> & {
|
|
93
|
+
<TName extends keyof TGlobalRoutes & string>(
|
|
94
|
+
name: TName,
|
|
95
|
+
params?: AutofillParamsFromEntry<TGlobalRoutes[TName]>,
|
|
96
|
+
search?: AutofillSearchFromEntry<TGlobalRoutes, TName>,
|
|
97
|
+
): string;
|
|
98
|
+
<TName extends keyof TLocalRoutes & string>(
|
|
99
|
+
name: `.${TName}`,
|
|
100
|
+
params?: AutofillParamsFromEntry<TLocalRoutes[TName]>,
|
|
101
|
+
search?: AutofillSearchFromEntry<TLocalRoutes, TName>,
|
|
102
|
+
): string;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
type StrictLocalParamsWithExtras<TEntry> =
|
|
106
|
+
IsEmptyObject<ExtractParamsFromEntry<TEntry, {}>> extends true
|
|
107
|
+
? Record<string, string>
|
|
108
|
+
: ExtractParamsFromEntry<TEntry, {}> & Record<string, string>;
|
|
109
|
+
|
|
110
|
+
// HandlerContext.reverse is the only reverse surface with runtime param autofill
|
|
111
|
+
// from the current matched request. Middleware/loaders/request context do not
|
|
112
|
+
// have the same local-route guarantees, so they keep plain ScopedReverseFunction.
|
|
113
|
+
//
|
|
114
|
+
// When a handler has an explicit local route map, enforce that local route
|
|
115
|
+
// params declared by that map are present while still allowing extra mount
|
|
116
|
+
// params to be passed through. Global names remain autofill-friendly because
|
|
117
|
+
// parent include() params are often unknown at the module definition site.
|
|
118
|
+
type StrictLocalAutofillGlobalReverseFunction<TLocalRoutes, TGlobalRoutes> =
|
|
119
|
+
ScopedReverseFunction<TLocalRoutes, TGlobalRoutes> & {
|
|
120
|
+
<TName extends keyof TGlobalRoutes & string>(
|
|
121
|
+
name: TName,
|
|
122
|
+
params?: AutofillParamsFromEntry<TGlobalRoutes[TName]>,
|
|
123
|
+
search?: AutofillSearchFromEntry<TGlobalRoutes, TName>,
|
|
124
|
+
): string;
|
|
125
|
+
<TName extends keyof TLocalRoutes & string>(
|
|
126
|
+
name: `.${TName}`,
|
|
127
|
+
params: StrictLocalParamsWithExtras<TLocalRoutes[TName]>,
|
|
128
|
+
search?: AutofillSearchFromEntry<TLocalRoutes, TName>,
|
|
129
|
+
): string;
|
|
130
|
+
};
|
|
131
|
+
|
|
70
132
|
export type Handler<
|
|
71
133
|
T extends
|
|
72
134
|
| keyof DefaultHandlerRouteMap
|
|
@@ -75,7 +137,7 @@ export type Handler<
|
|
|
75
137
|
| Record<string, any> = {},
|
|
76
138
|
TRouteMap extends {} = DefaultHandlerRouteMap,
|
|
77
139
|
TEnv = DefaultEnv,
|
|
78
|
-
> = (
|
|
140
|
+
> = ((
|
|
79
141
|
ctx: HandlerContext<
|
|
80
142
|
T extends `.${infer Local}`
|
|
81
143
|
? Local extends keyof TRouteMap
|
|
@@ -100,31 +162,32 @@ export type Handler<
|
|
|
100
162
|
: ExtractSearchFromEntry<DefaultHandlerRouteMap, T>,
|
|
101
163
|
TRouteMap extends DefaultHandlerRouteMap ? never : TRouteMap
|
|
102
164
|
>,
|
|
103
|
-
) => ReactNode | Promise<ReactNode> | Response | Promise<Response
|
|
165
|
+
) => ReactNode | Promise<ReactNode> | Response | Promise<Response>) & {
|
|
166
|
+
/** Composable default DSL items merged when the handler is mounted. */
|
|
167
|
+
use?: () => UseItems<HandlerUseItem>;
|
|
168
|
+
};
|
|
104
169
|
|
|
105
170
|
/**
|
|
106
171
|
* Context passed to handlers (Hono-inspired type-safe context)
|
|
107
172
|
*
|
|
108
173
|
* Provides type-safe access to:
|
|
109
174
|
* - Route params (from URL pattern)
|
|
110
|
-
* -
|
|
175
|
+
* - Cleaned route URL (`url`, `searchParams`, `pathname` — no `_rsc*` params)
|
|
176
|
+
* - Original request (`request` — raw transport URL, headers, method, body)
|
|
111
177
|
* - Platform bindings (env.DB, env.KV, env.SECRETS)
|
|
112
|
-
* - Middleware variables (
|
|
178
|
+
* - Middleware variables (`get("user")`, `get("permissions")`)
|
|
113
179
|
* - Getter/setter for variables (get('user'), set('user', ...))
|
|
114
180
|
*
|
|
115
|
-
* **Note:** System parameters (query params starting with `_rsc`) are automatically
|
|
116
|
-
* filtered from `url`, `searchParams`, and `request.url` for cleaner access.
|
|
117
|
-
*
|
|
118
181
|
* @example
|
|
119
182
|
* ```typescript
|
|
120
183
|
* const handler = (ctx: HandlerContext<{ slug: string }, AppEnv>) => {
|
|
121
184
|
* ctx.params.slug // Route param (string)
|
|
122
185
|
* ctx.env.DB // Binding (D1Database)
|
|
123
|
-
* ctx.
|
|
124
|
-
* ctx.get('user') // Alternative getter
|
|
186
|
+
* ctx.get('user') // Variable (User | undefined)
|
|
125
187
|
* ctx.set('user', {...}) // Setter
|
|
126
188
|
* ctx.url // Clean URL (no _rsc* params)
|
|
127
189
|
* ctx.searchParams // Clean params (no _rsc* params)
|
|
190
|
+
* ctx.request // Raw transport request (original URL intact)
|
|
128
191
|
* }
|
|
129
192
|
* ```
|
|
130
193
|
*/
|
|
@@ -133,7 +196,7 @@ export type HandlerContext<
|
|
|
133
196
|
TEnv = DefaultEnv,
|
|
134
197
|
TSearch extends SearchSchema = {},
|
|
135
198
|
TRouteMap = never,
|
|
136
|
-
> = {
|
|
199
|
+
> = RequestScope<TEnv> & {
|
|
137
200
|
/**
|
|
138
201
|
* Route parameters extracted from the URL pattern.
|
|
139
202
|
* Type-safe when using Handler<"/path/:param"> or Handler<{ param: string }>.
|
|
@@ -143,46 +206,24 @@ export type HandlerContext<
|
|
|
143
206
|
readonly _paramCheck?: (params: TParams) => TParams;
|
|
144
207
|
/**
|
|
145
208
|
* True during build-time pre-rendering, false at runtime.
|
|
146
|
-
*
|
|
147
|
-
*
|
|
209
|
+
* Build-time collection and dev on-demand prerender use `true`.
|
|
210
|
+
* Live request rendering, including passthrough fallback, uses `false`.
|
|
148
211
|
*/
|
|
149
212
|
build: boolean;
|
|
150
213
|
/**
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
|
|
154
|
-
request: Request;
|
|
155
|
-
/**
|
|
156
|
-
* Query parameters from the URL (system params like `_rsc*` are filtered).
|
|
157
|
-
* Always a standard URLSearchParams instance.
|
|
214
|
+
* True when running in Vite dev mode, false during production build or
|
|
215
|
+
* live request rendering. Use this to branch on runtime mode without
|
|
216
|
+
* changing build semantics (e.g., skip expensive operations in dev).
|
|
158
217
|
*/
|
|
159
|
-
|
|
218
|
+
dev: boolean;
|
|
160
219
|
/**
|
|
161
220
|
* Typed search parameters parsed from URL query string via the route's
|
|
162
221
|
* search schema. Empty object when no schema is defined.
|
|
163
222
|
*/
|
|
164
223
|
search: {} extends TSearch ? {} : ResolveSearchSchema<TSearch>;
|
|
165
|
-
/**
|
|
166
|
-
* The pathname portion of the request URL.
|
|
167
|
-
*/
|
|
168
|
-
pathname: string;
|
|
169
|
-
/**
|
|
170
|
-
* The full URL object (with system params filtered).
|
|
171
|
-
*/
|
|
172
|
-
url: URL;
|
|
173
|
-
/**
|
|
174
|
-
* Platform bindings (DB, KV, secrets, etc.).
|
|
175
|
-
* Access resources like `ctx.env.DB`, `ctx.env.KV`.
|
|
176
|
-
*/
|
|
177
|
-
env: TEnv;
|
|
178
|
-
/**
|
|
179
|
-
* Middleware-injected variables.
|
|
180
|
-
* Access values like `ctx.var.user`, `ctx.var.permissions`.
|
|
181
|
-
*/
|
|
182
|
-
var: DefaultVars;
|
|
183
224
|
/**
|
|
184
225
|
* Type-safe getter for middleware variables.
|
|
185
|
-
*
|
|
226
|
+
* Preferred way to read middleware-injected variables.
|
|
186
227
|
*
|
|
187
228
|
* @example
|
|
188
229
|
* ```typescript
|
|
@@ -203,24 +244,18 @@ export type HandlerContext<
|
|
|
203
244
|
* ```
|
|
204
245
|
*/
|
|
205
246
|
set: {
|
|
206
|
-
<T>(
|
|
207
|
-
|
|
247
|
+
<T>(
|
|
248
|
+
contextVar: ContextVar<T>,
|
|
249
|
+
value: T,
|
|
250
|
+
options?: { cache?: boolean },
|
|
251
|
+
): void;
|
|
252
|
+
} & (<K extends keyof DefaultVars>(
|
|
253
|
+
key: K,
|
|
254
|
+
value: DefaultVars[K],
|
|
255
|
+
options?: { cache?: boolean },
|
|
256
|
+
) => void);
|
|
208
257
|
/**
|
|
209
|
-
*
|
|
210
|
-
* Headers set here are merged into the final response.
|
|
211
|
-
*
|
|
212
|
-
* @example
|
|
213
|
-
* ```typescript
|
|
214
|
-
* route("product", (ctx) => {
|
|
215
|
-
* ctx.res.headers.set("Cache-Control", "s-maxage=60");
|
|
216
|
-
* return <ProductPage />;
|
|
217
|
-
* });
|
|
218
|
-
* ```
|
|
219
|
-
*/
|
|
220
|
-
res: Response;
|
|
221
|
-
/**
|
|
222
|
-
* Shorthand for ctx.res.headers - response headers.
|
|
223
|
-
* Headers set here are merged into the final response.
|
|
258
|
+
* Response headers. Headers set here are merged into the final response.
|
|
224
259
|
*
|
|
225
260
|
* @example
|
|
226
261
|
* ```typescript
|
|
@@ -234,8 +269,15 @@ export type HandlerContext<
|
|
|
234
269
|
/**
|
|
235
270
|
* Access loader data or push handle data.
|
|
236
271
|
*
|
|
272
|
+
* Available in route handlers, layout handlers, middleware, server actions,
|
|
273
|
+
* and server components rendered within the request context.
|
|
274
|
+
*
|
|
237
275
|
* For loaders: Returns a promise that resolves to the loader data.
|
|
238
276
|
* Loaders are executed in parallel and memoized per request.
|
|
277
|
+
* Prefer DSL `loader()` + client `useLoader()` over `ctx.use(Loader)` —
|
|
278
|
+
* DSL loaders are always fresh and cache-safe. Use `ctx.use(Loader)` only
|
|
279
|
+
* when you need loader data in the handler itself (e.g., to set context
|
|
280
|
+
* variables or make routing decisions).
|
|
239
281
|
*
|
|
240
282
|
* For handles: Returns a push function to add data for this segment.
|
|
241
283
|
* Handle data accumulates across all matched route segments.
|
|
@@ -243,10 +285,11 @@ export type HandlerContext<
|
|
|
243
285
|
*
|
|
244
286
|
* @example
|
|
245
287
|
* ```typescript
|
|
246
|
-
* // Loader
|
|
247
|
-
* route("
|
|
248
|
-
* const
|
|
249
|
-
*
|
|
288
|
+
* // Loader escape hatch — use when handler needs the data directly
|
|
289
|
+
* route("product", async (ctx) => {
|
|
290
|
+
* const { product } = await ctx.use(ProductLoader);
|
|
291
|
+
* ctx.set(Product, product); // make available to children
|
|
292
|
+
* return <ProductPage />;
|
|
250
293
|
* });
|
|
251
294
|
*
|
|
252
295
|
* // Handle usage - direct value
|
|
@@ -320,12 +363,26 @@ export type HandlerContext<
|
|
|
320
363
|
* @example
|
|
321
364
|
* ```typescript
|
|
322
365
|
* route("product", (ctx) => {
|
|
323
|
-
* ctx.setLocationState(
|
|
366
|
+
* ctx.setLocationState(ServerInfo({ data: "value" }));
|
|
367
|
+
* return <ProductPage />;
|
|
368
|
+
* });
|
|
369
|
+
* ```
|
|
370
|
+
*/
|
|
371
|
+
setLocationState(entries: LocationStateEntry | LocationStateEntry[]): void;
|
|
372
|
+
/**
|
|
373
|
+
* The matched route name, if the route has an explicit name.
|
|
374
|
+
* Undefined for unnamed routes (those without a `name` option in path()).
|
|
375
|
+
* Includes the namespace prefix from include() (e.g., "blog.post").
|
|
376
|
+
*
|
|
377
|
+
* @example
|
|
378
|
+
* ```typescript
|
|
379
|
+
* route("product", (ctx) => {
|
|
380
|
+
* ctx.routeName // "product"
|
|
324
381
|
* return <ProductPage />;
|
|
325
382
|
* });
|
|
326
383
|
* ```
|
|
327
384
|
*/
|
|
328
|
-
|
|
385
|
+
routeName?: DefaultRouteName;
|
|
329
386
|
/**
|
|
330
387
|
* Generate URLs from route names.
|
|
331
388
|
*
|
|
@@ -341,8 +398,14 @@ export type HandlerContext<
|
|
|
341
398
|
* ```
|
|
342
399
|
*/
|
|
343
400
|
reverse: [TRouteMap] extends [never]
|
|
344
|
-
?
|
|
345
|
-
|
|
401
|
+
? AutofillAwareReverseFunction<
|
|
402
|
+
Record<string, string>,
|
|
403
|
+
DefaultReverseRouteMap
|
|
404
|
+
>
|
|
405
|
+
: StrictLocalAutofillGlobalReverseFunction<
|
|
406
|
+
TRouteMap,
|
|
407
|
+
DefaultReverseRouteMap
|
|
408
|
+
>;
|
|
346
409
|
};
|
|
347
410
|
|
|
348
411
|
/**
|
|
@@ -355,12 +418,18 @@ export type InternalHandlerContext<
|
|
|
355
418
|
TEnv = DefaultEnv,
|
|
356
419
|
TSearch extends SearchSchema = {},
|
|
357
420
|
> = HandlerContext<TParams, TEnv, TSearch> & {
|
|
358
|
-
/**
|
|
359
|
-
|
|
421
|
+
/** @internal Stub response for collecting headers/cookies. */
|
|
422
|
+
res: Response;
|
|
423
|
+
/** @internal Shared variable backing store for ctx.get()/ctx.set(). */
|
|
424
|
+
_variables: Record<string, any>;
|
|
425
|
+
/** Prerender-only control flow helper, attached when the runtime context supports it. */
|
|
426
|
+
passthrough?: () => unknown;
|
|
360
427
|
/** Current segment ID for handle data attribution. */
|
|
361
428
|
_currentSegmentId?: string;
|
|
362
429
|
/** Response type tag (json, text, html, etc.) for cache key differentiation. */
|
|
363
430
|
_responseType?: string;
|
|
431
|
+
/** Route name for cache key scoping (prevents cross-route collisions). */
|
|
432
|
+
_routeName?: string;
|
|
364
433
|
};
|
|
365
434
|
|
|
366
435
|
/**
|
|
@@ -402,13 +471,16 @@ export type RevalidateParams<TParams = GenericParams, TEnv = any> = Parameters<
|
|
|
402
471
|
* **Return Types:**
|
|
403
472
|
* - `boolean` - Hard decision: immediately returns this value (short-circuits)
|
|
404
473
|
* - `{ defaultShouldRevalidate: boolean }` - Soft decision: updates suggestion for next revalidator
|
|
474
|
+
* - `void` / `null` / `undefined` - Defer to the current suggestion (no opinion); the
|
|
475
|
+
* loop continues to the next revalidator without changing the running default
|
|
405
476
|
*
|
|
406
477
|
* **Execution Flow:**
|
|
407
478
|
* 1. Start with built-in `defaultShouldRevalidate` (true if params changed)
|
|
408
479
|
* 2. Execute global revalidators first, then route-specific
|
|
409
480
|
* 3. Hard decision (boolean): stop immediately and use that value
|
|
410
481
|
* 4. Soft decision (object): update suggestion and continue to next revalidator
|
|
411
|
-
* 5.
|
|
482
|
+
* 5. Defer (`void` / `null` / `undefined`): leave suggestion unchanged and continue
|
|
483
|
+
* 6. If no hard decision was returned: use the final running suggestion
|
|
412
484
|
*
|
|
413
485
|
* @param args.currentParams - Previous route params (generic by default, can be narrowed)
|
|
414
486
|
* @param args.currentUrl - Previous URL
|
|
@@ -420,7 +492,8 @@ export type RevalidateParams<TParams = GenericParams, TEnv = any> = Parameters<
|
|
|
420
492
|
* @param args.formData - Form data from action (future support)
|
|
421
493
|
* @param args.formMethod - HTTP method from action (future support)
|
|
422
494
|
*
|
|
423
|
-
* @returns Hard decision (boolean)
|
|
495
|
+
* @returns Hard decision (boolean), soft suggestion (object), or defer
|
|
496
|
+
* (`void` / `null` / `undefined`) to keep the running suggestion as-is.
|
|
424
497
|
*
|
|
425
498
|
* @example
|
|
426
499
|
* ```typescript
|
|
@@ -440,27 +513,114 @@ export type RevalidateParams<TParams = GenericParams, TEnv = any> = Parameters<
|
|
|
440
513
|
* })
|
|
441
514
|
* ```
|
|
442
515
|
*/
|
|
516
|
+
/**
|
|
517
|
+
* Revalidation function called during client-side navigation to decide whether
|
|
518
|
+
* a segment (layout, route, parallel slot, or loader) should be re-rendered.
|
|
519
|
+
*
|
|
520
|
+
* Return `true` to re-render, `false` to skip (keep client's current version),
|
|
521
|
+
* `{ defaultShouldRevalidate: boolean }` to update the running suggestion for
|
|
522
|
+
* downstream revalidators, or nothing (`void` / `null` / `undefined`) to defer
|
|
523
|
+
* to the current suggestion without changing it.
|
|
524
|
+
*
|
|
525
|
+
* @example
|
|
526
|
+
* ```ts
|
|
527
|
+
* // Re-render only when a cart action happened or browser signals staleness
|
|
528
|
+
* revalidate(({ actionId, stale }) =>
|
|
529
|
+
* actionId?.includes("cart") || stale || false
|
|
530
|
+
* )
|
|
531
|
+
*
|
|
532
|
+
* // Always re-render when params change (default behavior made explicit)
|
|
533
|
+
* revalidate(({ defaultShouldRevalidate }) => defaultShouldRevalidate)
|
|
534
|
+
* ```
|
|
535
|
+
*/
|
|
443
536
|
export type ShouldRevalidateFn<TParams = GenericParams, TEnv = any> = (args: {
|
|
537
|
+
/** Route params from the page being navigated away from. */
|
|
444
538
|
currentParams: TParams;
|
|
539
|
+
/** Full URL of the page being navigated away from. */
|
|
445
540
|
currentUrl: URL;
|
|
541
|
+
/** Route params for the navigation target. */
|
|
446
542
|
nextParams: TParams;
|
|
543
|
+
/** Full URL of the navigation target. */
|
|
447
544
|
nextUrl: URL;
|
|
545
|
+
/**
|
|
546
|
+
* The router's default revalidation decision for this segment.
|
|
547
|
+
* `true` when params changed or the segment is new to the client.
|
|
548
|
+
* Return this when you want default behavior plus your own conditions.
|
|
549
|
+
*/
|
|
448
550
|
defaultShouldRevalidate: boolean;
|
|
551
|
+
/** Full handler context — access to `ctx.use()`, `ctx.env`, `ctx.params`, etc. */
|
|
449
552
|
context: HandlerContext<TParams, TEnv>;
|
|
450
|
-
|
|
553
|
+
|
|
554
|
+
// ── Segment metadata (which segment is being evaluated) ──────────────
|
|
555
|
+
|
|
556
|
+
/** The type of segment being revalidated. */
|
|
451
557
|
segmentType: "layout" | "route" | "parallel";
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
558
|
+
/** Layout name (e.g., `"root"`, `"shop"`, `"auth"`). Only set for layout segments. */
|
|
559
|
+
layoutName?: string;
|
|
560
|
+
/** Slot name (e.g., `"@sidebar"`, `"@modal"`). Only set for parallel segments. */
|
|
561
|
+
slotName?: string;
|
|
562
|
+
|
|
563
|
+
// ── Action context (populated when revalidation is triggered by a server action) ──
|
|
564
|
+
|
|
565
|
+
/**
|
|
566
|
+
* Identifier of the server action that triggered revalidation.
|
|
567
|
+
* `undefined` during normal navigation (no action involved).
|
|
568
|
+
*
|
|
569
|
+
* Format: `"src/<path>#<exportName>"` — the file path is the source path
|
|
570
|
+
* relative to the project root, followed by `#` and the exported function name.
|
|
571
|
+
*
|
|
572
|
+
* This is stable and can be used for path-based matching to revalidate
|
|
573
|
+
* when any action in a module or directory fires:
|
|
574
|
+
*
|
|
575
|
+
* @example
|
|
576
|
+
* ```ts
|
|
577
|
+
* // Match a specific action
|
|
578
|
+
* revalidate(({ actionId }) => actionId === "src/actions/cart.ts#addToCart")
|
|
579
|
+
*
|
|
580
|
+
* // Match any action in the cart module
|
|
581
|
+
* revalidate(({ actionId }) => actionId?.includes("cart") ?? false)
|
|
582
|
+
*
|
|
583
|
+
* // Match any action under src/apps/store/actions/
|
|
584
|
+
* revalidate(({ actionId }) => actionId?.startsWith("src/apps/store/actions/") ?? false)
|
|
585
|
+
* ```
|
|
586
|
+
*/
|
|
587
|
+
actionId?: string;
|
|
588
|
+
/** URL where the action was executed (the page the user was on when they triggered the action). */
|
|
589
|
+
actionUrl?: URL;
|
|
590
|
+
/** Return value from the action execution. Can be used to conditionally revalidate based on the action's outcome. */
|
|
591
|
+
actionResult?: any;
|
|
592
|
+
/** FormData from the action request body. Only set for form-based actions (not inline `"use server"` actions). */
|
|
593
|
+
formData?: FormData;
|
|
594
|
+
/** HTTP method: `"GET"` for navigation, `"POST"` for server actions. */
|
|
595
|
+
method?: string;
|
|
596
|
+
|
|
597
|
+
// ── Route identity ───────────────────────────────────────────────────
|
|
598
|
+
|
|
599
|
+
/** Route name of the navigation target. Alias for `toRouteName`. */
|
|
600
|
+
routeName?: DefaultRouteName;
|
|
601
|
+
/**
|
|
602
|
+
* Route name being navigated away from.
|
|
603
|
+
* `undefined` for unnamed internal routes (those without a `name` option).
|
|
604
|
+
*/
|
|
605
|
+
fromRouteName?: DefaultRouteName;
|
|
606
|
+
/**
|
|
607
|
+
* Route name being navigated to.
|
|
608
|
+
* `undefined` for unnamed internal routes (those without a `name` option).
|
|
609
|
+
*/
|
|
610
|
+
toRouteName?: DefaultRouteName;
|
|
611
|
+
|
|
612
|
+
// ── Staleness signal ─────────────────────────────────────────────────
|
|
613
|
+
|
|
614
|
+
/**
|
|
615
|
+
* `true` when the browser signals that data may be stale — typically because
|
|
616
|
+
* a server action was executed in this or another tab (`_rsc_stale` header).
|
|
617
|
+
*
|
|
618
|
+
* This is NOT segment cache staleness (loaders are never segment-cached).
|
|
619
|
+
* Use this to decide whether loader data should be re-fetched after an
|
|
620
|
+
* action that may have mutated backend state.
|
|
621
|
+
*/
|
|
622
|
+
stale?: boolean;
|
|
623
|
+
}) => boolean | { defaultShouldRevalidate: boolean } | null | void;
|
|
464
624
|
|
|
465
625
|
// MiddlewareFn is imported from "../router/middleware.js" and re-exported
|
|
466
626
|
|
package/src/types/index.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
export type {
|
|
3
3
|
GetRegisteredRoutes,
|
|
4
4
|
DefaultHandlerRouteMap,
|
|
5
|
+
DefaultReverseRouteMap,
|
|
5
6
|
DefaultEnv,
|
|
6
7
|
} from "./global-namespace.js";
|
|
7
8
|
// Ensure the global namespace declaration is evaluated
|
|
@@ -10,7 +11,6 @@ import "./global-namespace.js";
|
|
|
10
11
|
// Route configuration
|
|
11
12
|
export type {
|
|
12
13
|
DocumentProps,
|
|
13
|
-
RouterEnv,
|
|
14
14
|
ExtractParams,
|
|
15
15
|
TrailingSlashMode,
|
|
16
16
|
RouteConfig,
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import type { ContextVar } from "../context-var.js";
|
|
2
|
+
import type { Handle } from "../handle.js";
|
|
2
3
|
import type { MiddlewareFn } from "../router/middleware.js";
|
|
3
4
|
import type { ScopedReverseFunction } from "../reverse.js";
|
|
4
5
|
import type { SearchSchema, ResolveSearchSchema } from "../search-params.js";
|
|
6
|
+
import type { UseItems, LoaderUseItem } from "../route-types.js";
|
|
5
7
|
import type {
|
|
6
8
|
DefaultEnv,
|
|
7
|
-
|
|
9
|
+
DefaultReverseRouteMap,
|
|
8
10
|
DefaultVars,
|
|
9
11
|
} from "./global-namespace.js";
|
|
12
|
+
import type { RequestScope } from "./request-scope.js";
|
|
10
13
|
|
|
11
14
|
/**
|
|
12
15
|
* Context passed to loader functions during execution
|
|
@@ -38,28 +41,52 @@ export type LoaderContext<
|
|
|
38
41
|
TEnv = DefaultEnv,
|
|
39
42
|
TBody = unknown,
|
|
40
43
|
TSearch extends SearchSchema = {},
|
|
41
|
-
> = {
|
|
44
|
+
> = RequestScope<TEnv> & {
|
|
42
45
|
params: TParams;
|
|
43
|
-
|
|
44
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Route params extracted from the URL pattern match (server-side only).
|
|
48
|
+
* Unlike `params`, these cannot be overridden by client-provided loader params.
|
|
49
|
+
* Use this when you need trusted, server-matched route params for auth or
|
|
50
|
+
* resource scoping.
|
|
51
|
+
*/
|
|
52
|
+
routeParams: Record<string, string>;
|
|
45
53
|
search: {} extends TSearch ? {} : ResolveSearchSchema<TSearch>;
|
|
46
|
-
pathname: string;
|
|
47
|
-
url: URL;
|
|
48
|
-
env: TEnv;
|
|
49
|
-
var: DefaultVars;
|
|
50
54
|
get: {
|
|
51
55
|
<T>(contextVar: ContextVar<T>): T | undefined;
|
|
52
56
|
} & (<K extends keyof DefaultVars>(key: K) => DefaultVars[K]);
|
|
53
|
-
/** Get a cookie value from the request */
|
|
54
|
-
cookie(name: string): string | undefined;
|
|
55
|
-
/** Get all cookies from the request */
|
|
56
|
-
cookies(): Record<string, string>;
|
|
57
57
|
/**
|
|
58
|
-
* Access another loader's data
|
|
58
|
+
* Access another loader's data, or read handle data after rendered().
|
|
59
|
+
*
|
|
60
|
+
* For loaders: returns a promise (loaders run in parallel).
|
|
61
|
+
* For handles: returns collected data (only after `await ctx.rendered()`).
|
|
62
|
+
*/
|
|
63
|
+
use: {
|
|
64
|
+
<T, TLoaderParams = any>(
|
|
65
|
+
loader: LoaderDefinition<T, TLoaderParams>,
|
|
66
|
+
): Promise<T>;
|
|
67
|
+
<TData, TAccumulated = TData[]>(
|
|
68
|
+
handle: Handle<TData, TAccumulated>,
|
|
69
|
+
): TAccumulated;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* **Experimental.** Wait for all non-loader segments to settle.
|
|
73
|
+
*
|
|
74
|
+
* After the returned promise resolves, handle data is available via
|
|
75
|
+
* `ctx.use(handle)`. Only supported in DSL loaders on non-streaming
|
|
76
|
+
* trees (no `loading()`). Throws if called from a handler-invoked
|
|
77
|
+
* loader or when the tree uses streaming.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* const PricesLoader = createLoader(async (ctx) => {
|
|
82
|
+
* "use server";
|
|
83
|
+
* await ctx.rendered();
|
|
84
|
+
* const products = ctx.use(Products); // reads handle data
|
|
85
|
+
* return pricing.getLive(products.map(p => p.id));
|
|
86
|
+
* });
|
|
87
|
+
* ```
|
|
59
88
|
*/
|
|
60
|
-
|
|
61
|
-
loader: LoaderDefinition<T, TLoaderParams>,
|
|
62
|
-
) => Promise<T>;
|
|
89
|
+
rendered: () => Promise<void>;
|
|
63
90
|
/**
|
|
64
91
|
* HTTP method (GET, POST, PUT, PATCH, DELETE)
|
|
65
92
|
* Available when loader is called via load({ method: "POST", ... })
|
|
@@ -82,7 +109,7 @@ export type LoaderContext<
|
|
|
82
109
|
*/
|
|
83
110
|
reverse: ScopedReverseFunction<
|
|
84
111
|
Record<string, string>,
|
|
85
|
-
|
|
112
|
+
DefaultReverseRouteMap
|
|
86
113
|
>;
|
|
87
114
|
};
|
|
88
115
|
|
|
@@ -163,11 +190,11 @@ export type LoadOptions =
|
|
|
163
190
|
* return await db.products.findBySlug(slug);
|
|
164
191
|
* });
|
|
165
192
|
*
|
|
166
|
-
* //
|
|
167
|
-
* const
|
|
193
|
+
* // Client usage (preferred — cache-safe, always fresh)
|
|
194
|
+
* const { data } = useLoader(CartLoader);
|
|
168
195
|
*
|
|
169
|
-
* //
|
|
170
|
-
* const cart =
|
|
196
|
+
* // Server escape hatch (handler needs data directly)
|
|
197
|
+
* const cart = await ctx.use(CartLoader);
|
|
171
198
|
* ```
|
|
172
199
|
*/
|
|
173
200
|
export type LoaderDefinition<
|
|
@@ -177,4 +204,6 @@ export type LoaderDefinition<
|
|
|
177
204
|
__brand: "loader";
|
|
178
205
|
$$id: string; // Injected by Vite plugin (exposeInternalIds) - unique identifier
|
|
179
206
|
fn?: LoaderFn<T, TParams, any>; // Optional - server-side only, stored in registry for RSC
|
|
207
|
+
/** Composable default DSL items merged when the loader is mounted. */
|
|
208
|
+
use?: () => UseItems<LoaderUseItem>;
|
|
180
209
|
};
|