@rangojs/router 0.0.0-experimental.136 → 0.0.0-experimental.138
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/bin/rango.js +237 -42
- package/dist/vite/index.js +239 -43
- package/package.json +19 -18
- package/skills/breadcrumbs/SKILL.md +29 -12
- package/skills/composability/SKILL.md +50 -0
- package/skills/migrate-nextjs/SKILL.md +12 -0
- package/skills/rango/SKILL.md +5 -1
- package/skills/response-routes/SKILL.md +14 -0
- package/skills/router-setup/SKILL.md +12 -0
- package/skills/testing/handles.md +4 -2
- package/skills/testing/reverse-and-types.md +8 -7
- package/src/browser/event-controller.ts +21 -0
- package/src/browser/react/NavigationProvider.tsx +68 -157
- package/src/browser/server-action-bridge.ts +22 -10
- package/src/build/generate-manifest.ts +155 -131
- package/src/build/index.ts +3 -1
- package/src/build/route-types/include-resolution.ts +347 -47
- package/src/build/runtime-discovery.ts +4 -1
- package/src/cache/cf/cf-cache-store.ts +22 -0
- package/src/client.rsc.tsx +0 -3
- package/src/client.tsx +0 -3
- package/src/defer.ts +11 -22
- package/src/handle.ts +37 -15
- package/src/handles/MetaTags.tsx +16 -88
- package/src/handles/breadcrumbs.ts +12 -14
- package/src/handles/deferred-resolution.ts +127 -0
- package/src/handles/is-thenable.ts +7 -8
- package/src/handles/meta.ts +7 -44
- package/src/index.rsc.ts +0 -1
- package/src/index.ts +0 -1
- package/src/prerender.ts +17 -4
- package/src/router/find-match.ts +71 -7
- package/src/router/lazy-includes.ts +64 -10
- package/src/router/manifest.ts +43 -6
- package/src/router/match-api.ts +2 -2
- package/src/router/navigation-snapshot.ts +7 -5
- package/src/router/prerender-match.ts +11 -5
- package/src/router/preview-match.ts +3 -1
- package/src/router/request-classification.ts +3 -1
- package/src/router/route-snapshot.ts +4 -2
- package/src/router/router-context.ts +3 -1
- package/src/router/router-interfaces.ts +9 -1
- package/src/router.ts +9 -2
- package/src/rsc/handler.ts +3 -1
- package/src/rsc/manifest-init.ts +1 -1
- package/src/rsc/progressive-enhancement.ts +5 -2
- package/src/rsc/rsc-rendering.ts +5 -1
- package/src/ssr/index.tsx +1 -0
- package/src/testing/collect-handle.ts +14 -8
- package/src/testing/dispatch.ts +3 -3
- package/src/testing/generated-routes.ts +27 -11
- package/src/testing/render-route.tsx +6 -1
- package/src/urls/include-helper.ts +10 -8
- package/src/urls/include-provider.ts +71 -0
- package/src/urls/path-helper-types.ts +25 -1
- package/src/vite/discovery/discover-routers.ts +1 -1
- package/src/vite/router-discovery.ts +8 -0
- 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/browser/react/deferred-handle-resolution.ts +0 -75
|
@@ -9,6 +9,10 @@ import {
|
|
|
9
9
|
import type { UrlPatterns } from "../urls.js";
|
|
10
10
|
import type { AllUseItems, IncludeItem } from "../route-types.js";
|
|
11
11
|
import type { ResolvedRouteMap, RouteEntry, TrailingSlashMode } from "../types";
|
|
12
|
+
import {
|
|
13
|
+
isIncludeProvider,
|
|
14
|
+
resolveIncludeModule,
|
|
15
|
+
} from "../urls/include-provider.js";
|
|
12
16
|
|
|
13
17
|
export interface LazyEvalDeps<TEnv = any> {
|
|
14
18
|
routesEntries: RouteEntry<TEnv>[];
|
|
@@ -69,7 +73,7 @@ export function findLazyIncludes<TEnv = any>(
|
|
|
69
73
|
export function evaluateLazyEntry<TEnv = any>(
|
|
70
74
|
entry: RouteEntry<TEnv>,
|
|
71
75
|
deps: LazyEvalDeps<TEnv>,
|
|
72
|
-
): void {
|
|
76
|
+
): void | Promise<void> {
|
|
73
77
|
if (!entry.lazy || entry.lazyEvaluated || !entry.lazyPatterns) {
|
|
74
78
|
return;
|
|
75
79
|
}
|
|
@@ -93,9 +97,52 @@ export function evaluateLazyEntry<TEnv = any>(
|
|
|
93
97
|
}
|
|
94
98
|
}
|
|
95
99
|
|
|
96
|
-
|
|
100
|
+
// Async provider (`() => import("./routes")`): the route module is evaluated
|
|
101
|
+
// off the startup path, on the first request reaching this prefix. Concurrent
|
|
102
|
+
// first-hits share one in-flight promise so the import + expansion run exactly
|
|
103
|
+
// once. The eager path below stays fully synchronous (no Promise), so the
|
|
104
|
+
// per-entry match loop pays no microtask for normal includes.
|
|
105
|
+
const lazyPatterns = entry.lazyPatterns;
|
|
106
|
+
if (isIncludeProvider(lazyPatterns)) {
|
|
107
|
+
const inflight = (entry as { _lazyInflight?: Promise<void> })._lazyInflight;
|
|
108
|
+
if (inflight) return inflight;
|
|
109
|
+
const work = (async () => {
|
|
110
|
+
const resolved = resolveIncludeModule(
|
|
111
|
+
await lazyPatterns(),
|
|
112
|
+
entry.staticPrefix,
|
|
113
|
+
);
|
|
114
|
+
// Cache the resolved patterns: any later re-entry expands synchronously.
|
|
115
|
+
entry.lazyPatterns = resolved as unknown as UrlPatterns<TEnv>;
|
|
116
|
+
runExpansion(entry, deps, resolved as UrlPatterns<TEnv>);
|
|
117
|
+
})();
|
|
118
|
+
(entry as { _lazyInflight?: Promise<void> })._lazyInflight = work;
|
|
119
|
+
const clear = () => {
|
|
120
|
+
(entry as { _lazyInflight?: Promise<void> })._lazyInflight = undefined;
|
|
121
|
+
};
|
|
122
|
+
// On failure, clear the flag (lazyEvaluated stays false) so a later request
|
|
123
|
+
// can retry the import rather than wedging the route permanently.
|
|
124
|
+
work.then(clear, clear);
|
|
125
|
+
return work;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
runExpansion(entry, deps, lazyPatterns as UrlPatterns<TEnv>);
|
|
129
|
+
}
|
|
97
130
|
|
|
98
|
-
|
|
131
|
+
/**
|
|
132
|
+
* Synchronously expand a lazy entry's (already-resolved) patterns into routes
|
|
133
|
+
* and splice any nested lazy includes as new entries. Runs once per entry.
|
|
134
|
+
*/
|
|
135
|
+
function runExpansion<TEnv = any>(
|
|
136
|
+
entry: RouteEntry<TEnv>,
|
|
137
|
+
deps: LazyEvalDeps<TEnv>,
|
|
138
|
+
lazyPatterns: UrlPatterns<TEnv>,
|
|
139
|
+
): void {
|
|
140
|
+
// lazyEvaluated is set at the END, only after the handler ran and the routes
|
|
141
|
+
// (and any nested includes) were spliced. Setting it up-front would mark the
|
|
142
|
+
// entry done even if the handler throws mid-expansion: the async provider
|
|
143
|
+
// path clears _lazyInflight on rejection so a later request can retry, but a
|
|
144
|
+
// premature lazyEvaluated=true would make evaluateLazyEntry short-circuit
|
|
145
|
+
// (line ~77) forever, wedging the route at 404 until the isolate restarts.
|
|
99
146
|
const lazyContext = entry.lazyContext;
|
|
100
147
|
|
|
101
148
|
const manifest = new Map<string, EntryData>();
|
|
@@ -105,12 +152,9 @@ export function evaluateLazyEntry<TEnv = any>(
|
|
|
105
152
|
|
|
106
153
|
let handlerResult: AllUseItems[] = [];
|
|
107
154
|
|
|
108
|
-
const lazyCounters: Record<string, number> =
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
lazyCounters[key] = value;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
155
|
+
const lazyCounters: Record<string, number> = lazyContext?.counters
|
|
156
|
+
? { ...lazyContext.counters }
|
|
157
|
+
: {};
|
|
114
158
|
|
|
115
159
|
RangoContext.run(
|
|
116
160
|
{
|
|
@@ -170,7 +214,12 @@ export function evaluateLazyEntry<TEnv = any>(
|
|
|
170
214
|
staticPrefix: extractStaticPrefix(fullPrefix),
|
|
171
215
|
routes: {} as ResolvedRouteMap<any>,
|
|
172
216
|
trailingSlash: entry.trailingSlash,
|
|
173
|
-
handler
|
|
217
|
+
// include entries don't invoke their own handler (real handlers come from
|
|
218
|
+
// the expanded routes); use the parent's placeholder. A provider has no
|
|
219
|
+
// `.handler` until resolved, so never read it here.
|
|
220
|
+
handler: isIncludeProvider(lazyInclude.patterns)
|
|
221
|
+
? entry.handler
|
|
222
|
+
: (lazyInclude.patterns as UrlPatterns<TEnv>).handler,
|
|
174
223
|
mountIndex: deps.nextMountIndex(),
|
|
175
224
|
routerId: deps.routerId,
|
|
176
225
|
lazy: true,
|
|
@@ -197,4 +246,9 @@ export function evaluateLazyEntry<TEnv = any>(
|
|
|
197
246
|
}
|
|
198
247
|
|
|
199
248
|
registerRouteMap(deps.mergedRouteMap);
|
|
249
|
+
|
|
250
|
+
// Expansion fully succeeded (handler ran, routes + nested includes spliced) —
|
|
251
|
+
// mark done now so a mid-expansion throw above leaves lazyEvaluated=false and
|
|
252
|
+
// the entry retriable.
|
|
253
|
+
entry.lazyEvaluated = true;
|
|
200
254
|
}
|
package/src/router/manifest.ts
CHANGED
|
@@ -11,8 +11,17 @@ import MapRootLayout from "../server/root-layout";
|
|
|
11
11
|
import { joinPrefix } from "./pattern-matching.js";
|
|
12
12
|
import type { RouteEntry } from "../types";
|
|
13
13
|
import type { UrlPatterns } from "../urls";
|
|
14
|
+
import {
|
|
15
|
+
isIncludeProvider,
|
|
16
|
+
resolveIncludeModule,
|
|
17
|
+
} from "../urls/include-provider.js";
|
|
14
18
|
import { VERSION } from "@rangojs/router:version";
|
|
15
19
|
|
|
20
|
+
// Tags an error thrown while dynamically importing an async include's module
|
|
21
|
+
// (`() => import("./routes")`) so loadManifest's outer catch re-raises it as a
|
|
22
|
+
// server error rather than masking it as a RouteNotFoundError (404).
|
|
23
|
+
const MODULE_LOAD_FAILURE = Symbol.for("rango.moduleLoadFailure");
|
|
24
|
+
|
|
16
25
|
// Module-level manifest cache: avoids re-executing DSL handler on every request.
|
|
17
26
|
// Handler execution is deterministic (components, loaders, middleware are module-level
|
|
18
27
|
// stable references), so the resulting EntryData tree can be safely cached and reused
|
|
@@ -165,6 +174,29 @@ export async function loadManifest(
|
|
|
165
174
|
// not exist in the non-lazy (root handler) path and would produce
|
|
166
175
|
// mismatched shortCodes.
|
|
167
176
|
if (entry.lazy && entry.lazyPatterns) {
|
|
177
|
+
// Resolve an async include provider (`() => import("./routes")`) before
|
|
178
|
+
// running its handler. The match-time precomputed shortcut can skip
|
|
179
|
+
// evaluateLazyEntry's resolution, so render-time must resolve it here;
|
|
180
|
+
// cache the resolved patterns on the entry so later renders reuse them.
|
|
181
|
+
if (isIncludeProvider(entry.lazyPatterns)) {
|
|
182
|
+
try {
|
|
183
|
+
entry.lazyPatterns = resolveIncludeModule(
|
|
184
|
+
await entry.lazyPatterns(),
|
|
185
|
+
entry.staticPrefix,
|
|
186
|
+
) as unknown as UrlPatterns<any>;
|
|
187
|
+
} catch (err) {
|
|
188
|
+
// A failed dynamic import of a REAL, matched route's module is a
|
|
189
|
+
// server error, not a missing route. Tag it so the outer catch
|
|
190
|
+
// surfaces it as a 5xx instead of masking it as a
|
|
191
|
+
// RouteNotFoundError — which renders the 404 page (monitoring
|
|
192
|
+
// misses the failure and a CDN could cache the 404).
|
|
193
|
+
if (err && typeof err === "object") {
|
|
194
|
+
(err as Record<PropertyKey, unknown>)[MODULE_LOAD_FAILURE] =
|
|
195
|
+
true;
|
|
196
|
+
}
|
|
197
|
+
throw err;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
168
200
|
const lazyPatterns = entry.lazyPatterns as UrlPatterns<any>;
|
|
169
201
|
const includePrefix = (entry as any)._lazyPrefix || "";
|
|
170
202
|
// Slash-collapsing join so a trailing-slash parent prefix does not
|
|
@@ -192,12 +224,7 @@ export async function loadManifest(
|
|
|
192
224
|
|
|
193
225
|
if (promiseResult !== null) {
|
|
194
226
|
const load = await (promiseResult as Promise<any>);
|
|
195
|
-
if (
|
|
196
|
-
load &&
|
|
197
|
-
load !== null &&
|
|
198
|
-
typeof load === "object" &&
|
|
199
|
-
"default" in load
|
|
200
|
-
) {
|
|
227
|
+
if (load && typeof load === "object" && "default" in load) {
|
|
201
228
|
// Promise<{ default: () => Array }> - e.g., dynamic import
|
|
202
229
|
if (typeof load.default !== "function") {
|
|
203
230
|
throw new Error(
|
|
@@ -255,6 +282,16 @@ export async function loadManifest(
|
|
|
255
282
|
|
|
256
283
|
return Store.manifest.get(routeKey)!;
|
|
257
284
|
} catch (e) {
|
|
285
|
+
// A tagged async-include module-load failure is a server error for a REAL
|
|
286
|
+
// matched route — re-raise it unchanged (becomes a 5xx) instead of masking
|
|
287
|
+
// it as a RouteNotFoundError (which renders/caches a 404).
|
|
288
|
+
if (
|
|
289
|
+
e &&
|
|
290
|
+
typeof e === "object" &&
|
|
291
|
+
(e as Record<PropertyKey, unknown>)[MODULE_LOAD_FAILURE]
|
|
292
|
+
) {
|
|
293
|
+
throw e;
|
|
294
|
+
}
|
|
258
295
|
throw new RouteNotFoundError(
|
|
259
296
|
`Failed to load route handlers for ${path}: ${(e as Error).message}`,
|
|
260
297
|
{
|
package/src/router/match-api.ts
CHANGED
|
@@ -220,7 +220,7 @@ export async function createMatchContextForPartial<TEnv>(
|
|
|
220
220
|
matched.pt = true;
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
const nav = resolveNavigation(request, url, matched.routeKey, {
|
|
223
|
+
const nav = await resolveNavigation(request, url, matched.routeKey, {
|
|
224
224
|
findMatch: deps.findMatch,
|
|
225
225
|
});
|
|
226
226
|
if (!nav) {
|
|
@@ -404,7 +404,7 @@ export async function matchError<TEnv>(
|
|
|
404
404
|
|
|
405
405
|
debugLog("matchError", "matching error", { pathname });
|
|
406
406
|
|
|
407
|
-
const matched = deps.findMatch(pathname);
|
|
407
|
+
const matched = await deps.findMatch(pathname);
|
|
408
408
|
if (!matched) {
|
|
409
409
|
debugWarn("matchError", "no route matched", { pathname });
|
|
410
410
|
return null;
|
|
@@ -25,15 +25,17 @@ export interface NavigationSnapshot {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export interface ResolveNavigationDeps {
|
|
28
|
-
findMatch: (
|
|
28
|
+
findMatch: (
|
|
29
|
+
pathname: string,
|
|
30
|
+
) => RouteMatchResult | null | Promise<RouteMatchResult | null>;
|
|
29
31
|
}
|
|
30
32
|
|
|
31
|
-
export function resolveNavigation(
|
|
33
|
+
export async function resolveNavigation(
|
|
32
34
|
request: Request,
|
|
33
35
|
url: URL,
|
|
34
36
|
currentRouteKey: string,
|
|
35
37
|
deps: ResolveNavigationDeps,
|
|
36
|
-
): NavigationSnapshot | null {
|
|
38
|
+
): Promise<NavigationSnapshot | null> {
|
|
37
39
|
const clientSegmentIds =
|
|
38
40
|
url.searchParams.get("_rsc_segments")?.split(",").filter(Boolean) || [];
|
|
39
41
|
const stale = url.searchParams.get("_rsc_stale") === "true";
|
|
@@ -65,10 +67,10 @@ export function resolveNavigation(
|
|
|
65
67
|
interceptContextUrl = prevUrl;
|
|
66
68
|
}
|
|
67
69
|
|
|
68
|
-
const prevMatch = deps.findMatch(prevUrl.pathname);
|
|
70
|
+
const prevMatch = await deps.findMatch(prevUrl.pathname);
|
|
69
71
|
const prevParams = prevMatch?.params || {};
|
|
70
72
|
const interceptContextMatch = interceptSourceUrl
|
|
71
|
-
? deps.findMatch(interceptContextUrl.pathname)
|
|
73
|
+
? await deps.findMatch(interceptContextUrl.pathname)
|
|
72
74
|
: prevMatch;
|
|
73
75
|
|
|
74
76
|
const isSameRouteNavigation = !!(
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
2
|
import { createHandleStore } from "../server/handle-store.js";
|
|
3
|
+
import { resolveSegmentHandleValues } from "../handles/deferred-resolution.js";
|
|
3
4
|
import { getRequestContext } from "../server/request-context.js";
|
|
4
5
|
import {
|
|
5
6
|
runWithRequestContext,
|
|
@@ -32,7 +33,9 @@ import type {
|
|
|
32
33
|
import type { RouteMatchResult } from "./pattern-matching.js";
|
|
33
34
|
|
|
34
35
|
export interface PrerenderMatchDeps<TEnv = any> {
|
|
35
|
-
findMatch: (
|
|
36
|
+
findMatch: (
|
|
37
|
+
pathname: string,
|
|
38
|
+
) => RouteMatchResult<TEnv> | null | Promise<RouteMatchResult<TEnv> | null>;
|
|
36
39
|
buildRouterContext: () => RouterContext<TEnv>;
|
|
37
40
|
mergedRouteMap: Record<string, string>;
|
|
38
41
|
resolveAllSegments: (
|
|
@@ -73,7 +76,7 @@ export async function matchForPrerender<TEnv = any>(
|
|
|
73
76
|
passthrough?: true;
|
|
74
77
|
} | null> {
|
|
75
78
|
// 1. Find the matching route entry
|
|
76
|
-
const matched = deps.findMatch(pathname);
|
|
79
|
+
const matched = await deps.findMatch(pathname);
|
|
77
80
|
if (!matched) return null;
|
|
78
81
|
|
|
79
82
|
// Use params from trie match if available, fall back to provided params
|
|
@@ -293,7 +296,9 @@ export async function matchForPrerender<TEnv = any>(
|
|
|
293
296
|
for (const seg of nonLoaderSegments) {
|
|
294
297
|
const segHandles = handleStore.getDataForSegment(seg.id);
|
|
295
298
|
if (Object.keys(segHandles).length > 0) {
|
|
296
|
-
|
|
299
|
+
// Resolve deferred values before encoding so the baked artifact holds
|
|
300
|
+
// resolved data (prerender = build-time cache).
|
|
301
|
+
handlesRecord[seg.id] = await resolveSegmentHandleValues(segHandles);
|
|
297
302
|
}
|
|
298
303
|
}
|
|
299
304
|
const handles = await encodeHandles(handlesRecord);
|
|
@@ -394,7 +399,8 @@ export async function matchForPrerender<TEnv = any>(
|
|
|
394
399
|
for (const seg of interceptResolvedSegments) {
|
|
395
400
|
const segHandles = handleStore.getDataForSegment(seg.id);
|
|
396
401
|
if (Object.keys(segHandles).length > 0) {
|
|
397
|
-
interceptHandlesRecord[seg.id] =
|
|
402
|
+
interceptHandlesRecord[seg.id] =
|
|
403
|
+
await resolveSegmentHandleValues(segHandles);
|
|
398
404
|
}
|
|
399
405
|
}
|
|
400
406
|
// The intercept artifact serves main + intercept segments together, so
|
|
@@ -533,7 +539,7 @@ export async function renderStaticSegment<TEnv = any>(
|
|
|
533
539
|
const segHandles = handleStore.getDataForSegment(handlerId);
|
|
534
540
|
const handles =
|
|
535
541
|
Object.keys(segHandles).length > 0
|
|
536
|
-
? await encodeHandleValue(segHandles)
|
|
542
|
+
? await encodeHandleValue(await resolveSegmentHandleValues(segHandles))
|
|
537
543
|
: "";
|
|
538
544
|
|
|
539
545
|
return { encoded: serialized.encoded, handles };
|
|
@@ -6,7 +6,9 @@ import type { MiddlewareFn } from "./middleware.js";
|
|
|
6
6
|
import { resolveRoute } from "./route-snapshot.js";
|
|
7
7
|
|
|
8
8
|
export interface PreviewMatchDeps<TEnv = any> {
|
|
9
|
-
findMatch: (
|
|
9
|
+
findMatch: (
|
|
10
|
+
pathname: string,
|
|
11
|
+
) => RouteMatchResult<TEnv> | null | Promise<RouteMatchResult<TEnv> | null>;
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
/**
|
|
@@ -121,7 +121,9 @@ export type {
|
|
|
121
121
|
};
|
|
122
122
|
|
|
123
123
|
export interface ClassifyRequestDeps<TEnv = any> {
|
|
124
|
-
findMatch: (
|
|
124
|
+
findMatch: (
|
|
125
|
+
pathname: string,
|
|
126
|
+
) => RouteMatchResult<TEnv> | null | Promise<RouteMatchResult<TEnv> | null>;
|
|
125
127
|
routerVersion: string;
|
|
126
128
|
routerId: string;
|
|
127
129
|
}
|
|
@@ -56,7 +56,9 @@ export type ResolveRouteResult<TEnv = any> =
|
|
|
56
56
|
| null;
|
|
57
57
|
|
|
58
58
|
export interface ResolveRouteDeps<TEnv = any> {
|
|
59
|
-
findMatch: (
|
|
59
|
+
findMatch: (
|
|
60
|
+
pathname: string,
|
|
61
|
+
) => RouteMatchResult<TEnv> | null | Promise<RouteMatchResult<TEnv> | null>;
|
|
60
62
|
metricsStore?: MetricsStore;
|
|
61
63
|
isSSR?: boolean;
|
|
62
64
|
/**
|
|
@@ -105,7 +107,7 @@ export async function resolveRoute<TEnv = any>(
|
|
|
105
107
|
|
|
106
108
|
const routeMatchStart =
|
|
107
109
|
metricsStore && !skipRouteMatchMetric ? performance.now() : 0;
|
|
108
|
-
const matched = deps.findMatch(pathname);
|
|
110
|
+
const matched = await deps.findMatch(pathname);
|
|
109
111
|
if (metricsStore && !skipRouteMatchMetric) {
|
|
110
112
|
metricsStore.metrics.push({
|
|
111
113
|
label: "route-matching",
|
|
@@ -55,7 +55,9 @@ export interface InterceptResult {
|
|
|
55
55
|
* Instead of passing 20+ parameters, middleware calls getRouterContext() to access them.
|
|
56
56
|
*/
|
|
57
57
|
export interface RouterContext<TEnv = any> {
|
|
58
|
-
findMatch: (
|
|
58
|
+
findMatch: (
|
|
59
|
+
pathname: string,
|
|
60
|
+
) => RouteMatchResult | null | Promise<RouteMatchResult | null>;
|
|
59
61
|
|
|
60
62
|
loadManifest: (
|
|
61
63
|
entry: any,
|
|
@@ -9,6 +9,7 @@ import type { NonceProvider } from "../rsc/types.js";
|
|
|
9
9
|
import type { ExecutionContext } from "../server/request-context.js";
|
|
10
10
|
import type { SerializedSegmentData } from "../cache/types.js";
|
|
11
11
|
import type { MiddlewareEntry, MiddlewareFn } from "./middleware.js";
|
|
12
|
+
import type { RouteMatchResult } from "./pattern-matching.js";
|
|
12
13
|
import type { ExtractParams } from "../types/route-config.js";
|
|
13
14
|
import { RSC_ROUTER_BRAND } from "./router-registry.js";
|
|
14
15
|
import type { RangoOptions, RootLayoutProps } from "./router-options.js";
|
|
@@ -516,7 +517,14 @@ export interface RangoInternal<
|
|
|
516
517
|
* Used by classifyRequest() for request classification without
|
|
517
518
|
* entering the full match pipeline.
|
|
518
519
|
*/
|
|
519
|
-
|
|
520
|
+
// Async since a lazy async include (`() => import()`) must resolve before its
|
|
521
|
+
// routes can match. Typed (not `any`) so a consumer doing
|
|
522
|
+
// `const m = router.findMatch(p); if (!m) ...; m.entry` gets a compile error
|
|
523
|
+
// (m is a Promise) instead of the silent always-truthy bug.
|
|
524
|
+
findMatch(
|
|
525
|
+
pathname: string,
|
|
526
|
+
metricsStore?: any,
|
|
527
|
+
): Promise<RouteMatchResult<TEnv> | null>;
|
|
520
528
|
|
|
521
529
|
/**
|
|
522
530
|
* Debug utility to serialize the manifest for inspection
|
package/src/router.ts
CHANGED
|
@@ -620,8 +620,15 @@ export function createRouter<TEnv = any>(
|
|
|
620
620
|
routerId,
|
|
621
621
|
};
|
|
622
622
|
|
|
623
|
-
|
|
624
|
-
|
|
623
|
+
// Must return the Promise from _evaluateLazyEntry: an async include provider
|
|
624
|
+
// (`() => import("./routes")`) resolves off the startup path, and createFindMatch
|
|
625
|
+
// awaits this to know when the import + expansion have completed. Dropping it
|
|
626
|
+
// (typing this `void`) makes the import fire-and-forget, so findMatch spins the
|
|
627
|
+
// lazy-eval retry loop to its cap and returns null on the first request to any
|
|
628
|
+
// async include whose prefix isn't already covered by a unique precomputed entry
|
|
629
|
+
// (nested includes, shared prefixes, regex fallback).
|
|
630
|
+
function evaluateLazyEntry(entry: RouteEntry<TEnv>): void | Promise<void> {
|
|
631
|
+
return _evaluateLazyEntry(entry, lazyEvalDeps);
|
|
625
632
|
}
|
|
626
633
|
|
|
627
634
|
// Create findMatch with single-entry cache, bound to router state
|
package/src/rsc/handler.ts
CHANGED
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
buildRouteMiddlewareEntries,
|
|
32
32
|
} from "./helpers.js";
|
|
33
33
|
import { guardOutgoingRedirect } from "./redirect-guard.js";
|
|
34
|
+
import { resolvedHandleStream } from "../handles/deferred-resolution.js";
|
|
34
35
|
import {
|
|
35
36
|
isWebSocketUpgradeResponse,
|
|
36
37
|
appendVaryAccept,
|
|
@@ -1131,7 +1132,8 @@ export function createRSCHandler<
|
|
|
1131
1132
|
params: {},
|
|
1132
1133
|
isPartial: false,
|
|
1133
1134
|
rootLayout: router.rootLayout,
|
|
1134
|
-
|
|
1135
|
+
// Full (404) render: resolve deferred handle values server-side.
|
|
1136
|
+
handles: resolvedHandleStream(handleStore),
|
|
1135
1137
|
version,
|
|
1136
1138
|
prefetchCacheTTL: router.prefetchCacheTTL,
|
|
1137
1139
|
prefetchCacheSize: router.prefetchCacheSize,
|
package/src/rsc/manifest-init.ts
CHANGED
|
@@ -32,7 +32,7 @@ export async function buildRouterTrieFromUrlpatterns(
|
|
|
32
32
|
): Promise<void> {
|
|
33
33
|
const { generateManifestFull } =
|
|
34
34
|
await import("../build/generate-manifest.js");
|
|
35
|
-
const generated = generateManifestFull(
|
|
35
|
+
const generated = await generateManifestFull(
|
|
36
36
|
router.urlpatterns,
|
|
37
37
|
undefined,
|
|
38
38
|
router.basename ? { urlPrefix: router.basename } : undefined,
|
|
@@ -15,6 +15,7 @@ import type { MiddlewareFn } from "../router/middleware.js";
|
|
|
15
15
|
import { executeMiddleware } from "../router/middleware.js";
|
|
16
16
|
import { observePhase, PHASES } from "../router/instrument.js";
|
|
17
17
|
import { gateTransitions } from "./transition-gate.js";
|
|
18
|
+
import { resolvedHandleStream } from "../handles/deferred-resolution.js";
|
|
18
19
|
import type { RscPayload, ReactFormState } from "./types.js";
|
|
19
20
|
import {
|
|
20
21
|
createResponseWithMergedHeaders,
|
|
@@ -315,7 +316,8 @@ export async function handleProgressiveEnhancement<TEnv>(
|
|
|
315
316
|
params: match.params,
|
|
316
317
|
isPartial: false,
|
|
317
318
|
rootLayout: ctx.router.rootLayout,
|
|
318
|
-
|
|
319
|
+
// PE full render: resolve deferred handle values server-side.
|
|
320
|
+
handles: resolvedHandleStream(handleStore),
|
|
319
321
|
version: ctx.version,
|
|
320
322
|
stateCookieName: ctx.router.resolvedStateCookieName,
|
|
321
323
|
themeConfig: ctx.router.themeConfig,
|
|
@@ -462,7 +464,8 @@ async function renderPeErrorBoundary<TEnv>(
|
|
|
462
464
|
isPartial: false,
|
|
463
465
|
isError: true,
|
|
464
466
|
rootLayout: ctx.router.rootLayout,
|
|
465
|
-
|
|
467
|
+
// PE error-boundary full render: resolve deferred handle values server-side.
|
|
468
|
+
handles: resolvedHandleStream(handleStore),
|
|
466
469
|
version: ctx.version,
|
|
467
470
|
stateCookieName: ctx.router.resolvedStateCookieName,
|
|
468
471
|
themeConfig: ctx.router.themeConfig,
|
package/src/rsc/rsc-rendering.ts
CHANGED
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
} from "./helpers.js";
|
|
23
23
|
import type { HandlerContext } from "./handler-context.js";
|
|
24
24
|
import { gateTransitions } from "./transition-gate.js";
|
|
25
|
+
import { resolvedHandleStream } from "../handles/deferred-resolution.js";
|
|
25
26
|
|
|
26
27
|
export function handleRscRendering<TEnv>(
|
|
27
28
|
ctx: HandlerContext<TEnv>,
|
|
@@ -78,7 +79,10 @@ async function handleRscRenderingInner<TEnv>(
|
|
|
78
79
|
params: m.params,
|
|
79
80
|
isPartial: false,
|
|
80
81
|
rootLayout: ctx.router.rootLayout,
|
|
81
|
-
|
|
82
|
+
// Full render: resolve deferred handle values server-side so SSR markup and
|
|
83
|
+
// the first sync useHandle read see resolved values. Partial payloads below
|
|
84
|
+
// keep streaming (handleStore.stream()).
|
|
85
|
+
handles: resolvedHandleStream(handleStore),
|
|
82
86
|
version: ctx.version,
|
|
83
87
|
prefetchCacheTTL: ctx.router.prefetchCacheTTL,
|
|
84
88
|
prefetchCacheSize: ctx.router.prefetchCacheSize,
|
package/src/ssr/index.tsx
CHANGED
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
* It relies on createHandle registering the collect even in a bare test (it
|
|
13
13
|
* assigns a runtime fallback id when the Vite plugin did not inject one). If a
|
|
14
14
|
* handle's module was never imported (so createHandle never ran), the collect is
|
|
15
|
-
* unregistered and this falls back to
|
|
15
|
+
* unregistered and this falls back to the default identity collect — with a
|
|
16
|
+
* warning, since a CUSTOM collect that failed to register silently returns the
|
|
17
|
+
* wrong shape.
|
|
16
18
|
*/
|
|
17
19
|
|
|
18
20
|
import { getCollectFn, type Handle } from "../handle.js";
|
|
@@ -25,16 +27,20 @@ export function collectHandle<TData, TAccumulated>(
|
|
|
25
27
|
| ((segments: TData[][]) => TAccumulated)
|
|
26
28
|
| undefined;
|
|
27
29
|
|
|
30
|
+
// Drop empty arrays matching production behavior (segment count/indices).
|
|
31
|
+
const nonEmpty = segments.filter((seg) => seg.length > 0) as TData[][];
|
|
32
|
+
|
|
33
|
+
// No registered collect (the handle's module was not imported): fall back to the
|
|
34
|
+
// default identity collect — the per-segment arrays as-is, mirroring production
|
|
35
|
+
// collectHandleData. Warn, because a handle with a CUSTOM collect would silently
|
|
36
|
+
// get the wrong shape (the runtime can't tell it from an intended default).
|
|
28
37
|
if (!collectFn) {
|
|
29
38
|
console.warn(
|
|
30
|
-
`[rango] collectHandle: handle "${handle.$$id}" has no registered collect ` +
|
|
31
|
-
`
|
|
32
|
-
`
|
|
39
|
+
`[rango] collectHandle: handle "${handle.$$id}" has no registered collect — ` +
|
|
40
|
+
`falling back to the identity (per-segment data as-is). Import the handle's ` +
|
|
41
|
+
`module so createHandle() runs if you expected a custom collect.`,
|
|
33
42
|
);
|
|
34
|
-
return
|
|
43
|
+
return nonEmpty as unknown as TAccumulated;
|
|
35
44
|
}
|
|
36
|
-
|
|
37
|
-
// Drop empty arrays matching production behavior (segment count/indices).
|
|
38
|
-
const nonEmpty = segments.filter((seg) => seg.length > 0) as TData[][];
|
|
39
45
|
return collectFn(nonEmpty);
|
|
40
46
|
}
|
package/src/testing/dispatch.ts
CHANGED
|
@@ -140,11 +140,11 @@ interface DispatchableRouter<TEnv> {
|
|
|
140
140
|
routeMap: Record<string, unknown>;
|
|
141
141
|
middleware: MiddlewareEntry<TEnv>[];
|
|
142
142
|
onError?: OnErrorCallback<TEnv>;
|
|
143
|
-
findMatch(pathname: string): {
|
|
143
|
+
findMatch(pathname: string): Promise<{
|
|
144
144
|
redirectTo?: string;
|
|
145
145
|
routeKey?: string;
|
|
146
146
|
params?: Record<string, string>;
|
|
147
|
-
} | null
|
|
147
|
+
} | null>;
|
|
148
148
|
previewMatch(
|
|
149
149
|
request: Request,
|
|
150
150
|
input?: { env?: TEnv },
|
|
@@ -351,7 +351,7 @@ export async function dispatch<TEnv = any>(
|
|
|
351
351
|
|
|
352
352
|
// findMatch carries trailing-slash/redirect targets and null on no match.
|
|
353
353
|
// previewMatch swallows redirects, so detect them here first.
|
|
354
|
-
const match = router.findMatch(url.pathname);
|
|
354
|
+
const match = await router.findMatch(url.pathname);
|
|
355
355
|
const redirectTo = match?.redirectTo;
|
|
356
356
|
const isUnmatched = !match;
|
|
357
357
|
|
|
@@ -29,6 +29,10 @@ import { isAutoGeneratedRouteName } from "../route-name.js";
|
|
|
29
29
|
*/
|
|
30
30
|
interface RouterWithRouteMap {
|
|
31
31
|
routeMap: Record<string, unknown>;
|
|
32
|
+
// findMatch is async (it may await an async include provider's import before
|
|
33
|
+
// the route's names are spliced into routeMap), so expandLazyIncludes awaits
|
|
34
|
+
// it. Typed `unknown` (not `unknown | Promise<unknown>`, which collapses to
|
|
35
|
+
// the same thing) — the awaited value is never read, only its side effect.
|
|
32
36
|
findMatch?: (pathname: string) => unknown;
|
|
33
37
|
}
|
|
34
38
|
|
|
@@ -42,16 +46,28 @@ function concretePath(pattern: string): string {
|
|
|
42
46
|
);
|
|
43
47
|
}
|
|
44
48
|
|
|
45
|
-
function expandLazyIncludes(
|
|
49
|
+
async function expandLazyIncludes(
|
|
46
50
|
router: RouterWithRouteMap,
|
|
47
51
|
patterns: Iterable<string>,
|
|
48
|
-
): void {
|
|
52
|
+
): Promise<void> {
|
|
49
53
|
const findMatch = router.findMatch;
|
|
50
54
|
if (typeof findMatch !== "function") return;
|
|
51
55
|
for (const pattern of patterns) {
|
|
52
56
|
try {
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
// Await: an async include(`() => import()`) resolves its module + splices
|
|
58
|
+
// its routes into routeMap only after findMatch's Promise settles. Without
|
|
59
|
+
// the await, the routeMap read below races the import and reports the
|
|
60
|
+
// split-group routes as missing.
|
|
61
|
+
await findMatch.call(router, concretePath(pattern));
|
|
62
|
+
} catch (e) {
|
|
63
|
+
// A findMatch throw here is almost always a failing async include()
|
|
64
|
+
// provider (its `() => import()` rejected). Surface it — swallowed, it
|
|
65
|
+
// resurfaces downstream as a misleading "missing route" in the diff.
|
|
66
|
+
console.warn(
|
|
67
|
+
`[@rangojs/router] assertGeneratedRoutesMatch: could not expand include ` +
|
|
68
|
+
`for "${pattern}": ${(e as Error)?.message ?? String(e)}`,
|
|
69
|
+
);
|
|
70
|
+
}
|
|
55
71
|
}
|
|
56
72
|
}
|
|
57
73
|
|
|
@@ -91,13 +107,13 @@ function patternOf(value: unknown): string {
|
|
|
91
107
|
return String(value);
|
|
92
108
|
}
|
|
93
109
|
|
|
94
|
-
export function diffGeneratedRoutes(
|
|
110
|
+
export async function diffGeneratedRoutes(
|
|
95
111
|
router: RouterWithRouteMap,
|
|
96
112
|
generatedMap?: Record<string, unknown>,
|
|
97
|
-
): GeneratedRoutesDiff {
|
|
113
|
+
): Promise<GeneratedRoutesDiff> {
|
|
98
114
|
const generated = generatedMap ?? getGlobalRouteMap();
|
|
99
115
|
|
|
100
|
-
expandLazyIncludes(
|
|
116
|
+
await expandLazyIncludes(
|
|
101
117
|
router,
|
|
102
118
|
Object.values(generated).map((v) => patternOf(v)),
|
|
103
119
|
);
|
|
@@ -145,14 +161,14 @@ export function diffGeneratedRoutes(
|
|
|
145
161
|
* import generated from "./router.named-routes.gen";
|
|
146
162
|
* import { router } from "./router";
|
|
147
163
|
*
|
|
148
|
-
* assertGeneratedRoutesMatch(router, generated);
|
|
164
|
+
* await assertGeneratedRoutesMatch(router, generated);
|
|
149
165
|
* ```
|
|
150
166
|
*/
|
|
151
|
-
export function assertGeneratedRoutesMatch(
|
|
167
|
+
export async function assertGeneratedRoutesMatch(
|
|
152
168
|
router: RouterWithRouteMap,
|
|
153
169
|
generatedMap?: Record<string, unknown>,
|
|
154
|
-
): void {
|
|
155
|
-
const diff = diffGeneratedRoutes(router, generatedMap);
|
|
170
|
+
): Promise<void> {
|
|
171
|
+
const diff = await diffGeneratedRoutes(router, generatedMap);
|
|
156
172
|
if (diff.ok) return;
|
|
157
173
|
|
|
158
174
|
const lines: string[] = [
|
|
@@ -46,6 +46,7 @@ import {
|
|
|
46
46
|
generateHistoryKey,
|
|
47
47
|
} from "../browser/navigation-store.js";
|
|
48
48
|
import { createEventController } from "../browser/event-controller.js";
|
|
49
|
+
import { resolveDeferredHandleValues } from "../handles/deferred-resolution.js";
|
|
49
50
|
import type { NavigationStore, NavigationBridge } from "../browser/types.js";
|
|
50
51
|
import type { EventController } from "../browser/event-controller.js";
|
|
51
52
|
import type { ResolvedSegment, RscMetadata } from "../browser/types.js";
|
|
@@ -481,8 +482,12 @@ export async function renderRoute(
|
|
|
481
482
|
|
|
482
483
|
const eventController = createEventController({ initialLocation: url });
|
|
483
484
|
eventController.setParams(initialMatch.params);
|
|
485
|
+
// Resolve-by-default: resolve any deferred (Promise) seeded handle values
|
|
486
|
+
// before applying, so the seeded handles reach collect/useHandle resolved —
|
|
487
|
+
// matching what the server/client do in a real app.
|
|
488
|
+
const resolvedSeed = await resolveDeferredHandleValues(handleSeed);
|
|
484
489
|
eventController.setHandleData(
|
|
485
|
-
|
|
490
|
+
resolvedSeed,
|
|
486
491
|
initialSegments.map((s) => s.id),
|
|
487
492
|
);
|
|
488
493
|
|