@rangojs/router 0.0.0-experimental.133 → 0.0.0-experimental.134
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/dist/vite/index.js +22 -9
- package/package.json +1 -1
- package/skills/composability/SKILL.md +0 -1
- package/skills/handler-use/SKILL.md +7 -7
- package/skills/intercept/SKILL.md +38 -13
- package/skills/migrate-nextjs/SKILL.md +3 -3
- package/skills/prerender/SKILL.md +20 -17
- package/skills/router-setup/SKILL.md +1 -2
- package/skills/testing/SKILL.md +1 -0
- package/skills/view-transitions/SKILL.md +43 -0
- package/src/browser/navigation-bridge.ts +65 -16
- package/src/browser/navigation-client.ts +15 -1
- package/src/browser/navigation-store.ts +82 -8
- package/src/browser/network-error-handler.ts +34 -7
- package/src/browser/partial-update.ts +27 -2
- package/src/browser/prefetch/cache.ts +8 -0
- package/src/browser/prefetch/fetch.ts +32 -4
- package/src/browser/react/NavigationProvider.tsx +195 -4
- package/src/browser/react/deferred-handle-resolution.ts +75 -0
- package/src/browser/response-adapter.ts +38 -9
- package/src/browser/types.ts +32 -1
- package/src/handles/MetaTags.tsx +6 -0
- package/src/index.rsc.ts +6 -1
- package/src/index.ts +6 -4
- package/src/internal-debug.ts +11 -8
- package/src/render-error-thrower.tsx +20 -0
- package/src/route-content-wrapper.tsx +12 -5
- package/src/route-definition/dsl-helpers.ts +21 -32
- package/src/route-definition/helper-factories.ts +0 -2
- package/src/route-definition/helpers-types.ts +38 -39
- package/src/route-definition/index.ts +1 -2
- package/src/route-definition/resolve-handler-use.ts +0 -1
- package/src/route-definition/use-item-types.ts +3 -6
- package/src/route-types.ts +0 -5
- package/src/router/match-api.ts +5 -1
- package/src/router/segment-resolution/fresh.ts +4 -0
- package/src/router/segment-resolution/revalidation.ts +3 -0
- package/src/router/segment-resolution/view-transition-default.ts +35 -15
- package/src/rsc/progressive-enhancement.ts +31 -2
- package/src/rsc/rsc-rendering.ts +7 -2
- package/src/rsc/server-action.ts +19 -2
- package/src/rsc/transition-gate.ts +89 -0
- package/src/segment-system.tsx +26 -8
- package/src/server/context.ts +13 -0
- package/src/server/request-context.ts +41 -3
- package/src/testing/index.ts +6 -0
- package/src/testing/run-transition-when.ts +164 -0
- package/src/types/handler-context.ts +1 -1
- package/src/types/index.ts +2 -0
- package/src/types/segments.ts +100 -0
- package/src/urls/path-helper-types.ts +10 -7
- package/src/urls/urls-function.ts +0 -1
- package/src/vite/inject-client-debug.ts +36 -0
- package/src/vite/router-discovery.ts +8 -13
- package/dist/__internal.d.ts +0 -83
- package/dist/__internal.d.ts.map +0 -1
- package/dist/__internal.js +0 -19
- package/dist/__internal.js.map +0 -1
- package/dist/__mocks__/version.d.ts +0 -7
- package/dist/__mocks__/version.d.ts.map +0 -1
- package/dist/__mocks__/version.js +0 -7
- package/dist/__mocks__/version.js.map +0 -1
- package/dist/__tests__/client-href.test.d.ts +0 -2
- package/dist/__tests__/client-href.test.d.ts.map +0 -1
- package/dist/__tests__/client-href.test.js +0 -74
- package/dist/__tests__/client-href.test.js.map +0 -1
- package/dist/__tests__/component-utils.test.d.ts +0 -2
- package/dist/__tests__/component-utils.test.d.ts.map +0 -1
- package/dist/__tests__/component-utils.test.js +0 -51
- package/dist/__tests__/component-utils.test.js.map +0 -1
- package/dist/__tests__/event-controller.test.d.ts +0 -2
- package/dist/__tests__/event-controller.test.d.ts.map +0 -1
- package/dist/__tests__/event-controller.test.js +0 -538
- package/dist/__tests__/event-controller.test.js.map +0 -1
- package/dist/__tests__/helpers/route-tree.d.ts +0 -118
- package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
- package/dist/__tests__/helpers/route-tree.js +0 -374
- package/dist/__tests__/helpers/route-tree.js.map +0 -1
- package/dist/__tests__/match-result.test.d.ts +0 -2
- package/dist/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/__tests__/match-result.test.js +0 -154
- package/dist/__tests__/match-result.test.js.map +0 -1
- package/dist/__tests__/navigation-store.test.d.ts +0 -2
- package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
- package/dist/__tests__/navigation-store.test.js +0 -440
- package/dist/__tests__/navigation-store.test.js.map +0 -1
- package/dist/__tests__/partial-update.test.d.ts +0 -2
- package/dist/__tests__/partial-update.test.d.ts.map +0 -1
- package/dist/__tests__/partial-update.test.js +0 -1009
- package/dist/__tests__/partial-update.test.js.map +0 -1
- package/dist/__tests__/reverse-types.test.d.ts +0 -8
- package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
- package/dist/__tests__/reverse-types.test.js +0 -656
- package/dist/__tests__/reverse-types.test.js.map +0 -1
- package/dist/__tests__/route-definition.test.d.ts +0 -2
- package/dist/__tests__/route-definition.test.d.ts.map +0 -1
- package/dist/__tests__/route-definition.test.js +0 -55
- package/dist/__tests__/route-definition.test.js.map +0 -1
- package/dist/__tests__/router-helpers.test.d.ts +0 -2
- package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
- package/dist/__tests__/router-helpers.test.js +0 -377
- package/dist/__tests__/router-helpers.test.js.map +0 -1
- package/dist/__tests__/router-integration-2.test.d.ts +0 -2
- package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration-2.test.js +0 -426
- package/dist/__tests__/router-integration-2.test.js.map +0 -1
- package/dist/__tests__/router-integration.test.d.ts +0 -2
- package/dist/__tests__/router-integration.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration.test.js +0 -1051
- package/dist/__tests__/router-integration.test.js.map +0 -1
- package/dist/__tests__/search-params.test.d.ts +0 -5
- package/dist/__tests__/search-params.test.d.ts.map +0 -1
- package/dist/__tests__/search-params.test.js +0 -306
- package/dist/__tests__/search-params.test.js.map +0 -1
- package/dist/__tests__/segment-system.test.d.ts +0 -2
- package/dist/__tests__/segment-system.test.d.ts.map +0 -1
- package/dist/__tests__/segment-system.test.js +0 -627
- package/dist/__tests__/segment-system.test.js.map +0 -1
- package/dist/__tests__/static-handler-types.test.d.ts +0 -8
- package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
- package/dist/__tests__/static-handler-types.test.js +0 -63
- package/dist/__tests__/static-handler-types.test.js.map +0 -1
- package/dist/__tests__/urls.test.d.ts +0 -2
- package/dist/__tests__/urls.test.d.ts.map +0 -1
- package/dist/__tests__/urls.test.js +0 -421
- package/dist/__tests__/urls.test.js.map +0 -1
- package/dist/__tests__/use-mount.test.d.ts +0 -2
- package/dist/__tests__/use-mount.test.d.ts.map +0 -1
- package/dist/__tests__/use-mount.test.js +0 -35
- package/dist/__tests__/use-mount.test.js.map +0 -1
- package/dist/bin/rango.d.ts +0 -2
- package/dist/bin/rango.d.ts.map +0 -1
- package/dist/bin/rango.js.map +0 -1
- package/dist/browser/event-controller.d.ts +0 -191
- package/dist/browser/event-controller.d.ts.map +0 -1
- package/dist/browser/event-controller.js +0 -559
- package/dist/browser/event-controller.js.map +0 -1
- package/dist/browser/index.d.ts +0 -2
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -14
- package/dist/browser/index.js.map +0 -1
- package/dist/browser/link-interceptor.d.ts +0 -38
- package/dist/browser/link-interceptor.d.ts.map +0 -1
- package/dist/browser/link-interceptor.js +0 -99
- package/dist/browser/link-interceptor.js.map +0 -1
- package/dist/browser/logging.d.ts +0 -10
- package/dist/browser/logging.d.ts.map +0 -1
- package/dist/browser/logging.js +0 -29
- package/dist/browser/logging.js.map +0 -1
- package/dist/browser/lru-cache.d.ts +0 -17
- package/dist/browser/lru-cache.d.ts.map +0 -1
- package/dist/browser/lru-cache.js +0 -50
- package/dist/browser/lru-cache.js.map +0 -1
- package/dist/browser/merge-segment-loaders.d.ts +0 -39
- package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
- package/dist/browser/merge-segment-loaders.js +0 -102
- package/dist/browser/merge-segment-loaders.js.map +0 -1
- package/dist/browser/navigation-bridge.d.ts +0 -102
- package/dist/browser/navigation-bridge.d.ts.map +0 -1
- package/dist/browser/navigation-bridge.js +0 -708
- package/dist/browser/navigation-bridge.js.map +0 -1
- package/dist/browser/navigation-client.d.ts +0 -25
- package/dist/browser/navigation-client.d.ts.map +0 -1
- package/dist/browser/navigation-client.js +0 -157
- package/dist/browser/navigation-client.js.map +0 -1
- package/dist/browser/navigation-store.d.ts +0 -101
- package/dist/browser/navigation-store.d.ts.map +0 -1
- package/dist/browser/navigation-store.js +0 -625
- package/dist/browser/navigation-store.js.map +0 -1
- package/dist/browser/partial-update.d.ts +0 -75
- package/dist/browser/partial-update.d.ts.map +0 -1
- package/dist/browser/partial-update.js +0 -426
- package/dist/browser/partial-update.js.map +0 -1
- package/dist/browser/react/Link.d.ts +0 -86
- package/dist/browser/react/Link.d.ts.map +0 -1
- package/dist/browser/react/Link.js +0 -128
- package/dist/browser/react/Link.js.map +0 -1
- package/dist/browser/react/NavigationProvider.d.ts +0 -63
- package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
- package/dist/browser/react/NavigationProvider.js +0 -216
- package/dist/browser/react/NavigationProvider.js.map +0 -1
- package/dist/browser/react/ScrollRestoration.d.ts +0 -75
- package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
- package/dist/browser/react/ScrollRestoration.js +0 -57
- package/dist/browser/react/ScrollRestoration.js.map +0 -1
- package/dist/browser/react/context.d.ts +0 -46
- package/dist/browser/react/context.d.ts.map +0 -1
- package/dist/browser/react/context.js +0 -10
- package/dist/browser/react/context.js.map +0 -1
- package/dist/browser/react/index.d.ts +0 -11
- package/dist/browser/react/index.d.ts.map +0 -1
- package/dist/browser/react/index.js +0 -22
- package/dist/browser/react/index.js.map +0 -1
- package/dist/browser/react/location-state-shared.d.ts +0 -63
- package/dist/browser/react/location-state-shared.d.ts.map +0 -1
- package/dist/browser/react/location-state-shared.js +0 -81
- package/dist/browser/react/location-state-shared.js.map +0 -1
- package/dist/browser/react/location-state.d.ts +0 -23
- package/dist/browser/react/location-state.d.ts.map +0 -1
- package/dist/browser/react/location-state.js +0 -29
- package/dist/browser/react/location-state.js.map +0 -1
- package/dist/browser/react/mount-context.d.ts +0 -24
- package/dist/browser/react/mount-context.d.ts.map +0 -1
- package/dist/browser/react/mount-context.js +0 -24
- package/dist/browser/react/mount-context.js.map +0 -1
- package/dist/browser/react/use-action.d.ts +0 -64
- package/dist/browser/react/use-action.d.ts.map +0 -1
- package/dist/browser/react/use-action.js +0 -134
- package/dist/browser/react/use-action.js.map +0 -1
- package/dist/browser/react/use-client-cache.d.ts +0 -41
- package/dist/browser/react/use-client-cache.d.ts.map +0 -1
- package/dist/browser/react/use-client-cache.js +0 -39
- package/dist/browser/react/use-client-cache.js.map +0 -1
- package/dist/browser/react/use-handle.d.ts +0 -31
- package/dist/browser/react/use-handle.d.ts.map +0 -1
- package/dist/browser/react/use-handle.js +0 -144
- package/dist/browser/react/use-handle.js.map +0 -1
- package/dist/browser/react/use-href.d.ts +0 -33
- package/dist/browser/react/use-href.d.ts.map +0 -1
- package/dist/browser/react/use-href.js +0 -39
- package/dist/browser/react/use-href.js.map +0 -1
- package/dist/browser/react/use-link-status.d.ts +0 -37
- package/dist/browser/react/use-link-status.d.ts.map +0 -1
- package/dist/browser/react/use-link-status.js +0 -99
- package/dist/browser/react/use-link-status.js.map +0 -1
- package/dist/browser/react/use-mount.d.ts +0 -25
- package/dist/browser/react/use-mount.d.ts.map +0 -1
- package/dist/browser/react/use-mount.js +0 -30
- package/dist/browser/react/use-mount.js.map +0 -1
- package/dist/browser/react/use-navigation.d.ts +0 -27
- package/dist/browser/react/use-navigation.d.ts.map +0 -1
- package/dist/browser/react/use-navigation.js +0 -87
- package/dist/browser/react/use-navigation.js.map +0 -1
- package/dist/browser/react/use-segments.d.ts +0 -38
- package/dist/browser/react/use-segments.d.ts.map +0 -1
- package/dist/browser/react/use-segments.js +0 -130
- package/dist/browser/react/use-segments.js.map +0 -1
- package/dist/browser/request-controller.d.ts +0 -26
- package/dist/browser/request-controller.d.ts.map +0 -1
- package/dist/browser/request-controller.js +0 -147
- package/dist/browser/request-controller.js.map +0 -1
- package/dist/browser/rsc-router.d.ts +0 -129
- package/dist/browser/rsc-router.d.ts.map +0 -1
- package/dist/browser/rsc-router.js +0 -195
- package/dist/browser/rsc-router.js.map +0 -1
- package/dist/browser/scroll-restoration.d.ts +0 -93
- package/dist/browser/scroll-restoration.d.ts.map +0 -1
- package/dist/browser/scroll-restoration.js +0 -321
- package/dist/browser/scroll-restoration.js.map +0 -1
- package/dist/browser/segment-structure-assert.d.ts +0 -17
- package/dist/browser/segment-structure-assert.d.ts.map +0 -1
- package/dist/browser/segment-structure-assert.js +0 -59
- package/dist/browser/segment-structure-assert.js.map +0 -1
- package/dist/browser/server-action-bridge.d.ts +0 -26
- package/dist/browser/server-action-bridge.d.ts.map +0 -1
- package/dist/browser/server-action-bridge.js +0 -668
- package/dist/browser/server-action-bridge.js.map +0 -1
- package/dist/browser/shallow.d.ts +0 -12
- package/dist/browser/shallow.d.ts.map +0 -1
- package/dist/browser/shallow.js +0 -34
- package/dist/browser/shallow.js.map +0 -1
- package/dist/browser/types.d.ts +0 -369
- package/dist/browser/types.d.ts.map +0 -1
- package/dist/browser/types.js +0 -2
- package/dist/browser/types.js.map +0 -1
- package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
- package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-cli.test.js +0 -237
- package/dist/build/__tests__/generate-cli.test.js.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.js +0 -119
- package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.js +0 -620
- package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.js +0 -308
- package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
- package/dist/build/generate-manifest.d.ts +0 -81
- package/dist/build/generate-manifest.d.ts.map +0 -1
- package/dist/build/generate-manifest.js +0 -276
- package/dist/build/generate-manifest.js.map +0 -1
- package/dist/build/generate-route-types.d.ts +0 -115
- package/dist/build/generate-route-types.d.ts.map +0 -1
- package/dist/build/generate-route-types.js +0 -740
- package/dist/build/generate-route-types.js.map +0 -1
- package/dist/build/index.d.ts +0 -21
- package/dist/build/index.d.ts.map +0 -1
- package/dist/build/index.js +0 -21
- package/dist/build/index.js.map +0 -1
- package/dist/build/route-trie.d.ts +0 -71
- package/dist/build/route-trie.d.ts.map +0 -1
- package/dist/build/route-trie.js +0 -175
- package/dist/build/route-trie.js.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.js +0 -208
- package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
- package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
- package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
- package/dist/cache/__tests__/document-cache.test.js +0 -345
- package/dist/cache/__tests__/document-cache.test.js.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
- package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
- package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-store.test.js +0 -367
- package/dist/cache/__tests__/memory-store.test.js.map +0 -1
- package/dist/cache/cache-scope.d.ts +0 -102
- package/dist/cache/cache-scope.d.ts.map +0 -1
- package/dist/cache/cache-scope.js +0 -440
- package/dist/cache/cache-scope.js.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
- package/dist/cache/cf/cf-cache-store.d.ts +0 -165
- package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
- package/dist/cache/cf/cf-cache-store.js +0 -242
- package/dist/cache/cf/cf-cache-store.js.map +0 -1
- package/dist/cache/cf/index.d.ts +0 -14
- package/dist/cache/cf/index.d.ts.map +0 -1
- package/dist/cache/cf/index.js +0 -17
- package/dist/cache/cf/index.js.map +0 -1
- package/dist/cache/document-cache.d.ts +0 -64
- package/dist/cache/document-cache.d.ts.map +0 -1
- package/dist/cache/document-cache.js +0 -228
- package/dist/cache/document-cache.js.map +0 -1
- package/dist/cache/index.d.ts +0 -19
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/index.js +0 -21
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/memory-segment-store.d.ts +0 -110
- package/dist/cache/memory-segment-store.d.ts.map +0 -1
- package/dist/cache/memory-segment-store.js +0 -117
- package/dist/cache/memory-segment-store.js.map +0 -1
- package/dist/cache/memory-store.d.ts +0 -41
- package/dist/cache/memory-store.d.ts.map +0 -1
- package/dist/cache/memory-store.js +0 -191
- package/dist/cache/memory-store.js.map +0 -1
- package/dist/cache/types.d.ts +0 -317
- package/dist/cache/types.d.ts.map +0 -1
- package/dist/cache/types.js +0 -12
- package/dist/cache/types.js.map +0 -1
- package/dist/client.d.ts +0 -248
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -367
- package/dist/client.js.map +0 -1
- package/dist/client.rsc.d.ts +0 -26
- package/dist/client.rsc.d.ts.map +0 -1
- package/dist/client.rsc.js +0 -46
- package/dist/client.rsc.js.map +0 -1
- package/dist/component-utils.d.ts +0 -36
- package/dist/component-utils.d.ts.map +0 -1
- package/dist/component-utils.js +0 -61
- package/dist/component-utils.js.map +0 -1
- package/dist/components/DefaultDocument.d.ts +0 -13
- package/dist/components/DefaultDocument.d.ts.map +0 -1
- package/dist/components/DefaultDocument.js +0 -15
- package/dist/components/DefaultDocument.js.map +0 -1
- package/dist/debug.d.ts +0 -58
- package/dist/debug.d.ts.map +0 -1
- package/dist/debug.js +0 -157
- package/dist/debug.js.map +0 -1
- package/dist/default-error-boundary.d.ts +0 -11
- package/dist/default-error-boundary.d.ts.map +0 -1
- package/dist/default-error-boundary.js +0 -45
- package/dist/default-error-boundary.js.map +0 -1
- package/dist/deps/browser.d.ts +0 -2
- package/dist/deps/browser.d.ts.map +0 -1
- package/dist/deps/browser.js +0 -3
- package/dist/deps/browser.js.map +0 -1
- package/dist/deps/html-stream-client.d.ts +0 -2
- package/dist/deps/html-stream-client.d.ts.map +0 -1
- package/dist/deps/html-stream-client.js +0 -3
- package/dist/deps/html-stream-client.js.map +0 -1
- package/dist/deps/html-stream-server.d.ts +0 -2
- package/dist/deps/html-stream-server.d.ts.map +0 -1
- package/dist/deps/html-stream-server.js +0 -3
- package/dist/deps/html-stream-server.js.map +0 -1
- package/dist/deps/rsc.d.ts +0 -2
- package/dist/deps/rsc.d.ts.map +0 -1
- package/dist/deps/rsc.js +0 -4
- package/dist/deps/rsc.js.map +0 -1
- package/dist/deps/ssr.d.ts +0 -2
- package/dist/deps/ssr.d.ts.map +0 -1
- package/dist/deps/ssr.js +0 -3
- package/dist/deps/ssr.js.map +0 -1
- package/dist/errors.d.ts +0 -174
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -241
- package/dist/errors.js.map +0 -1
- package/dist/handle.d.ts +0 -78
- package/dist/handle.d.ts.map +0 -1
- package/dist/handle.js +0 -82
- package/dist/handle.js.map +0 -1
- package/dist/handles/MetaTags.d.ts +0 -14
- package/dist/handles/MetaTags.d.ts.map +0 -1
- package/dist/handles/MetaTags.js +0 -136
- package/dist/handles/MetaTags.js.map +0 -1
- package/dist/handles/index.d.ts +0 -6
- package/dist/handles/index.d.ts.map +0 -1
- package/dist/handles/index.js +0 -6
- package/dist/handles/index.js.map +0 -1
- package/dist/handles/meta.d.ts +0 -39
- package/dist/handles/meta.d.ts.map +0 -1
- package/dist/handles/meta.js +0 -202
- package/dist/handles/meta.js.map +0 -1
- package/dist/host/__tests__/errors.test.d.ts +0 -2
- package/dist/host/__tests__/errors.test.d.ts.map +0 -1
- package/dist/host/__tests__/errors.test.js +0 -76
- package/dist/host/__tests__/errors.test.js.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
- package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.js +0 -251
- package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
- package/dist/host/__tests__/router.test.d.ts +0 -2
- package/dist/host/__tests__/router.test.d.ts.map +0 -1
- package/dist/host/__tests__/router.test.js +0 -241
- package/dist/host/__tests__/router.test.js.map +0 -1
- package/dist/host/__tests__/testing.test.d.ts +0 -2
- package/dist/host/__tests__/testing.test.d.ts.map +0 -1
- package/dist/host/__tests__/testing.test.js +0 -64
- package/dist/host/__tests__/testing.test.js.map +0 -1
- package/dist/host/__tests__/utils.test.d.ts +0 -2
- package/dist/host/__tests__/utils.test.d.ts.map +0 -1
- package/dist/host/__tests__/utils.test.js +0 -29
- package/dist/host/__tests__/utils.test.js.map +0 -1
- package/dist/host/cookie-handler.d.ts +0 -34
- package/dist/host/cookie-handler.d.ts.map +0 -1
- package/dist/host/cookie-handler.js +0 -124
- package/dist/host/cookie-handler.js.map +0 -1
- package/dist/host/errors.d.ts +0 -56
- package/dist/host/errors.d.ts.map +0 -1
- package/dist/host/errors.js +0 -79
- package/dist/host/errors.js.map +0 -1
- package/dist/host/index.d.ts +0 -29
- package/dist/host/index.d.ts.map +0 -1
- package/dist/host/index.js +0 -32
- package/dist/host/index.js.map +0 -1
- package/dist/host/pattern-matcher.d.ts +0 -36
- package/dist/host/pattern-matcher.d.ts.map +0 -1
- package/dist/host/pattern-matcher.js +0 -172
- package/dist/host/pattern-matcher.js.map +0 -1
- package/dist/host/router.d.ts +0 -26
- package/dist/host/router.d.ts.map +0 -1
- package/dist/host/router.js +0 -218
- package/dist/host/router.js.map +0 -1
- package/dist/host/testing.d.ts +0 -36
- package/dist/host/testing.d.ts.map +0 -1
- package/dist/host/testing.js +0 -55
- package/dist/host/testing.js.map +0 -1
- package/dist/host/types.d.ts +0 -115
- package/dist/host/types.d.ts.map +0 -1
- package/dist/host/types.js +0 -7
- package/dist/host/types.js.map +0 -1
- package/dist/host/utils.d.ts +0 -21
- package/dist/host/utils.d.ts.map +0 -1
- package/dist/host/utils.js +0 -23
- package/dist/host/utils.js.map +0 -1
- package/dist/href-client.d.ts +0 -131
- package/dist/href-client.d.ts.map +0 -1
- package/dist/href-client.js +0 -64
- package/dist/href-client.js.map +0 -1
- package/dist/href-context.d.ts +0 -29
- package/dist/href-context.d.ts.map +0 -1
- package/dist/href-context.js +0 -21
- package/dist/href-context.js.map +0 -1
- package/dist/index.d.ts +0 -73
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -91
- package/dist/index.js.map +0 -1
- package/dist/index.rsc.d.ts +0 -32
- package/dist/index.rsc.d.ts.map +0 -1
- package/dist/index.rsc.js +0 -40
- package/dist/index.rsc.js.map +0 -1
- package/dist/internal-debug.d.ts +0 -2
- package/dist/internal-debug.d.ts.map +0 -1
- package/dist/internal-debug.js +0 -5
- package/dist/internal-debug.js.map +0 -1
- package/dist/loader.d.ts +0 -14
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -20
- package/dist/loader.js.map +0 -1
- package/dist/loader.rsc.d.ts +0 -19
- package/dist/loader.rsc.d.ts.map +0 -1
- package/dist/loader.rsc.js +0 -99
- package/dist/loader.rsc.js.map +0 -1
- package/dist/network-error-thrower.d.ts +0 -17
- package/dist/network-error-thrower.d.ts.map +0 -1
- package/dist/network-error-thrower.js +0 -14
- package/dist/network-error-thrower.js.map +0 -1
- package/dist/outlet-context.d.ts +0 -13
- package/dist/outlet-context.d.ts.map +0 -1
- package/dist/outlet-context.js +0 -3
- package/dist/outlet-context.js.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
- package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.js +0 -148
- package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
- package/dist/prerender/param-hash.d.ts +0 -16
- package/dist/prerender/param-hash.d.ts.map +0 -1
- package/dist/prerender/param-hash.js +0 -36
- package/dist/prerender/param-hash.js.map +0 -1
- package/dist/prerender/store.d.ts +0 -38
- package/dist/prerender/store.d.ts.map +0 -1
- package/dist/prerender/store.js +0 -61
- package/dist/prerender/store.js.map +0 -1
- package/dist/prerender.d.ts +0 -66
- package/dist/prerender.d.ts.map +0 -1
- package/dist/prerender.js +0 -57
- package/dist/prerender.js.map +0 -1
- package/dist/reverse.d.ts +0 -196
- package/dist/reverse.d.ts.map +0 -1
- package/dist/reverse.js +0 -78
- package/dist/reverse.js.map +0 -1
- package/dist/root-error-boundary.d.ts +0 -33
- package/dist/root-error-boundary.d.ts.map +0 -1
- package/dist/root-error-boundary.js +0 -165
- package/dist/root-error-boundary.js.map +0 -1
- package/dist/route-content-wrapper.d.ts +0 -46
- package/dist/route-content-wrapper.d.ts.map +0 -1
- package/dist/route-content-wrapper.js +0 -77
- package/dist/route-content-wrapper.js.map +0 -1
- package/dist/route-definition.d.ts +0 -421
- package/dist/route-definition.d.ts.map +0 -1
- package/dist/route-definition.js +0 -868
- package/dist/route-definition.js.map +0 -1
- package/dist/route-map-builder.d.ts +0 -155
- package/dist/route-map-builder.d.ts.map +0 -1
- package/dist/route-map-builder.js +0 -237
- package/dist/route-map-builder.js.map +0 -1
- package/dist/route-types.d.ts +0 -165
- package/dist/route-types.d.ts.map +0 -1
- package/dist/route-types.js +0 -7
- package/dist/route-types.js.map +0 -1
- package/dist/router/__tests__/handler-context.test.d.ts +0 -2
- package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/handler-context.test.js +0 -65
- package/dist/router/__tests__/handler-context.test.js.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
- package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
- package/dist/router/__tests__/match-context.test.d.ts +0 -2
- package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-context.test.js +0 -92
- package/dist/router/__tests__/match-context.test.js.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
- package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.js +0 -417
- package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
- package/dist/router/__tests__/match-result.test.d.ts +0 -2
- package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-result.test.js +0 -457
- package/dist/router/__tests__/match-result.test.js.map +0 -1
- package/dist/router/__tests__/on-error.test.d.ts +0 -2
- package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
- package/dist/router/__tests__/on-error.test.js +0 -678
- package/dist/router/__tests__/on-error.test.js.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
- package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.js +0 -629
- package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
- package/dist/router/error-handling.d.ts +0 -77
- package/dist/router/error-handling.d.ts.map +0 -1
- package/dist/router/error-handling.js +0 -202
- package/dist/router/error-handling.js.map +0 -1
- package/dist/router/handler-context.d.ts +0 -20
- package/dist/router/handler-context.d.ts.map +0 -1
- package/dist/router/handler-context.js +0 -198
- package/dist/router/handler-context.js.map +0 -1
- package/dist/router/intercept-resolution.d.ts +0 -66
- package/dist/router/intercept-resolution.d.ts.map +0 -1
- package/dist/router/intercept-resolution.js +0 -246
- package/dist/router/intercept-resolution.js.map +0 -1
- package/dist/router/loader-resolution.d.ts +0 -64
- package/dist/router/loader-resolution.d.ts.map +0 -1
- package/dist/router/loader-resolution.js +0 -284
- package/dist/router/loader-resolution.js.map +0 -1
- package/dist/router/logging.d.ts +0 -15
- package/dist/router/logging.d.ts.map +0 -1
- package/dist/router/logging.js +0 -99
- package/dist/router/logging.js.map +0 -1
- package/dist/router/manifest.d.ts +0 -22
- package/dist/router/manifest.d.ts.map +0 -1
- package/dist/router/manifest.js +0 -181
- package/dist/router/manifest.js.map +0 -1
- package/dist/router/match-api.d.ts +0 -35
- package/dist/router/match-api.d.ts.map +0 -1
- package/dist/router/match-api.js +0 -406
- package/dist/router/match-api.js.map +0 -1
- package/dist/router/match-context.d.ts +0 -206
- package/dist/router/match-context.d.ts.map +0 -1
- package/dist/router/match-context.js +0 -17
- package/dist/router/match-context.js.map +0 -1
- package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
- package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
- package/dist/router/match-middleware/background-revalidation.js +0 -75
- package/dist/router/match-middleware/background-revalidation.js.map +0 -1
- package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
- package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-lookup.js +0 -257
- package/dist/router/match-middleware/cache-lookup.js.map +0 -1
- package/dist/router/match-middleware/cache-store.d.ts +0 -113
- package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-store.js +0 -108
- package/dist/router/match-middleware/cache-store.js.map +0 -1
- package/dist/router/match-middleware/index.d.ts +0 -81
- package/dist/router/match-middleware/index.d.ts.map +0 -1
- package/dist/router/match-middleware/index.js +0 -80
- package/dist/router/match-middleware/index.js.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
- package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.js +0 -134
- package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
- package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
- package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/segment-resolution.js +0 -53
- package/dist/router/match-middleware/segment-resolution.js.map +0 -1
- package/dist/router/match-pipelines.d.ts +0 -147
- package/dist/router/match-pipelines.d.ts.map +0 -1
- package/dist/router/match-pipelines.js +0 -82
- package/dist/router/match-pipelines.js.map +0 -1
- package/dist/router/match-result.d.ts +0 -126
- package/dist/router/match-result.d.ts.map +0 -1
- package/dist/router/match-result.js +0 -93
- package/dist/router/match-result.js.map +0 -1
- package/dist/router/metrics.d.ts +0 -20
- package/dist/router/metrics.d.ts.map +0 -1
- package/dist/router/metrics.js +0 -47
- package/dist/router/metrics.js.map +0 -1
- package/dist/router/middleware.d.ts +0 -249
- package/dist/router/middleware.d.ts.map +0 -1
- package/dist/router/middleware.js +0 -434
- package/dist/router/middleware.js.map +0 -1
- package/dist/router/middleware.test.d.ts +0 -2
- package/dist/router/middleware.test.d.ts.map +0 -1
- package/dist/router/middleware.test.js +0 -816
- package/dist/router/middleware.test.js.map +0 -1
- package/dist/router/pattern-matching.d.ts +0 -149
- package/dist/router/pattern-matching.d.ts.map +0 -1
- package/dist/router/pattern-matching.js +0 -349
- package/dist/router/pattern-matching.js.map +0 -1
- package/dist/router/revalidation.d.ts +0 -44
- package/dist/router/revalidation.d.ts.map +0 -1
- package/dist/router/revalidation.js +0 -147
- package/dist/router/revalidation.js.map +0 -1
- package/dist/router/router-context.d.ts +0 -135
- package/dist/router/router-context.d.ts.map +0 -1
- package/dist/router/router-context.js +0 -36
- package/dist/router/router-context.js.map +0 -1
- package/dist/router/segment-resolution.d.ts +0 -127
- package/dist/router/segment-resolution.d.ts.map +0 -1
- package/dist/router/segment-resolution.js +0 -919
- package/dist/router/segment-resolution.js.map +0 -1
- package/dist/router/trie-matching.d.ts +0 -40
- package/dist/router/trie-matching.d.ts.map +0 -1
- package/dist/router/trie-matching.js +0 -127
- package/dist/router/trie-matching.js.map +0 -1
- package/dist/router/types.d.ts +0 -136
- package/dist/router/types.d.ts.map +0 -1
- package/dist/router/types.js +0 -7
- package/dist/router/types.js.map +0 -1
- package/dist/router.d.ts +0 -753
- package/dist/router.d.ts.map +0 -1
- package/dist/router.gen.d.ts +0 -6
- package/dist/router.gen.d.ts.map +0 -1
- package/dist/router.gen.js +0 -6
- package/dist/router.gen.js.map +0 -1
- package/dist/router.js +0 -1304
- package/dist/router.js.map +0 -1
- package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
- package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
- package/dist/rsc/__tests__/helpers.test.js +0 -140
- package/dist/rsc/__tests__/helpers.test.js.map +0 -1
- package/dist/rsc/handler.d.ts +0 -45
- package/dist/rsc/handler.d.ts.map +0 -1
- package/dist/rsc/handler.js +0 -1172
- package/dist/rsc/handler.js.map +0 -1
- package/dist/rsc/helpers.d.ts +0 -16
- package/dist/rsc/helpers.d.ts.map +0 -1
- package/dist/rsc/helpers.js +0 -55
- package/dist/rsc/helpers.js.map +0 -1
- package/dist/rsc/index.d.ts +0 -22
- package/dist/rsc/index.d.ts.map +0 -1
- package/dist/rsc/index.js +0 -23
- package/dist/rsc/index.js.map +0 -1
- package/dist/rsc/nonce.d.ts +0 -9
- package/dist/rsc/nonce.d.ts.map +0 -1
- package/dist/rsc/nonce.js +0 -18
- package/dist/rsc/nonce.js.map +0 -1
- package/dist/rsc/types.d.ts +0 -206
- package/dist/rsc/types.d.ts.map +0 -1
- package/dist/rsc/types.js +0 -8
- package/dist/rsc/types.js.map +0 -1
- package/dist/search-params.d.ts +0 -103
- package/dist/search-params.d.ts.map +0 -1
- package/dist/search-params.js +0 -74
- package/dist/search-params.js.map +0 -1
- package/dist/segment-system.d.ts +0 -75
- package/dist/segment-system.d.ts.map +0 -1
- package/dist/segment-system.js +0 -336
- package/dist/segment-system.js.map +0 -1
- package/dist/server/context.d.ts +0 -245
- package/dist/server/context.d.ts.map +0 -1
- package/dist/server/context.js +0 -197
- package/dist/server/context.js.map +0 -1
- package/dist/server/fetchable-loader-store.d.ts +0 -18
- package/dist/server/fetchable-loader-store.d.ts.map +0 -1
- package/dist/server/fetchable-loader-store.js +0 -18
- package/dist/server/fetchable-loader-store.js.map +0 -1
- package/dist/server/handle-store.d.ts +0 -85
- package/dist/server/handle-store.d.ts.map +0 -1
- package/dist/server/handle-store.js +0 -142
- package/dist/server/handle-store.js.map +0 -1
- package/dist/server/loader-registry.d.ts +0 -55
- package/dist/server/loader-registry.d.ts.map +0 -1
- package/dist/server/loader-registry.js +0 -132
- package/dist/server/loader-registry.js.map +0 -1
- package/dist/server/request-context.d.ts +0 -226
- package/dist/server/request-context.d.ts.map +0 -1
- package/dist/server/request-context.js +0 -290
- package/dist/server/request-context.js.map +0 -1
- package/dist/server/root-layout.d.ts +0 -4
- package/dist/server/root-layout.d.ts.map +0 -1
- package/dist/server/root-layout.js +0 -5
- package/dist/server/root-layout.js.map +0 -1
- package/dist/server.d.ts +0 -15
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -20
- package/dist/server.js.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
- package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
- package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
- package/dist/ssr/index.d.ts +0 -98
- package/dist/ssr/index.d.ts.map +0 -1
- package/dist/ssr/index.js +0 -158
- package/dist/ssr/index.js.map +0 -1
- package/dist/static-handler.d.ts +0 -50
- package/dist/static-handler.d.ts.map +0 -1
- package/dist/static-handler.gen.d.ts +0 -5
- package/dist/static-handler.gen.d.ts.map +0 -1
- package/dist/static-handler.gen.js +0 -5
- package/dist/static-handler.gen.js.map +0 -1
- package/dist/static-handler.js +0 -29
- package/dist/static-handler.js.map +0 -1
- package/dist/theme/ThemeProvider.d.ts +0 -20
- package/dist/theme/ThemeProvider.d.ts.map +0 -1
- package/dist/theme/ThemeProvider.js +0 -240
- package/dist/theme/ThemeProvider.js.map +0 -1
- package/dist/theme/ThemeScript.d.ts +0 -48
- package/dist/theme/ThemeScript.d.ts.map +0 -1
- package/dist/theme/ThemeScript.js +0 -13
- package/dist/theme/ThemeScript.js.map +0 -1
- package/dist/theme/__tests__/theme.test.d.ts +0 -2
- package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
- package/dist/theme/__tests__/theme.test.js +0 -103
- package/dist/theme/__tests__/theme.test.js.map +0 -1
- package/dist/theme/constants.d.ts +0 -29
- package/dist/theme/constants.d.ts.map +0 -1
- package/dist/theme/constants.js +0 -48
- package/dist/theme/constants.js.map +0 -1
- package/dist/theme/index.d.ts +0 -31
- package/dist/theme/index.d.ts.map +0 -1
- package/dist/theme/index.js +0 -36
- package/dist/theme/index.js.map +0 -1
- package/dist/theme/theme-context.d.ts +0 -40
- package/dist/theme/theme-context.d.ts.map +0 -1
- package/dist/theme/theme-context.js +0 -60
- package/dist/theme/theme-context.js.map +0 -1
- package/dist/theme/theme-script.d.ts +0 -27
- package/dist/theme/theme-script.d.ts.map +0 -1
- package/dist/theme/theme-script.js +0 -147
- package/dist/theme/theme-script.js.map +0 -1
- package/dist/theme/types.d.ts +0 -163
- package/dist/theme/types.d.ts.map +0 -1
- package/dist/theme/types.js +0 -11
- package/dist/theme/types.js.map +0 -1
- package/dist/theme/use-theme.d.ts +0 -12
- package/dist/theme/use-theme.d.ts.map +0 -1
- package/dist/theme/use-theme.js +0 -40
- package/dist/theme/use-theme.js.map +0 -1
- package/dist/types.d.ts +0 -1479
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -10
- package/dist/types.js.map +0 -1
- package/dist/urls.d.ts +0 -441
- package/dist/urls.d.ts.map +0 -1
- package/dist/urls.gen.d.ts +0 -8
- package/dist/urls.gen.d.ts.map +0 -1
- package/dist/urls.gen.js +0 -8
- package/dist/urls.gen.js.map +0 -1
- package/dist/urls.js +0 -443
- package/dist/urls.js.map +0 -1
- package/dist/use-loader.d.ts +0 -127
- package/dist/use-loader.d.ts.map +0 -1
- package/dist/use-loader.js +0 -237
- package/dist/use-loader.js.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
- package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
- package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
- package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.js +0 -39
- package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
- package/dist/vite/ast-handler-extract.d.ts +0 -49
- package/dist/vite/ast-handler-extract.d.ts.map +0 -1
- package/dist/vite/ast-handler-extract.js +0 -249
- package/dist/vite/ast-handler-extract.js.map +0 -1
- package/dist/vite/expose-action-id.d.ts +0 -19
- package/dist/vite/expose-action-id.d.ts.map +0 -1
- package/dist/vite/expose-action-id.js +0 -250
- package/dist/vite/expose-action-id.js.map +0 -1
- package/dist/vite/expose-id-utils.d.ts +0 -69
- package/dist/vite/expose-id-utils.d.ts.map +0 -1
- package/dist/vite/expose-id-utils.js +0 -289
- package/dist/vite/expose-id-utils.js.map +0 -1
- package/dist/vite/expose-internal-ids.d.ts +0 -22
- package/dist/vite/expose-internal-ids.d.ts.map +0 -1
- package/dist/vite/expose-internal-ids.js +0 -886
- package/dist/vite/expose-internal-ids.js.map +0 -1
- package/dist/vite/index.d.ts +0 -149
- package/dist/vite/index.d.ts.map +0 -1
- package/dist/vite/index.js.bak +0 -5448
- package/dist/vite/index.js.map +0 -1
- package/dist/vite/index.named-routes.gen.ts +0 -103
- package/dist/vite/package-resolution.d.ts +0 -43
- package/dist/vite/package-resolution.d.ts.map +0 -1
- package/dist/vite/package-resolution.js +0 -112
- package/dist/vite/package-resolution.js.map +0 -1
- package/dist/vite/virtual-entries.d.ts +0 -25
- package/dist/vite/virtual-entries.d.ts.map +0 -1
- package/dist/vite/virtual-entries.js +0 -110
- package/dist/vite/virtual-entries.js.map +0 -1
- package/src/network-error-thrower.tsx +0 -18
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { HandleData } from "../types.js";
|
|
2
|
+
import { isThenable } from "../../handles/is-thenable.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The set of handle names whose deferred (Promise) values MUST be resolved in
|
|
6
|
+
* the store BEFORE the snapshot is applied during client navigation.
|
|
7
|
+
*
|
|
8
|
+
* The boundary: a handle belongs here only if its consumer `use()`s a promise in
|
|
9
|
+
* <head>, above the route's <Suspense>. Suspending there would revert the
|
|
10
|
+
* just-committed route and hide its loading fallback. Today that is Meta alone
|
|
11
|
+
* (MetaTags lives in <head> and use()s deferred descriptors). Every OTHER handle
|
|
12
|
+
* keeps the public DeferredHandleEntry contract: its deferred value reaches the
|
|
13
|
+
* consumer AS A PROMISE during soft navigation, narrowed via isThenable().
|
|
14
|
+
*
|
|
15
|
+
* If a future head-placed handle starts use()-ing promises, add its name here.
|
|
16
|
+
*/
|
|
17
|
+
export const HEAD_RESOLVE_HANDLE_NAMES: readonly string[] = [
|
|
18
|
+
"__rsc_router_meta__",
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* True when a handle value in this snapshot is a deferred (Promise) value.
|
|
23
|
+
*
|
|
24
|
+
* When `onlyHandleNames` is given, only those handle buckets are considered;
|
|
25
|
+
* deferred values under any other handle are ignored (they pass through to the
|
|
26
|
+
* consumer as promises, by contract).
|
|
27
|
+
*/
|
|
28
|
+
export function hasDeferredHandleValue(
|
|
29
|
+
data: HandleData,
|
|
30
|
+
onlyHandleNames?: readonly string[],
|
|
31
|
+
): boolean {
|
|
32
|
+
const scope = onlyHandleNames ? new Set(onlyHandleNames) : null;
|
|
33
|
+
for (const [handleName, segments] of Object.entries(data)) {
|
|
34
|
+
if (scope && !scope.has(handleName)) continue;
|
|
35
|
+
for (const values of Object.values(segments)) {
|
|
36
|
+
if (values.some(isThenable)) return true;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Snapshot with deferred (Promise) values awaited; a rejected deferred is
|
|
44
|
+
* dropped (it contributes nothing), mirroring the render-side REJECTED_META.
|
|
45
|
+
* Promise.allSettled treats non-promise values as already-fulfilled, so plain
|
|
46
|
+
* values pass through unchanged.
|
|
47
|
+
*
|
|
48
|
+
* When `onlyHandleNames` is given, ONLY those handle buckets are resolved; every
|
|
49
|
+
* other bucket is copied through by reference (its deferred values keep their
|
|
50
|
+
* promise identity so the consumer can narrow them).
|
|
51
|
+
*/
|
|
52
|
+
export async function resolveDeferredHandleValues(
|
|
53
|
+
data: HandleData,
|
|
54
|
+
onlyHandleNames?: readonly string[],
|
|
55
|
+
): Promise<HandleData> {
|
|
56
|
+
const scope = onlyHandleNames ? new Set(onlyHandleNames) : null;
|
|
57
|
+
const out: HandleData = {};
|
|
58
|
+
await Promise.all(
|
|
59
|
+
Object.entries(data).flatMap(([handleName, segments]) => {
|
|
60
|
+
// Out-of-scope buckets pass through untouched (promise identity kept).
|
|
61
|
+
if (scope && !scope.has(handleName)) {
|
|
62
|
+
out[handleName] = segments;
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
out[handleName] = {};
|
|
66
|
+
return Object.entries(segments).map(async ([segmentId, values]) => {
|
|
67
|
+
const settled = await Promise.allSettled(values);
|
|
68
|
+
out[handleName][segmentId] = settled
|
|
69
|
+
.filter((r) => r.status === "fulfilled")
|
|
70
|
+
.map((r) => (r as PromiseFulfilledResult<unknown>).value);
|
|
71
|
+
});
|
|
72
|
+
}),
|
|
73
|
+
);
|
|
74
|
+
return out;
|
|
75
|
+
}
|
|
@@ -2,6 +2,16 @@ import { validateRedirectOrigin } from "./validate-redirect-origin.js";
|
|
|
2
2
|
|
|
3
3
|
type HeaderResult = { url: string } | "blocked" | null;
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Null-body statuses: the Fetch spec forbids pairing these with a body, so
|
|
7
|
+
* `new Response(body, { status })` throws ("Response with null body status
|
|
8
|
+
* cannot have body"). fetch() can still surface one WITH a body straight from
|
|
9
|
+
* the network layer (never the JS constructor): a 304 stale-while-revalidate
|
|
10
|
+
* prefetch revalidated to Not Modified (body from cache), or a 204 soft
|
|
11
|
+
* redirect. teeWithCompletion must not re-run those through `new Response`.
|
|
12
|
+
*/
|
|
13
|
+
const NULL_BODY_STATUS = new Set([101, 204, 205, 304]);
|
|
14
|
+
|
|
5
15
|
/**
|
|
6
16
|
* Extract and validate an RSC response header URL (X-RSC-Reload, X-RSC-Redirect).
|
|
7
17
|
* Returns { url } if valid, "blocked" if present but invalid origin, null if absent.
|
|
@@ -74,7 +84,13 @@ export function handleReloadHeader(
|
|
|
74
84
|
* Returns a new Response with one branch; the other is consumed to detect
|
|
75
85
|
* end-of-stream, calling onComplete when done.
|
|
76
86
|
*
|
|
77
|
-
*
|
|
87
|
+
* `onComplete` receives `endedCleanly`: true only on a normal EOF drain, false
|
|
88
|
+
* on a read error or an abort (the signal cancelled the reader). Callers that
|
|
89
|
+
* gate a "fully complete" fast path (e.g. prefetch's `entry.complete`) must
|
|
90
|
+
* treat a non-clean end as incomplete — a broken stream is not complete data.
|
|
91
|
+
*
|
|
92
|
+
* If the response has no body, onComplete fires synchronously with `true`
|
|
93
|
+
* (an empty body is a clean, complete stream).
|
|
78
94
|
* If signal is provided, an abort cancels the tracking reader.
|
|
79
95
|
*
|
|
80
96
|
* `silent` suppresses the stream-error log. Prefetch passes it: a speculative,
|
|
@@ -84,7 +100,7 @@ export function handleReloadHeader(
|
|
|
84
100
|
*/
|
|
85
101
|
export function teeWithCompletion(
|
|
86
102
|
response: Response,
|
|
87
|
-
onComplete: () => void,
|
|
103
|
+
onComplete: (endedCleanly: boolean) => void,
|
|
88
104
|
signal?: AbortSignal,
|
|
89
105
|
silent = false,
|
|
90
106
|
): Response {
|
|
@@ -92,15 +108,18 @@ export function teeWithCompletion(
|
|
|
92
108
|
// rejection's .catch, so onComplete must be settled exactly once across all
|
|
93
109
|
// paths (no-body early return, finally, catch).
|
|
94
110
|
let settled = false;
|
|
95
|
-
const settle = () => {
|
|
111
|
+
const settle = (endedCleanly: boolean) => {
|
|
96
112
|
if (!settled) {
|
|
97
113
|
settled = true;
|
|
98
|
-
onComplete();
|
|
114
|
+
onComplete(endedCleanly);
|
|
99
115
|
}
|
|
100
116
|
};
|
|
101
117
|
|
|
102
|
-
|
|
103
|
-
|
|
118
|
+
// Empty body, or a null-body status fetch() paired with a body: either way the
|
|
119
|
+
// body can't be re-attached via `new Response` below. Settle and pass the
|
|
120
|
+
// original response through; its body (when present) stays readable downstream.
|
|
121
|
+
if (!response.body || NULL_BODY_STATUS.has(response.status)) {
|
|
122
|
+
settle(true);
|
|
104
123
|
return response;
|
|
105
124
|
}
|
|
106
125
|
|
|
@@ -110,21 +129,31 @@ export function teeWithCompletion(
|
|
|
110
129
|
const reader = trackingStream.getReader();
|
|
111
130
|
const onAbort = signal ? reader.cancel.bind(reader) : undefined;
|
|
112
131
|
if (onAbort) signal!.addEventListener("abort", onAbort, { once: true });
|
|
132
|
+
// Only a loop that reaches `done` is a clean EOF. A read error rejects out
|
|
133
|
+
// of the try and still runs the finally, so the finally must NOT assume
|
|
134
|
+
// clean — it gates on this flag (false on error) AND on signal.aborted
|
|
135
|
+
// (an abort cancels the reader so read() resolves { done: true } and the
|
|
136
|
+
// loop breaks here normally, NOT in the .catch — re-check the signal to
|
|
137
|
+
// catch that case).
|
|
138
|
+
let cleanEof = false;
|
|
113
139
|
try {
|
|
114
140
|
while (true) {
|
|
115
141
|
const { done } = await reader.read();
|
|
116
|
-
if (done)
|
|
142
|
+
if (done) {
|
|
143
|
+
cleanEof = true;
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
117
146
|
}
|
|
118
147
|
} finally {
|
|
119
148
|
if (onAbort) signal!.removeEventListener("abort", onAbort);
|
|
120
149
|
reader.releaseLock();
|
|
121
|
-
settle();
|
|
150
|
+
settle(cleanEof && !signal?.aborted);
|
|
122
151
|
}
|
|
123
152
|
})().catch((error) => {
|
|
124
153
|
if (!silent && !signal?.aborted) {
|
|
125
154
|
console.error("[Browser] Error reading tracking stream:", error);
|
|
126
155
|
}
|
|
127
|
-
settle();
|
|
156
|
+
settle(false);
|
|
128
157
|
});
|
|
129
158
|
|
|
130
159
|
return new Response(rscStream, {
|
package/src/browser/types.ts
CHANGED
|
@@ -447,6 +447,10 @@ export interface NavigationStore {
|
|
|
447
447
|
// History-based segment cache (for back/forward navigation and partial merging)
|
|
448
448
|
getHistoryKey(): string;
|
|
449
449
|
setHistoryKey(key: string): void;
|
|
450
|
+
/** Monotonic token of the most recently committed navigation. */
|
|
451
|
+
getNavInstance(): number;
|
|
452
|
+
/** Nav-instance token recorded on a cache entry (undefined if absent). */
|
|
453
|
+
getCacheEntryInstance(historyKey: string): number | undefined;
|
|
450
454
|
cacheSegmentsForHistory(
|
|
451
455
|
historyKey: string,
|
|
452
456
|
segments: ResolvedSegment[],
|
|
@@ -458,10 +462,28 @@ export interface NavigationStore {
|
|
|
458
462
|
stale: boolean;
|
|
459
463
|
handleData?: HandleData;
|
|
460
464
|
routerId?: string;
|
|
465
|
+
/**
|
|
466
|
+
* True when the entry's handle data is incomplete (a deferred Meta was
|
|
467
|
+
* still pending at navigate-away). A popstate return must revalidate with
|
|
468
|
+
* a FULL re-render so the server re-streams handles.
|
|
469
|
+
*/
|
|
470
|
+
handlesPending?: boolean;
|
|
461
471
|
}
|
|
462
472
|
| undefined;
|
|
463
473
|
hasHistoryCache(historyKey: string): boolean;
|
|
464
|
-
|
|
474
|
+
/**
|
|
475
|
+
* Update only the handleData (and optionally the stale / handlesPending flags)
|
|
476
|
+
* of an existing cache entry. When a flag is omitted the entry's current value
|
|
477
|
+
* is preserved. `stale=true` marks a single entry stale so a popstate return
|
|
478
|
+
* revalidates it; `handlesPending=true` additionally forces that revalidation
|
|
479
|
+
* to be a full re-render (so a deferred Meta re-streams).
|
|
480
|
+
*/
|
|
481
|
+
updateCacheHandleData(
|
|
482
|
+
historyKey: string,
|
|
483
|
+
handleData: HandleData,
|
|
484
|
+
stale?: boolean,
|
|
485
|
+
handlesPending?: boolean,
|
|
486
|
+
): void;
|
|
465
487
|
markCacheAsStale(): void;
|
|
466
488
|
markHistoryCacheStale(): void;
|
|
467
489
|
markCacheAsStaleAndBroadcast(): void;
|
|
@@ -521,6 +543,15 @@ export interface FetchPartialResult {
|
|
|
521
543
|
payload: RscPayload;
|
|
522
544
|
/** Promise that resolves when the response stream is fully consumed */
|
|
523
545
|
streamComplete: Promise<void>;
|
|
546
|
+
/**
|
|
547
|
+
* True only when this payload came from a prefetch-cache hit whose stream had
|
|
548
|
+
* ALREADY fully drained at fetch time (the route was fully prefetched). The
|
|
549
|
+
* commit then runs in a startTransition so loading()/Suspense content — already
|
|
550
|
+
* resolved — swaps in directly without flashing a fallback. A partially-warmed
|
|
551
|
+
* (still-streaming) prefetch hit and a cold fetch leave this false so their
|
|
552
|
+
* fallbacks stream as usual.
|
|
553
|
+
*/
|
|
554
|
+
fullyPrefetched?: boolean;
|
|
524
555
|
}
|
|
525
556
|
|
|
526
557
|
/**
|
package/src/handles/MetaTags.tsx
CHANGED
|
@@ -267,6 +267,12 @@ export function MetaTags(): React.ReactNode {
|
|
|
267
267
|
/>
|
|
268
268
|
)}
|
|
269
269
|
{descriptors.map((descriptor, index) => {
|
|
270
|
+
// A descriptor is only a Promise on the SSR/hydration path, where it is
|
|
271
|
+
// use()d to stream the tag into the document. On client navigation the
|
|
272
|
+
// store resolves deferred handle values before applying them (see
|
|
273
|
+
// processHandles), so MetaTags only ever receives resolved descriptors
|
|
274
|
+
// there and never suspends — which would otherwise revert the committed
|
|
275
|
+
// route (MetaTags lives in <head>, above the route's <Suspense>).
|
|
270
276
|
if (isPromise(descriptor)) {
|
|
271
277
|
return (
|
|
272
278
|
<AsyncMetaTag
|
package/src/index.rsc.ts
CHANGED
|
@@ -65,6 +65,12 @@ export type {
|
|
|
65
65
|
ErrorPhase,
|
|
66
66
|
OnErrorContext,
|
|
67
67
|
OnErrorCallback,
|
|
68
|
+
// View transition types (also exported from the default entry; route
|
|
69
|
+
// definitions resolve to this react-server entry, so they must be here too)
|
|
70
|
+
TransitionConfig,
|
|
71
|
+
TransitionWhenFn,
|
|
72
|
+
TransitionWhenContext,
|
|
73
|
+
ViewTransitionClass,
|
|
68
74
|
} from "./types.js";
|
|
69
75
|
|
|
70
76
|
// Router options type (server-only, so import directly)
|
|
@@ -97,7 +103,6 @@ export {
|
|
|
97
103
|
loading,
|
|
98
104
|
parallel,
|
|
99
105
|
intercept,
|
|
100
|
-
when,
|
|
101
106
|
errorBoundary,
|
|
102
107
|
notFoundBoundary,
|
|
103
108
|
transition,
|
package/src/index.ts
CHANGED
|
@@ -82,7 +82,12 @@ export { createLoader } from "./loader.js";
|
|
|
82
82
|
|
|
83
83
|
// Route definition types (safe to import anywhere)
|
|
84
84
|
export type { RouteHelpers, RouteHandlers } from "./route-definition.js";
|
|
85
|
-
export type {
|
|
85
|
+
export type {
|
|
86
|
+
TransitionConfig,
|
|
87
|
+
TransitionWhenFn,
|
|
88
|
+
TransitionWhenContext,
|
|
89
|
+
ViewTransitionClass,
|
|
90
|
+
} from "./types.js";
|
|
86
91
|
|
|
87
92
|
// Composition types for reusable callback factories
|
|
88
93
|
export type {
|
|
@@ -279,9 +284,6 @@ export function parallel(): never {
|
|
|
279
284
|
export function intercept(): never {
|
|
280
285
|
throw serverOnlyStubError("intercept");
|
|
281
286
|
}
|
|
282
|
-
export function when(): never {
|
|
283
|
-
throw serverOnlyStubError("when");
|
|
284
|
-
}
|
|
285
287
|
export function errorBoundary(): never {
|
|
286
288
|
throw serverOnlyStubError("errorBoundary");
|
|
287
289
|
}
|
package/src/internal-debug.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
1
|
+
// Runtime fallback for non-Vite contexts (Node, tests, raw imports). In the Vite
|
|
2
|
+
// pipeline -- dev and build, every environment -- the router discovery plugin's
|
|
3
|
+
// transform replaces this module with the build-time-resolved flag (see
|
|
4
|
+
// vite/inject-client-debug.ts), so the CLIENT debug flag no longer depends on a
|
|
5
|
+
// `__RANGO_DEBUG__` define being delivered to the browser (which dev did only as
|
|
6
|
+
// an injected global whose presence varied across consumer setups).
|
|
7
|
+
//
|
|
8
|
+
// Keep this module to the single INTERNAL_RANGO_DEBUG export: the transform
|
|
9
|
+
// replaces the whole file, so a second export would be dropped from the bundle.
|
|
3
10
|
export const INTERNAL_RANGO_DEBUG: boolean =
|
|
4
|
-
typeof
|
|
5
|
-
|
|
6
|
-
: typeof process !== "undefined" &&
|
|
7
|
-
Boolean((process as any).env?.INTERNAL_RANGO_DEBUG);
|
|
8
|
-
|
|
9
|
-
declare const __RANGO_DEBUG__: boolean;
|
|
11
|
+
typeof process !== "undefined" &&
|
|
12
|
+
Boolean((process as any).env?.INTERNAL_RANGO_DEBUG);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import type { ReactNode } from "react";
|
|
4
|
+
|
|
5
|
+
interface RenderErrorThrowerProps {
|
|
6
|
+
error: unknown;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Client component that throws the given error during render, so the nearest
|
|
11
|
+
* error boundary catches it. Errors thrown during render are caught by error
|
|
12
|
+
* boundaries; async errors (rejected promises) are not -- which is why the
|
|
13
|
+
* navigation bridge funnels processing failures through this component instead
|
|
14
|
+
* of letting them surface as uncaught rejections.
|
|
15
|
+
*/
|
|
16
|
+
export function RenderErrorThrower({
|
|
17
|
+
error,
|
|
18
|
+
}: RenderErrorThrowerProps): ReactNode {
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import type { ReactNode } from "react";
|
|
3
3
|
import { Suspense, use } from "react";
|
|
4
|
-
import { invariant } from "./errors";
|
|
5
4
|
import { OutletProvider } from "./outlet-provider.js";
|
|
6
5
|
import type { ResolvedSegment } from "./types.js";
|
|
7
6
|
import { decodeLoaderResults } from "./decode-loader-results.js";
|
|
@@ -22,7 +21,9 @@ export function RouteContentWrapper({
|
|
|
22
21
|
fallback,
|
|
23
22
|
segmentId,
|
|
24
23
|
}: {
|
|
25
|
-
|
|
24
|
+
// Normally a pending promise (use() suspends -> fallback). forceAwait paths
|
|
25
|
+
// pass an already-resolved node so Suspender renders it without suspending.
|
|
26
|
+
content: Promise<ReactNode> | ReactNode;
|
|
26
27
|
fallback?: ReactNode;
|
|
27
28
|
segmentId?: string;
|
|
28
29
|
}): ReactNode {
|
|
@@ -41,9 +42,15 @@ const Suspender = ({
|
|
|
41
42
|
}: {
|
|
42
43
|
content: Promise<ReactNode> | ReactNode;
|
|
43
44
|
}): ReactNode => {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
// Normally content is a pending promise -> use() suspends and the wrapping
|
|
46
|
+
// Suspense shows the loading() fallback. forceAwait paths (popstate,
|
|
47
|
+
// stale-revalidation, fully-prefetched nav) instead pass the ALREADY-RESOLVED
|
|
48
|
+
// node so first render does not suspend for a microtask and flash the loading()
|
|
49
|
+
// fallback on a NORMAL (non-transition) commit. The wrapper tree
|
|
50
|
+
// (RouteContentWrapper > Suspense > Suspender) is identical either way, so this
|
|
51
|
+
// preserves tree structure (see docs/tree-structure.md) — only whether use()
|
|
52
|
+
// suspends differs, exactly like LoaderResolver's resolved-data branch.
|
|
53
|
+
return content instanceof Promise ? use(content) : content;
|
|
47
54
|
};
|
|
48
55
|
|
|
49
56
|
/**
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
type EntryPropSegments,
|
|
18
18
|
type HelperContext,
|
|
19
19
|
type InterceptEntry,
|
|
20
|
+
type InterceptConfig,
|
|
20
21
|
} from "../server/context";
|
|
21
22
|
import { invariant } from "../errors";
|
|
22
23
|
import { validateUserRouteName } from "../route-name.js";
|
|
@@ -36,7 +37,6 @@ import type {
|
|
|
36
37
|
ErrorBoundaryItem,
|
|
37
38
|
NotFoundBoundaryItem,
|
|
38
39
|
LayoutItem,
|
|
39
|
-
WhenItem,
|
|
40
40
|
CacheItem,
|
|
41
41
|
TransitionItem,
|
|
42
42
|
UseItems,
|
|
@@ -265,34 +265,6 @@ const notFoundBoundary: RouteHelpers<any, any>["notFoundBoundary"] = (
|
|
|
265
265
|
return { name, type: "notFoundBoundary" } as NotFoundBoundaryItem;
|
|
266
266
|
};
|
|
267
267
|
|
|
268
|
-
/**
|
|
269
|
-
* When helper - defines a condition for intercept activation
|
|
270
|
-
*
|
|
271
|
-
* Only valid inside intercept() use() callback. The when() function
|
|
272
|
-
* is captured by the intercept and stored in its `when` array.
|
|
273
|
-
* During soft navigation, all when() conditions must return true
|
|
274
|
-
* for the intercept to activate.
|
|
275
|
-
*/
|
|
276
|
-
const when: RouteHelpers<any, any>["when"] = (fn) => {
|
|
277
|
-
const { store, ctx } = requireDslContext(
|
|
278
|
-
"when() must be called inside intercept()",
|
|
279
|
-
);
|
|
280
|
-
|
|
281
|
-
// The when() function needs to be captured by the intercept's tempParent
|
|
282
|
-
// which should have a `when` array. If not present, we're not inside intercept()
|
|
283
|
-
const parent = ctx.parent as any;
|
|
284
|
-
if (!parent || !("when" in parent)) {
|
|
285
|
-
invariant(
|
|
286
|
-
false,
|
|
287
|
-
"when() can only be used inside intercept() use() callback",
|
|
288
|
-
);
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
const name = `$${store.getNextIndex("when")}`;
|
|
292
|
-
parent.when.push(fn);
|
|
293
|
-
return { name, type: "when" } as WhenItem;
|
|
294
|
-
};
|
|
295
|
-
|
|
296
268
|
/**
|
|
297
269
|
* Cache helper - defines caching configuration for segments
|
|
298
270
|
*
|
|
@@ -701,8 +673,19 @@ const intercept = (
|
|
|
701
673
|
slotName: `@${string}`,
|
|
702
674
|
routeName: string,
|
|
703
675
|
handler: any,
|
|
676
|
+
configOrUse?: InterceptConfig | (() => any[]),
|
|
704
677
|
use?: () => any[],
|
|
705
678
|
) => {
|
|
679
|
+
// arg4 discrimination: a function is the use() callback (no config); an object
|
|
680
|
+
// is the config carrying `when`. With config given, the use() callback is
|
|
681
|
+
// arg5. Keeps the no-config form intercept(slot, route, handler, () => [...])
|
|
682
|
+
// working unchanged.
|
|
683
|
+
const config: InterceptConfig | undefined =
|
|
684
|
+
typeof configOrUse === "function" || configOrUse == null
|
|
685
|
+
? undefined
|
|
686
|
+
: configOrUse;
|
|
687
|
+
const useFn = typeof configOrUse === "function" ? configOrUse : use;
|
|
688
|
+
|
|
706
689
|
const { store, ctx } = requireDslContext(
|
|
707
690
|
"intercept() must be called inside urls()",
|
|
708
691
|
);
|
|
@@ -740,9 +723,17 @@ const intercept = (
|
|
|
740
723
|
when: [], // Selector conditions for conditional interception
|
|
741
724
|
};
|
|
742
725
|
|
|
726
|
+
// Conditional interception: `when` from the config object — a single selector
|
|
727
|
+
// or an array (ALL must return true to activate). Replaces the former when()
|
|
728
|
+
// use-item captured inside the callback.
|
|
729
|
+
if (config?.when) {
|
|
730
|
+
const selectors = Array.isArray(config.when) ? config.when : [config.when];
|
|
731
|
+
entry.when.push(...selectors);
|
|
732
|
+
}
|
|
733
|
+
|
|
743
734
|
// Merge handler.use defaults with explicit use
|
|
744
735
|
const handlerUseFn = resolveHandlerUse(handler);
|
|
745
|
-
const mergedUse = mergeHandlerUse(handlerUseFn,
|
|
736
|
+
const mergedUse = mergeHandlerUse(handlerUseFn, useFn, "intercept");
|
|
746
737
|
|
|
747
738
|
// Run merged use callback to collect loaders, revalidate, middleware, etc.
|
|
748
739
|
if (mergedUse) {
|
|
@@ -759,7 +750,6 @@ const intercept = (
|
|
|
759
750
|
notFoundBoundary: entry.notFoundBoundary,
|
|
760
751
|
loader: entry.loader,
|
|
761
752
|
layout: capturedLayouts, // Capture layout() calls
|
|
762
|
-
when: entry.when, // Capture when() conditions
|
|
763
753
|
get loading() {
|
|
764
754
|
return entry.loading;
|
|
765
755
|
},
|
|
@@ -1114,7 +1104,6 @@ export {
|
|
|
1114
1104
|
revalidate,
|
|
1115
1105
|
parallel,
|
|
1116
1106
|
intercept,
|
|
1117
|
-
when,
|
|
1118
1107
|
errorBoundary,
|
|
1119
1108
|
notFoundBoundary,
|
|
1120
1109
|
route,
|
|
@@ -8,7 +8,6 @@ import {
|
|
|
8
8
|
revalidate,
|
|
9
9
|
parallel,
|
|
10
10
|
intercept,
|
|
11
|
-
when,
|
|
12
11
|
errorBoundary,
|
|
13
12
|
notFoundBoundary,
|
|
14
13
|
route,
|
|
@@ -40,7 +39,6 @@ function buildRouteHelpers<T extends RouteDefinition, TEnv>(): RouteHelpers<
|
|
|
40
39
|
loading,
|
|
41
40
|
errorBoundary,
|
|
42
41
|
notFoundBoundary,
|
|
43
|
-
when,
|
|
44
42
|
cache,
|
|
45
43
|
transition,
|
|
46
44
|
} as unknown as RouteHelpers<T, TEnv>;
|
|
@@ -29,12 +29,10 @@ import type {
|
|
|
29
29
|
ParallelUseItem,
|
|
30
30
|
InterceptUseItem,
|
|
31
31
|
LoaderUseItem,
|
|
32
|
-
WhenItem,
|
|
33
32
|
CacheItem,
|
|
34
33
|
TransitionItem,
|
|
35
34
|
UseItems,
|
|
36
35
|
} from "../route-types.js";
|
|
37
|
-
import type { InterceptWhenFn } from "../server/context";
|
|
38
36
|
|
|
39
37
|
// Re-export route item types for backward compatibility
|
|
40
38
|
export type {
|
|
@@ -52,12 +50,12 @@ export type {
|
|
|
52
50
|
RouteUseItem,
|
|
53
51
|
ParallelUseItem,
|
|
54
52
|
InterceptUseItem,
|
|
55
|
-
WhenItem,
|
|
56
53
|
CacheItem,
|
|
57
54
|
} from "../route-types.js";
|
|
58
55
|
|
|
59
56
|
// Re-export intercept selector types for use in handlers
|
|
60
57
|
export type {
|
|
58
|
+
InterceptConfig,
|
|
61
59
|
InterceptSelectorContext,
|
|
62
60
|
InterceptSegmentsState,
|
|
63
61
|
InterceptWhenFn,
|
|
@@ -183,10 +181,26 @@ export type RouteHelpers<T extends RouteDefinition, TEnv> = {
|
|
|
183
181
|
* loader(CardModalLoader),
|
|
184
182
|
* revalidate(() => false),
|
|
185
183
|
* ])
|
|
184
|
+
*
|
|
185
|
+
* // Conditional activation via the config object's `when` selector
|
|
186
|
+
* intercept("@modal", "card", <CardModal />, {
|
|
187
|
+
* when: ({ from }) => from.pathname.startsWith("/board"),
|
|
188
|
+
* })
|
|
189
|
+
*
|
|
190
|
+
* // Config + other use-items: config is arg 4, use is arg 5
|
|
191
|
+
* intercept(
|
|
192
|
+
* "@modal",
|
|
193
|
+
* "card",
|
|
194
|
+
* <CardModal />,
|
|
195
|
+
* { when: ({ from }) => from.pathname.startsWith("/board") },
|
|
196
|
+
* () => [loader(CardDetailLoader)],
|
|
197
|
+
* )
|
|
186
198
|
* ```
|
|
187
199
|
* @param slotName - Named slot (prefixed with @) where intercept renders
|
|
188
200
|
* @param routeName - Route name to intercept
|
|
189
201
|
* @param handler - Component or handler for intercepted render
|
|
202
|
+
* @param config - Optional InterceptConfig (e.g. `{ when }`), or the use
|
|
203
|
+
* callback directly when there is no config
|
|
190
204
|
* @param use - Optional callback for loaders, middleware, revalidate, etc.
|
|
191
205
|
*/
|
|
192
206
|
intercept: {
|
|
@@ -195,6 +209,9 @@ export type RouteHelpers<T extends RouteDefinition, TEnv> = {
|
|
|
195
209
|
slotName: `@${string}`,
|
|
196
210
|
routeName: `.${K}`,
|
|
197
211
|
handler: ReactNode | Handler<ExtractRouteParams<T, K>, {}, TEnv>,
|
|
212
|
+
config?:
|
|
213
|
+
| import("../server/context.js").InterceptConfig<TEnv>
|
|
214
|
+
| (() => UseItems<InterceptUseItem>),
|
|
198
215
|
use?: () => UseItems<InterceptUseItem>,
|
|
199
216
|
): InterceptItem;
|
|
200
217
|
// Global: unprefixed, params inferred from global route map
|
|
@@ -202,6 +219,9 @@ export type RouteHelpers<T extends RouteDefinition, TEnv> = {
|
|
|
202
219
|
slotName: `@${string}`,
|
|
203
220
|
routeName: K,
|
|
204
221
|
handler: ReactNode | Handler<K, Rango.GeneratedRouteMap, TEnv>,
|
|
222
|
+
config?:
|
|
223
|
+
| import("../server/context.js").InterceptConfig<TEnv>
|
|
224
|
+
| (() => UseItems<InterceptUseItem>),
|
|
205
225
|
use?: () => UseItems<InterceptUseItem>,
|
|
206
226
|
): InterceptItem;
|
|
207
227
|
};
|
|
@@ -347,40 +367,6 @@ export type RouteHelpers<T extends RouteDefinition, TEnv> = {
|
|
|
347
367
|
notFoundBoundary: (
|
|
348
368
|
fallback: ReactNode | NotFoundBoundaryHandler,
|
|
349
369
|
) => NotFoundBoundaryItem;
|
|
350
|
-
/**
|
|
351
|
-
* Define a condition for when an intercept should activate
|
|
352
|
-
*
|
|
353
|
-
* Only valid inside intercept() use() callback. When multiple when() calls
|
|
354
|
-
* are present, ALL must return true for the intercept to activate.
|
|
355
|
-
* If no when() is defined, the intercept always activates on soft navigation.
|
|
356
|
-
*
|
|
357
|
-
* Context properties:
|
|
358
|
-
* - `from` - Source URL (where user is navigating from)
|
|
359
|
-
* - `to` - Destination URL (where user is navigating to)
|
|
360
|
-
* - `params` - Matched route params
|
|
361
|
-
* - `segments` - Client's current segments with `path` and `ids`
|
|
362
|
-
*
|
|
363
|
-
* ```typescript
|
|
364
|
-
* // Only intercept when coming from the board page
|
|
365
|
-
* intercept("@modal", "card", <CardModal />, () => [
|
|
366
|
-
* when(({ from }) => from.pathname.startsWith("/board")),
|
|
367
|
-
* loader(CardDetailLoader),
|
|
368
|
-
* ])
|
|
369
|
-
*
|
|
370
|
-
* // Use segments to check current route context
|
|
371
|
-
* intercept("@modal", "card", <CardModal />, () => [
|
|
372
|
-
* when(({ segments }) => segments.path[0] === "kanban"),
|
|
373
|
-
* ])
|
|
374
|
-
*
|
|
375
|
-
* // Multiple conditions (AND logic)
|
|
376
|
-
* intercept("@modal", "card", <CardModal />, () => [
|
|
377
|
-
* when(({ from }) => from.pathname.startsWith("/board")),
|
|
378
|
-
* when(({ segments }) => segments.ids.includes("kanban-layout")),
|
|
379
|
-
* ])
|
|
380
|
-
* ```
|
|
381
|
-
* @param fn - Selector function receiving navigation context, returns boolean
|
|
382
|
-
*/
|
|
383
|
-
when: (fn: InterceptWhenFn) => WhenItem;
|
|
384
370
|
/**
|
|
385
371
|
* Define cache configuration for segments
|
|
386
372
|
*
|
|
@@ -472,6 +458,13 @@ export type RouteHelpers<T extends RouteDefinition, TEnv> = {
|
|
|
472
458
|
* transition({}) is startTransition + ViewTransition under the default and
|
|
473
459
|
* startTransition only when the router sets viewTransition: false.
|
|
474
460
|
*
|
|
461
|
+
* Conditional hold: pass `when: (ctx) => boolean` to gate the transition per
|
|
462
|
+
* request. It runs server-side AFTER the route handler (so it can read state
|
|
463
|
+
* the handler set via `ctx.get(...)`); returning false drops this transition
|
|
464
|
+
* for the request, so the navigation streams its loading() skeleton instead of
|
|
465
|
+
* holding. This is a post-handler predicate — distinct from intercept()'s
|
|
466
|
+
* match-time `when` config selector (`intercept(slot, route, Comp, { when })`).
|
|
467
|
+
*
|
|
475
468
|
* ```typescript
|
|
476
469
|
* // Attach to a single route
|
|
477
470
|
* path("/about", AboutPage, { name: "about" }, () => [
|
|
@@ -488,10 +481,16 @@ export type RouteHelpers<T extends RouteDefinition, TEnv> = {
|
|
|
488
481
|
* path("/product/:id", ProductPage, { name: "product" }, () => [
|
|
489
482
|
* transition({ viewTransition: false }),
|
|
490
483
|
* ])
|
|
484
|
+
*
|
|
485
|
+
* // Hold only when the handler decided to (post-handler predicate):
|
|
486
|
+
* path("/product/:id", ProductPage, { name: "product" }, () => [
|
|
487
|
+
* transition({ when: (ctx) => ctx.get(KeepScroll) === true }),
|
|
488
|
+
* ])
|
|
491
489
|
* ```
|
|
492
490
|
* @param config - ViewTransition configuration (enter, exit, update, share,
|
|
493
|
-
* default, name)
|
|
494
|
-
* boundary (createRouter({ viewTransition }) sets the app-wide default)
|
|
491
|
+
* default, name), `viewTransition: "auto" | false` to toggle the router
|
|
492
|
+
* boundary (createRouter({ viewTransition }) sets the app-wide default), and
|
|
493
|
+
* `when: (ctx) => boolean` to gate the transition per request post-handler
|
|
495
494
|
* @param children - Optional callback returning child routes to wrap
|
|
496
495
|
*/
|
|
497
496
|
transition: {
|
|
@@ -15,8 +15,8 @@ export type {
|
|
|
15
15
|
RouteUseItem,
|
|
16
16
|
ParallelUseItem,
|
|
17
17
|
InterceptUseItem,
|
|
18
|
-
WhenItem,
|
|
19
18
|
CacheItem,
|
|
19
|
+
InterceptConfig,
|
|
20
20
|
InterceptSelectorContext,
|
|
21
21
|
InterceptSegmentsState,
|
|
22
22
|
InterceptWhenFn,
|
|
@@ -30,7 +30,6 @@ export {
|
|
|
30
30
|
revalidate,
|
|
31
31
|
parallel,
|
|
32
32
|
intercept,
|
|
33
|
-
when,
|
|
34
33
|
errorBoundary,
|
|
35
34
|
notFoundBoundary,
|
|
36
35
|
loader,
|