@rangojs/router 0.0.0-experimental.259 → 0.0.0-experimental.25dbaac3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{CLAUDE.md → AGENTS.md} +4 -0
- package/README.md +471 -51
- package/dist/__internal.d.ts +83 -0
- package/dist/__internal.d.ts.map +1 -0
- package/dist/__internal.js +19 -0
- package/dist/__internal.js.map +1 -0
- package/dist/__mocks__/version.d.ts +7 -0
- package/dist/__mocks__/version.d.ts.map +1 -0
- package/dist/__mocks__/version.js +7 -0
- package/dist/__mocks__/version.js.map +1 -0
- package/dist/__tests__/client-href.test.d.ts +2 -0
- package/dist/__tests__/client-href.test.d.ts.map +1 -0
- package/dist/__tests__/client-href.test.js +74 -0
- package/dist/__tests__/client-href.test.js.map +1 -0
- package/dist/__tests__/component-utils.test.d.ts +2 -0
- package/dist/__tests__/component-utils.test.d.ts.map +1 -0
- package/dist/__tests__/component-utils.test.js +51 -0
- package/dist/__tests__/component-utils.test.js.map +1 -0
- package/dist/__tests__/event-controller.test.d.ts +2 -0
- package/dist/__tests__/event-controller.test.d.ts.map +1 -0
- package/dist/__tests__/event-controller.test.js +538 -0
- package/dist/__tests__/event-controller.test.js.map +1 -0
- package/dist/__tests__/helpers/route-tree.d.ts +118 -0
- package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
- package/dist/__tests__/helpers/route-tree.js +374 -0
- package/dist/__tests__/helpers/route-tree.js.map +1 -0
- package/dist/__tests__/match-result.test.d.ts +2 -0
- package/dist/__tests__/match-result.test.d.ts.map +1 -0
- package/dist/__tests__/match-result.test.js +154 -0
- package/dist/__tests__/match-result.test.js.map +1 -0
- package/dist/__tests__/navigation-store.test.d.ts +2 -0
- package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
- package/dist/__tests__/navigation-store.test.js +440 -0
- package/dist/__tests__/navigation-store.test.js.map +1 -0
- package/dist/__tests__/partial-update.test.d.ts +2 -0
- package/dist/__tests__/partial-update.test.d.ts.map +1 -0
- package/dist/__tests__/partial-update.test.js +1009 -0
- package/dist/__tests__/partial-update.test.js.map +1 -0
- package/dist/__tests__/reverse-types.test.d.ts +8 -0
- package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
- package/dist/__tests__/reverse-types.test.js +656 -0
- package/dist/__tests__/reverse-types.test.js.map +1 -0
- package/dist/__tests__/route-definition.test.d.ts +2 -0
- package/dist/__tests__/route-definition.test.d.ts.map +1 -0
- package/dist/__tests__/route-definition.test.js +55 -0
- package/dist/__tests__/route-definition.test.js.map +1 -0
- package/dist/__tests__/router-helpers.test.d.ts +2 -0
- package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
- package/dist/__tests__/router-helpers.test.js +377 -0
- package/dist/__tests__/router-helpers.test.js.map +1 -0
- package/dist/__tests__/router-integration-2.test.d.ts +2 -0
- package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
- package/dist/__tests__/router-integration-2.test.js +426 -0
- package/dist/__tests__/router-integration-2.test.js.map +1 -0
- package/dist/__tests__/router-integration.test.d.ts +2 -0
- package/dist/__tests__/router-integration.test.d.ts.map +1 -0
- package/dist/__tests__/router-integration.test.js +1051 -0
- package/dist/__tests__/router-integration.test.js.map +1 -0
- package/dist/__tests__/search-params.test.d.ts +5 -0
- package/dist/__tests__/search-params.test.d.ts.map +1 -0
- package/dist/__tests__/search-params.test.js +306 -0
- package/dist/__tests__/search-params.test.js.map +1 -0
- package/dist/__tests__/segment-system.test.d.ts +2 -0
- package/dist/__tests__/segment-system.test.d.ts.map +1 -0
- package/dist/__tests__/segment-system.test.js +627 -0
- package/dist/__tests__/segment-system.test.js.map +1 -0
- package/dist/__tests__/static-handler-types.test.d.ts +8 -0
- package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
- package/dist/__tests__/static-handler-types.test.js +63 -0
- package/dist/__tests__/static-handler-types.test.js.map +1 -0
- package/dist/__tests__/urls.test.d.ts +2 -0
- package/dist/__tests__/urls.test.d.ts.map +1 -0
- package/dist/__tests__/urls.test.js +421 -0
- package/dist/__tests__/urls.test.js.map +1 -0
- package/dist/__tests__/use-mount.test.d.ts +2 -0
- package/dist/__tests__/use-mount.test.d.ts.map +1 -0
- package/dist/__tests__/use-mount.test.js +35 -0
- package/dist/__tests__/use-mount.test.js.map +1 -0
- package/dist/bin/rango.d.ts +2 -0
- package/dist/bin/rango.d.ts.map +1 -0
- package/dist/bin/rango.js +490 -94
- package/dist/bin/rango.js.map +1 -0
- package/dist/browser/event-controller.d.ts +191 -0
- package/dist/browser/event-controller.d.ts.map +1 -0
- package/dist/browser/event-controller.js +559 -0
- package/dist/browser/event-controller.js.map +1 -0
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +14 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/link-interceptor.d.ts +38 -0
- package/dist/browser/link-interceptor.d.ts.map +1 -0
- package/dist/browser/link-interceptor.js +99 -0
- package/dist/browser/link-interceptor.js.map +1 -0
- package/dist/browser/logging.d.ts +10 -0
- package/dist/browser/logging.d.ts.map +1 -0
- package/dist/browser/logging.js +29 -0
- package/dist/browser/logging.js.map +1 -0
- package/dist/browser/lru-cache.d.ts +17 -0
- package/dist/browser/lru-cache.d.ts.map +1 -0
- package/dist/browser/lru-cache.js +50 -0
- package/dist/browser/lru-cache.js.map +1 -0
- package/dist/browser/merge-segment-loaders.d.ts +39 -0
- package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
- package/dist/browser/merge-segment-loaders.js +102 -0
- package/dist/browser/merge-segment-loaders.js.map +1 -0
- package/dist/browser/navigation-bridge.d.ts +102 -0
- package/dist/browser/navigation-bridge.d.ts.map +1 -0
- package/dist/browser/navigation-bridge.js +708 -0
- package/dist/browser/navigation-bridge.js.map +1 -0
- package/dist/browser/navigation-client.d.ts +25 -0
- package/dist/browser/navigation-client.d.ts.map +1 -0
- package/dist/browser/navigation-client.js +157 -0
- package/dist/browser/navigation-client.js.map +1 -0
- package/dist/browser/navigation-store.d.ts +101 -0
- package/dist/browser/navigation-store.d.ts.map +1 -0
- package/dist/browser/navigation-store.js +625 -0
- package/dist/browser/navigation-store.js.map +1 -0
- package/dist/browser/partial-update.d.ts +75 -0
- package/dist/browser/partial-update.d.ts.map +1 -0
- package/dist/browser/partial-update.js +426 -0
- package/dist/browser/partial-update.js.map +1 -0
- package/dist/browser/react/Link.d.ts +86 -0
- package/dist/browser/react/Link.d.ts.map +1 -0
- package/dist/browser/react/Link.js +128 -0
- package/dist/browser/react/Link.js.map +1 -0
- package/dist/browser/react/NavigationProvider.d.ts +63 -0
- package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
- package/dist/browser/react/NavigationProvider.js +216 -0
- package/dist/browser/react/NavigationProvider.js.map +1 -0
- package/dist/browser/react/ScrollRestoration.d.ts +75 -0
- package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
- package/dist/browser/react/ScrollRestoration.js +57 -0
- package/dist/browser/react/ScrollRestoration.js.map +1 -0
- package/dist/browser/react/context.d.ts +46 -0
- package/dist/browser/react/context.d.ts.map +1 -0
- package/dist/browser/react/context.js +10 -0
- package/dist/browser/react/context.js.map +1 -0
- package/dist/browser/react/index.d.ts +11 -0
- package/dist/browser/react/index.d.ts.map +1 -0
- package/dist/browser/react/index.js +22 -0
- package/dist/browser/react/index.js.map +1 -0
- package/dist/browser/react/location-state-shared.d.ts +63 -0
- package/dist/browser/react/location-state-shared.d.ts.map +1 -0
- package/dist/browser/react/location-state-shared.js +81 -0
- package/dist/browser/react/location-state-shared.js.map +1 -0
- package/dist/browser/react/location-state.d.ts +23 -0
- package/dist/browser/react/location-state.d.ts.map +1 -0
- package/dist/browser/react/location-state.js +29 -0
- package/dist/browser/react/location-state.js.map +1 -0
- package/dist/browser/react/mount-context.d.ts +24 -0
- package/dist/browser/react/mount-context.d.ts.map +1 -0
- package/dist/browser/react/mount-context.js +24 -0
- package/dist/browser/react/mount-context.js.map +1 -0
- package/dist/browser/react/use-action.d.ts +64 -0
- package/dist/browser/react/use-action.d.ts.map +1 -0
- package/dist/browser/react/use-action.js +134 -0
- package/dist/browser/react/use-action.js.map +1 -0
- package/dist/browser/react/use-client-cache.d.ts +41 -0
- package/dist/browser/react/use-client-cache.d.ts.map +1 -0
- package/dist/browser/react/use-client-cache.js +39 -0
- package/dist/browser/react/use-client-cache.js.map +1 -0
- package/dist/browser/react/use-handle.d.ts +31 -0
- package/dist/browser/react/use-handle.d.ts.map +1 -0
- package/dist/browser/react/use-handle.js +144 -0
- package/dist/browser/react/use-handle.js.map +1 -0
- package/dist/browser/react/use-href.d.ts +33 -0
- package/dist/browser/react/use-href.d.ts.map +1 -0
- package/dist/browser/react/use-href.js +39 -0
- package/dist/browser/react/use-href.js.map +1 -0
- package/dist/browser/react/use-link-status.d.ts +37 -0
- package/dist/browser/react/use-link-status.d.ts.map +1 -0
- package/dist/browser/react/use-link-status.js +99 -0
- package/dist/browser/react/use-link-status.js.map +1 -0
- package/dist/browser/react/use-mount.d.ts +25 -0
- package/dist/browser/react/use-mount.d.ts.map +1 -0
- package/dist/browser/react/use-mount.js +30 -0
- package/dist/browser/react/use-mount.js.map +1 -0
- package/dist/browser/react/use-navigation.d.ts +27 -0
- package/dist/browser/react/use-navigation.d.ts.map +1 -0
- package/dist/browser/react/use-navigation.js +87 -0
- package/dist/browser/react/use-navigation.js.map +1 -0
- package/dist/browser/react/use-segments.d.ts +38 -0
- package/dist/browser/react/use-segments.d.ts.map +1 -0
- package/dist/browser/react/use-segments.js +130 -0
- package/dist/browser/react/use-segments.js.map +1 -0
- package/dist/browser/request-controller.d.ts +26 -0
- package/dist/browser/request-controller.d.ts.map +1 -0
- package/dist/browser/request-controller.js +147 -0
- package/dist/browser/request-controller.js.map +1 -0
- package/dist/browser/rsc-router.d.ts +129 -0
- package/dist/browser/rsc-router.d.ts.map +1 -0
- package/dist/browser/rsc-router.js +195 -0
- package/dist/browser/rsc-router.js.map +1 -0
- package/dist/browser/scroll-restoration.d.ts +93 -0
- package/dist/browser/scroll-restoration.d.ts.map +1 -0
- package/dist/browser/scroll-restoration.js +321 -0
- package/dist/browser/scroll-restoration.js.map +1 -0
- package/dist/browser/segment-structure-assert.d.ts +17 -0
- package/dist/browser/segment-structure-assert.d.ts.map +1 -0
- package/dist/browser/segment-structure-assert.js +59 -0
- package/dist/browser/segment-structure-assert.js.map +1 -0
- package/dist/browser/server-action-bridge.d.ts +26 -0
- package/dist/browser/server-action-bridge.d.ts.map +1 -0
- package/dist/browser/server-action-bridge.js +668 -0
- package/dist/browser/server-action-bridge.js.map +1 -0
- package/dist/browser/shallow.d.ts +12 -0
- package/dist/browser/shallow.d.ts.map +1 -0
- package/dist/browser/shallow.js +34 -0
- package/dist/browser/shallow.js.map +1 -0
- package/dist/browser/types.d.ts +369 -0
- package/dist/browser/types.d.ts.map +1 -0
- package/dist/browser/types.js +2 -0
- package/dist/browser/types.js.map +1 -0
- package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
- package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-cli.test.js +237 -0
- package/dist/build/__tests__/generate-cli.test.js.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-manifest.test.js +119 -0
- package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
- package/dist/build/__tests__/generate-route-types.test.js +620 -0
- package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
- package/dist/build/__tests__/per-router-manifest.test.js +308 -0
- package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
- package/dist/build/generate-manifest.d.ts +81 -0
- package/dist/build/generate-manifest.d.ts.map +1 -0
- package/dist/build/generate-manifest.js +276 -0
- package/dist/build/generate-manifest.js.map +1 -0
- package/dist/build/generate-route-types.d.ts +115 -0
- package/dist/build/generate-route-types.d.ts.map +1 -0
- package/dist/build/generate-route-types.js +740 -0
- package/dist/build/generate-route-types.js.map +1 -0
- package/dist/build/index.d.ts +21 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +21 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/route-trie.d.ts +71 -0
- package/dist/build/route-trie.d.ts.map +1 -0
- package/dist/build/route-trie.js +175 -0
- package/dist/build/route-trie.js.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
- package/dist/cache/__tests__/cache-scope.test.js +208 -0
- package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
- package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
- package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
- package/dist/cache/__tests__/document-cache.test.js +345 -0
- package/dist/cache/__tests__/document-cache.test.js.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
- package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
- package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
- package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
- package/dist/cache/__tests__/memory-store.test.js +367 -0
- package/dist/cache/__tests__/memory-store.test.js.map +1 -0
- package/dist/cache/cache-scope.d.ts +102 -0
- package/dist/cache/cache-scope.d.ts.map +1 -0
- package/dist/cache/cache-scope.js +440 -0
- package/dist/cache/cache-scope.js.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
- package/dist/cache/cf/cf-cache-store.d.ts +165 -0
- package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
- package/dist/cache/cf/cf-cache-store.js +242 -0
- package/dist/cache/cf/cf-cache-store.js.map +1 -0
- package/dist/cache/cf/index.d.ts +14 -0
- package/dist/cache/cf/index.d.ts.map +1 -0
- package/dist/cache/cf/index.js +17 -0
- package/dist/cache/cf/index.js.map +1 -0
- package/dist/cache/document-cache.d.ts +64 -0
- package/dist/cache/document-cache.d.ts.map +1 -0
- package/dist/cache/document-cache.js +228 -0
- package/dist/cache/document-cache.js.map +1 -0
- package/dist/cache/index.d.ts +19 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +21 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/memory-segment-store.d.ts +110 -0
- package/dist/cache/memory-segment-store.d.ts.map +1 -0
- package/dist/cache/memory-segment-store.js +117 -0
- package/dist/cache/memory-segment-store.js.map +1 -0
- package/dist/cache/memory-store.d.ts +41 -0
- package/dist/cache/memory-store.d.ts.map +1 -0
- package/dist/cache/memory-store.js +191 -0
- package/dist/cache/memory-store.js.map +1 -0
- package/dist/cache/types.d.ts +317 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +12 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/client.d.ts +248 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +367 -0
- package/dist/client.js.map +1 -0
- package/dist/client.rsc.d.ts +26 -0
- package/dist/client.rsc.d.ts.map +1 -0
- package/dist/client.rsc.js +46 -0
- package/dist/client.rsc.js.map +1 -0
- package/dist/component-utils.d.ts +36 -0
- package/dist/component-utils.d.ts.map +1 -0
- package/dist/component-utils.js +61 -0
- package/dist/component-utils.js.map +1 -0
- package/dist/components/DefaultDocument.d.ts +13 -0
- package/dist/components/DefaultDocument.d.ts.map +1 -0
- package/dist/components/DefaultDocument.js +15 -0
- package/dist/components/DefaultDocument.js.map +1 -0
- package/dist/debug.d.ts +58 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +157 -0
- package/dist/debug.js.map +1 -0
- package/dist/default-error-boundary.d.ts +11 -0
- package/dist/default-error-boundary.d.ts.map +1 -0
- package/dist/default-error-boundary.js +45 -0
- package/dist/default-error-boundary.js.map +1 -0
- package/dist/deps/browser.d.ts +2 -0
- package/dist/deps/browser.d.ts.map +1 -0
- package/dist/deps/browser.js +3 -0
- package/dist/deps/browser.js.map +1 -0
- package/dist/deps/html-stream-client.d.ts +2 -0
- package/dist/deps/html-stream-client.d.ts.map +1 -0
- package/dist/deps/html-stream-client.js +3 -0
- package/dist/deps/html-stream-client.js.map +1 -0
- package/dist/deps/html-stream-server.d.ts +2 -0
- package/dist/deps/html-stream-server.d.ts.map +1 -0
- package/dist/deps/html-stream-server.js +3 -0
- package/dist/deps/html-stream-server.js.map +1 -0
- package/dist/deps/rsc.d.ts +2 -0
- package/dist/deps/rsc.d.ts.map +1 -0
- package/dist/deps/rsc.js +4 -0
- package/dist/deps/rsc.js.map +1 -0
- package/dist/deps/ssr.d.ts +2 -0
- package/dist/deps/ssr.d.ts.map +1 -0
- package/dist/deps/ssr.js +3 -0
- package/dist/deps/ssr.js.map +1 -0
- package/dist/errors.d.ts +174 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +241 -0
- package/dist/errors.js.map +1 -0
- package/dist/handle.d.ts +78 -0
- package/dist/handle.d.ts.map +1 -0
- package/dist/handle.js +82 -0
- package/dist/handle.js.map +1 -0
- package/dist/handles/MetaTags.d.ts +14 -0
- package/dist/handles/MetaTags.d.ts.map +1 -0
- package/dist/handles/MetaTags.js +136 -0
- package/dist/handles/MetaTags.js.map +1 -0
- package/dist/handles/index.d.ts +6 -0
- package/dist/handles/index.d.ts.map +1 -0
- package/dist/handles/index.js +6 -0
- package/dist/handles/index.js.map +1 -0
- package/dist/handles/meta.d.ts +39 -0
- package/dist/handles/meta.d.ts.map +1 -0
- package/dist/handles/meta.js +202 -0
- package/dist/handles/meta.js.map +1 -0
- package/dist/host/__tests__/errors.test.d.ts +2 -0
- package/dist/host/__tests__/errors.test.d.ts.map +1 -0
- package/dist/host/__tests__/errors.test.js +76 -0
- package/dist/host/__tests__/errors.test.js.map +1 -0
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
- package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
- package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
- package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
- package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
- package/dist/host/__tests__/pattern-matcher.test.js +251 -0
- package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
- package/dist/host/__tests__/router.test.d.ts +2 -0
- package/dist/host/__tests__/router.test.d.ts.map +1 -0
- package/dist/host/__tests__/router.test.js +241 -0
- package/dist/host/__tests__/router.test.js.map +1 -0
- package/dist/host/__tests__/testing.test.d.ts +2 -0
- package/dist/host/__tests__/testing.test.d.ts.map +1 -0
- package/dist/host/__tests__/testing.test.js +64 -0
- package/dist/host/__tests__/testing.test.js.map +1 -0
- package/dist/host/__tests__/utils.test.d.ts +2 -0
- package/dist/host/__tests__/utils.test.d.ts.map +1 -0
- package/dist/host/__tests__/utils.test.js +29 -0
- package/dist/host/__tests__/utils.test.js.map +1 -0
- package/dist/host/cookie-handler.d.ts +34 -0
- package/dist/host/cookie-handler.d.ts.map +1 -0
- package/dist/host/cookie-handler.js +124 -0
- package/dist/host/cookie-handler.js.map +1 -0
- package/dist/host/errors.d.ts +56 -0
- package/dist/host/errors.d.ts.map +1 -0
- package/dist/host/errors.js +79 -0
- package/dist/host/errors.js.map +1 -0
- package/dist/host/index.d.ts +29 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +32 -0
- package/dist/host/index.js.map +1 -0
- package/dist/host/pattern-matcher.d.ts +36 -0
- package/dist/host/pattern-matcher.d.ts.map +1 -0
- package/dist/host/pattern-matcher.js +172 -0
- package/dist/host/pattern-matcher.js.map +1 -0
- package/dist/host/router.d.ts +26 -0
- package/dist/host/router.d.ts.map +1 -0
- package/dist/host/router.js +218 -0
- package/dist/host/router.js.map +1 -0
- package/dist/host/testing.d.ts +36 -0
- package/dist/host/testing.d.ts.map +1 -0
- package/dist/host/testing.js +55 -0
- package/dist/host/testing.js.map +1 -0
- package/dist/host/types.d.ts +115 -0
- package/dist/host/types.d.ts.map +1 -0
- package/dist/host/types.js +7 -0
- package/dist/host/types.js.map +1 -0
- package/dist/host/utils.d.ts +21 -0
- package/dist/host/utils.d.ts.map +1 -0
- package/dist/host/utils.js +23 -0
- package/dist/host/utils.js.map +1 -0
- package/dist/href-client.d.ts +131 -0
- package/dist/href-client.d.ts.map +1 -0
- package/dist/href-client.js +64 -0
- package/dist/href-client.js.map +1 -0
- package/{src/href-context.ts → dist/href-context.d.ts} +7 -11
- package/dist/href-context.d.ts.map +1 -0
- package/dist/href-context.js +21 -0
- package/dist/href-context.js.map +1 -0
- package/dist/index.d.ts +73 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +91 -0
- package/dist/index.js.map +1 -0
- package/dist/index.rsc.d.ts +32 -0
- package/dist/index.rsc.d.ts.map +1 -0
- package/dist/index.rsc.js +40 -0
- package/dist/index.rsc.js.map +1 -0
- package/dist/internal-debug.d.ts +2 -0
- package/dist/internal-debug.d.ts.map +1 -0
- package/dist/internal-debug.js +5 -0
- package/dist/internal-debug.js.map +1 -0
- package/dist/loader.d.ts +14 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +20 -0
- package/dist/loader.js.map +1 -0
- package/dist/loader.rsc.d.ts +19 -0
- package/dist/loader.rsc.d.ts.map +1 -0
- package/dist/loader.rsc.js +99 -0
- package/dist/loader.rsc.js.map +1 -0
- package/dist/network-error-thrower.d.ts +17 -0
- package/dist/network-error-thrower.d.ts.map +1 -0
- package/dist/network-error-thrower.js +14 -0
- package/dist/network-error-thrower.js.map +1 -0
- package/dist/outlet-context.d.ts +13 -0
- package/dist/outlet-context.d.ts.map +1 -0
- package/dist/outlet-context.js +3 -0
- package/dist/outlet-context.js.map +1 -0
- package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
- package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
- package/dist/prerender/__tests__/param-hash.test.js +148 -0
- package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
- package/dist/prerender/param-hash.d.ts +16 -0
- package/dist/prerender/param-hash.d.ts.map +1 -0
- package/dist/prerender/param-hash.js +36 -0
- package/dist/prerender/param-hash.js.map +1 -0
- package/dist/prerender/store.d.ts +38 -0
- package/dist/prerender/store.d.ts.map +1 -0
- package/dist/prerender/store.js +61 -0
- package/dist/prerender/store.js.map +1 -0
- package/dist/prerender.d.ts +66 -0
- package/dist/prerender.d.ts.map +1 -0
- package/dist/prerender.js +57 -0
- package/dist/prerender.js.map +1 -0
- package/dist/reverse.d.ts +196 -0
- package/dist/reverse.d.ts.map +1 -0
- package/dist/reverse.js +78 -0
- package/dist/reverse.js.map +1 -0
- package/dist/root-error-boundary.d.ts +33 -0
- package/dist/root-error-boundary.d.ts.map +1 -0
- package/dist/root-error-boundary.js +165 -0
- package/dist/root-error-boundary.js.map +1 -0
- package/dist/route-content-wrapper.d.ts +46 -0
- package/dist/route-content-wrapper.d.ts.map +1 -0
- package/dist/route-content-wrapper.js +77 -0
- package/dist/route-content-wrapper.js.map +1 -0
- package/dist/route-definition.d.ts +421 -0
- package/dist/route-definition.d.ts.map +1 -0
- package/dist/route-definition.js +868 -0
- package/dist/route-definition.js.map +1 -0
- package/dist/route-map-builder.d.ts +155 -0
- package/dist/route-map-builder.d.ts.map +1 -0
- package/dist/route-map-builder.js +237 -0
- package/dist/route-map-builder.js.map +1 -0
- package/dist/route-types.d.ts +165 -0
- package/dist/route-types.d.ts.map +1 -0
- package/dist/route-types.js +7 -0
- package/dist/route-types.js.map +1 -0
- package/dist/router/__tests__/handler-context.test.d.ts +2 -0
- package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
- package/dist/router/__tests__/handler-context.test.js +65 -0
- package/dist/router/__tests__/handler-context.test.js.map +1 -0
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
- package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
- package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
- package/dist/router/__tests__/match-context.test.d.ts +2 -0
- package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
- package/dist/router/__tests__/match-context.test.js +92 -0
- package/dist/router/__tests__/match-context.test.js.map +1 -0
- package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
- package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
- package/dist/router/__tests__/match-pipelines.test.js +417 -0
- package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
- package/dist/router/__tests__/match-result.test.d.ts +2 -0
- package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
- package/dist/router/__tests__/match-result.test.js +457 -0
- package/dist/router/__tests__/match-result.test.js.map +1 -0
- package/dist/router/__tests__/on-error.test.d.ts +2 -0
- package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
- package/dist/router/__tests__/on-error.test.js +678 -0
- package/dist/router/__tests__/on-error.test.js.map +1 -0
- package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
- package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
- package/dist/router/__tests__/pattern-matching.test.js +629 -0
- package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
- package/dist/router/error-handling.d.ts +77 -0
- package/dist/router/error-handling.d.ts.map +1 -0
- package/dist/router/error-handling.js +202 -0
- package/dist/router/error-handling.js.map +1 -0
- package/dist/router/handler-context.d.ts +20 -0
- package/dist/router/handler-context.d.ts.map +1 -0
- package/dist/router/handler-context.js +198 -0
- package/dist/router/handler-context.js.map +1 -0
- package/dist/router/intercept-resolution.d.ts +66 -0
- package/dist/router/intercept-resolution.d.ts.map +1 -0
- package/dist/router/intercept-resolution.js +246 -0
- package/dist/router/intercept-resolution.js.map +1 -0
- package/dist/router/loader-resolution.d.ts +64 -0
- package/dist/router/loader-resolution.d.ts.map +1 -0
- package/dist/router/loader-resolution.js +284 -0
- package/dist/router/loader-resolution.js.map +1 -0
- package/dist/router/logging.d.ts +15 -0
- package/dist/router/logging.d.ts.map +1 -0
- package/dist/router/logging.js +99 -0
- package/dist/router/logging.js.map +1 -0
- package/dist/router/manifest.d.ts +22 -0
- package/dist/router/manifest.d.ts.map +1 -0
- package/dist/router/manifest.js +181 -0
- package/dist/router/manifest.js.map +1 -0
- package/dist/router/match-api.d.ts +35 -0
- package/dist/router/match-api.d.ts.map +1 -0
- package/dist/router/match-api.js +406 -0
- package/dist/router/match-api.js.map +1 -0
- package/dist/router/match-context.d.ts +206 -0
- package/dist/router/match-context.d.ts.map +1 -0
- package/dist/router/match-context.js +17 -0
- package/dist/router/match-context.js.map +1 -0
- package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
- package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
- package/dist/router/match-middleware/background-revalidation.js +75 -0
- package/dist/router/match-middleware/background-revalidation.js.map +1 -0
- package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
- package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
- package/dist/router/match-middleware/cache-lookup.js +257 -0
- package/dist/router/match-middleware/cache-lookup.js.map +1 -0
- package/dist/router/match-middleware/cache-store.d.ts +113 -0
- package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
- package/dist/router/match-middleware/cache-store.js +108 -0
- package/dist/router/match-middleware/cache-store.js.map +1 -0
- package/dist/router/match-middleware/index.d.ts +81 -0
- package/dist/router/match-middleware/index.d.ts.map +1 -0
- package/dist/router/match-middleware/index.js +80 -0
- package/dist/router/match-middleware/index.js.map +1 -0
- package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
- package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
- package/dist/router/match-middleware/intercept-resolution.js +134 -0
- package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
- package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
- package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
- package/dist/router/match-middleware/segment-resolution.js +53 -0
- package/dist/router/match-middleware/segment-resolution.js.map +1 -0
- package/dist/router/match-pipelines.d.ts +147 -0
- package/dist/router/match-pipelines.d.ts.map +1 -0
- package/dist/router/match-pipelines.js +82 -0
- package/dist/router/match-pipelines.js.map +1 -0
- package/dist/router/match-result.d.ts +126 -0
- package/dist/router/match-result.d.ts.map +1 -0
- package/dist/router/match-result.js +93 -0
- package/dist/router/match-result.js.map +1 -0
- package/dist/router/metrics.d.ts +20 -0
- package/dist/router/metrics.d.ts.map +1 -0
- package/dist/router/metrics.js +47 -0
- package/dist/router/metrics.js.map +1 -0
- package/dist/router/middleware.d.ts +249 -0
- package/dist/router/middleware.d.ts.map +1 -0
- package/dist/router/middleware.js +434 -0
- package/dist/router/middleware.js.map +1 -0
- package/dist/router/middleware.test.d.ts +2 -0
- package/dist/router/middleware.test.d.ts.map +1 -0
- package/dist/router/middleware.test.js +816 -0
- package/dist/router/middleware.test.js.map +1 -0
- package/dist/router/pattern-matching.d.ts +149 -0
- package/dist/router/pattern-matching.d.ts.map +1 -0
- package/dist/router/pattern-matching.js +349 -0
- package/dist/router/pattern-matching.js.map +1 -0
- package/dist/router/revalidation.d.ts +44 -0
- package/dist/router/revalidation.d.ts.map +1 -0
- package/dist/router/revalidation.js +147 -0
- package/dist/router/revalidation.js.map +1 -0
- package/dist/router/router-context.d.ts +135 -0
- package/dist/router/router-context.d.ts.map +1 -0
- package/dist/router/router-context.js +36 -0
- package/dist/router/router-context.js.map +1 -0
- package/dist/router/segment-resolution.d.ts +127 -0
- package/dist/router/segment-resolution.d.ts.map +1 -0
- package/dist/router/segment-resolution.js +919 -0
- package/dist/router/segment-resolution.js.map +1 -0
- package/dist/router/trie-matching.d.ts +40 -0
- package/dist/router/trie-matching.d.ts.map +1 -0
- package/dist/router/trie-matching.js +127 -0
- package/dist/router/trie-matching.js.map +1 -0
- package/dist/router/types.d.ts +136 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +7 -0
- package/dist/router/types.js.map +1 -0
- package/dist/router.d.ts +753 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.gen.d.ts +6 -0
- package/dist/router.gen.d.ts.map +1 -0
- package/dist/router.gen.js +6 -0
- package/dist/router.gen.js.map +1 -0
- package/dist/router.js +1304 -0
- package/dist/router.js.map +1 -0
- package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
- package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
- package/dist/rsc/__tests__/helpers.test.js +140 -0
- package/dist/rsc/__tests__/helpers.test.js.map +1 -0
- package/dist/rsc/handler.d.ts +45 -0
- package/dist/rsc/handler.d.ts.map +1 -0
- package/dist/rsc/handler.js +1172 -0
- package/dist/rsc/handler.js.map +1 -0
- package/dist/rsc/helpers.d.ts +16 -0
- package/dist/rsc/helpers.d.ts.map +1 -0
- package/dist/rsc/helpers.js +55 -0
- package/dist/rsc/helpers.js.map +1 -0
- package/dist/rsc/index.d.ts +22 -0
- package/dist/rsc/index.d.ts.map +1 -0
- package/dist/rsc/index.js +23 -0
- package/dist/rsc/index.js.map +1 -0
- package/dist/rsc/nonce.d.ts +9 -0
- package/dist/rsc/nonce.d.ts.map +1 -0
- package/dist/rsc/nonce.js +18 -0
- package/dist/rsc/nonce.js.map +1 -0
- package/dist/rsc/types.d.ts +206 -0
- package/dist/rsc/types.d.ts.map +1 -0
- package/dist/rsc/types.js +8 -0
- package/dist/rsc/types.js.map +1 -0
- package/dist/search-params.d.ts +103 -0
- package/dist/search-params.d.ts.map +1 -0
- package/dist/search-params.js +74 -0
- package/dist/search-params.js.map +1 -0
- package/dist/segment-system.d.ts +75 -0
- package/dist/segment-system.d.ts.map +1 -0
- package/dist/segment-system.js +336 -0
- package/dist/segment-system.js.map +1 -0
- package/dist/server/context.d.ts +245 -0
- package/dist/server/context.d.ts.map +1 -0
- package/dist/server/context.js +197 -0
- package/dist/server/context.js.map +1 -0
- package/dist/server/fetchable-loader-store.d.ts +18 -0
- package/dist/server/fetchable-loader-store.d.ts.map +1 -0
- package/dist/server/fetchable-loader-store.js +18 -0
- package/dist/server/fetchable-loader-store.js.map +1 -0
- package/dist/server/handle-store.d.ts +85 -0
- package/dist/server/handle-store.d.ts.map +1 -0
- package/dist/server/handle-store.js +142 -0
- package/dist/server/handle-store.js.map +1 -0
- package/dist/server/loader-registry.d.ts +55 -0
- package/dist/server/loader-registry.d.ts.map +1 -0
- package/dist/server/loader-registry.js +132 -0
- package/dist/server/loader-registry.js.map +1 -0
- package/dist/server/request-context.d.ts +226 -0
- package/dist/server/request-context.d.ts.map +1 -0
- package/dist/server/request-context.js +290 -0
- package/dist/server/request-context.js.map +1 -0
- package/dist/server/root-layout.d.ts +4 -0
- package/dist/server/root-layout.d.ts.map +1 -0
- package/dist/server/root-layout.js +5 -0
- package/dist/server/root-layout.js.map +1 -0
- package/dist/server.d.ts +15 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +20 -0
- package/dist/server.js.map +1 -0
- package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
- package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
- package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
- package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
- package/dist/ssr/index.d.ts +98 -0
- package/dist/ssr/index.d.ts.map +1 -0
- package/dist/ssr/index.js +158 -0
- package/dist/ssr/index.js.map +1 -0
- package/dist/static-handler.d.ts +50 -0
- package/dist/static-handler.d.ts.map +1 -0
- package/dist/static-handler.gen.d.ts +5 -0
- package/dist/static-handler.gen.d.ts.map +1 -0
- package/dist/static-handler.gen.js +5 -0
- package/dist/static-handler.gen.js.map +1 -0
- package/dist/static-handler.js +29 -0
- package/dist/static-handler.js.map +1 -0
- package/dist/theme/ThemeProvider.d.ts +20 -0
- package/dist/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/theme/ThemeProvider.js +240 -0
- package/dist/theme/ThemeProvider.js.map +1 -0
- package/dist/theme/ThemeScript.d.ts +48 -0
- package/dist/theme/ThemeScript.d.ts.map +1 -0
- package/dist/theme/ThemeScript.js +13 -0
- package/dist/theme/ThemeScript.js.map +1 -0
- package/dist/theme/__tests__/theme.test.d.ts +2 -0
- package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
- package/dist/theme/__tests__/theme.test.js +103 -0
- package/dist/theme/__tests__/theme.test.js.map +1 -0
- package/dist/theme/constants.d.ts +29 -0
- package/dist/theme/constants.d.ts.map +1 -0
- package/dist/theme/constants.js +48 -0
- package/dist/theme/constants.js.map +1 -0
- package/dist/theme/index.d.ts +31 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +36 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/theme-context.d.ts +40 -0
- package/dist/theme/theme-context.d.ts.map +1 -0
- package/dist/theme/theme-context.js +60 -0
- package/dist/theme/theme-context.js.map +1 -0
- package/dist/theme/theme-script.d.ts +27 -0
- package/dist/theme/theme-script.d.ts.map +1 -0
- package/dist/theme/theme-script.js +147 -0
- package/dist/theme/theme-script.js.map +1 -0
- package/dist/theme/types.d.ts +163 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme/types.js +11 -0
- package/dist/theme/types.js.map +1 -0
- package/dist/theme/use-theme.d.ts +12 -0
- package/dist/theme/use-theme.d.ts.map +1 -0
- package/dist/theme/use-theme.js +40 -0
- package/dist/theme/use-theme.js.map +1 -0
- package/dist/types.d.ts +1479 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -0
- package/dist/urls.d.ts +441 -0
- package/dist/urls.d.ts.map +1 -0
- package/dist/urls.gen.d.ts +8 -0
- package/dist/urls.gen.d.ts.map +1 -0
- package/dist/urls.gen.js +8 -0
- package/dist/urls.gen.js.map +1 -0
- package/dist/urls.js +443 -0
- package/dist/urls.js.map +1 -0
- package/dist/use-loader.d.ts +127 -0
- package/dist/use-loader.d.ts.map +1 -0
- package/dist/use-loader.js +237 -0
- package/dist/use-loader.js.map +1 -0
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
- package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
- package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
- package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
- package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
- package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
- package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
- package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
- package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
- package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
- package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
- package/dist/vite/__tests__/expose-router-id.test.js +39 -0
- package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
- package/dist/vite/ast-handler-extract.d.ts +49 -0
- package/dist/vite/ast-handler-extract.d.ts.map +1 -0
- package/dist/vite/ast-handler-extract.js +249 -0
- package/dist/vite/ast-handler-extract.js.map +1 -0
- package/dist/vite/expose-action-id.d.ts +19 -0
- package/dist/vite/expose-action-id.d.ts.map +1 -0
- package/dist/vite/expose-action-id.js +250 -0
- package/dist/vite/expose-action-id.js.map +1 -0
- package/dist/vite/expose-id-utils.d.ts +69 -0
- package/dist/vite/expose-id-utils.d.ts.map +1 -0
- package/dist/vite/expose-id-utils.js +289 -0
- package/dist/vite/expose-id-utils.js.map +1 -0
- package/dist/vite/expose-internal-ids.d.ts +22 -0
- package/dist/vite/expose-internal-ids.d.ts.map +1 -0
- package/dist/vite/expose-internal-ids.js +886 -0
- package/dist/vite/expose-internal-ids.js.map +1 -0
- package/dist/vite/index.d.ts +149 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +3423 -1718
- package/dist/vite/index.js.bak +5448 -0
- package/dist/vite/index.js.map +1 -0
- package/dist/vite/index.named-routes.gen.ts +103 -0
- package/dist/vite/package-resolution.d.ts +43 -0
- package/dist/vite/package-resolution.d.ts.map +1 -0
- package/dist/vite/package-resolution.js +112 -0
- package/dist/vite/package-resolution.js.map +1 -0
- package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/dist/vite/virtual-entries.d.ts +25 -0
- package/dist/vite/virtual-entries.d.ts.map +1 -0
- package/dist/vite/virtual-entries.js +110 -0
- package/dist/vite/virtual-entries.js.map +1 -0
- package/package.json +21 -18
- package/skills/breadcrumbs/SKILL.md +252 -0
- package/skills/cache-guide/SKILL.md +41 -5
- package/skills/caching/SKILL.md +49 -8
- package/skills/document-cache/SKILL.md +2 -2
- package/skills/handler-use/SKILL.md +362 -0
- package/skills/hooks/SKILL.md +94 -52
- package/skills/host-router/SKILL.md +218 -0
- package/skills/intercept/SKILL.md +99 -0
- package/skills/layout/SKILL.md +84 -2
- package/skills/links/SKILL.md +93 -17
- package/skills/loader/SKILL.md +367 -36
- package/skills/middleware/SKILL.md +145 -33
- package/skills/migrate-nextjs/SKILL.md +562 -0
- package/skills/migrate-react-router/SKILL.md +769 -0
- package/skills/parallel/SKILL.md +249 -2
- package/skills/prerender/SKILL.md +261 -49
- package/skills/rango/SKILL.md +26 -24
- package/skills/response-routes/SKILL.md +11 -3
- package/skills/route/SKILL.md +100 -5
- package/skills/router-setup/SKILL.md +172 -5
- package/skills/server-actions/SKILL.md +739 -0
- package/skills/streams-and-websockets/SKILL.md +283 -0
- package/skills/theme/SKILL.md +5 -4
- package/skills/typesafety/SKILL.md +95 -38
- package/skills/use-cache/SKILL.md +16 -2
- package/src/__internal.ts +93 -1
- package/src/bin/rango.ts +56 -19
- package/src/browser/action-coordinator.ts +97 -0
- package/src/browser/app-shell.ts +52 -0
- package/src/browser/app-version.ts +14 -0
- package/src/browser/event-controller.ts +78 -52
- package/src/browser/history-state.ts +80 -0
- package/src/browser/intercept-utils.ts +1 -1
- package/src/browser/link-interceptor.ts +23 -3
- package/src/browser/merge-segment-loaders.ts +9 -2
- package/src/browser/navigation-bridge.ts +234 -453
- package/src/browser/navigation-client.ts +191 -86
- package/src/browser/navigation-store.ts +71 -41
- package/src/browser/navigation-transaction.ts +297 -0
- package/src/browser/partial-update.ts +215 -167
- package/src/browser/prefetch/cache.ts +314 -0
- package/src/browser/prefetch/fetch.ts +282 -0
- package/src/browser/prefetch/observer.ts +65 -0
- package/src/browser/prefetch/policy.ts +48 -0
- package/src/browser/prefetch/queue.ts +191 -0
- package/src/browser/prefetch/resource-ready.ts +77 -0
- package/src/browser/rango-state.ts +152 -0
- package/src/browser/react/Link.tsx +241 -47
- package/src/browser/react/NavigationProvider.tsx +136 -16
- package/src/browser/react/context.ts +11 -0
- package/src/browser/react/filter-segment-order.ts +55 -0
- package/src/browser/react/index.ts +2 -6
- package/src/browser/react/location-state-shared.ts +29 -11
- package/src/browser/react/location-state.ts +6 -4
- package/src/browser/react/nonce-context.ts +23 -0
- package/src/browser/react/shallow-equal.ts +27 -0
- package/src/browser/react/use-action.ts +23 -45
- package/src/browser/react/use-client-cache.ts +5 -3
- package/src/browser/react/use-handle.ts +28 -120
- package/src/browser/react/use-navigation.ts +29 -34
- package/src/browser/react/use-params.ts +16 -35
- package/src/browser/react/use-pathname.ts +2 -3
- package/src/browser/react/use-router.ts +31 -14
- package/src/browser/react/use-search-params.ts +2 -1
- package/src/browser/react/use-segments.ts +82 -118
- package/src/browser/response-adapter.ts +73 -0
- package/src/browser/rsc-router.tsx +202 -67
- package/src/browser/scroll-restoration.ts +47 -45
- package/src/browser/segment-reconciler.ts +36 -9
- package/src/browser/server-action-bridge.ts +464 -409
- package/src/browser/types.ts +100 -40
- package/src/browser/validate-redirect-origin.ts +29 -0
- package/src/build/generate-manifest.ts +44 -19
- package/src/build/generate-route-types.ts +7 -0
- package/src/build/index.ts +1 -0
- package/src/build/route-trie.ts +67 -25
- package/src/build/route-types/codegen.ts +13 -4
- package/src/build/route-types/include-resolution.ts +21 -1
- package/src/build/route-types/per-module-writer.ts +15 -3
- package/src/build/route-types/router-processing.ts +391 -90
- package/src/build/route-types/scan-filter.ts +8 -1
- package/src/build/runtime-discovery.ts +13 -1
- package/src/cache/background-task.ts +34 -0
- package/src/cache/cache-key-utils.ts +44 -0
- package/src/cache/cache-policy.ts +125 -0
- package/src/cache/cache-runtime.ts +140 -123
- package/src/cache/cache-scope.ts +124 -90
- package/src/cache/cf/cf-cache-store.ts +467 -22
- package/src/cache/cf/index.ts +5 -1
- package/src/cache/document-cache.ts +109 -75
- package/src/cache/handle-capture.ts +81 -0
- package/src/cache/index.ts +1 -15
- package/src/cache/memory-segment-store.ts +43 -69
- package/src/cache/profile-registry.ts +43 -8
- package/src/cache/read-through-swr.ts +134 -0
- package/src/cache/segment-codec.ts +140 -117
- package/src/cache/taint.ts +85 -3
- package/src/cache/types.ts +1 -115
- package/src/client.rsc.tsx +2 -1
- package/src/client.tsx +86 -254
- package/src/context-var.ts +72 -2
- package/src/debug.ts +2 -2
- package/src/errors.ts +6 -1
- package/src/handle.ts +41 -1
- package/src/handles/MetaTags.tsx +5 -2
- package/src/handles/breadcrumbs.ts +66 -0
- package/src/handles/index.ts +1 -0
- package/src/host/cookie-handler.ts +8 -3
- package/src/host/index.ts +0 -3
- package/src/host/router.ts +14 -1
- package/src/href-client.ts +3 -1
- package/src/index.rsc.ts +48 -32
- package/src/index.ts +104 -64
- package/src/loader.rsc.ts +12 -4
- package/src/loader.ts +8 -0
- package/src/outlet-context.ts +1 -1
- package/src/prerender/store.ts +61 -18
- package/src/prerender.ts +207 -88
- package/src/response-utils.ts +28 -0
- package/src/reverse.ts +36 -7
- package/src/root-error-boundary.tsx +30 -26
- package/src/route-definition/dsl-helpers.ts +249 -46
- package/src/route-definition/helpers-types.ts +73 -20
- package/src/route-definition/index.ts +3 -3
- package/src/route-definition/redirect.ts +24 -4
- package/src/route-definition/resolve-handler-use.ts +155 -0
- package/src/route-map-builder.ts +45 -3
- package/src/route-name.ts +53 -0
- package/src/route-types.ts +25 -0
- package/src/router/content-negotiation.ts +101 -2
- package/src/router/debug-manifest.ts +16 -3
- package/src/router/find-match.ts +4 -2
- package/src/router/handler-context.ts +221 -39
- package/src/router/intercept-resolution.ts +17 -8
- package/src/router/lazy-includes.ts +12 -5
- package/src/router/loader-resolution.ts +164 -31
- package/src/router/logging.ts +104 -4
- package/src/router/manifest.ts +53 -9
- package/src/router/match-api.ts +150 -206
- package/src/router/match-context.ts +3 -0
- package/src/router/match-handlers.ts +186 -11
- package/src/router/match-middleware/background-revalidation.ts +94 -86
- package/src/router/match-middleware/cache-lookup.ts +164 -19
- package/src/router/match-middleware/cache-store.ts +55 -10
- package/src/router/match-middleware/intercept-resolution.ts +9 -7
- package/src/router/match-middleware/segment-resolution.ts +61 -5
- package/src/router/match-pipelines.ts +8 -43
- package/src/router/match-result.ts +122 -18
- package/src/router/metrics.ts +238 -13
- package/src/router/middleware-types.ts +64 -61
- package/src/router/middleware.ts +316 -145
- package/src/router/navigation-snapshot.ts +182 -0
- package/src/router/pattern-matching.ts +134 -15
- package/src/router/prerender-match.ts +150 -16
- package/src/router/preview-match.ts +30 -96
- package/src/router/request-classification.ts +310 -0
- package/src/router/revalidation.ts +102 -9
- package/src/router/route-snapshot.ts +245 -0
- package/src/router/router-context.ts +20 -0
- package/src/router/router-interfaces.ts +200 -43
- package/src/router/router-options.ts +265 -12
- package/src/router/router-registry.ts +5 -2
- package/src/router/segment-resolution/fresh.ts +365 -256
- package/src/router/segment-resolution/helpers.ts +268 -0
- package/src/router/segment-resolution/loader-cache.ts +103 -98
- package/src/router/segment-resolution/revalidation.ts +711 -423
- package/src/router/segment-resolution/static-store.ts +2 -2
- package/src/router/segment-resolution.ts +1 -3
- package/src/router/segment-wrappers.ts +5 -0
- package/src/router/telemetry-otel.ts +299 -0
- package/src/router/telemetry.ts +300 -0
- package/src/router/timeout.ts +148 -0
- package/src/router/trie-matching.ts +30 -6
- package/src/router/types.ts +8 -1
- package/src/router/url-params.ts +49 -0
- package/src/router.ts +269 -25
- package/src/rsc/handler-context.ts +13 -2
- package/src/rsc/handler.ts +784 -629
- package/src/rsc/helpers.ts +168 -20
- package/src/rsc/index.ts +0 -20
- package/src/rsc/loader-fetch.ts +105 -43
- package/src/rsc/manifest-init.ts +7 -2
- package/src/rsc/origin-guard.ts +141 -0
- package/src/rsc/progressive-enhancement.ts +262 -20
- package/src/rsc/response-route-handler.ts +360 -0
- package/src/rsc/rsc-rendering.ts +70 -44
- package/src/rsc/runtime-warnings.ts +42 -0
- package/src/rsc/server-action.ts +178 -66
- package/src/rsc/ssr-setup.ts +128 -0
- package/src/rsc/types.ts +37 -3
- package/src/search-params.ts +38 -23
- package/src/segment-content-promise.ts +67 -0
- package/src/segment-loader-promise.ts +122 -0
- package/src/segment-system.tsx +109 -23
- package/src/server/context.ts +227 -24
- package/src/server/cookie-store.ts +190 -0
- package/src/server/fetchable-loader-store.ts +11 -6
- package/src/server/handle-store.ts +103 -12
- package/src/server/loader-registry.ts +20 -54
- package/src/server/request-context.ts +475 -105
- package/src/server.ts +6 -0
- package/src/ssr/index.tsx +74 -27
- package/src/static-handler.ts +25 -6
- package/src/theme/ThemeProvider.tsx +6 -1
- package/src/theme/index.ts +4 -18
- package/src/theme/theme-context.ts +1 -28
- package/src/theme/theme-script.ts +2 -1
- package/src/types/cache-types.ts +10 -5
- package/src/types/error-types.ts +3 -0
- package/src/types/global-namespace.ts +22 -0
- package/src/types/handler-context.ts +242 -82
- package/src/types/index.ts +1 -1
- package/src/types/loader-types.ts +50 -21
- package/src/types/request-scope.ts +126 -0
- package/src/types/route-config.ts +17 -26
- package/src/types/route-entry.ts +46 -0
- package/src/types/segments.ts +19 -5
- package/src/urls/include-helper.ts +72 -21
- package/src/urls/index.ts +1 -0
- package/src/urls/path-helper-types.ts +69 -18
- package/src/urls/path-helper.ts +65 -15
- package/src/urls/pattern-types.ts +33 -1
- package/src/urls/response-types.ts +47 -23
- package/src/urls/type-extraction.ts +23 -15
- package/src/use-loader.tsx +103 -13
- package/src/vite/debug.ts +184 -0
- package/src/vite/discovery/bundle-postprocess.ts +62 -85
- package/src/vite/discovery/discover-routers.ts +87 -29
- package/src/vite/discovery/gate-state.ts +171 -0
- package/src/vite/discovery/prerender-collection.ts +224 -106
- package/src/vite/discovery/route-types-writer.ts +7 -7
- package/src/vite/discovery/self-gen-tracking.ts +27 -1
- package/src/vite/discovery/state.ts +20 -13
- package/src/vite/discovery/virtual-module-codegen.ts +5 -2
- package/src/vite/index.ts +14 -51
- package/src/vite/plugin-types.ts +51 -79
- package/src/vite/plugins/cjs-to-esm.ts +5 -0
- package/src/vite/plugins/client-ref-dedup.ts +131 -0
- package/src/vite/plugins/client-ref-hashing.ts +19 -7
- package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
- package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
- package/src/vite/plugins/expose-action-id.ts +53 -31
- package/src/vite/plugins/expose-id-utils.ts +12 -0
- package/src/vite/plugins/expose-ids/handler-transform.ts +30 -0
- package/src/vite/plugins/expose-ids/router-transform.ts +20 -3
- package/src/vite/plugins/expose-internal-ids.ts +567 -319
- package/src/vite/plugins/performance-tracks.ts +96 -0
- package/src/vite/plugins/refresh-cmd.ts +127 -0
- package/src/vite/plugins/use-cache-transform.ts +139 -38
- package/src/vite/plugins/version-injector.ts +37 -11
- package/src/vite/plugins/version-plugin.ts +200 -18
- package/src/vite/rango.ts +233 -221
- package/src/vite/router-discovery.ts +887 -176
- package/src/vite/utils/banner.ts +4 -4
- package/src/vite/utils/package-resolution.ts +41 -1
- package/src/vite/utils/prerender-utils.ts +113 -0
- package/src/vite/utils/shared-utils.ts +22 -11
- package/skills/testing/SKILL.md +0 -226
- package/src/browser/lru-cache.ts +0 -61
- package/src/browser/react/prefetch.ts +0 -27
- package/src/browser/request-controller.ts +0 -164
- package/src/cache/memory-store.ts +0 -253
- package/src/route-definition/route-function.ts +0 -119
- package/src/router.gen.ts +0 -6
- package/src/static-handler.gen.ts +0 -5
- package/src/urls.gen.ts +0 -8
|
@@ -15,9 +15,18 @@ import type { RenderSegmentsOptions } from "../segment-system.js";
|
|
|
15
15
|
import { reconcileSegments } from "./segment-reconciler.js";
|
|
16
16
|
import type { ReconcileActor } from "./segment-reconciler.js";
|
|
17
17
|
import { hasActiveIntercept as hasActiveInterceptSlots } from "./intercept-utils.js";
|
|
18
|
-
import type { BoundTransaction } from "./navigation-
|
|
18
|
+
import type { BoundTransaction } from "./navigation-transaction.js";
|
|
19
19
|
import { ServerRedirect } from "../errors.js";
|
|
20
20
|
import { debugLog } from "./logging.js";
|
|
21
|
+
import { validateRedirectOrigin } from "./validate-redirect-origin.js";
|
|
22
|
+
import type { NavigationUpdate } from "./types.js";
|
|
23
|
+
|
|
24
|
+
/** Build a scroll payload from the commit's scroll option */
|
|
25
|
+
function toScrollPayload(
|
|
26
|
+
scroll: boolean | undefined,
|
|
27
|
+
): NonNullable<NavigationUpdate["scroll"]> {
|
|
28
|
+
return { enabled: scroll !== false ? scroll : false };
|
|
29
|
+
}
|
|
21
30
|
|
|
22
31
|
/**
|
|
23
32
|
* Configuration for creating a partial updater
|
|
@@ -30,8 +39,15 @@ export interface PartialUpdateConfig {
|
|
|
30
39
|
segments: ResolvedSegment[],
|
|
31
40
|
options?: RenderSegmentsOptions,
|
|
32
41
|
) => Promise<ReactNode> | ReactNode;
|
|
33
|
-
/** RSC version
|
|
34
|
-
|
|
42
|
+
/** RSC version getter — returns the current version (may change after HMR) */
|
|
43
|
+
getVersion?: () => string | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Replace the active app-shell when a cross-app navigation is detected.
|
|
46
|
+
* Called before the full-update tree replacement renders, so the new
|
|
47
|
+
* payload's rootLayout, basename, and version are picked up. Theme,
|
|
48
|
+
* warmup, and prefetch TTL are not part of the shell — see AppShell.
|
|
49
|
+
*/
|
|
50
|
+
applyAppShell?: (next: import("./app-shell.js").AppShell) => void;
|
|
35
51
|
}
|
|
36
52
|
|
|
37
53
|
/**
|
|
@@ -51,9 +67,25 @@ export interface CommitOverrides {
|
|
|
51
67
|
}
|
|
52
68
|
|
|
53
69
|
/**
|
|
54
|
-
*
|
|
55
|
-
* Transaction encapsulates all store mutations for atomic commit
|
|
70
|
+
* Discriminated update mode for partial updates.
|
|
56
71
|
*/
|
|
72
|
+
export type UpdateMode =
|
|
73
|
+
| {
|
|
74
|
+
type: "navigate";
|
|
75
|
+
/** Cached segments for the target URL. When provided, these are used to build
|
|
76
|
+
* the segment map instead of the current page's segments. This ensures consistency
|
|
77
|
+
* when we send cached segment IDs to the server - if the server returns empty diff,
|
|
78
|
+
* we use the same segments we told the server we have. */
|
|
79
|
+
targetCacheSegments?: ResolvedSegment[];
|
|
80
|
+
/** Cached handle data for the target URL. When server returns empty diff and we're
|
|
81
|
+
* rendering from cache, this is passed to the UI to restore breadcrumbs etc. */
|
|
82
|
+
targetCacheHandleData?: Record<string, Record<string, unknown[]>>;
|
|
83
|
+
/** Source URL for intercept restore (popstate cache miss) */
|
|
84
|
+
interceptSourceUrl?: string;
|
|
85
|
+
}
|
|
86
|
+
| { type: "leave-intercept" }
|
|
87
|
+
| { type: "stale-revalidation"; interceptSourceUrl?: string }
|
|
88
|
+
| { type: "action"; interceptSourceUrl?: string };
|
|
57
89
|
|
|
58
90
|
/**
|
|
59
91
|
* Type for the fetchPartialUpdate function
|
|
@@ -63,24 +95,9 @@ export type PartialUpdater = (
|
|
|
63
95
|
segmentIds: string[] | undefined,
|
|
64
96
|
isRetry: boolean,
|
|
65
97
|
signal: AbortSignal | undefined,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
staleRevalidation?: boolean;
|
|
70
|
-
interceptSourceUrl?: string;
|
|
71
|
-
/** Cached segments for the target URL. When provided, these are used to build
|
|
72
|
-
* the segment map instead of the current page's segments. This ensures consistency
|
|
73
|
-
* when we send cached segment IDs to the server - if the server returns empty diff,
|
|
74
|
-
* we use the same segments we told the server we have. */
|
|
75
|
-
targetCacheSegments?: ResolvedSegment[];
|
|
76
|
-
/** Cached handle data for the target URL. When server returns empty diff and we're
|
|
77
|
-
* rendering from cache, this is passed to the UI to restore breadcrumbs etc. */
|
|
78
|
-
targetCacheHandleData?: Record<string, Record<string, unknown[]>>;
|
|
79
|
-
/** When true, we're leaving an intercept state - don't use current segment IDs
|
|
80
|
-
* as fallback and force a fresh render from server */
|
|
81
|
-
leavingIntercept?: boolean;
|
|
82
|
-
},
|
|
83
|
-
) => Promise<Promise<void>>;
|
|
98
|
+
tx: BoundTransaction,
|
|
99
|
+
mode?: UpdateMode,
|
|
100
|
+
) => Promise<void>;
|
|
84
101
|
|
|
85
102
|
/**
|
|
86
103
|
* Create a partial updater for fetching and applying RSC partial updates
|
|
@@ -90,23 +107,18 @@ export type PartialUpdater = (
|
|
|
90
107
|
*
|
|
91
108
|
* @param config - Partial update configuration
|
|
92
109
|
* @returns fetchPartialUpdate function
|
|
93
|
-
*
|
|
94
|
-
* @example
|
|
95
|
-
* ```typescript
|
|
96
|
-
* const fetchPartialUpdate = createPartialUpdater({
|
|
97
|
-
* store,
|
|
98
|
-
* client,
|
|
99
|
-
* onUpdate: (update) => store.emit(update),
|
|
100
|
-
* renderSegments,
|
|
101
|
-
* });
|
|
102
|
-
*
|
|
103
|
-
* await fetchPartialUpdate('/new-page');
|
|
104
|
-
* ```
|
|
105
110
|
*/
|
|
106
111
|
export function createPartialUpdater(
|
|
107
112
|
config: PartialUpdateConfig,
|
|
108
113
|
): PartialUpdater {
|
|
109
|
-
const {
|
|
114
|
+
const {
|
|
115
|
+
store,
|
|
116
|
+
client,
|
|
117
|
+
onUpdate,
|
|
118
|
+
renderSegments,
|
|
119
|
+
getVersion = () => undefined,
|
|
120
|
+
applyAppShell,
|
|
121
|
+
} = config;
|
|
110
122
|
|
|
111
123
|
/**
|
|
112
124
|
* Get current page's cached segments as an array
|
|
@@ -119,7 +131,6 @@ export function createPartialUpdater(
|
|
|
119
131
|
|
|
120
132
|
/**
|
|
121
133
|
* Fetch partial update and trigger UI update
|
|
122
|
-
* Returns a promise that resolves when the RSC stream is fully consumed
|
|
123
134
|
*
|
|
124
135
|
* @param tx - Transaction for committing segment state (required)
|
|
125
136
|
* @param signal - AbortSignal to check if navigation is stale (not for aborting fetch)
|
|
@@ -130,39 +141,26 @@ export function createPartialUpdater(
|
|
|
130
141
|
isRetry: boolean,
|
|
131
142
|
signal: AbortSignal | undefined,
|
|
132
143
|
tx: BoundTransaction,
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
staleRevalidation?: boolean;
|
|
136
|
-
interceptSourceUrl?: string;
|
|
137
|
-
targetCacheSegments?: ResolvedSegment[];
|
|
138
|
-
targetCacheHandleData?: Record<string, Record<string, unknown[]>>;
|
|
139
|
-
leavingIntercept?: boolean;
|
|
140
|
-
},
|
|
141
|
-
): Promise<Promise<void>> {
|
|
142
|
-
const {
|
|
143
|
-
isAction = false,
|
|
144
|
-
staleRevalidation = false,
|
|
145
|
-
interceptSourceUrl,
|
|
146
|
-
targetCacheSegments,
|
|
147
|
-
targetCacheHandleData,
|
|
148
|
-
leavingIntercept = false,
|
|
149
|
-
} = options || {};
|
|
144
|
+
mode: UpdateMode = { type: "navigate" },
|
|
145
|
+
): Promise<void> {
|
|
150
146
|
const segmentState = store.getSegmentState();
|
|
151
147
|
const url = targetUrl || window.location.href;
|
|
152
148
|
|
|
153
149
|
// Capture history key at start for stale revalidation consistency check
|
|
154
150
|
const historyKeyAtStart = store.getHistoryKey();
|
|
155
151
|
|
|
156
|
-
//
|
|
157
|
-
|
|
152
|
+
// Derive interceptSourceUrl from modes that carry it
|
|
153
|
+
const interceptSourceUrl =
|
|
154
|
+
mode.type === "stale-revalidation" ||
|
|
155
|
+
mode.type === "action" ||
|
|
156
|
+
mode.type === "navigate"
|
|
157
|
+
? mode.interceptSourceUrl
|
|
158
|
+
: undefined;
|
|
159
|
+
|
|
160
|
+
// When leaving intercept, filter out intercept-specific segments
|
|
158
161
|
let segments: string[];
|
|
159
|
-
if (
|
|
160
|
-
// When leaving intercept, only send segments that aren't intercept-specific
|
|
161
|
-
// The server will return the non-intercept version of the route
|
|
162
|
+
if (mode.type === "leave-intercept") {
|
|
162
163
|
const currentSegments = segmentIds ?? segmentState.currentSegmentIds;
|
|
163
|
-
// Use cached segment metadata (namespace) to identify intercept segments.
|
|
164
|
-
// Only intercept segments have namespace starting with "intercept:" —
|
|
165
|
-
// regular parallel segments like @sidebar are preserved.
|
|
166
164
|
const currentCached = getCurrentCachedSegments();
|
|
167
165
|
const interceptIds = new Set(
|
|
168
166
|
currentCached
|
|
@@ -177,10 +175,16 @@ export function createPartialUpdater(
|
|
|
177
175
|
segments = segmentIds ?? segmentState.currentSegmentIds;
|
|
178
176
|
}
|
|
179
177
|
|
|
180
|
-
// For intercept revalidation, use the intercept source URL as previousUrl
|
|
181
|
-
//
|
|
178
|
+
// For intercept revalidation, use the intercept source URL as previousUrl.
|
|
179
|
+
// For leave-intercept, tx.currentUrl captures window.location.href at tx
|
|
180
|
+
// creation, which on popstate is already the destination URL and would
|
|
181
|
+
// tell the server "from == to". segmentState.currentUrl still points at
|
|
182
|
+
// the URL the cached segments render (the intercept URL), which is the
|
|
183
|
+
// correct "from" for the server's diff computation.
|
|
182
184
|
const previousUrl =
|
|
183
|
-
|
|
185
|
+
mode.type === "leave-intercept"
|
|
186
|
+
? segmentState.currentUrl || tx.currentUrl
|
|
187
|
+
: interceptSourceUrl || tx.currentUrl || segmentState.currentUrl;
|
|
184
188
|
|
|
185
189
|
debugLog(`\n[Browser] >>> NAVIGATION`);
|
|
186
190
|
debugLog(`[Browser] From: ${previousUrl}`);
|
|
@@ -191,36 +195,37 @@ export function createPartialUpdater(
|
|
|
191
195
|
}
|
|
192
196
|
|
|
193
197
|
// Get cached segments for merging with server diff.
|
|
194
|
-
// When
|
|
195
|
-
// to ensure consistency - we use the same segments we told the server we have.
|
|
198
|
+
// When navigating with targetCacheSegments, use those for consistency.
|
|
196
199
|
// Otherwise fall back to current page's segments (for same-route revalidation).
|
|
200
|
+
const targetCache =
|
|
201
|
+
mode.type === "navigate" ? mode.targetCacheSegments : undefined;
|
|
197
202
|
const cachedSegs =
|
|
198
|
-
|
|
199
|
-
?
|
|
203
|
+
targetCache && targetCache.length > 0
|
|
204
|
+
? targetCache
|
|
200
205
|
: getCurrentCachedSegments();
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
206
|
+
const cachedSegsSource =
|
|
207
|
+
targetCache && targetCache.length > 0 ? "history-cache" : "current-page";
|
|
208
|
+
debugLog(
|
|
209
|
+
`[Browser] cachedSegs source: ${cachedSegsSource} (${cachedSegs.length} segments: ${cachedSegs.map((s) => s.id).join(", ")})`,
|
|
210
|
+
);
|
|
211
|
+
|
|
204
212
|
// Fetch partial payload (no abort signal - RSC doesn't support it well)
|
|
205
|
-
// Wrapped in try/catch to ensure streamingToken.end() is called if fetch throws,
|
|
206
|
-
// preventing isStreaming from being permanently stuck as true.
|
|
207
213
|
let fetchResult: Awaited<ReturnType<NavigationClient["fetchPartial"]>>;
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
214
|
+
fetchResult = await client.fetchPartial({
|
|
215
|
+
targetUrl: url,
|
|
216
|
+
segmentIds: segments,
|
|
217
|
+
previousUrl,
|
|
218
|
+
// Mark stale when explicitly requested OR when no segments are sent
|
|
219
|
+
// (action redirect sends empty segments for a fresh render).
|
|
220
|
+
staleRevalidation:
|
|
221
|
+
mode.type === "stale-revalidation" || segments.length === 0,
|
|
222
|
+
version: getVersion(),
|
|
223
|
+
routerId: store.getRouterId?.(),
|
|
224
|
+
});
|
|
225
|
+
// Mark navigation as streaming (response received, now parsing RSC).
|
|
226
|
+
// Called after fetchPartial so pendingUrl stays set during the network wait,
|
|
227
|
+
// allowing useLinkStatus to show per-link pending indicators.
|
|
228
|
+
const streamingToken = tx.startStreaming();
|
|
224
229
|
const { payload, streamComplete: rawStreamComplete } = fetchResult;
|
|
225
230
|
debugLog("payload.metadata", payload.metadata);
|
|
226
231
|
|
|
@@ -228,17 +233,46 @@ export function createPartialUpdater(
|
|
|
228
233
|
streamingToken.end();
|
|
229
234
|
});
|
|
230
235
|
|
|
231
|
-
//
|
|
232
|
-
// a
|
|
233
|
-
//
|
|
234
|
-
//
|
|
235
|
-
//
|
|
236
|
+
// Detect app switch: if routerId changed, the navigation crossed into
|
|
237
|
+
// a different router (e.g., via host router path mount). Downgrade
|
|
238
|
+
// partial to full so the entire tree is replaced without reconciliation
|
|
239
|
+
// against stale segments from the previous app, and replace the app
|
|
240
|
+
// shell (rootLayout, basename, version) so the target app's document
|
|
241
|
+
// and router config take effect instead of remaining captured from the
|
|
242
|
+
// initial load. Theme, warmup, and prefetch TTL are intentionally
|
|
243
|
+
// document-lifetime (see AppShell doc); a new document navigation
|
|
244
|
+
// applies them.
|
|
245
|
+
if (payload.metadata?.routerId) {
|
|
246
|
+
const prevRouterId = store.getRouterId?.();
|
|
247
|
+
if (prevRouterId && prevRouterId !== payload.metadata.routerId) {
|
|
248
|
+
debugLog(
|
|
249
|
+
`[Browser] App switch detected (${prevRouterId} → ${payload.metadata.routerId}), forcing full update`,
|
|
250
|
+
);
|
|
251
|
+
payload.metadata.isPartial = false;
|
|
252
|
+
applyAppShell?.({
|
|
253
|
+
routerId: payload.metadata.routerId,
|
|
254
|
+
rootLayout: payload.metadata.rootLayout,
|
|
255
|
+
basename: payload.metadata.basename,
|
|
256
|
+
version: payload.metadata.version,
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
store.setRouterId?.(payload.metadata.routerId);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// Handle server-side redirect with state
|
|
236
263
|
if (payload.metadata?.redirect) {
|
|
237
264
|
if (signal?.aborted) {
|
|
238
|
-
|
|
239
|
-
return
|
|
265
|
+
debugLog("[Browser] Ignoring stale redirect (aborted)");
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
const redirectUrl = validateRedirectOrigin(
|
|
269
|
+
payload.metadata.redirect.url,
|
|
270
|
+
window.location.origin,
|
|
271
|
+
);
|
|
272
|
+
if (!redirectUrl) {
|
|
273
|
+
debugLog("[Browser] Ignoring blocked redirect payload");
|
|
274
|
+
return;
|
|
240
275
|
}
|
|
241
|
-
const { url: redirectUrl } = payload.metadata.redirect;
|
|
242
276
|
const serverState = payload.metadata.locationState;
|
|
243
277
|
throw new ServerRedirect(redirectUrl, serverState);
|
|
244
278
|
}
|
|
@@ -249,15 +283,13 @@ export function createPartialUpdater(
|
|
|
249
283
|
// Check if this navigation is stale (a newer one started)
|
|
250
284
|
if (signal?.aborted) {
|
|
251
285
|
debugLog("[Browser] Ignoring stale navigation (aborted)");
|
|
252
|
-
return
|
|
286
|
+
return;
|
|
253
287
|
}
|
|
254
288
|
|
|
255
289
|
debugLog(`[Browser] Partial update - matched: ${matched?.join(", ")}`);
|
|
256
290
|
debugLog(`[Browser] Diff: ${diff?.join(", ")}`);
|
|
257
291
|
|
|
258
292
|
// If diff is empty, nothing changed on server side.
|
|
259
|
-
// However, if we're navigating with targetCacheSegments (to a different route),
|
|
260
|
-
// we still need to render those segments since the UI is showing the old route.
|
|
261
293
|
if (!diff || diff.length === 0) {
|
|
262
294
|
const matchedIds = matched || [];
|
|
263
295
|
const cacheMap = new Map(cachedSegs.map((s) => [s.id, s]));
|
|
@@ -266,8 +298,7 @@ export function createPartialUpdater(
|
|
|
266
298
|
.filter(Boolean) as ResolvedSegment[];
|
|
267
299
|
|
|
268
300
|
// When navigating with cached segments to a different route, render them.
|
|
269
|
-
|
|
270
|
-
if (targetCacheSegments && targetCacheSegments.length > 0) {
|
|
301
|
+
if (mode.type === "navigate" && targetCache && targetCache.length > 0) {
|
|
271
302
|
debugLog(
|
|
272
303
|
"[Browser] No diff but navigating with cached segments - rendering target route",
|
|
273
304
|
);
|
|
@@ -276,21 +307,35 @@ export function createPartialUpdater(
|
|
|
276
307
|
forceAwait: true,
|
|
277
308
|
});
|
|
278
309
|
|
|
279
|
-
tx.commit(
|
|
310
|
+
const { scroll: commitScroll } = tx.commit(
|
|
311
|
+
matchedIds,
|
|
312
|
+
existingSegments,
|
|
313
|
+
);
|
|
314
|
+
|
|
315
|
+
// tx.commit() cached the source page's handleData because
|
|
316
|
+
// eventController hasn't been updated yet. Overwrite with the
|
|
317
|
+
// correct cached handleData to prevent cache corruption on
|
|
318
|
+
// subsequent navigations to this same URL.
|
|
319
|
+
if (mode.targetCacheHandleData) {
|
|
320
|
+
store.updateCacheHandleData(
|
|
321
|
+
store.getHistoryKey(),
|
|
322
|
+
mode.targetCacheHandleData,
|
|
323
|
+
);
|
|
324
|
+
}
|
|
280
325
|
|
|
281
326
|
// Include cachedHandleData in metadata so NavigationProvider can restore
|
|
282
327
|
// breadcrumbs and other handle data from cache.
|
|
283
|
-
//
|
|
328
|
+
// Remove `handles` from metadata to prevent NavigationProvider from
|
|
284
329
|
// processing an empty handles stream, which would clear the cached breadcrumbs.
|
|
285
|
-
// When rendering from cache with empty diff, we want to use cachedHandleData instead.
|
|
286
330
|
const { handles: _unusedHandles, ...metadataWithoutHandles } =
|
|
287
331
|
payload.metadata!;
|
|
288
332
|
const cachedUpdate = {
|
|
289
333
|
root: newTree,
|
|
290
334
|
metadata: {
|
|
291
335
|
...metadataWithoutHandles,
|
|
292
|
-
cachedHandleData: targetCacheHandleData,
|
|
336
|
+
cachedHandleData: mode.targetCacheHandleData,
|
|
293
337
|
},
|
|
338
|
+
scroll: toScrollPayload(commitScroll),
|
|
294
339
|
};
|
|
295
340
|
|
|
296
341
|
const cachedHasTransition = existingSegments.some(
|
|
@@ -308,13 +353,11 @@ export function createPartialUpdater(
|
|
|
308
353
|
}
|
|
309
354
|
|
|
310
355
|
debugLog("[Browser] Navigation complete (rendered from cache)");
|
|
311
|
-
return
|
|
356
|
+
return;
|
|
312
357
|
}
|
|
313
358
|
|
|
314
359
|
// When leaving intercept, force re-render even with empty diff
|
|
315
|
-
|
|
316
|
-
// to remove the modal from the UI
|
|
317
|
-
if (leavingIntercept) {
|
|
360
|
+
if (mode.type === "leave-intercept") {
|
|
318
361
|
debugLog(
|
|
319
362
|
"[Browser] Leaving intercept - forcing re-render to remove modal",
|
|
320
363
|
);
|
|
@@ -323,15 +366,19 @@ export function createPartialUpdater(
|
|
|
323
366
|
forceAwait: true,
|
|
324
367
|
});
|
|
325
368
|
|
|
326
|
-
tx.commit(
|
|
369
|
+
const { scroll: leaveScroll } = tx.commit(
|
|
370
|
+
matchedIds,
|
|
371
|
+
existingSegments,
|
|
372
|
+
);
|
|
327
373
|
|
|
328
374
|
onUpdate({
|
|
329
375
|
root: newTree,
|
|
330
376
|
metadata: payload.metadata,
|
|
377
|
+
scroll: toScrollPayload(leaveScroll),
|
|
331
378
|
});
|
|
332
379
|
|
|
333
380
|
debugLog("[Browser] Navigation complete (left intercept)");
|
|
334
|
-
return
|
|
381
|
+
return;
|
|
335
382
|
}
|
|
336
383
|
|
|
337
384
|
// Same route revalidation with no changes - skip UI update
|
|
@@ -340,13 +387,15 @@ export function createPartialUpdater(
|
|
|
340
387
|
);
|
|
341
388
|
tx.commit(matchedIds, existingSegments);
|
|
342
389
|
debugLog("[Browser] Navigation complete (no re-render)");
|
|
343
|
-
return
|
|
390
|
+
return;
|
|
344
391
|
}
|
|
345
392
|
|
|
346
393
|
// Reconcile server segments with cached segments (single source of truth)
|
|
347
394
|
const matchedIds = matched || [];
|
|
348
395
|
const actor: ReconcileActor =
|
|
349
|
-
|
|
396
|
+
mode.type === "stale-revalidation" || mode.type === "action"
|
|
397
|
+
? "stale-revalidation"
|
|
398
|
+
: "navigation";
|
|
350
399
|
|
|
351
400
|
const reconciled = reconcileSegments({
|
|
352
401
|
actor,
|
|
@@ -376,31 +425,28 @@ export function createPartialUpdater(
|
|
|
376
425
|
debugLog(
|
|
377
426
|
"[Browser] Ignoring stale navigation (aborted during HMR retry)",
|
|
378
427
|
);
|
|
379
|
-
return
|
|
428
|
+
return;
|
|
380
429
|
}
|
|
381
|
-
if (
|
|
382
|
-
return
|
|
430
|
+
if (mode.type === "action") {
|
|
431
|
+
return;
|
|
383
432
|
}
|
|
384
433
|
console.warn(
|
|
385
434
|
`[Browser] HMR detected: Missing ${missingCount} segments. Refetching all...`,
|
|
386
435
|
);
|
|
387
436
|
|
|
388
437
|
// Refetch with empty segments = server sends everything
|
|
389
|
-
return fetchPartialUpdate(url, [], true, signal, tx,
|
|
438
|
+
return fetchPartialUpdate(url, [], true, signal, tx, mode);
|
|
390
439
|
}
|
|
391
440
|
|
|
392
441
|
if (signal?.aborted) {
|
|
393
442
|
debugLog("[Browser] Ignoring stale navigation (aborted before render)");
|
|
394
|
-
return
|
|
443
|
+
return;
|
|
395
444
|
}
|
|
396
445
|
|
|
397
446
|
// Rebuild tree on client (await for loader data resolution)
|
|
398
|
-
// Race against abort signal to allow cancellation during loader awaiting
|
|
399
|
-
// Pass intercept segments separately for explicit handling
|
|
400
|
-
// For stale revalidation, use forceAwait to ensure no loading fallbacks
|
|
401
447
|
const renderOptions = {
|
|
402
|
-
isAction,
|
|
403
|
-
forceAwait:
|
|
448
|
+
isAction: mode.type === "action",
|
|
449
|
+
forceAwait: mode.type === "stale-revalidation",
|
|
404
450
|
interceptSegments:
|
|
405
451
|
reconciled.interceptSegments.length > 0
|
|
406
452
|
? reconciled.interceptSegments
|
|
@@ -423,64 +469,68 @@ export function createPartialUpdater(
|
|
|
423
469
|
// Final abort check before committing - another navigation may have started
|
|
424
470
|
if (signal?.aborted) {
|
|
425
471
|
debugLog("[Browser] Ignoring stale navigation (aborted before commit)");
|
|
426
|
-
return
|
|
472
|
+
return;
|
|
427
473
|
}
|
|
428
474
|
|
|
429
475
|
// Check if this is an intercept response (any slot is active)
|
|
430
|
-
// If so, disable scroll to keep the current scroll position
|
|
431
476
|
const isInterceptResponse = hasActiveInterceptSlots(
|
|
432
477
|
payload.metadata?.slots,
|
|
433
478
|
);
|
|
434
479
|
|
|
435
|
-
// Track intercept context
|
|
436
|
-
|
|
480
|
+
// Track intercept context (only on navigation, not actions or stale revalidation)
|
|
481
|
+
// Use the authoritative source from mode/history state when restoring an
|
|
482
|
+
// intercept via popstate cache miss; fall back to the current URL for fresh
|
|
483
|
+
// intercept navigations.
|
|
484
|
+
const effectiveInterceptSource =
|
|
485
|
+
interceptSourceUrl || segmentState.currentUrl;
|
|
486
|
+
if (mode.type !== "action" && mode.type !== "stale-revalidation") {
|
|
437
487
|
if (isInterceptResponse) {
|
|
438
|
-
|
|
439
|
-
store.setInterceptSourceUrl(segmentState.currentUrl);
|
|
488
|
+
store.setInterceptSourceUrl(effectiveInterceptSource);
|
|
440
489
|
} else {
|
|
441
|
-
// Clear intercept context when navigating to a non-intercept route
|
|
442
490
|
store.setInterceptSourceUrl(null);
|
|
443
491
|
}
|
|
444
492
|
}
|
|
445
493
|
|
|
446
|
-
// Commit navigation -
|
|
447
|
-
//
|
|
448
|
-
//
|
|
449
|
-
const allSegmentIds =
|
|
494
|
+
// Commit navigation - use server's matched as the authoritative segment ID list.
|
|
495
|
+
// reconciled.segments may be missing IDs (e.g., loader segments not in diff or cache)
|
|
496
|
+
// but the server's matched always includes all expected segment IDs.
|
|
497
|
+
const allSegmentIds = matchedIds;
|
|
450
498
|
const serverLocationState = payload.metadata?.locationState;
|
|
451
499
|
const overrides: CommitOverrides | undefined = isInterceptResponse
|
|
452
500
|
? {
|
|
453
501
|
scroll: false,
|
|
454
502
|
intercept: true,
|
|
455
|
-
interceptSourceUrl:
|
|
503
|
+
interceptSourceUrl: effectiveInterceptSource,
|
|
456
504
|
...(serverLocationState && { serverState: serverLocationState }),
|
|
457
505
|
}
|
|
458
506
|
: serverLocationState
|
|
459
507
|
? { serverState: serverLocationState }
|
|
460
508
|
: undefined;
|
|
461
|
-
tx.commit(
|
|
509
|
+
const { scroll: navScroll } = tx.commit(
|
|
510
|
+
allSegmentIds,
|
|
511
|
+
reconciled.segments,
|
|
512
|
+
overrides,
|
|
513
|
+
);
|
|
462
514
|
|
|
463
515
|
// For stale revalidation: verify history key hasn't changed before updating UI
|
|
464
|
-
|
|
465
|
-
if (staleRevalidation) {
|
|
516
|
+
if (mode.type === "stale-revalidation") {
|
|
466
517
|
const historyKeyNow = store.getHistoryKey();
|
|
467
518
|
if (historyKeyNow !== historyKeyAtStart) {
|
|
468
519
|
debugLog(
|
|
469
520
|
`[Browser] Stale revalidation: history key changed (${historyKeyAtStart} -> ${historyKeyNow}), skipping UI update`,
|
|
470
521
|
);
|
|
471
|
-
return
|
|
522
|
+
return;
|
|
472
523
|
}
|
|
473
524
|
}
|
|
474
525
|
|
|
475
526
|
debugLog("[partial-update] updating document");
|
|
476
527
|
|
|
477
|
-
// Emit update to trigger React render
|
|
478
|
-
//
|
|
479
|
-
// For actions: wrap in startTransition to avoid UI flickering
|
|
480
|
-
// For transitions: wrap in startTransition + addTransitionType for ViewTransition
|
|
528
|
+
// Emit update to trigger React render.
|
|
529
|
+
// Scroll info is included so NavigationProvider applies it after React commits.
|
|
481
530
|
const hasTransition = reconciled.mainSegments.some((s) => s.transition);
|
|
531
|
+
const scrollPayload = toScrollPayload(navScroll);
|
|
482
532
|
|
|
483
|
-
if (
|
|
533
|
+
if (mode.type === "action" || mode.type === "stale-revalidation") {
|
|
484
534
|
startTransition(() => {
|
|
485
535
|
if (hasTransition && addTransitionType) {
|
|
486
536
|
addTransitionType("action");
|
|
@@ -488,6 +538,7 @@ export function createPartialUpdater(
|
|
|
488
538
|
onUpdate({
|
|
489
539
|
root: newTree,
|
|
490
540
|
metadata: payload.metadata!,
|
|
541
|
+
scroll: scrollPayload,
|
|
491
542
|
});
|
|
492
543
|
});
|
|
493
544
|
} else if (hasTransition) {
|
|
@@ -498,59 +549,52 @@ export function createPartialUpdater(
|
|
|
498
549
|
onUpdate({
|
|
499
550
|
root: newTree,
|
|
500
551
|
metadata: payload.metadata!,
|
|
552
|
+
scroll: scrollPayload,
|
|
501
553
|
});
|
|
502
554
|
});
|
|
503
555
|
} else {
|
|
504
556
|
onUpdate({
|
|
505
557
|
root: newTree,
|
|
506
558
|
metadata: payload.metadata!,
|
|
559
|
+
scroll: scrollPayload,
|
|
507
560
|
});
|
|
508
561
|
}
|
|
509
562
|
|
|
510
563
|
debugLog("[Browser] Navigation complete");
|
|
511
|
-
return
|
|
564
|
+
return;
|
|
512
565
|
} else {
|
|
513
566
|
// Full update (fallback)
|
|
514
|
-
// Reconstruct the tree client-side from segments via renderSegments
|
|
515
|
-
// to ensure consistent component references with action revalidation.
|
|
516
567
|
console.warn(`[Browser] Full update (fallback)`);
|
|
517
568
|
|
|
518
569
|
const segments = payload.metadata?.segments || [];
|
|
519
570
|
|
|
520
|
-
// Check if this navigation is stale (a newer one started)
|
|
521
571
|
if (signal?.aborted) {
|
|
522
572
|
debugLog("[Browser] Ignoring stale navigation (aborted)");
|
|
523
|
-
return
|
|
573
|
+
return;
|
|
524
574
|
}
|
|
525
575
|
|
|
526
576
|
const segmentIds = segments.map((s: ResolvedSegment) => s.id);
|
|
527
577
|
|
|
528
|
-
// Render on client for consistent component references
|
|
529
578
|
const newTree = await renderSegments(segments);
|
|
530
579
|
|
|
531
|
-
// Final abort check before committing - another navigation may have started
|
|
532
580
|
if (signal?.aborted) {
|
|
533
581
|
debugLog("[Browser] Ignoring stale navigation (aborted before commit)");
|
|
534
|
-
return
|
|
582
|
+
return;
|
|
535
583
|
}
|
|
536
584
|
|
|
537
|
-
// Commit navigation - transaction handles all store mutations atomically
|
|
538
585
|
const fullUpdateServerState = payload.metadata?.locationState;
|
|
539
|
-
|
|
540
|
-
tx.commit(segmentIds, segments, {
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
586
|
+
const { scroll: fullScroll } = fullUpdateServerState
|
|
587
|
+
? tx.commit(segmentIds, segments, {
|
|
588
|
+
serverState: fullUpdateServerState,
|
|
589
|
+
})
|
|
590
|
+
: tx.commit(segmentIds, segments);
|
|
544
591
|
|
|
545
|
-
// Emit update to trigger React render
|
|
546
|
-
// For stale revalidation: wait for stream to complete, then update
|
|
547
|
-
// For actions: wrap in startTransition to avoid UI flickering
|
|
548
|
-
// For transitions: wrap in startTransition + addTransitionType
|
|
549
592
|
const fullHasTransition = segments.some(
|
|
550
593
|
(s: ResolvedSegment) => s.transition,
|
|
551
594
|
);
|
|
595
|
+
const fullScrollPayload = toScrollPayload(fullScroll);
|
|
552
596
|
|
|
553
|
-
if (
|
|
597
|
+
if (mode.type === "stale-revalidation") {
|
|
554
598
|
await rawStreamComplete;
|
|
555
599
|
startTransition(() => {
|
|
556
600
|
if (fullHasTransition && addTransitionType) {
|
|
@@ -559,9 +603,10 @@ export function createPartialUpdater(
|
|
|
559
603
|
onUpdate({
|
|
560
604
|
root: newTree,
|
|
561
605
|
metadata: payload.metadata!,
|
|
606
|
+
scroll: fullScrollPayload,
|
|
562
607
|
});
|
|
563
608
|
});
|
|
564
|
-
} else if (
|
|
609
|
+
} else if (mode.type === "action") {
|
|
565
610
|
startTransition(async () => {
|
|
566
611
|
if (fullHasTransition && addTransitionType) {
|
|
567
612
|
addTransitionType("action");
|
|
@@ -569,6 +614,7 @@ export function createPartialUpdater(
|
|
|
569
614
|
onUpdate({
|
|
570
615
|
root: newTree,
|
|
571
616
|
metadata: payload.metadata!,
|
|
617
|
+
scroll: fullScrollPayload,
|
|
572
618
|
});
|
|
573
619
|
});
|
|
574
620
|
} else if (fullHasTransition) {
|
|
@@ -579,16 +625,18 @@ export function createPartialUpdater(
|
|
|
579
625
|
onUpdate({
|
|
580
626
|
root: newTree,
|
|
581
627
|
metadata: payload.metadata!,
|
|
628
|
+
scroll: fullScrollPayload,
|
|
582
629
|
});
|
|
583
630
|
});
|
|
584
631
|
} else {
|
|
585
632
|
onUpdate({
|
|
586
633
|
root: newTree,
|
|
587
634
|
metadata: payload.metadata!,
|
|
635
|
+
scroll: fullScrollPayload,
|
|
588
636
|
});
|
|
589
637
|
}
|
|
590
638
|
|
|
591
|
-
return
|
|
639
|
+
return;
|
|
592
640
|
}
|
|
593
641
|
}
|
|
594
642
|
|