@rangojs/router 0.0.0-experimental.8 → 0.0.0-experimental.80daa23e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +13 -0
- package/README.md +472 -7
- 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 +2343 -0
- package/dist/bin/rango.js.map +1 -0
- package/dist/browser/event-controller.d.ts +191 -0
- package/dist/browser/event-controller.d.ts.map +1 -0
- package/dist/browser/event-controller.js +559 -0
- package/dist/browser/event-controller.js.map +1 -0
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +14 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/link-interceptor.d.ts +38 -0
- package/dist/browser/link-interceptor.d.ts.map +1 -0
- package/dist/browser/link-interceptor.js +99 -0
- package/dist/browser/link-interceptor.js.map +1 -0
- package/dist/browser/logging.d.ts +10 -0
- package/dist/browser/logging.d.ts.map +1 -0
- package/dist/browser/logging.js +29 -0
- package/dist/browser/logging.js.map +1 -0
- package/dist/browser/lru-cache.d.ts +17 -0
- package/dist/browser/lru-cache.d.ts.map +1 -0
- package/dist/browser/lru-cache.js +50 -0
- package/dist/browser/lru-cache.js.map +1 -0
- package/dist/browser/merge-segment-loaders.d.ts +39 -0
- package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
- package/dist/browser/merge-segment-loaders.js +102 -0
- package/dist/browser/merge-segment-loaders.js.map +1 -0
- package/dist/browser/navigation-bridge.d.ts +102 -0
- package/dist/browser/navigation-bridge.d.ts.map +1 -0
- package/dist/browser/navigation-bridge.js +708 -0
- package/dist/browser/navigation-bridge.js.map +1 -0
- package/dist/browser/navigation-client.d.ts +25 -0
- package/dist/browser/navigation-client.d.ts.map +1 -0
- package/dist/browser/navigation-client.js +157 -0
- package/dist/browser/navigation-client.js.map +1 -0
- package/dist/browser/navigation-store.d.ts +101 -0
- package/dist/browser/navigation-store.d.ts.map +1 -0
- package/dist/browser/navigation-store.js +625 -0
- package/dist/browser/navigation-store.js.map +1 -0
- package/dist/browser/partial-update.d.ts +75 -0
- package/dist/browser/partial-update.d.ts.map +1 -0
- package/dist/browser/partial-update.js +426 -0
- package/dist/browser/partial-update.js.map +1 -0
- package/dist/browser/react/Link.d.ts +86 -0
- package/dist/browser/react/Link.d.ts.map +1 -0
- package/dist/browser/react/Link.js +128 -0
- package/dist/browser/react/Link.js.map +1 -0
- package/dist/browser/react/NavigationProvider.d.ts +63 -0
- package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
- package/dist/browser/react/NavigationProvider.js +216 -0
- package/dist/browser/react/NavigationProvider.js.map +1 -0
- package/dist/browser/react/ScrollRestoration.d.ts +75 -0
- package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
- package/dist/browser/react/ScrollRestoration.js +57 -0
- package/dist/browser/react/ScrollRestoration.js.map +1 -0
- package/dist/browser/react/context.d.ts +46 -0
- package/dist/browser/react/context.d.ts.map +1 -0
- package/dist/browser/react/context.js +10 -0
- package/dist/browser/react/context.js.map +1 -0
- package/dist/browser/react/index.d.ts +11 -0
- package/dist/browser/react/index.d.ts.map +1 -0
- package/dist/browser/react/index.js +22 -0
- package/dist/browser/react/index.js.map +1 -0
- package/dist/browser/react/location-state-shared.d.ts +63 -0
- package/dist/browser/react/location-state-shared.d.ts.map +1 -0
- package/dist/browser/react/location-state-shared.js +81 -0
- package/dist/browser/react/location-state-shared.js.map +1 -0
- package/dist/browser/react/location-state.d.ts +23 -0
- package/dist/browser/react/location-state.d.ts.map +1 -0
- package/dist/browser/react/location-state.js +29 -0
- package/dist/browser/react/location-state.js.map +1 -0
- package/dist/browser/react/mount-context.d.ts +24 -0
- package/dist/browser/react/mount-context.d.ts.map +1 -0
- package/dist/browser/react/mount-context.js +24 -0
- package/dist/browser/react/mount-context.js.map +1 -0
- package/dist/browser/react/use-action.d.ts +64 -0
- package/dist/browser/react/use-action.d.ts.map +1 -0
- package/dist/browser/react/use-action.js +134 -0
- package/dist/browser/react/use-action.js.map +1 -0
- package/dist/browser/react/use-client-cache.d.ts +41 -0
- package/dist/browser/react/use-client-cache.d.ts.map +1 -0
- package/{src/browser/react/use-client-cache.ts → dist/browser/react/use-client-cache.js} +9 -26
- 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/{src/handles/index.ts → dist/handles/index.js} +1 -1
- 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/{src/network-error-thrower.tsx → dist/network-error-thrower.d.ts} +4 -8
- 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/testing/vitest.js +82 -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/__internal.d.ts +127 -0
- package/dist/types/bin/rango.d.ts +1 -0
- package/dist/types/browser/action-coordinator.d.ts +57 -0
- package/dist/types/browser/action-fence.d.ts +33 -0
- package/dist/types/browser/app-shell.d.ts +34 -0
- package/dist/types/browser/app-version.d.ts +6 -0
- package/dist/types/browser/connection-warmup.d.ts +31 -0
- package/dist/types/browser/cookie-name.d.ts +66 -0
- package/dist/types/browser/dev-discovery.d.ts +11 -0
- package/dist/types/browser/event-controller.d.ts +231 -0
- package/dist/types/browser/history-state.d.ts +26 -0
- package/dist/types/browser/index.d.ts +1 -0
- package/dist/types/browser/intercept-utils.d.ts +30 -0
- package/dist/types/browser/invalidate-client-cache.d.ts +17 -0
- package/dist/types/browser/link-interceptor.d.ts +53 -0
- package/dist/types/browser/logging.d.ts +33 -0
- package/dist/types/browser/merge-segment-loaders.d.ts +38 -0
- package/dist/types/browser/navigation-bridge.d.ts +39 -0
- package/dist/types/browser/navigation-client.d.ts +17 -0
- package/dist/types/browser/navigation-store-handle.d.ts +25 -0
- package/dist/types/browser/navigation-store.d.ts +85 -0
- package/dist/types/browser/navigation-transaction.d.ts +75 -0
- package/dist/types/browser/network-error-handler.d.ts +35 -0
- package/dist/types/browser/notify-listeners.d.ts +2 -0
- package/dist/types/browser/partial-update.d.ts +61 -0
- package/dist/types/browser/prefetch/cache.d.ts +224 -0
- package/dist/types/browser/prefetch/default-strategy.d.ts +31 -0
- package/dist/types/browser/prefetch/fetch.d.ts +52 -0
- package/dist/types/browser/prefetch/invalidation.d.ts +6 -0
- package/dist/types/browser/prefetch/loader.d.ts +12 -0
- package/dist/types/browser/prefetch/observer.d.ts +24 -0
- package/dist/types/browser/prefetch/policy.d.ts +13 -0
- package/dist/types/browser/prefetch/queue.d.ts +48 -0
- package/dist/types/browser/prefetch/resource-ready.d.ts +28 -0
- package/dist/types/browser/prefetch/runtime.d.ts +2 -0
- package/dist/types/browser/rango-state.d.ts +56 -0
- package/dist/types/browser/react/Link.d.ts +132 -0
- package/dist/types/browser/react/NavigationProvider.d.ts +88 -0
- package/dist/types/browser/react/ScrollRestoration.d.ts +78 -0
- package/dist/types/browser/react/context.d.ts +57 -0
- package/dist/types/browser/react/filter-segment-order.d.ts +35 -0
- package/dist/types/browser/react/index.d.ts +1 -0
- package/dist/types/browser/react/location-state-shared.d.ts +162 -0
- package/dist/types/browser/react/location-state.d.ts +29 -0
- package/dist/types/browser/react/mount-context.d.ts +23 -0
- package/dist/types/browser/react/nonce-context.d.ts +14 -0
- package/dist/types/browser/react/shallow-equal.d.ts +5 -0
- package/dist/types/browser/react/use-action.d.ts +61 -0
- package/dist/types/browser/react/use-handle.d.ts +21 -0
- package/dist/types/browser/react/use-href.d.ts +32 -0
- package/dist/types/browser/react/use-link-status.d.ts +36 -0
- package/dist/types/browser/react/use-mount.d.ts +24 -0
- package/dist/types/browser/react/use-navigation.d.ts +15 -0
- package/dist/types/browser/react/use-params.d.ts +21 -0
- package/dist/types/browser/react/use-pathname.d.ts +13 -0
- package/dist/types/browser/react/use-reverse.d.ts +40 -0
- package/dist/types/browser/react/use-router.d.ts +30 -0
- package/dist/types/browser/react/use-search-params.d.ts +66 -0
- package/dist/types/browser/react/use-segments.d.ts +29 -0
- package/dist/types/browser/response-adapter.d.ts +58 -0
- package/dist/types/browser/rsc-router.d.ts +146 -0
- package/dist/types/browser/scroll-restoration.d.ts +103 -0
- package/dist/types/browser/segment-reconciler.d.ts +74 -0
- package/dist/types/browser/segment-structure-assert.d.ts +16 -0
- package/dist/types/browser/server-action-bridge.d.ts +29 -0
- package/dist/types/browser/types.d.ts +546 -0
- package/dist/types/browser/validate-redirect-origin.d.ts +28 -0
- package/dist/types/build/collect-fallback-refs.d.ts +5 -0
- package/dist/types/build/generate-manifest.d.ts +106 -0
- package/dist/types/build/generate-route-types.d.ts +8 -0
- package/dist/types/build/index.d.ts +21 -0
- package/dist/types/build/merge-full-manifests.d.ts +3 -0
- package/dist/types/build/prefix-tree-utils.d.ts +56 -0
- package/dist/types/build/route-trie.d.ts +20 -0
- package/dist/types/build/route-types/ast-helpers.d.ts +3 -0
- package/dist/types/build/route-types/ast-route-extraction.d.ts +13 -0
- package/dist/types/build/route-types/codegen.d.ts +16 -0
- package/dist/types/build/route-types/include-resolution.d.ts +74 -0
- package/dist/types/build/route-types/param-extraction.d.ts +13 -0
- package/dist/types/build/route-types/per-module-writer.d.ts +20 -0
- package/dist/types/build/route-types/router-processing.d.ts +81 -0
- package/dist/types/build/route-types/scan-filter.d.ts +17 -0
- package/dist/types/build/route-types/source-scan.d.ts +13 -0
- package/dist/types/build/runtime-discovery.d.ts +24 -0
- package/dist/types/cache/background-task.d.ts +21 -0
- package/dist/types/cache/cache-error.d.ts +71 -0
- package/dist/types/cache/cache-exec-scope.d.ts +31 -0
- package/dist/types/cache/cache-key-utils.d.ts +43 -0
- package/dist/types/cache/cache-policy.d.ts +59 -0
- package/dist/types/cache/cache-runtime.d.ts +51 -0
- package/dist/types/cache/cache-scope.d.ts +215 -0
- package/dist/types/cache/cache-tag.d.ts +79 -0
- package/dist/types/cache/cf/cf-base64.d.ts +4 -0
- package/dist/types/cache/cf/cf-cache-constants.d.ts +112 -0
- package/dist/types/cache/cf/cf-cache-store.d.ts +630 -0
- package/dist/types/cache/cf/cf-cache-types.d.ts +365 -0
- package/dist/types/cache/cf/cf-kv-utils.d.ts +43 -0
- package/dist/types/cache/cf/cf-tag-marker-memo.d.ts +15 -0
- package/dist/types/cache/cf/cf-zone-purge.d.ts +31 -0
- package/dist/types/cache/cf/index.d.ts +4 -0
- package/dist/types/cache/document-cache.d.ts +71 -0
- package/dist/types/cache/handle-capture.d.ts +23 -0
- package/dist/types/cache/handle-snapshot.d.ts +39 -0
- package/dist/types/cache/index.d.ts +9 -0
- package/dist/types/cache/memory-segment-store.d.ts +163 -0
- package/dist/types/cache/profile-registry.d.ts +40 -0
- package/dist/types/cache/read-through-swr.d.ts +61 -0
- package/dist/types/cache/search-params-filter.d.ts +64 -0
- package/dist/types/cache/segment-codec.d.ts +78 -0
- package/dist/types/cache/shell-snapshot.d.ts +186 -0
- package/dist/types/cache/tag-invalidation.d.ts +74 -0
- package/dist/types/cache/taint.d.ts +77 -0
- package/dist/types/cache/types.d.ts +522 -0
- package/dist/types/cache/vercel/index.d.ts +1 -0
- package/dist/types/cache/vercel/vercel-cache-store.d.ts +268 -0
- package/dist/types/client-urls/client-root.d.ts +38 -0
- package/dist/types/client-urls/client-urls.d.ts +5 -0
- package/dist/types/client-urls/navigation.d.ts +38 -0
- package/dist/types/client-urls/revalidation-protocol.d.ts +25 -0
- package/dist/types/client-urls/server-projection.d.ts +71 -0
- package/dist/types/client-urls/types.d.ts +148 -0
- package/dist/types/client.d.ts +192 -0
- package/dist/types/client.rsc.d.ts +42 -0
- package/dist/types/cloudflare/index.d.ts +7 -0
- package/dist/types/cloudflare/tracing.d.ts +57 -0
- package/dist/types/component-utils.d.ts +46 -0
- package/dist/types/components/DefaultDocument.d.ts +13 -0
- package/dist/types/context-var.d.ts +84 -0
- package/dist/types/debug.d.ts +57 -0
- package/dist/types/decode-loader-results.d.ts +42 -0
- package/dist/types/default-error-boundary.d.ts +10 -0
- package/dist/types/defer.d.ts +89 -0
- package/dist/types/deps/browser.d.ts +1 -0
- package/dist/types/deps/html-stream-client.d.ts +1 -0
- package/dist/types/deps/html-stream-server.d.ts +1 -0
- package/dist/types/deps/rsc.d.ts +1 -0
- package/dist/types/deps/ssr.d.ts +1 -0
- package/dist/types/dev-discovery-protocol.d.ts +5 -0
- package/dist/types/encode-kv.d.ts +35 -0
- package/dist/types/errors.d.ts +227 -0
- package/dist/types/escape-script.d.ts +44 -0
- package/dist/types/handle.d.ts +93 -0
- package/dist/types/handles/MetaTags.d.ts +17 -0
- package/dist/types/handles/Scripts.d.ts +38 -0
- package/dist/types/handles/breadcrumbs.d.ts +43 -0
- package/dist/types/handles/deferred-resolution.d.ts +53 -0
- package/dist/types/handles/is-thenable.d.ts +10 -0
- package/dist/types/handles/meta.d.ts +43 -0
- package/dist/types/handles/script.d.ts +139 -0
- package/dist/types/host/cookie-handler.d.ts +8 -0
- package/dist/types/host/errors.d.ts +40 -0
- package/dist/types/host/index.d.ts +33 -0
- package/dist/types/host/pattern-matcher.d.ts +30 -0
- package/dist/types/host/router.d.ts +12 -0
- package/dist/types/host/testing.d.ts +41 -0
- package/dist/types/host/types.d.ts +148 -0
- package/dist/types/host/utils.d.ts +20 -0
- package/dist/types/href-client.d.ts +214 -0
- package/dist/types/index.d.ts +113 -0
- package/dist/types/index.rsc.d.ts +52 -0
- package/dist/types/internal-debug.d.ts +1 -0
- package/dist/types/loader-redirect.d.ts +27 -0
- package/dist/types/loader-store.d.ts +193 -0
- package/dist/types/loader.d.ts +18 -0
- package/dist/types/loader.rsc.d.ts +18 -0
- package/dist/types/missing-id-error.d.ts +1 -0
- package/dist/types/outlet-context.d.ts +32 -0
- package/dist/types/outlet-provider.d.ts +15 -0
- package/dist/types/prerender/build-shell-capture.d.ts +104 -0
- package/dist/types/prerender/param-hash.d.ts +6 -0
- package/dist/types/prerender/shell-manifest-key.d.ts +18 -0
- package/dist/types/prerender/store.d.ts +63 -0
- package/dist/types/prerender.d.ts +292 -0
- package/dist/types/redirect-origin.d.ts +71 -0
- package/dist/types/regex-escape.d.ts +6 -0
- package/dist/types/render-error-thrower.d.ts +13 -0
- package/dist/types/response-utils.d.ts +35 -0
- package/dist/types/reverse.d.ts +206 -0
- package/dist/types/root-error-boundary.d.ts +32 -0
- package/dist/types/route-content-wrapper.d.ts +84 -0
- package/dist/types/route-definition/dsl-helpers.d.ts +130 -0
- package/dist/types/route-definition/helper-factories.d.ts +22 -0
- package/dist/types/route-definition/helpers-types.d.ts +405 -0
- package/dist/types/route-definition/index.d.ts +7 -0
- package/dist/types/route-definition/redirect.d.ts +48 -0
- package/dist/types/route-definition/resolve-handler-use.d.ts +19 -0
- package/dist/types/route-definition/use-item-types.d.ts +1 -0
- package/dist/types/route-definition.d.ts +1 -0
- package/dist/types/route-map-builder.d.ts +102 -0
- package/dist/types/route-name.d.ts +27 -0
- package/dist/types/route-types.d.ts +172 -0
- package/dist/types/router/basename.d.ts +10 -0
- package/dist/types/router/content-negotiation.d.ts +91 -0
- package/dist/types/router/debug-manifest.d.ts +7 -0
- package/dist/types/router/error-handling.d.ts +110 -0
- package/dist/types/router/find-match.d.ts +19 -0
- package/dist/types/router/handler-context.d.ts +41 -0
- package/dist/types/router/instrument.d.ts +191 -0
- package/dist/types/router/intercept-resolution.d.ts +91 -0
- package/dist/types/router/lazy-includes.d.ts +26 -0
- package/dist/types/router/loader-resolution.d.ts +85 -0
- package/dist/types/router/logging.d.ts +41 -0
- package/dist/types/router/manifest.d.ts +8 -0
- package/dist/types/router/match-api.d.ts +19 -0
- package/dist/types/router/match-context.d.ts +184 -0
- package/dist/types/router/match-handlers.d.ts +48 -0
- package/dist/types/router/match-middleware/background-revalidation.d.ts +113 -0
- package/dist/types/router/match-middleware/cache-lookup.d.ts +126 -0
- package/dist/types/router/match-middleware/cache-store.d.ts +112 -0
- package/dist/types/router/match-middleware/index.d.ts +80 -0
- package/dist/types/router/match-middleware/intercept-resolution.d.ts +116 -0
- package/dist/types/router/match-middleware/segment-resolution.d.ts +94 -0
- package/dist/types/router/match-pipelines.d.ts +103 -0
- package/dist/types/router/match-result.d.ts +114 -0
- package/dist/types/router/metrics.d.ts +6 -0
- package/dist/types/router/middleware-types.d.ts +74 -0
- package/dist/types/router/middleware.d.ts +116 -0
- package/dist/types/router/navigation-snapshot.d.ts +51 -0
- package/dist/types/router/params-util.d.ts +8 -0
- package/dist/types/router/parse-pattern.d.ts +38 -0
- package/dist/types/router/pattern-matching.d.ts +169 -0
- package/dist/types/router/prefetch-cache-ttl.d.ts +27 -0
- package/dist/types/router/prefetch-default.d.ts +28 -0
- package/dist/types/router/prefetch-limits.d.ts +20 -0
- package/dist/types/router/prerender-match.d.ts +53 -0
- package/dist/types/router/preview-match.d.ts +22 -0
- package/dist/types/router/request-classification.d.ts +104 -0
- package/dist/types/router/revalidation.d.ts +64 -0
- package/dist/types/router/route-snapshot.d.ts +112 -0
- package/dist/types/router/route-trie-builder.d.ts +77 -0
- package/dist/types/router/router-context.d.ts +137 -0
- package/dist/types/router/router-interfaces.d.ts +461 -0
- package/dist/types/router/router-options.d.ts +792 -0
- package/dist/types/router/router-registry.d.ts +15 -0
- package/dist/types/router/segment-resolution/fresh.d.ts +55 -0
- package/dist/types/router/segment-resolution/helpers.d.ts +93 -0
- package/dist/types/router/segment-resolution/loader-cache.d.ts +33 -0
- package/dist/types/router/segment-resolution/loader-mask.d.ts +44 -0
- package/dist/types/router/segment-resolution/loader-snapshot.d.ts +90 -0
- package/dist/types/router/segment-resolution/mask-nested.d.ts +53 -0
- package/dist/types/router/segment-resolution/revalidation.d.ts +85 -0
- package/dist/types/router/segment-resolution/static-store.d.ts +17 -0
- package/dist/types/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
- package/dist/types/router/segment-resolution/view-transition-default.d.ts +27 -0
- package/dist/types/router/segment-resolution.d.ts +3 -0
- package/dist/types/router/segment-wrappers.d.ts +53 -0
- package/dist/types/router/state-cookie-name.d.ts +1 -0
- package/dist/types/router/substitute-pattern-params.d.ts +23 -0
- package/dist/types/router/telemetry-otel.d.ts +113 -0
- package/dist/types/router/telemetry.d.ts +216 -0
- package/dist/types/router/timeout.d.ts +107 -0
- package/dist/types/router/tracing.d.ts +139 -0
- package/dist/types/router/transition-when.d.ts +13 -0
- package/dist/types/router/trie-matching.d.ts +32 -0
- package/dist/types/router/types.d.ts +98 -0
- package/dist/types/router/url-params.d.ts +26 -0
- package/dist/types/router.d.ts +7 -0
- package/dist/types/rsc/capture-queue.d.ts +49 -0
- package/dist/types/rsc/full-payload.d.ts +22 -0
- package/dist/types/rsc/handler-context.d.ts +32 -0
- package/dist/types/rsc/handler.d.ts +9 -0
- package/dist/types/rsc/helpers.d.ts +127 -0
- package/dist/types/rsc/index.d.ts +17 -0
- package/dist/types/rsc/json-route-result.d.ts +20 -0
- package/dist/types/rsc/loader-fetch.d.ts +14 -0
- package/dist/types/rsc/manifest-init.d.ts +18 -0
- package/dist/types/rsc/nonce.d.ts +38 -0
- package/dist/types/rsc/origin-guard.d.ts +50 -0
- package/dist/types/rsc/progressive-enhancement.d.ts +19 -0
- package/dist/types/rsc/redirect-guard.d.ts +37 -0
- package/dist/types/rsc/render-pipeline.d.ts +148 -0
- package/dist/types/rsc/response-cache-serve.d.ts +46 -0
- package/dist/types/rsc/response-error.d.ts +19 -0
- package/dist/types/rsc/response-route-handler.d.ts +29 -0
- package/dist/types/rsc/routine-plan.d.ts +124 -0
- package/dist/types/rsc/rsc-rendering.d.ts +18 -0
- package/dist/types/rsc/runtime-warnings.d.ts +22 -0
- package/dist/types/rsc/server-action.d.ts +68 -0
- package/dist/types/rsc/shell-build-manifest.d.ts +90 -0
- package/dist/types/rsc/shell-capture-constants.d.ts +44 -0
- package/dist/types/rsc/shell-capture.d.ts +425 -0
- package/dist/types/rsc/shell-serve.d.ts +200 -0
- package/dist/types/rsc/ssr-setup.d.ts +73 -0
- package/dist/types/rsc/stream-idle.d.ts +60 -0
- package/dist/types/rsc/transition-gate.d.ts +23 -0
- package/dist/types/rsc/types.d.ts +353 -0
- package/dist/types/runtime-env.d.ts +1 -0
- package/dist/types/search-params.d.ts +125 -0
- package/dist/types/segment-content-promise.d.ts +13 -0
- package/dist/types/segment-fragments.d.ts +79 -0
- package/dist/types/segment-loader-promise.d.ts +22 -0
- package/dist/types/segment-system.d.ts +86 -0
- package/dist/types/serialize.d.ts +164 -0
- package/dist/types/server/context.d.ts +520 -0
- package/dist/types/server/cookie-parse.d.ts +10 -0
- package/dist/types/server/cookie-store.d.ts +107 -0
- package/dist/types/server/fetchable-loader-store.d.ts +20 -0
- package/dist/types/server/handle-store.d.ts +131 -0
- package/dist/types/server/loader-registry.d.ts +32 -0
- package/dist/types/server/request-context.d.ts +717 -0
- package/dist/types/server/root-layout.d.ts +3 -0
- package/dist/types/server.d.ts +16 -0
- package/dist/types/ssr/index.d.ts +271 -0
- package/dist/types/ssr/inject-rsc-eager.d.ts +3 -0
- package/dist/types/ssr/preinit-client-references.d.ts +71 -0
- package/dist/types/ssr/ssr-root.d.ts +84 -0
- package/dist/types/ssr-suspension-warning.d.ts +19 -0
- package/dist/types/static-handler.d.ts +71 -0
- package/dist/types/testing/cache-status.d.ts +63 -0
- package/dist/types/testing/collect-handle.d.ts +20 -0
- package/dist/types/testing/dispatch.d.ts +127 -0
- package/dist/types/testing/dom.entry.d.ts +15 -0
- package/dist/types/testing/e2e/fixture.d.ts +37 -0
- package/dist/types/testing/e2e/index.d.ts +31 -0
- package/dist/types/testing/e2e/matchers.d.ts +17 -0
- package/dist/types/testing/e2e/page-helpers.d.ts +86 -0
- package/dist/types/testing/e2e/parity.d.ts +111 -0
- package/dist/types/testing/e2e/server.d.ts +35 -0
- package/dist/types/testing/flight-matchers.d.ts +55 -0
- package/dist/types/testing/flight-normalize.d.ts +1 -0
- package/dist/types/testing/flight-tree.d.ts +192 -0
- package/dist/types/testing/flight.d.ts +115 -0
- package/dist/types/testing/flight.entry.d.ts +27 -0
- package/dist/types/testing/generated-routes.d.ts +66 -0
- package/dist/types/testing/index.d.ts +54 -0
- package/dist/types/testing/internal/context.d.ts +225 -0
- package/dist/types/testing/internal/flight-client-globals.d.ts +1 -0
- package/dist/types/testing/internal/seed-vars.d.ts +30 -0
- package/dist/types/testing/render-handler.d.ts +160 -0
- package/dist/types/testing/render-route.d.ts +265 -0
- package/dist/types/testing/run-loader.d.ts +195 -0
- package/dist/types/testing/run-middleware.d.ts +132 -0
- package/dist/types/testing/run-transition-when.d.ts +78 -0
- package/dist/types/testing/shell-status.d.ts +81 -0
- package/dist/types/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
- package/dist/types/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
- package/dist/types/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
- package/dist/types/testing/vitest-stubs/version.d.ts +1 -0
- package/dist/types/testing/vitest.d.ts +205 -0
- package/dist/types/theme/ThemeProvider.d.ts +13 -0
- package/dist/types/theme/ThemeScript.d.ts +45 -0
- package/dist/types/theme/constants.d.ts +39 -0
- package/dist/types/theme/index.d.ts +29 -0
- package/dist/types/theme/theme-context.d.ts +21 -0
- package/dist/types/theme/theme-script.d.ts +26 -0
- package/dist/types/theme/types.d.ts +162 -0
- package/dist/types/theme/use-theme.d.ts +8 -0
- package/dist/types/types/boundaries.d.ts +115 -0
- package/dist/types/types/cache-types.d.ts +191 -0
- package/dist/types/types/error-types.d.ts +114 -0
- package/dist/types/types/global-namespace.d.ts +90 -0
- package/dist/types/types/handler-context.d.ts +658 -0
- package/dist/types/types/index.d.ts +11 -0
- package/dist/types/types/loader-types.d.ts +240 -0
- package/dist/types/types/request-scope.d.ts +93 -0
- package/dist/types/types/route-config.d.ts +105 -0
- package/dist/types/types/route-entry.d.ts +98 -0
- package/dist/types/types/segments.d.ts +254 -0
- package/dist/types/types.d.ts +1 -0
- package/dist/types/urls/include-helper.d.ts +17 -0
- package/dist/types/urls/include-provider.d.ts +27 -0
- package/dist/types/urls/index.d.ts +6 -0
- package/dist/types/urls/path-helper-types.d.ts +207 -0
- package/dist/types/urls/path-helper.d.ts +12 -0
- package/dist/types/urls/pattern-types.d.ts +166 -0
- package/dist/types/urls/response-types.d.ts +67 -0
- package/dist/types/urls/type-extraction.d.ts +157 -0
- package/dist/types/urls/urls-function.d.ts +24 -0
- package/dist/types/urls.d.ts +1 -0
- package/dist/types/use-loader.d.ts +150 -0
- package/dist/types/vercel/index.d.ts +10 -0
- package/dist/types/vercel/tracing.d.ts +71 -0
- package/dist/types/vite/debug.d.ts +80 -0
- package/dist/types/vite/discovery/bundle-postprocess.d.ts +12 -0
- package/dist/types/vite/discovery/client-urls-projection.d.ts +53 -0
- package/dist/types/vite/discovery/dev-prerender-cache.d.ts +65 -0
- package/dist/types/vite/discovery/discover-routers.d.ts +17 -0
- package/dist/types/vite/discovery/discovery-errors.d.ts +113 -0
- package/dist/types/vite/discovery/gate-state.d.ts +79 -0
- package/dist/types/vite/discovery/prerender-collection.d.ts +24 -0
- package/dist/types/vite/discovery/route-types-writer.d.ts +32 -0
- package/dist/types/vite/discovery/self-gen-tracking.d.ts +22 -0
- package/dist/types/vite/discovery/shell-prerender-phase.d.ts +40 -0
- package/dist/types/vite/discovery/state.d.ts +170 -0
- package/dist/types/vite/discovery/virtual-module-codegen.d.ts +15 -0
- package/dist/types/vite/encryption-key.d.ts +2 -0
- package/dist/types/vite/index.d.ts +11 -0
- package/dist/types/vite/inject-client-debug.d.ts +56 -0
- package/dist/types/vite/plugin-types.d.ts +298 -0
- package/dist/types/vite/plugins/cjs-to-esm.d.ts +6 -0
- package/dist/types/vite/plugins/client-ref-dedup.d.ts +29 -0
- package/dist/types/vite/plugins/client-ref-hashing.d.ts +35 -0
- package/dist/types/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
- package/dist/types/vite/plugins/expose-action-id.d.ts +18 -0
- package/dist/types/vite/plugins/expose-id-utils.d.ts +37 -0
- package/dist/types/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
- package/dist/types/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
- package/dist/types/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
- package/dist/types/vite/plugins/expose-ids/router-transform.d.ts +13 -0
- package/dist/types/vite/plugins/expose-ids/types.d.ts +29 -0
- package/dist/types/vite/plugins/expose-internal-ids.d.ts +16 -0
- package/dist/types/vite/plugins/performance-tracks.d.ts +25 -0
- package/dist/types/vite/plugins/refresh-cmd.d.ts +20 -0
- package/dist/types/vite/plugins/server-ref-hashing.d.ts +24 -0
- package/dist/types/vite/plugins/server-reference-pattern.d.ts +1 -0
- package/dist/types/vite/plugins/use-cache-transform.d.ts +20 -0
- package/dist/types/vite/plugins/vercel-output.d.ts +85 -0
- package/dist/types/vite/plugins/version-injector.d.ts +21 -0
- package/dist/types/vite/plugins/version-plugin.d.ts +19 -0
- package/dist/types/vite/plugins/virtual-entries.d.ts +36 -0
- package/dist/types/vite/plugins/virtual-stub-plugin.d.ts +7 -0
- package/dist/types/vite/rango.d.ts +29 -0
- package/dist/types/vite/router-discovery.d.ts +23 -0
- package/dist/types/vite/utils/ast-handler-extract.d.ts +64 -0
- package/dist/types/vite/utils/banner.d.ts +2 -0
- package/dist/types/vite/utils/bundle-analysis.d.ts +28 -0
- package/dist/types/vite/utils/client-chunks.d.ts +55 -0
- package/dist/types/vite/utils/directive-prologue.d.ts +16 -0
- package/dist/types/vite/utils/forward-user-plugins.d.ts +37 -0
- package/dist/types/vite/utils/manifest-utils.d.ts +7 -0
- package/dist/types/vite/utils/package-resolution.d.ts +6 -0
- package/dist/types/vite/utils/prerender-utils.d.ts +32 -0
- package/dist/types/vite/utils/shared-utils.d.ts +67 -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 +12042 -1346
- 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/{src/vite/package-resolution.ts → dist/vite/package-resolution.js} +53 -66
- 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/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +12 -16
- package/dist/vite/virtual-entries.js.map +1 -0
- package/package.json +170 -77
- package/skills/api-client/SKILL.md +211 -0
- package/skills/breadcrumbs/SKILL.md +359 -0
- package/skills/bundle-analysis/SKILL.md +159 -0
- package/skills/cache-guide/SKILL.md +492 -0
- package/skills/caching/SKILL.md +452 -26
- package/skills/catalog.json +289 -0
- package/skills/client-urls/SKILL.md +339 -0
- package/skills/cloudflare/SKILL.md +153 -0
- package/skills/cloudflare/agents/openai.yaml +4 -0
- package/skills/cloudflare/references/d1-and-local-dev.md +131 -0
- package/skills/cloudflare/references/streaming-and-deploy.md +107 -0
- package/skills/cloudflare/references/webhooks-and-crypto.md +147 -0
- package/skills/comparison/SKILL.md +50 -0
- package/skills/comparison/agents/openai.yaml +4 -0
- package/skills/comparison/references/framework-comparison.md +858 -0
- package/skills/composability/SKILL.md +292 -0
- package/skills/css/SKILL.md +76 -0
- package/skills/debug-manifest/SKILL.md +16 -18
- package/skills/defer-hydration/SKILL.md +235 -0
- package/skills/deployment-caching/SKILL.md +176 -0
- package/skills/document-cache/SKILL.md +125 -65
- package/skills/fonts/SKILL.md +167 -0
- package/skills/handler-use/SKILL.md +364 -0
- package/skills/hooks/SKILL.md +76 -432
- package/skills/hooks/data.md +282 -0
- package/skills/hooks/handle-and-actions.md +110 -0
- package/skills/hooks/navigation.md +110 -0
- package/skills/hooks/outlets.md +62 -0
- package/skills/hooks/state.md +228 -0
- package/skills/hooks/urls.md +172 -0
- package/skills/host-router/SKILL.md +320 -0
- package/skills/i18n/SKILL.md +276 -0
- package/skills/intercept/SKILL.md +215 -16
- package/skills/layout/SKILL.md +147 -7
- package/skills/links/SKILL.md +360 -33
- package/skills/loader/SKILL.md +762 -51
- package/skills/middleware/SKILL.md +251 -38
- package/skills/migrate-nextjs/SKILL.md +854 -0
- package/skills/migrate-nextjs/backend-host-swap.md +120 -0
- package/skills/migrate-react-router/SKILL.md +189 -0
- package/skills/migrate-react-router/component-migration.md +201 -0
- package/skills/migrate-react-router/data-and-actions.md +236 -0
- package/skills/migrate-react-router/route-mapping.md +284 -0
- package/skills/mime-routes/SKILL.md +165 -0
- package/skills/observability/SKILL.md +231 -0
- package/skills/parallel/SKILL.md +327 -4
- package/skills/ppr/SKILL.md +918 -0
- package/skills/prerender/SKILL.md +751 -0
- package/skills/rango/SKILL.md +387 -17
- package/skills/react-compiler/SKILL.md +168 -0
- package/skills/response-routes/SKILL.md +539 -0
- package/skills/route/SKILL.md +399 -15
- package/skills/router-setup/SKILL.md +270 -34
- package/skills/scripts/SKILL.md +189 -0
- package/skills/server-actions/SKILL.md +776 -0
- package/skills/shell-manifest/SKILL.md +194 -0
- package/skills/streams-and-websockets/SKILL.md +283 -0
- package/skills/tailwind/SKILL.md +153 -0
- package/skills/testing/SKILL.md +131 -0
- package/skills/testing/bindings.md +103 -0
- package/skills/testing/cache-prerender.md +172 -0
- package/skills/testing/client-components.md +131 -0
- package/skills/testing/e2e-parity.md +125 -0
- package/skills/testing/flight.md +91 -0
- package/skills/testing/handles.md +153 -0
- package/skills/testing/loader.md +130 -0
- package/skills/testing/middleware.md +99 -0
- package/skills/testing/render-handler.md +122 -0
- package/skills/testing/response-routes.md +95 -0
- package/skills/testing/reverse-and-types.md +85 -0
- package/skills/testing/server-actions.md +107 -0
- package/skills/testing/server-tree.md +128 -0
- package/skills/testing/setup.md +123 -0
- package/skills/theme/SKILL.md +16 -12
- package/skills/typesafety/SKILL.md +45 -387
- package/skills/typesafety/env-and-bindings.md +254 -0
- package/skills/typesafety/generated-files-and-cli.md +342 -0
- package/skills/typesafety/params-and-search.md +153 -0
- package/skills/typesafety/route-types.md +213 -0
- package/skills/use-cache/SKILL.md +430 -0
- package/skills/vercel/SKILL.md +149 -0
- package/skills/view-transitions/SKILL.md +341 -0
- package/src/__augment-tests__/augment.ts +81 -0
- package/src/__augment-tests__/augmented.check.ts +116 -0
- package/src/__internal.ts +77 -44
- package/src/bin/rango.ts +325 -0
- package/src/browser/action-coordinator.ts +114 -0
- package/src/browser/action-fence.ts +47 -0
- package/src/browser/app-shell.ts +39 -0
- package/src/browser/app-version.ts +14 -0
- package/src/browser/connection-warmup.ts +134 -0
- package/src/browser/cookie-name.ts +140 -0
- package/src/browser/dev-discovery.ts +66 -0
- package/src/browser/event-controller.ts +477 -217
- package/src/browser/history-state.ts +101 -0
- package/src/browser/index.ts +3 -3
- package/src/browser/intercept-utils.ts +52 -0
- package/src/browser/invalidate-client-cache.ts +52 -0
- package/src/browser/link-interceptor.ts +487 -18
- package/src/browser/logging.ts +83 -0
- package/src/browser/merge-segment-loaders.ts +23 -13
- package/src/browser/navigation-bridge.ts +471 -570
- package/src/browser/navigation-client.ts +343 -79
- package/src/browser/navigation-store-handle.ts +38 -0
- package/src/browser/navigation-store.ts +228 -366
- package/src/browser/navigation-transaction.ts +247 -0
- package/src/browser/network-error-handler.ts +88 -0
- package/src/browser/notify-listeners.ts +22 -0
- package/src/browser/partial-update.ts +491 -365
- package/src/browser/prefetch/cache.ts +457 -0
- package/src/browser/prefetch/default-strategy.ts +74 -0
- package/src/browser/prefetch/fetch.ts +548 -0
- package/src/browser/prefetch/invalidation.ts +30 -0
- package/src/browser/prefetch/loader.ts +111 -0
- package/src/browser/prefetch/observer.ts +93 -0
- package/src/browser/prefetch/policy.ts +48 -0
- package/src/browser/prefetch/queue.ts +209 -0
- package/src/browser/prefetch/resource-ready.ts +77 -0
- package/src/browser/prefetch/runtime.ts +6 -0
- package/src/browser/rango-state.ts +215 -0
- package/src/browser/react/Link.tsx +332 -85
- package/src/browser/react/NavigationProvider.tsx +275 -109
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/context.ts +15 -0
- package/src/browser/react/filter-segment-order.ts +70 -0
- package/src/browser/react/index.ts +0 -48
- package/src/browser/react/location-state-shared.ts +272 -60
- package/src/browser/react/location-state.ts +90 -20
- package/src/browser/react/mount-context.ts +6 -1
- 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 +35 -66
- package/src/browser/react/use-handle.ts +39 -132
- package/src/browser/react/use-href.tsx +9 -2
- package/src/browser/react/use-link-status.ts +39 -13
- package/src/browser/react/use-navigation.ts +53 -69
- package/src/browser/react/use-params.ts +75 -0
- package/src/browser/react/use-pathname.ts +47 -0
- package/src/browser/react/use-reverse.ts +106 -0
- package/src/browser/react/use-router.ts +127 -0
- package/src/browser/react/use-search-params.ts +174 -0
- package/src/browser/react/use-segments.ts +72 -99
- package/src/browser/response-adapter.ts +164 -0
- package/src/browser/rsc-router.tsx +446 -74
- package/src/browser/scroll-restoration.ts +140 -50
- package/src/browser/segment-reconciler.ts +253 -0
- package/src/browser/segment-structure-assert.ts +17 -1
- package/src/browser/server-action-bridge.ts +707 -603
- package/src/browser/types.ts +266 -75
- package/src/browser/validate-redirect-origin.ts +56 -0
- package/src/build/collect-fallback-refs.ts +107 -0
- package/src/build/generate-manifest.ts +324 -84
- package/src/build/generate-route-types.ts +41 -0
- package/src/build/index.ts +22 -1
- package/src/build/merge-full-manifests.ts +161 -0
- package/src/build/prefix-tree-utils.ts +123 -0
- package/src/build/route-trie.ts +54 -0
- package/src/build/route-types/ast-helpers.ts +25 -0
- package/src/build/route-types/ast-route-extraction.ts +105 -0
- package/src/build/route-types/codegen.ts +113 -0
- package/src/build/route-types/include-resolution.ts +867 -0
- package/src/build/route-types/param-extraction.ts +51 -0
- package/src/build/route-types/per-module-writer.ts +149 -0
- package/src/build/route-types/router-processing.ts +726 -0
- package/src/build/route-types/scan-filter.ts +85 -0
- package/src/build/route-types/source-scan.ts +216 -0
- package/src/build/runtime-discovery.ts +234 -0
- package/src/cache/background-task.ts +34 -0
- package/src/cache/cache-error.ts +104 -0
- package/src/cache/cache-exec-scope.ts +47 -0
- package/src/cache/cache-key-utils.ts +102 -0
- package/src/cache/cache-policy.ts +199 -0
- package/src/cache/cache-runtime.ts +787 -0
- package/src/cache/cache-scope.ts +478 -342
- package/src/cache/cache-tag.ts +149 -0
- package/src/cache/cf/cf-base64.ts +33 -0
- package/src/cache/cf/cf-cache-constants.ts +134 -0
- package/src/cache/cf/cf-cache-store.ts +3397 -152
- package/src/cache/cf/cf-cache-types.ts +417 -0
- package/src/cache/cf/cf-kv-utils.ts +84 -0
- package/src/cache/cf/cf-tag-marker-memo.ts +108 -0
- package/src/cache/cf/cf-zone-purge.ts +101 -0
- package/src/cache/cf/index.ts +21 -16
- package/src/cache/document-cache.ts +275 -105
- package/src/cache/handle-capture.ts +81 -0
- package/src/cache/handle-snapshot.ts +132 -0
- package/src/cache/index.ts +33 -35
- package/src/cache/memory-segment-store.ts +457 -30
- package/src/cache/profile-registry.ts +88 -0
- package/src/cache/read-through-swr.ts +184 -0
- package/src/cache/search-params-filter.ts +118 -0
- package/src/cache/segment-codec.ts +311 -0
- package/src/cache/shell-snapshot.ts +516 -0
- package/src/cache/tag-invalidation.ts +230 -0
- package/src/cache/taint.ts +172 -0
- package/src/cache/types.ts +405 -212
- package/src/cache/vercel/index.ts +11 -0
- package/src/cache/vercel/vercel-cache-store.ts +1264 -0
- package/src/client-urls/client-root.tsx +168 -0
- package/src/client-urls/client-urls.ts +779 -0
- package/src/client-urls/navigation.ts +237 -0
- package/src/client-urls/revalidation-protocol.ts +56 -0
- package/src/client-urls/server-projection.ts +670 -0
- package/src/client-urls/types.ts +202 -0
- package/src/client.rsc.tsx +55 -21
- package/src/client.tsx +179 -330
- package/src/cloudflare/index.ts +11 -0
- package/src/cloudflare/tracing.ts +112 -0
- package/src/component-utils.ts +23 -4
- package/src/components/DefaultDocument.tsx +13 -3
- package/src/context-var.ts +168 -0
- package/src/debug.ts +19 -9
- package/src/decode-loader-results.ts +165 -0
- package/src/defer.ts +185 -0
- package/src/deps/ssr.ts +4 -2
- package/src/dev-discovery-protocol.ts +11 -0
- package/src/encode-kv.ts +49 -0
- package/src/errors.ts +149 -3
- package/src/escape-script.ts +52 -0
- package/src/handle.ts +111 -55
- package/src/handles/MetaTags.tsx +83 -59
- package/src/handles/Scripts.tsx +183 -0
- package/src/handles/breadcrumbs.ts +93 -0
- package/src/handles/deferred-resolution.ts +134 -0
- package/src/handles/is-thenable.ts +16 -0
- package/src/handles/meta.ts +44 -53
- package/src/handles/script.ts +244 -0
- package/src/host/cookie-handler.ts +20 -65
- package/src/host/errors.ts +21 -30
- package/src/host/index.ts +13 -9
- package/src/host/pattern-matcher.ts +50 -79
- package/src/host/router.ts +151 -121
- package/src/host/testing.ts +45 -32
- package/src/host/types.ts +52 -11
- package/src/host/utils.ts +2 -2
- package/src/href-client.ts +236 -31
- package/src/index.rsc.ts +252 -20
- package/src/index.ts +343 -30
- package/src/internal-debug.ts +12 -0
- package/src/loader-redirect.tsx +64 -0
- package/src/loader-store.ts +500 -0
- package/src/loader.rsc.ts +39 -163
- package/src/loader.ts +31 -13
- package/src/missing-id-error.ts +68 -0
- package/src/outlet-context.ts +21 -1
- package/src/outlet-provider.tsx +59 -0
- package/src/prerender/build-shell-capture.ts +453 -0
- package/src/prerender/param-hash.ts +37 -0
- package/src/prerender/shell-manifest-key.ts +20 -0
- package/src/prerender/store.ts +195 -0
- package/src/prerender.ts +592 -0
- package/src/redirect-origin.ts +172 -0
- package/src/regex-escape.ts +8 -0
- package/src/render-error-thrower.tsx +20 -0
- package/src/response-utils.ts +62 -0
- package/src/reverse.ts +380 -0
- package/src/root-error-boundary.tsx +42 -48
- package/src/route-content-wrapper.tsx +123 -78
- package/src/route-definition/dsl-helpers.ts +1150 -0
- package/src/route-definition/helper-factories.ts +88 -0
- package/src/route-definition/helpers-types.ts +522 -0
- package/src/route-definition/index.ts +54 -0
- package/src/route-definition/redirect.ts +133 -0
- package/src/route-definition/resolve-handler-use.ts +160 -0
- package/src/route-definition/use-item-types.ts +29 -0
- package/src/route-definition.ts +1 -1428
- package/src/route-map-builder.ts +249 -127
- package/src/route-name.ts +53 -0
- package/src/route-types.ts +87 -45
- package/src/router/basename.ts +14 -0
- package/src/router/content-negotiation.ts +305 -0
- package/src/router/debug-manifest.ts +72 -0
- package/src/router/error-handling.ts +119 -38
- package/src/router/find-match.ts +259 -0
- package/src/router/handler-context.ts +439 -86
- package/src/router/instrument.ts +401 -0
- package/src/router/intercept-resolution.ts +479 -0
- package/src/router/lazy-includes.ts +261 -0
- package/src/router/loader-resolution.ts +714 -142
- package/src/router/logging.ts +245 -0
- package/src/router/manifest.ts +225 -63
- package/src/router/match-api.ts +591 -0
- package/src/router/match-context.ts +5 -25
- package/src/router/match-handlers.ts +537 -0
- package/src/router/match-middleware/background-revalidation.ts +128 -97
- package/src/router/match-middleware/cache-lookup.ts +537 -73
- package/src/router/match-middleware/cache-store.ts +214 -60
- package/src/router/match-middleware/intercept-resolution.ts +56 -38
- package/src/router/match-middleware/segment-resolution.ts +71 -19
- package/src/router/match-pipelines.ts +11 -87
- package/src/router/match-result.ts +150 -53
- package/src/router/metrics.ts +235 -29
- package/src/router/middleware-types.ts +110 -0
- package/src/router/middleware.ts +526 -441
- package/src/router/navigation-snapshot.ts +173 -0
- package/src/router/params-util.ts +23 -0
- package/src/router/parse-pattern.ts +115 -0
- package/src/router/pattern-matching.ts +348 -149
- package/src/router/prefetch-cache-ttl.ts +51 -0
- package/src/router/prefetch-default.ts +59 -0
- package/src/router/prefetch-limits.ts +37 -0
- package/src/router/prerender-match.ts +592 -0
- package/src/router/preview-match.ts +102 -0
- package/src/router/request-classification.ts +291 -0
- package/src/router/revalidation.ts +252 -90
- package/src/router/route-snapshot.ts +256 -0
- package/src/router/route-trie-builder.ts +334 -0
- package/src/router/router-context.ts +45 -48
- package/src/router/router-interfaces.ts +614 -0
- package/src/router/router-options.ts +842 -0
- package/src/router/router-registry.ts +21 -0
- package/src/router/segment-resolution/fresh.ts +879 -0
- package/src/router/segment-resolution/helpers.ts +346 -0
- package/src/router/segment-resolution/loader-cache.ts +368 -0
- package/src/router/segment-resolution/loader-mask.ts +60 -0
- package/src/router/segment-resolution/loader-snapshot.ts +259 -0
- package/src/router/segment-resolution/mask-nested.ts +99 -0
- package/src/router/segment-resolution/revalidation.ts +1376 -0
- package/src/router/segment-resolution/static-store.ts +107 -0
- package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
- package/src/router/segment-resolution/view-transition-default.ts +60 -0
- package/src/router/segment-resolution.ts +25 -0
- package/src/router/segment-wrappers.ts +292 -0
- package/src/router/state-cookie-name.ts +33 -0
- package/src/router/substitute-pattern-params.ts +75 -0
- package/src/router/telemetry-otel.ts +270 -0
- package/src/router/telemetry.ts +386 -0
- package/src/router/timeout.ts +179 -0
- package/src/router/tracing.ts +235 -0
- package/src/router/transition-when.ts +76 -0
- package/src/router/trie-matching.ts +351 -0
- package/src/router/types.ts +60 -39
- package/src/router/url-params.ts +57 -0
- package/src/router.ts +911 -4253
- package/src/rsc/capture-queue.ts +218 -0
- package/src/rsc/full-payload.ts +77 -0
- package/src/rsc/handler-context.ts +47 -0
- package/src/rsc/handler.ts +1226 -834
- package/src/rsc/helpers.ts +351 -19
- package/src/rsc/index.ts +2 -25
- package/src/rsc/json-route-result.ts +38 -0
- package/src/rsc/loader-fetch.ts +305 -0
- package/src/rsc/manifest-init.ts +89 -0
- package/src/rsc/nonce.ts +39 -0
- package/src/rsc/origin-guard.ts +155 -0
- package/src/rsc/progressive-enhancement.ts +686 -0
- package/src/rsc/redirect-guard.ts +102 -0
- package/src/rsc/render-pipeline.ts +611 -0
- package/src/rsc/response-cache-serve.ts +259 -0
- package/src/rsc/response-error.ts +104 -0
- package/src/rsc/response-route-handler.ts +221 -0
- package/src/rsc/routine-plan.ts +359 -0
- package/src/rsc/rsc-rendering.ts +1729 -0
- package/src/rsc/runtime-warnings.ts +55 -0
- package/src/rsc/server-action.ts +639 -0
- package/src/rsc/shell-build-manifest.ts +343 -0
- package/src/rsc/shell-capture-constants.ts +45 -0
- package/src/rsc/shell-capture.ts +2135 -0
- package/src/rsc/shell-serve.ts +350 -0
- package/src/rsc/ssr-setup.ts +236 -0
- package/src/rsc/stream-idle.ts +137 -0
- package/src/rsc/transition-gate.ts +86 -0
- package/src/rsc/types.ts +167 -14
- package/src/runtime-env.ts +18 -0
- package/src/search-params.ts +235 -0
- package/src/segment-content-promise.ts +67 -0
- package/src/segment-fragments.ts +165 -0
- package/src/segment-loader-promise.ts +167 -0
- package/src/segment-system.tsx +544 -136
- package/src/serialize.ts +243 -0
- package/src/server/context.ts +741 -90
- package/src/server/cookie-parse.ts +32 -0
- package/src/server/cookie-store.ts +337 -0
- package/src/server/fetchable-loader-store.ts +37 -0
- package/src/server/handle-store.ts +278 -60
- package/src/server/loader-registry.ts +51 -100
- package/src/server/request-context.ts +1296 -161
- package/src/server.ts +38 -128
- package/src/ssr/index.tsx +716 -140
- package/src/ssr/inject-rsc-eager.ts +167 -0
- package/src/ssr/preinit-client-references.ts +106 -0
- package/src/ssr/ssr-root.tsx +305 -0
- package/src/ssr-suspension-warning.ts +67 -0
- package/src/static-handler.ts +139 -0
- package/src/testing/cache-status.ts +162 -0
- package/src/testing/collect-handle.ts +46 -0
- package/src/testing/dispatch.ts +951 -0
- package/src/testing/dom.entry.ts +22 -0
- package/src/testing/e2e/fixture.ts +188 -0
- package/src/testing/e2e/index.ts +147 -0
- package/src/testing/e2e/matchers.ts +35 -0
- package/src/testing/e2e/page-helpers.ts +319 -0
- package/src/testing/e2e/parity.ts +400 -0
- package/src/testing/e2e/server.ts +195 -0
- package/src/testing/flight-matchers.ts +97 -0
- package/src/testing/flight-normalize.ts +11 -0
- package/src/testing/flight-runtime.d.ts +57 -0
- package/src/testing/flight-tree.ts +682 -0
- package/src/testing/flight.entry.ts +52 -0
- package/src/testing/flight.ts +257 -0
- package/src/testing/generated-routes.ts +199 -0
- package/src/testing/index.ts +121 -0
- package/src/testing/internal/context.ts +380 -0
- package/src/testing/internal/flight-client-globals.ts +30 -0
- package/src/testing/internal/seed-vars.ts +54 -0
- package/src/testing/render-handler.ts +371 -0
- package/src/testing/render-route.tsx +667 -0
- package/src/testing/run-loader.ts +423 -0
- package/src/testing/run-middleware.ts +219 -0
- package/src/testing/run-transition-when.ts +197 -0
- package/src/testing/shell-status.ts +206 -0
- package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
- package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
- package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
- package/src/testing/vitest-stubs/version.ts +5 -0
- package/src/testing/vitest.ts +305 -0
- package/src/theme/ThemeProvider.tsx +76 -98
- package/src/theme/ThemeScript.tsx +12 -14
- package/src/theme/constants.ts +57 -15
- package/src/theme/index.ts +3 -20
- package/src/theme/theme-context.ts +5 -35
- package/src/theme/theme-script.ts +43 -39
- package/src/theme/use-theme.ts +0 -3
- package/src/types/boundaries.ts +142 -0
- package/src/types/cache-types.ts +207 -0
- package/src/types/error-types.ts +132 -0
- package/src/types/global-namespace.ts +113 -0
- package/src/types/handler-context.ts +850 -0
- package/src/types/index.ts +82 -0
- package/src/types/loader-types.ts +273 -0
- package/src/types/request-scope.ts +112 -0
- package/src/types/route-config.ts +138 -0
- package/src/types/route-entry.ts +117 -0
- package/src/types/segments.ts +291 -0
- package/src/types.ts +1 -1623
- package/src/urls/include-helper.ts +181 -0
- package/src/urls/include-provider.ts +71 -0
- package/src/urls/index.ts +44 -0
- package/src/urls/path-helper-types.ts +435 -0
- package/src/urls/path-helper.ts +284 -0
- package/src/urls/pattern-types.ts +189 -0
- package/src/urls/response-types.ts +109 -0
- package/src/urls/type-extraction.ts +316 -0
- package/src/urls/urls-function.ts +80 -0
- package/src/urls.ts +1 -802
- package/src/use-loader.tsx +487 -138
- package/src/vercel/index.ts +11 -0
- package/src/vercel/tracing.ts +89 -0
- package/src/vite/debug.ts +185 -0
- package/src/vite/discovery/bundle-postprocess.ts +185 -0
- package/src/vite/discovery/client-urls-projection.ts +322 -0
- package/src/vite/discovery/dev-prerender-cache.ts +117 -0
- package/src/vite/discovery/discover-routers.ts +375 -0
- package/src/vite/discovery/discovery-errors.ts +255 -0
- package/src/vite/discovery/gate-state.ts +171 -0
- package/src/vite/discovery/prerender-collection.ts +494 -0
- package/src/vite/discovery/route-types-writer.ts +214 -0
- package/src/vite/discovery/self-gen-tracking.ts +73 -0
- package/src/vite/discovery/shell-prerender-phase.ts +397 -0
- package/src/vite/discovery/state.ts +215 -0
- package/src/vite/discovery/virtual-module-codegen.ts +342 -0
- package/src/vite/encryption-key.ts +29 -0
- package/src/vite/index.ts +31 -1137
- package/src/vite/inject-client-debug.ts +88 -0
- package/src/vite/plugin-types.ts +336 -0
- package/src/vite/plugins/cjs-to-esm.ts +90 -0
- package/src/vite/plugins/client-ref-dedup.ts +382 -0
- package/src/vite/plugins/client-ref-hashing.ts +118 -0
- 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 +194 -0
- package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +130 -136
- package/src/vite/plugins/expose-id-utils.ts +332 -0
- package/src/vite/plugins/expose-ids/export-analysis.ts +363 -0
- package/src/vite/plugins/expose-ids/handler-transform.ts +130 -0
- package/src/vite/plugins/expose-ids/loader-transform.ts +64 -0
- package/src/vite/plugins/expose-ids/router-transform.ts +199 -0
- package/src/vite/plugins/expose-ids/types.ts +45 -0
- package/src/vite/plugins/expose-internal-ids.ts +851 -0
- package/src/vite/plugins/performance-tracks.ts +89 -0
- package/src/vite/plugins/refresh-cmd.ts +127 -0
- package/src/vite/plugins/server-ref-hashing.ts +74 -0
- package/src/vite/plugins/server-reference-pattern.ts +10 -0
- package/src/vite/plugins/use-cache-transform.ts +313 -0
- package/src/vite/plugins/vercel-output.ts +384 -0
- package/src/vite/plugins/version-injector.ts +93 -0
- package/src/vite/plugins/version-plugin.ts +271 -0
- package/src/vite/plugins/virtual-entries.ts +286 -0
- package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
- package/src/vite/rango.ts +609 -0
- package/src/vite/router-discovery.ts +2400 -0
- package/src/vite/utils/ast-handler-extract.ts +508 -0
- package/src/vite/utils/banner.ts +36 -0
- package/src/vite/utils/bundle-analysis.ts +132 -0
- package/src/vite/utils/client-chunks.ts +184 -0
- package/src/vite/utils/directive-prologue.ts +40 -0
- package/src/vite/utils/forward-user-plugins.ts +171 -0
- package/src/vite/utils/manifest-utils.ts +12 -0
- package/src/vite/utils/package-resolution.ts +90 -0
- package/src/vite/utils/prerender-utils.ts +268 -0
- package/src/vite/utils/shared-utils.ts +283 -0
- package/CLAUDE.md +0 -43
- package/src/browser/lru-cache.ts +0 -69
- package/src/browser/request-controller.ts +0 -164
- package/src/browser/shallow.ts +0 -35
- package/src/cache/memory-store.ts +0 -253
- package/src/href.ts +0 -255
- package/src/server/route-manifest-cache.ts +0 -173
- package/src/vite/expose-handle-id.ts +0 -209
- package/src/vite/expose-loader-id.ts +0 -426
- package/src/vite/expose-location-state-id.ts +0 -177
- /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
|
@@ -8,7 +8,13 @@ import type {
|
|
|
8
8
|
ResolvedSegment,
|
|
9
9
|
RscMetadata,
|
|
10
10
|
HandleData,
|
|
11
|
+
StreamingToken,
|
|
11
12
|
} from "./types.js";
|
|
13
|
+
import {
|
|
14
|
+
filterSegmentOrder,
|
|
15
|
+
filterRouteSegmentIds,
|
|
16
|
+
} from "./react/filter-segment-order.js";
|
|
17
|
+
import { notifyListeners } from "./notify-listeners.js";
|
|
12
18
|
|
|
13
19
|
// Polyfill Symbol.dispose for Safari and older browsers
|
|
14
20
|
if (typeof Symbol.dispose === "undefined") {
|
|
@@ -40,7 +46,7 @@ export interface NavigationEntry {
|
|
|
40
46
|
abort: AbortController;
|
|
41
47
|
phase: NavigationPhase;
|
|
42
48
|
startedAt: number;
|
|
43
|
-
options?: NavigateOptions;
|
|
49
|
+
options?: NavigateOptions & { skipLoadingState?: boolean };
|
|
44
50
|
}
|
|
45
51
|
|
|
46
52
|
/**
|
|
@@ -77,6 +83,8 @@ export interface DerivedNavigationState {
|
|
|
77
83
|
state: "idle" | "loading";
|
|
78
84
|
/** Whether any operation is streaming */
|
|
79
85
|
isStreaming: boolean;
|
|
86
|
+
/** Whether a navigation is active (fetching or streaming, before commit) */
|
|
87
|
+
isNavigating: boolean;
|
|
80
88
|
/** Current committed location */
|
|
81
89
|
location: NavigationLocation;
|
|
82
90
|
/** URL being navigated to (null if idle) */
|
|
@@ -109,20 +117,24 @@ export type ActionStateListener = (state: TrackedActionState) => void;
|
|
|
109
117
|
export type HandleListener = () => void;
|
|
110
118
|
|
|
111
119
|
/**
|
|
112
|
-
* Internal handle state stored in controller
|
|
120
|
+
* Internal handle state stored in controller.
|
|
121
|
+
*
|
|
122
|
+
* Two segment lists are exposed because they serve different consumers:
|
|
123
|
+
*
|
|
124
|
+
* - `segmentOrder` drives handle collection (collectHandleData). Includes
|
|
125
|
+
* parallel slot ids and reorders them after their parent so later-wins
|
|
126
|
+
* collect functions (e.g. Meta) get the right precedence.
|
|
127
|
+
* - `routeSegmentIds` is the layouts-and-routes-only list documented by
|
|
128
|
+
* `useSegments().segmentIds`. Parallels and loader sub-ids are stripped;
|
|
129
|
+
* raw matched order is preserved.
|
|
130
|
+
*
|
|
131
|
+
* Both are derived from the same `matched` input on each setHandleData call
|
|
132
|
+
* so they stay in sync.
|
|
113
133
|
*/
|
|
114
134
|
export interface HandleState {
|
|
115
135
|
data: HandleData;
|
|
116
136
|
segmentOrder: string[];
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Token for tracking an active stream
|
|
121
|
-
* Call end() when the stream completes
|
|
122
|
-
*/
|
|
123
|
-
export interface StreamingToken {
|
|
124
|
-
/** End this streaming operation */
|
|
125
|
-
end(): void;
|
|
137
|
+
routeSegmentIds: string[];
|
|
126
138
|
}
|
|
127
139
|
|
|
128
140
|
/**
|
|
@@ -157,6 +169,22 @@ export interface ActionHandle extends Disposable {
|
|
|
157
169
|
startStreaming(): StreamingToken;
|
|
158
170
|
/** Record segments that were revalidated */
|
|
159
171
|
recordRevalidatedSegments(segmentIds: string[]): void;
|
|
172
|
+
/**
|
|
173
|
+
* Claim the subset of a location-state payload this action may write. A key
|
|
174
|
+
* is claimed only if no later-initiated action in the SAME cohort has already
|
|
175
|
+
* claimed it, so same-key concurrent writes resolve to the last-initiated
|
|
176
|
+
* action while distinct keys from every action survive. Recording the claim
|
|
177
|
+
* stops a later-settling earlier action from overwriting it. Arbitration is
|
|
178
|
+
* scoped to the action's cohort (its originating history entry, captured at
|
|
179
|
+
* startAction), so an action on one entry cannot suppress an action on
|
|
180
|
+
* another that happens to write the same slot.
|
|
181
|
+
*
|
|
182
|
+
* Contract: this guarantees the FINAL value is the last-initiated action's,
|
|
183
|
+
* not that the loser is never momentarily visible. When an earlier-initiated
|
|
184
|
+
* action settles first, its value is merged and observable until the
|
|
185
|
+
* later-initiated winner's response lands and overwrites it.
|
|
186
|
+
*/
|
|
187
|
+
claimLocationState(state: Record<string, unknown>): Record<string, unknown>;
|
|
160
188
|
/** Complete the action with result */
|
|
161
189
|
complete(result?: unknown): void;
|
|
162
190
|
/** Fail the action with error */
|
|
@@ -165,8 +193,8 @@ export interface ActionHandle extends Disposable {
|
|
|
165
193
|
readonly settled: boolean;
|
|
166
194
|
/** Check if any concurrent actions were started */
|
|
167
195
|
hadConcurrentActions: boolean;
|
|
168
|
-
/** Get
|
|
169
|
-
|
|
196
|
+
/** Get raw set of segments revalidated by concurrent actions */
|
|
197
|
+
getRevalidatedSegments(): Set<string>;
|
|
170
198
|
/** Clear consolidation tracking */
|
|
171
199
|
clearConsolidation(): void;
|
|
172
200
|
}
|
|
@@ -176,16 +204,25 @@ export interface ActionHandle extends Disposable {
|
|
|
176
204
|
*/
|
|
177
205
|
export interface EventController {
|
|
178
206
|
// Navigation operations
|
|
179
|
-
startNavigation(
|
|
207
|
+
startNavigation(
|
|
208
|
+
url: string,
|
|
209
|
+
options?: NavigateOptions & { skipLoadingState?: boolean },
|
|
210
|
+
): NavigationHandle;
|
|
180
211
|
abortNavigation(): void;
|
|
181
212
|
|
|
182
213
|
// Action operations
|
|
183
|
-
startAction(
|
|
214
|
+
startAction(
|
|
215
|
+
actionId: string,
|
|
216
|
+
args: unknown[],
|
|
217
|
+
/** Originating history entry key; scopes location-state arbitration. */
|
|
218
|
+
cohort?: string,
|
|
219
|
+
): ActionHandle;
|
|
184
220
|
abortAllActions(): void;
|
|
185
221
|
|
|
186
222
|
// State access
|
|
187
223
|
getState(): DerivedNavigationState;
|
|
188
224
|
getActionState(actionId: string): TrackedActionState;
|
|
225
|
+
getLocation(): NavigationLocation;
|
|
189
226
|
|
|
190
227
|
// Location updates (for popstate where navigation doesn't go through startNavigation)
|
|
191
228
|
setLocation(location: NavigationLocation): void;
|
|
@@ -194,26 +231,115 @@ export interface EventController {
|
|
|
194
231
|
subscribe(listener: StateListener): () => void;
|
|
195
232
|
subscribeToAction(
|
|
196
233
|
actionId: string,
|
|
197
|
-
listener: ActionStateListener
|
|
234
|
+
listener: ActionStateListener,
|
|
198
235
|
): () => void;
|
|
199
236
|
subscribeToHandles(listener: HandleListener): () => void;
|
|
237
|
+
/**
|
|
238
|
+
* Deliver queued location, params, navigation, and handle notifications now.
|
|
239
|
+
* NavigationProvider calls this inside the payload update so React assigns
|
|
240
|
+
* every route-state hook update to the same normal or transition lane.
|
|
241
|
+
*/
|
|
242
|
+
flushRouteState(): void;
|
|
200
243
|
|
|
201
244
|
// Handle operations
|
|
202
245
|
setHandleData(
|
|
203
246
|
data: HandleData,
|
|
204
247
|
matched?: string[],
|
|
205
|
-
isPartial?: boolean
|
|
248
|
+
isPartial?: boolean,
|
|
249
|
+
/**
|
|
250
|
+
* Segment ids that were re-resolved on the server this request (the
|
|
251
|
+
* partial response's `diff`). On a partial update, any existing bucket
|
|
252
|
+
* keyed under one of these ids that has no incoming entry is treated as
|
|
253
|
+
* stale and cleared. Without this, a parallel slot that revalidates but
|
|
254
|
+
* pushes nothing leaves its previous bucket in place forever.
|
|
255
|
+
*/
|
|
256
|
+
resolvedIds?: string[],
|
|
206
257
|
): void;
|
|
207
258
|
getHandleState(): HandleState;
|
|
259
|
+
/**
|
|
260
|
+
* Update ONLY `routeSegmentIds` (what `useSegments` reads) from `matched`,
|
|
261
|
+
* leaving `data` and `segmentOrder` (what `useHandle` collects over) untouched.
|
|
262
|
+
* Used while a deferred handle is resolving: the route has changed (so
|
|
263
|
+
* `useSegments` must reflect the new segment ids) but `useHandle` still holds
|
|
264
|
+
* its previous value until the deferred snapshot is applied.
|
|
265
|
+
*/
|
|
266
|
+
setRouteSegmentIds(matched: string[]): void;
|
|
267
|
+
|
|
268
|
+
// Params operations
|
|
269
|
+
setParams(params: Record<string, string>): void;
|
|
270
|
+
getParams(): Record<string, string>;
|
|
208
271
|
|
|
209
272
|
// Direct state access for advanced use
|
|
210
273
|
getCurrentNavigation(): NavigationEntry | null;
|
|
211
274
|
getInflightActions(): Map<string, ActionEntry>;
|
|
275
|
+
/** Whether any concurrent actions have occurred (shared across all handles) */
|
|
276
|
+
hadAnyConcurrentActions(): boolean;
|
|
212
277
|
}
|
|
213
278
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
279
|
+
type LocationChangeController = Pick<EventController, "getState" | "subscribe">;
|
|
280
|
+
|
|
281
|
+
interface LocationChangeSubscription {
|
|
282
|
+
registrations: Map<
|
|
283
|
+
symbol,
|
|
284
|
+
{ href: string; listener: (href: string) => void }
|
|
285
|
+
>;
|
|
286
|
+
notificationVersion: number;
|
|
287
|
+
unsubscribe: () => void;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
const locationChangeSubscriptions = new WeakMap<
|
|
291
|
+
LocationChangeController,
|
|
292
|
+
LocationChangeSubscription
|
|
293
|
+
>();
|
|
294
|
+
|
|
295
|
+
/** Share one controller subscription across all location-change consumers. */
|
|
296
|
+
export function subscribeToLocationChange(
|
|
297
|
+
eventController: LocationChangeController,
|
|
298
|
+
listener: (href: string) => void,
|
|
299
|
+
): () => void {
|
|
300
|
+
let subscription = locationChangeSubscriptions.get(eventController);
|
|
301
|
+
if (!subscription) {
|
|
302
|
+
subscription = {
|
|
303
|
+
registrations: new Map(),
|
|
304
|
+
notificationVersion: 0,
|
|
305
|
+
unsubscribe: () => {},
|
|
306
|
+
};
|
|
307
|
+
locationChangeSubscriptions.set(eventController, subscription);
|
|
308
|
+
const currentSubscription = subscription;
|
|
309
|
+
subscription.unsubscribe = eventController.subscribe(() => {
|
|
310
|
+
const notificationVersion = ++currentSubscription.notificationVersion;
|
|
311
|
+
const nextHref = eventController.getState().location.href;
|
|
312
|
+
notifyListeners(
|
|
313
|
+
[...currentSubscription.registrations],
|
|
314
|
+
([, registration]) => {
|
|
315
|
+
if (registration.href === nextHref) return;
|
|
316
|
+
registration.href = nextHref;
|
|
317
|
+
registration.listener(nextHref);
|
|
318
|
+
},
|
|
319
|
+
([token, registration]) =>
|
|
320
|
+
currentSubscription.registrations.get(token) === registration,
|
|
321
|
+
() => notificationVersion === currentSubscription.notificationVersion,
|
|
322
|
+
);
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
const token = Symbol();
|
|
327
|
+
subscription.registrations.set(token, {
|
|
328
|
+
href: eventController.getState().location.href,
|
|
329
|
+
listener,
|
|
330
|
+
});
|
|
331
|
+
let active = true;
|
|
332
|
+
return () => {
|
|
333
|
+
if (!active) return;
|
|
334
|
+
active = false;
|
|
335
|
+
subscription!.registrations.delete(token);
|
|
336
|
+
if (subscription!.registrations.size > 0) return;
|
|
337
|
+
if (locationChangeSubscriptions.get(eventController) === subscription) {
|
|
338
|
+
locationChangeSubscriptions.delete(eventController);
|
|
339
|
+
}
|
|
340
|
+
subscription!.unsubscribe();
|
|
341
|
+
};
|
|
342
|
+
}
|
|
217
343
|
|
|
218
344
|
const DEFAULT_ACTION_STATE: TrackedActionState = {
|
|
219
345
|
state: "idle",
|
|
@@ -223,6 +349,13 @@ const DEFAULT_ACTION_STATE: TrackedActionState = {
|
|
|
223
349
|
result: null,
|
|
224
350
|
};
|
|
225
351
|
|
|
352
|
+
// Shared empty inflight-actions list. getState() hands back this exact reference
|
|
353
|
+
// whenever no action is inflight (the overwhelmingly common case), so the derived
|
|
354
|
+
// snapshot's `inflightActions` is referentially stable across notifies instead of
|
|
355
|
+
// a fresh [] each call. Read-only by contract (consumers only read length/spread),
|
|
356
|
+
// same as the shared DEFAULT_ACTION_STATE.
|
|
357
|
+
const EMPTY_INFLIGHT_ACTIONS: InflightAction[] = [];
|
|
358
|
+
|
|
226
359
|
/**
|
|
227
360
|
* Check if a subscription ID matches an action's full ID.
|
|
228
361
|
*
|
|
@@ -230,22 +363,45 @@ const DEFAULT_ACTION_STATE: TrackedActionState = {
|
|
|
230
363
|
* When subscriptionId has no '#', it's just an action name and matches by suffix.
|
|
231
364
|
* This allows useAction("addToCart") to match "hash#addToCart" or "src/file.ts#addToCart".
|
|
232
365
|
*/
|
|
233
|
-
function matchesActionId(
|
|
366
|
+
function matchesActionId(
|
|
367
|
+
subscriptionId: string,
|
|
368
|
+
entryActionId: string,
|
|
369
|
+
): boolean {
|
|
234
370
|
if (subscriptionId.includes("#")) {
|
|
235
|
-
// Full ID: exact match
|
|
236
371
|
return subscriptionId === entryActionId;
|
|
237
372
|
}
|
|
238
|
-
// Action name only: suffix match (matches "anything#actionName")
|
|
239
373
|
return entryActionId.endsWith(`#${subscriptionId}`);
|
|
240
374
|
}
|
|
241
375
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
376
|
+
interface DebouncedNotifier {
|
|
377
|
+
schedule(): void;
|
|
378
|
+
flush(): void;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
// Batch rapid notifications into one task to prevent render storms. The
|
|
382
|
+
// explicit flush lets a React update owner preserve its scheduling lane.
|
|
383
|
+
function makeDebouncedNotifier(listeners: Set<() => void>): DebouncedNotifier {
|
|
384
|
+
let timeout: ReturnType<typeof setTimeout> | null = null;
|
|
385
|
+
const flush = () => {
|
|
386
|
+
if (timeout === null) return;
|
|
387
|
+
clearTimeout(timeout);
|
|
388
|
+
timeout = null;
|
|
389
|
+
notifyListeners(
|
|
390
|
+
[...listeners],
|
|
391
|
+
(listener) => listener(),
|
|
392
|
+
(listener) => listeners.has(listener),
|
|
393
|
+
);
|
|
394
|
+
};
|
|
395
|
+
|
|
396
|
+
return {
|
|
397
|
+
schedule() {
|
|
398
|
+
if (timeout !== null) clearTimeout(timeout);
|
|
399
|
+
timeout = setTimeout(flush, 0);
|
|
400
|
+
},
|
|
401
|
+
flush,
|
|
402
|
+
};
|
|
403
|
+
}
|
|
245
404
|
|
|
246
|
-
/**
|
|
247
|
-
* Configuration for creating an event controller
|
|
248
|
-
*/
|
|
249
405
|
export interface EventControllerConfig {
|
|
250
406
|
initialLocation?: NavigationLocation;
|
|
251
407
|
}
|
|
@@ -261,62 +417,105 @@ export interface EventControllerConfig {
|
|
|
261
417
|
* Actions use mergeMap semantics (all run concurrently, consolidate at end).
|
|
262
418
|
*/
|
|
263
419
|
export function createEventController(
|
|
264
|
-
config?: EventControllerConfig
|
|
420
|
+
config?: EventControllerConfig,
|
|
265
421
|
): EventController {
|
|
266
|
-
// ========================================================================
|
|
267
|
-
// Source of Truth
|
|
268
|
-
// ========================================================================
|
|
269
|
-
|
|
270
|
-
// Current navigation in progress (null = idle)
|
|
271
422
|
let currentNavigation: NavigationEntry | null = null;
|
|
272
423
|
|
|
273
|
-
// All in-flight actions (keyed by unique instance ID)
|
|
274
424
|
const inflightActions = new Map<string, ActionEntry>();
|
|
275
425
|
|
|
276
|
-
// Committed location (updated when navigation completes)
|
|
277
426
|
let location: NavigationLocation =
|
|
278
427
|
config?.initialLocation ??
|
|
279
428
|
(typeof window !== "undefined"
|
|
280
429
|
? new URL(window.location.href)
|
|
281
430
|
: new URL("/", "http://localhost"));
|
|
282
431
|
|
|
283
|
-
// Track if any concurrent actions occurred (for consolidation)
|
|
284
432
|
let hadAnyConcurrentActions = false;
|
|
285
433
|
|
|
286
|
-
// Track segments revalidated by concurrent actions
|
|
287
434
|
const concurrentRevalidatedSegments = new Set<string>();
|
|
288
435
|
|
|
289
|
-
//
|
|
436
|
+
// Monotonic dispatch counter: every startAction() takes the next value
|
|
437
|
+
// (private), so a larger sequence means the action was initiated later.
|
|
438
|
+
let actionDispatchSeq = 0;
|
|
439
|
+
|
|
440
|
+
// Concurrent location-state arbitration, scoped PER COHORT (history entry).
|
|
441
|
+
// Each cohort owns a slotKey->winningDispatchSeq map plus a refcount of its
|
|
442
|
+
// inflight actions; claimLocationState() consults its own cohort's map so
|
|
443
|
+
// same-key writes within one entry resolve to the last-initiated action
|
|
444
|
+
// regardless of settle order, while actions on different entries never
|
|
445
|
+
// compete. A cohort's map is freed once its LAST action's cleanup runs — the
|
|
446
|
+
// same brief post-settle grace (doSettle's 100ms timer) as other action
|
|
447
|
+
// teardown, not when every action everywhere settles — so a long-running
|
|
448
|
+
// action in one cohort can never retain arbitration keys from other cohorts
|
|
449
|
+
// that have since drained. It is never cleared in clearConsolidation, which
|
|
450
|
+
// fires
|
|
451
|
+
// per-action on divert/error and would let a later-settling earlier action
|
|
452
|
+
// wrongly reclaim a key a sibling already won.
|
|
453
|
+
const cohortArbitration = new Map<
|
|
454
|
+
string,
|
|
455
|
+
{ keySeq: Map<string, number>; inflight: number }
|
|
456
|
+
>();
|
|
457
|
+
|
|
290
458
|
let activeStreamCount = 0;
|
|
291
459
|
|
|
292
|
-
// Handle data from RSC payload
|
|
293
460
|
let handleData: HandleData = {};
|
|
294
461
|
let handleSegmentOrder: string[] = [];
|
|
462
|
+
let routeSegmentIds: string[] = [];
|
|
295
463
|
|
|
296
|
-
|
|
297
|
-
// Listeners
|
|
298
|
-
// ========================================================================
|
|
464
|
+
let routeParams: Record<string, string> = {};
|
|
299
465
|
|
|
300
466
|
const stateListeners = new Set<StateListener>();
|
|
301
467
|
const actionListeners = new Map<string, Set<ActionStateListener>>();
|
|
302
468
|
const handleListeners = new Set<HandleListener>();
|
|
303
469
|
|
|
304
|
-
|
|
305
|
-
let notifyTimeout: ReturnType<typeof setTimeout> | null = null;
|
|
470
|
+
const notifyStateListeners = makeDebouncedNotifier(stateListeners);
|
|
306
471
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
472
|
+
// Memoized derived snapshot. Every state mutation already funnels through
|
|
473
|
+
// notify(), so invalidating here (synchronously, before the debounced fire)
|
|
474
|
+
// means a getState() call between two mutations reuses the same object — an
|
|
475
|
+
// unchanged state returns the SAME reference — while any real change recomputes
|
|
476
|
+
// on the next read. Kept null when dirty.
|
|
477
|
+
let cachedDerivedState: DerivedNavigationState | null = null;
|
|
478
|
+
|
|
479
|
+
function notify(): void {
|
|
480
|
+
cachedDerivedState = null;
|
|
481
|
+
notifyStateListeners.schedule();
|
|
315
482
|
}
|
|
316
483
|
|
|
317
|
-
// Debounce per-action notifications
|
|
318
484
|
const actionNotifyTimeouts = new Map<string, ReturnType<typeof setTimeout>>();
|
|
319
485
|
|
|
486
|
+
function notifyActionListenerSets(
|
|
487
|
+
subscriptions: Iterable<[string, Set<ActionStateListener>]>,
|
|
488
|
+
): void {
|
|
489
|
+
const subscriptionSnapshots = [...subscriptions].map(
|
|
490
|
+
([subscriptionId, listeners]) => ({
|
|
491
|
+
listenerSnapshot: [...listeners],
|
|
492
|
+
listeners,
|
|
493
|
+
subscriptionId,
|
|
494
|
+
}),
|
|
495
|
+
);
|
|
496
|
+
function* notifications(): Generator<{
|
|
497
|
+
listener: ActionStateListener;
|
|
498
|
+
listeners: Set<ActionStateListener>;
|
|
499
|
+
state: TrackedActionState;
|
|
500
|
+
}> {
|
|
501
|
+
for (const {
|
|
502
|
+
listenerSnapshot,
|
|
503
|
+
listeners,
|
|
504
|
+
subscriptionId,
|
|
505
|
+
} of subscriptionSnapshots) {
|
|
506
|
+
const state = getActionState(subscriptionId);
|
|
507
|
+
for (const listener of listenerSnapshot) {
|
|
508
|
+
yield { listener, listeners, state };
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
notifyListeners(
|
|
513
|
+
notifications(),
|
|
514
|
+
({ listener, state }) => listener(state),
|
|
515
|
+
({ listener, listeners }) => listeners.has(listener),
|
|
516
|
+
);
|
|
517
|
+
}
|
|
518
|
+
|
|
320
519
|
function notifyAction(actionId: string) {
|
|
321
520
|
const existing = actionNotifyTimeouts.get(actionId);
|
|
322
521
|
if (existing !== undefined) {
|
|
@@ -326,83 +525,85 @@ export function createEventController(
|
|
|
326
525
|
actionId,
|
|
327
526
|
setTimeout(() => {
|
|
328
527
|
actionNotifyTimeouts.delete(actionId);
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
}, 0)
|
|
528
|
+
notifyActionListenerSets(
|
|
529
|
+
[...actionListeners].filter(([subscriptionId]) =>
|
|
530
|
+
matchesActionId(subscriptionId, actionId),
|
|
531
|
+
),
|
|
532
|
+
);
|
|
533
|
+
}, 0),
|
|
338
534
|
);
|
|
339
535
|
}
|
|
340
536
|
|
|
341
|
-
|
|
342
|
-
let handleNotifyTimeout: ReturnType<typeof setTimeout> | null = null;
|
|
537
|
+
const notifyHandles = makeDebouncedNotifier(handleListeners);
|
|
343
538
|
|
|
344
|
-
function
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
}
|
|
348
|
-
handleNotifyTimeout = setTimeout(() => {
|
|
349
|
-
handleNotifyTimeout = null;
|
|
350
|
-
handleListeners.forEach((listener) => listener());
|
|
351
|
-
}, 0);
|
|
539
|
+
function flushRouteState(): void {
|
|
540
|
+
notifyStateListeners.flush();
|
|
541
|
+
notifyHandles.flush();
|
|
352
542
|
}
|
|
353
543
|
|
|
354
|
-
// ========================================================================
|
|
355
|
-
// Derived State
|
|
356
|
-
// ========================================================================
|
|
357
|
-
|
|
358
544
|
function getState(): DerivedNavigationState {
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
545
|
+
if (cachedDerivedState) return cachedDerivedState;
|
|
546
|
+
|
|
547
|
+
// Skip the spread/filter/map entirely when idle — the common case — and hand
|
|
548
|
+
// back the shared frozen empty list for referential stability.
|
|
549
|
+
const inflightActionsList: InflightAction[] =
|
|
550
|
+
inflightActions.size === 0
|
|
551
|
+
? EMPTY_INFLIGHT_ACTIONS
|
|
552
|
+
: [...inflightActions.values()]
|
|
553
|
+
.filter((a) => a.phase !== "settling")
|
|
554
|
+
.map((a) => ({
|
|
555
|
+
id: a.id,
|
|
556
|
+
actionId: a.actionId,
|
|
557
|
+
payload: a.payload,
|
|
558
|
+
startedAt: a.startedAt,
|
|
559
|
+
}));
|
|
560
|
+
|
|
370
561
|
const hasActiveActions = inflightActionsList.length > 0;
|
|
371
|
-
const
|
|
372
|
-
currentNavigation !== null
|
|
562
|
+
const isVisibleNavigation =
|
|
563
|
+
currentNavigation !== null &&
|
|
564
|
+
!currentNavigation.options?.skipLoadingState;
|
|
565
|
+
const state = isVisibleNavigation || hasActiveActions ? "loading" : "idle";
|
|
373
566
|
|
|
374
|
-
// Streaming: true if any active streams (navigation or action) or loading
|
|
375
567
|
const isStreaming = activeStreamCount > 0 || state === "loading";
|
|
376
568
|
|
|
377
|
-
|
|
569
|
+
cachedDerivedState = {
|
|
378
570
|
state,
|
|
379
571
|
isStreaming,
|
|
572
|
+
// True when a navigation is active (fetching or streaming, before
|
|
573
|
+
// commit). Broader than pendingUrl which clears during streaming.
|
|
574
|
+
isNavigating: currentNavigation !== null,
|
|
380
575
|
location,
|
|
381
|
-
// pendingUrl only during fetching phase - once streaming starts (URL changed), not pending
|
|
382
|
-
|
|
576
|
+
// pendingUrl only during fetching phase - once streaming starts (URL changed), not pending.
|
|
577
|
+
// Background revalidations (skipLoadingState) don't expose a pending URL.
|
|
578
|
+
pendingUrl:
|
|
579
|
+
currentNavigation?.phase === "fetching" &&
|
|
580
|
+
!currentNavigation.options?.skipLoadingState
|
|
581
|
+
? currentNavigation.url
|
|
582
|
+
: null,
|
|
383
583
|
inflightActions: inflightActionsList,
|
|
384
584
|
};
|
|
585
|
+
return cachedDerivedState;
|
|
385
586
|
}
|
|
386
587
|
|
|
387
588
|
function getActionState(actionId: string): TrackedActionState {
|
|
388
|
-
//
|
|
389
|
-
//
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
589
|
+
// Nothing inflight — skip building/scanning the list and return the shared
|
|
590
|
+
// idle snapshot (the same reference use-action falls back to).
|
|
591
|
+
if (inflightActions.size === 0) return DEFAULT_ACTION_STATE;
|
|
592
|
+
|
|
593
|
+
const entry = [...inflightActions.values()]
|
|
594
|
+
.filter((a) => matchesActionId(actionId, a.actionId))
|
|
595
|
+
.reduce<ActionEntry | undefined>((best, a) => {
|
|
596
|
+
if (!best) return a;
|
|
597
|
+
const aActive = a.phase !== "settling";
|
|
598
|
+
const bActive = best.phase !== "settling";
|
|
599
|
+
if (aActive !== bActive) return aActive ? a : best;
|
|
600
|
+
return a.startedAt > best.startedAt ? a : best;
|
|
601
|
+
}, undefined);
|
|
400
602
|
|
|
401
603
|
if (!entry) {
|
|
402
604
|
return { ...DEFAULT_ACTION_STATE };
|
|
403
605
|
}
|
|
404
606
|
|
|
405
|
-
// Derive state from phase
|
|
406
607
|
let state: ActionLifecycleState;
|
|
407
608
|
switch (entry.phase) {
|
|
408
609
|
case "fetching":
|
|
@@ -431,7 +632,7 @@ export function createEventController(
|
|
|
431
632
|
|
|
432
633
|
function startNavigation(
|
|
433
634
|
url: string,
|
|
434
|
-
options?: NavigateOptions
|
|
635
|
+
options?: NavigateOptions & { skipLoadingState?: boolean },
|
|
435
636
|
): NavigationHandle {
|
|
436
637
|
// Cancel existing navigation (switchMap semantics)
|
|
437
638
|
if (currentNavigation) {
|
|
@@ -463,6 +664,7 @@ export function createEventController(
|
|
|
463
664
|
|
|
464
665
|
startStreaming(): StreamingToken {
|
|
465
666
|
let ended = false;
|
|
667
|
+
entry.phase = "streaming";
|
|
466
668
|
activeStreamCount++;
|
|
467
669
|
notify();
|
|
468
670
|
|
|
@@ -516,12 +718,45 @@ export function createEventController(
|
|
|
516
718
|
// Action Operations
|
|
517
719
|
// ========================================================================
|
|
518
720
|
|
|
519
|
-
function startAction(
|
|
721
|
+
function startAction(
|
|
722
|
+
actionId: string,
|
|
723
|
+
args: unknown[],
|
|
724
|
+
cohort?: string,
|
|
725
|
+
): ActionHandle {
|
|
520
726
|
const id = `${actionId}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
|
|
727
|
+
// Private to this handle: never exposed on the returned ActionHandle.
|
|
728
|
+
const dispatchSeq = actionDispatchSeq++;
|
|
521
729
|
const abort = new AbortController();
|
|
522
730
|
|
|
523
|
-
//
|
|
524
|
-
|
|
731
|
+
// Register this action under its cohort (originating history entry). The
|
|
732
|
+
// cohort's arbitration is created on first use and freed when its last
|
|
733
|
+
// action settles (see doSettle). Keyless entries share the "" cohort.
|
|
734
|
+
const cohortId = cohort ?? "";
|
|
735
|
+
let arb = cohortArbitration.get(cohortId);
|
|
736
|
+
if (!arb) {
|
|
737
|
+
arb = { keySeq: new Map<string, number>(), inflight: 0 };
|
|
738
|
+
cohortArbitration.set(cohortId, arb);
|
|
739
|
+
}
|
|
740
|
+
// const so the captured reference stays non-undefined inside doSettle.
|
|
741
|
+
const arbitration = arb;
|
|
742
|
+
arbitration.inflight++;
|
|
743
|
+
|
|
744
|
+
// Track if this action started while another was genuinely in-flight.
|
|
745
|
+
// Completed entries don't count: complete()/fail() ran, so the prior
|
|
746
|
+
// action's response was fully processed and applied — a request dispatched
|
|
747
|
+
// after that point is strictly ordered behind the prior action's server
|
|
748
|
+
// execution, and there is no skipped render or order uncertainty for
|
|
749
|
+
// consolidation to repair. Completed entries still linger in the map for
|
|
750
|
+
// the 100ms doSettle window (useAction reads) and, on a slow connection,
|
|
751
|
+
// while the Flight stream drains its EOF after complete(). Counting them
|
|
752
|
+
// latched hadAnyConcurrentActions for back-to-back sequential actions,
|
|
753
|
+
// which made the LAST action classify as consolidation-needed; the
|
|
754
|
+
// consolidation refetch omits every concurrently-revalidated segment id
|
|
755
|
+
// from _rsc_segments, so the server re-ran gated loaders as "new-segment"
|
|
756
|
+
// — bypassing revalidate(({ isAction }) => ...) on a plain GET (#675).
|
|
757
|
+
const hadConcurrent = [...inflightActions.values()].some(
|
|
758
|
+
(a) => !a.completed,
|
|
759
|
+
);
|
|
525
760
|
if (hadConcurrent) {
|
|
526
761
|
hadAnyConcurrentActions = true;
|
|
527
762
|
}
|
|
@@ -543,11 +778,28 @@ export function createEventController(
|
|
|
543
778
|
let settled = false;
|
|
544
779
|
let streamingEnded = false;
|
|
545
780
|
let actionCompleted = false;
|
|
781
|
+
let cohortReleased = false;
|
|
546
782
|
let pendingResult:
|
|
547
783
|
| { type: "success"; value?: unknown }
|
|
548
784
|
| { type: "error"; value: unknown }
|
|
549
785
|
| null = null;
|
|
550
786
|
|
|
787
|
+
// Release this action's hold on its cohort arbitration exactly once: drop
|
|
788
|
+
// the refcount and, only if the map still points at THIS arbitration object,
|
|
789
|
+
// delete it. A newer generation may have replaced it (e.g. abortAllActions
|
|
790
|
+
// cleared the map and a fresh action recreated the same cohort id), so a
|
|
791
|
+
// stale settlement must never delete the newer one by id.
|
|
792
|
+
function releaseCohort() {
|
|
793
|
+
if (cohortReleased) return;
|
|
794
|
+
cohortReleased = true;
|
|
795
|
+
if (
|
|
796
|
+
--arbitration.inflight <= 0 &&
|
|
797
|
+
cohortArbitration.get(cohortId) === arbitration
|
|
798
|
+
) {
|
|
799
|
+
cohortArbitration.delete(cohortId);
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
|
|
551
803
|
function doSettle() {
|
|
552
804
|
if (settled) return;
|
|
553
805
|
settled = true;
|
|
@@ -555,6 +807,9 @@ export function createEventController(
|
|
|
555
807
|
// Cleanup after brief delay (allow useAction to read result)
|
|
556
808
|
setTimeout(() => {
|
|
557
809
|
inflightActions.delete(id);
|
|
810
|
+
// Free this cohort's arbitration once its last action has settled, so
|
|
811
|
+
// a long-running action elsewhere cannot pin keys from a drained entry.
|
|
812
|
+
releaseCohort();
|
|
558
813
|
// Check for consolidation
|
|
559
814
|
if (inflightActions.size === 0) {
|
|
560
815
|
// All actions done - reset tracking
|
|
@@ -583,6 +838,19 @@ export function createEventController(
|
|
|
583
838
|
doSettle();
|
|
584
839
|
}
|
|
585
840
|
|
|
841
|
+
// streamingEnded is forced here for the "streaming never started" case so
|
|
842
|
+
// tryFinalize can run; otherwise the streaming token's end() finalizes.
|
|
843
|
+
function settleWith(result: NonNullable<typeof pendingResult>) {
|
|
844
|
+
if (!inflightActions.has(id) || settled) return;
|
|
845
|
+
actionCompleted = true;
|
|
846
|
+
entry.completed = true;
|
|
847
|
+
pendingResult = result;
|
|
848
|
+
if (entry.phase === "fetching" || streamingEnded) {
|
|
849
|
+
streamingEnded = true;
|
|
850
|
+
tryFinalize();
|
|
851
|
+
}
|
|
852
|
+
}
|
|
853
|
+
|
|
586
854
|
return {
|
|
587
855
|
id,
|
|
588
856
|
abort,
|
|
@@ -618,56 +886,36 @@ export function createEventController(
|
|
|
618
886
|
segmentIds.forEach((id) => concurrentRevalidatedSegments.add(id));
|
|
619
887
|
},
|
|
620
888
|
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
889
|
+
claimLocationState(state: Record<string, unknown>) {
|
|
890
|
+
const winning: Record<string, unknown> = {};
|
|
891
|
+
// Arbitrate against this action's OWN captured arbitration object, not a
|
|
892
|
+
// live map lookup: a concurrent map clear/replace (abortAllActions, a
|
|
893
|
+
// stale settlement) must not make this action silently stop recording
|
|
894
|
+
// and accept every key.
|
|
895
|
+
const keySeq = arbitration.keySeq;
|
|
896
|
+
for (const key of Object.keys(state)) {
|
|
897
|
+
const prevSeq = keySeq.get(key);
|
|
898
|
+
// Strictly-greater: a later-initiated action wins a key over an
|
|
899
|
+
// earlier one in the same cohort regardless of arrival order. Equal
|
|
900
|
+
// cannot happen (dispatchSeq is unique per action).
|
|
901
|
+
if (prevSeq === undefined || dispatchSeq > prevSeq) {
|
|
902
|
+
keySeq.set(key, dispatchSeq);
|
|
903
|
+
winning[key] = state[key];
|
|
904
|
+
}
|
|
633
905
|
}
|
|
634
|
-
|
|
906
|
+
return winning;
|
|
635
907
|
},
|
|
636
908
|
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
actionCompleted = true;
|
|
641
|
-
entry.completed = true;
|
|
642
|
-
pendingResult = { type: "error", value: error };
|
|
643
|
-
|
|
644
|
-
// If streaming never started or already ended, finalize immediately
|
|
645
|
-
// Otherwise wait for streaming to end
|
|
646
|
-
if (entry.phase === "fetching" || streamingEnded) {
|
|
647
|
-
streamingEnded = true; // Mark as ended if never started
|
|
648
|
-
tryFinalize();
|
|
649
|
-
}
|
|
650
|
-
// If streaming is in progress, tryFinalize() will be called when streaming ends
|
|
909
|
+
complete(result?: unknown) {
|
|
910
|
+
settleWith({ type: "success", value: result });
|
|
651
911
|
},
|
|
652
912
|
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
// Count actions that are still fetching (waiting for server response)
|
|
657
|
-
const stillFetchingCount = [...inflightActions.values()].filter(
|
|
658
|
-
(a) => a.phase === "fetching"
|
|
659
|
-
).length;
|
|
913
|
+
fail(error: unknown) {
|
|
914
|
+
settleWith({ type: "error", value: error });
|
|
915
|
+
},
|
|
660
916
|
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
}
|
|
664
|
-
if (!hadAnyConcurrentActions) {
|
|
665
|
-
return null; // No concurrent actions occurred
|
|
666
|
-
}
|
|
667
|
-
if (concurrentRevalidatedSegments.size === 0) {
|
|
668
|
-
return null; // No segments to consolidate
|
|
669
|
-
}
|
|
670
|
-
return Array.from(concurrentRevalidatedSegments);
|
|
917
|
+
getRevalidatedSegments(): Set<string> {
|
|
918
|
+
return concurrentRevalidatedSegments;
|
|
671
919
|
},
|
|
672
920
|
|
|
673
921
|
clearConsolidation() {
|
|
@@ -679,6 +927,10 @@ export function createEventController(
|
|
|
679
927
|
[Symbol.dispose]() {
|
|
680
928
|
// If aborted, another navigation/error took over - don't touch state
|
|
681
929
|
if (abort.signal.aborted) {
|
|
930
|
+
// Aborted actions skip doSettle, so release the cohort hold here to
|
|
931
|
+
// keep the per-cohort refcount balanced (no leak when an action is
|
|
932
|
+
// aborted individually rather than via abortAllActions).
|
|
933
|
+
releaseCohort();
|
|
682
934
|
inflightActions.delete(id);
|
|
683
935
|
notify();
|
|
684
936
|
notifyAction(actionId);
|
|
@@ -702,41 +954,42 @@ export function createEventController(
|
|
|
702
954
|
}
|
|
703
955
|
|
|
704
956
|
function abortAllActions() {
|
|
705
|
-
for (const entry of inflightActions
|
|
957
|
+
for (const [id, entry] of inflightActions) {
|
|
958
|
+
// Preserve settling entries — they have already been handled by
|
|
959
|
+
// fail()/complete() and will self-cleanup via the settlement timeout.
|
|
960
|
+
// Clearing them here would prevent debounced notifications from
|
|
961
|
+
// delivering the error/result state to subscribers.
|
|
962
|
+
if (entry.phase === "settling") continue;
|
|
706
963
|
entry.abort.abort();
|
|
964
|
+
inflightActions.delete(id);
|
|
707
965
|
}
|
|
708
|
-
inflightActions.clear();
|
|
709
966
|
hadAnyConcurrentActions = false;
|
|
710
967
|
concurrentRevalidatedSegments.clear();
|
|
968
|
+
cohortArbitration.clear();
|
|
711
969
|
notify();
|
|
712
|
-
// Notify all action listeners
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
970
|
+
// Notify all action listeners directly by subscription ID.
|
|
971
|
+
// actionListeners keys are subscription IDs (possibly short names like
|
|
972
|
+
// "addToCart"), not full entry actionIds. Passing them to notifyAction
|
|
973
|
+
// would fail the suffix matcher — instead, notify each subscriber with
|
|
974
|
+
// its own state.
|
|
975
|
+
notifyActionListenerSets(actionListeners);
|
|
716
976
|
}
|
|
717
977
|
|
|
718
978
|
// ========================================================================
|
|
719
979
|
// Handle Operations
|
|
720
980
|
// ========================================================================
|
|
721
981
|
|
|
722
|
-
/**
|
|
723
|
-
* Filter segment IDs to only include routes and layouts.
|
|
724
|
-
* Excludes parallels (contain .@) and loaders (contain D followed by digit).
|
|
725
|
-
*/
|
|
726
|
-
function filterSegmentOrder(matched: string[]): string[] {
|
|
727
|
-
return matched.filter((id) => {
|
|
728
|
-
if (id.includes(".@")) return false;
|
|
729
|
-
if (/D\d+\./.test(id)) return false;
|
|
730
|
-
return true;
|
|
731
|
-
});
|
|
732
|
-
}
|
|
733
|
-
|
|
734
982
|
function setHandleData(
|
|
735
983
|
data: HandleData,
|
|
736
984
|
matched?: string[],
|
|
737
|
-
isPartial?: boolean
|
|
985
|
+
isPartial?: boolean,
|
|
986
|
+
resolvedIds?: string[],
|
|
738
987
|
): void {
|
|
739
|
-
const
|
|
988
|
+
const rawMatched = matched ?? [];
|
|
989
|
+
const newSegmentOrder = filterSegmentOrder(rawMatched);
|
|
990
|
+
// Separate list for useSegments(): "layouts and routes only" — strip
|
|
991
|
+
// parallels (".@") and loader sub-ids (D digit) without reordering.
|
|
992
|
+
const newRouteSegmentIds = filterRouteSegmentIds(rawMatched);
|
|
740
993
|
|
|
741
994
|
if (isPartial && newSegmentOrder.length > 0) {
|
|
742
995
|
// Partial update: merge new data with existing
|
|
@@ -748,10 +1001,19 @@ export function createEventController(
|
|
|
748
1001
|
handleData[handleName][segmentId] = data[handleName][segmentId];
|
|
749
1002
|
}
|
|
750
1003
|
}
|
|
751
|
-
|
|
1004
|
+
const resolvedIdSet =
|
|
1005
|
+
resolvedIds && resolvedIds.length > 0 ? new Set(resolvedIds) : null;
|
|
1006
|
+
// Cleanup pass:
|
|
1007
|
+
// a) segment dropped from the match list — delete its bucket.
|
|
1008
|
+
// b) segment was re-resolved this request but pushed nothing for
|
|
1009
|
+
// this handle — its previous bucket is stale.
|
|
1010
|
+
// (a) is the existing behavior; (b) requires resolvedIds.
|
|
752
1011
|
for (const handleName of Object.keys(handleData)) {
|
|
753
1012
|
for (const segmentId of Object.keys(handleData[handleName])) {
|
|
754
|
-
|
|
1013
|
+
const droppedFromMatch = !newSegmentOrder.includes(segmentId);
|
|
1014
|
+
const reresolvedWithoutPush =
|
|
1015
|
+
resolvedIdSet?.has(segmentId) && !data[handleName]?.[segmentId];
|
|
1016
|
+
if (droppedFromMatch || reresolvedWithoutPush) {
|
|
755
1017
|
delete handleData[handleName][segmentId];
|
|
756
1018
|
}
|
|
757
1019
|
}
|
|
@@ -761,17 +1023,31 @@ export function createEventController(
|
|
|
761
1023
|
handleData = data;
|
|
762
1024
|
}
|
|
763
1025
|
handleSegmentOrder = newSegmentOrder;
|
|
1026
|
+
routeSegmentIds = newRouteSegmentIds;
|
|
764
1027
|
|
|
765
|
-
notifyHandles();
|
|
1028
|
+
notifyHandles.schedule();
|
|
766
1029
|
}
|
|
767
1030
|
|
|
768
1031
|
function getHandleState(): HandleState {
|
|
769
1032
|
return {
|
|
770
1033
|
data: handleData,
|
|
771
1034
|
segmentOrder: handleSegmentOrder,
|
|
1035
|
+
routeSegmentIds,
|
|
772
1036
|
};
|
|
773
1037
|
}
|
|
774
1038
|
|
|
1039
|
+
function setRouteSegmentIds(matched: string[]): void {
|
|
1040
|
+
const next = filterRouteSegmentIds(matched);
|
|
1041
|
+
if (
|
|
1042
|
+
next.length === routeSegmentIds.length &&
|
|
1043
|
+
next.every((id, i) => id === routeSegmentIds[i])
|
|
1044
|
+
) {
|
|
1045
|
+
return;
|
|
1046
|
+
}
|
|
1047
|
+
routeSegmentIds = next;
|
|
1048
|
+
notifyHandles.schedule();
|
|
1049
|
+
}
|
|
1050
|
+
|
|
775
1051
|
// ========================================================================
|
|
776
1052
|
// Subscriptions
|
|
777
1053
|
// ========================================================================
|
|
@@ -783,7 +1059,7 @@ export function createEventController(
|
|
|
783
1059
|
|
|
784
1060
|
function subscribeToAction(
|
|
785
1061
|
actionId: string,
|
|
786
|
-
listener: ActionStateListener
|
|
1062
|
+
listener: ActionStateListener,
|
|
787
1063
|
): () => void {
|
|
788
1064
|
let listeners = actionListeners.get(actionId);
|
|
789
1065
|
if (!listeners) {
|
|
@@ -805,6 +1081,19 @@ export function createEventController(
|
|
|
805
1081
|
return () => handleListeners.delete(listener);
|
|
806
1082
|
}
|
|
807
1083
|
|
|
1084
|
+
// ========================================================================
|
|
1085
|
+
// Params Operations
|
|
1086
|
+
// ========================================================================
|
|
1087
|
+
|
|
1088
|
+
function setParams(params: Record<string, string>): void {
|
|
1089
|
+
routeParams = params;
|
|
1090
|
+
notify();
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
function getParams(): Record<string, string> {
|
|
1094
|
+
return routeParams;
|
|
1095
|
+
}
|
|
1096
|
+
|
|
808
1097
|
// ========================================================================
|
|
809
1098
|
// Return Controller
|
|
810
1099
|
// ========================================================================
|
|
@@ -821,56 +1110,27 @@ export function createEventController(
|
|
|
821
1110
|
// State
|
|
822
1111
|
getState,
|
|
823
1112
|
getActionState,
|
|
1113
|
+
getLocation: () => location,
|
|
824
1114
|
setLocation,
|
|
825
1115
|
|
|
826
1116
|
// Handles
|
|
827
1117
|
setHandleData,
|
|
828
1118
|
getHandleState,
|
|
1119
|
+
setRouteSegmentIds,
|
|
1120
|
+
|
|
1121
|
+
// Params
|
|
1122
|
+
setParams,
|
|
1123
|
+
getParams,
|
|
829
1124
|
|
|
830
1125
|
// Subscriptions
|
|
831
1126
|
subscribe,
|
|
832
1127
|
subscribeToAction,
|
|
833
1128
|
subscribeToHandles,
|
|
1129
|
+
flushRouteState,
|
|
834
1130
|
|
|
835
1131
|
// Direct access
|
|
836
1132
|
getCurrentNavigation: () => currentNavigation,
|
|
837
1133
|
getInflightActions: () => inflightActions,
|
|
1134
|
+
hadAnyConcurrentActions: () => hadAnyConcurrentActions,
|
|
838
1135
|
};
|
|
839
1136
|
}
|
|
840
|
-
|
|
841
|
-
// ============================================================================
|
|
842
|
-
// Singleton
|
|
843
|
-
// ============================================================================
|
|
844
|
-
|
|
845
|
-
let controllerInstance: EventController | null = null;
|
|
846
|
-
|
|
847
|
-
/**
|
|
848
|
-
* Initialize the global event controller
|
|
849
|
-
*/
|
|
850
|
-
export function initEventController(
|
|
851
|
-
config?: EventControllerConfig
|
|
852
|
-
): EventController {
|
|
853
|
-
if (!controllerInstance) {
|
|
854
|
-
controllerInstance = createEventController(config);
|
|
855
|
-
}
|
|
856
|
-
return controllerInstance;
|
|
857
|
-
}
|
|
858
|
-
|
|
859
|
-
/**
|
|
860
|
-
* Get the global event controller
|
|
861
|
-
*/
|
|
862
|
-
export function getEventController(): EventController {
|
|
863
|
-
if (!controllerInstance) {
|
|
864
|
-
throw new Error(
|
|
865
|
-
"Event controller not initialized. Call initEventController first."
|
|
866
|
-
);
|
|
867
|
-
}
|
|
868
|
-
return controllerInstance;
|
|
869
|
-
}
|
|
870
|
-
|
|
871
|
-
/**
|
|
872
|
-
* Reset the controller instance (for testing)
|
|
873
|
-
*/
|
|
874
|
-
export function resetEventController(): void {
|
|
875
|
-
controllerInstance = null;
|
|
876
|
-
}
|