@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
|
@@ -97,6 +97,147 @@ function extractNamePrefixFromInclude(node: ts.CallExpression): string | null {
|
|
|
97
97
|
return null;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
+
/**
|
|
101
|
+
* True when the thunk transforms its dynamic import via a `.then(cb)` whose
|
|
102
|
+
* callback selects a NAMED export other than `default` (e.g.
|
|
103
|
+
* `import("./x").then((m) => m.routes)`). The static resolver walks the module's
|
|
104
|
+
* `export default`, so such a selector would resolve the WRONG export — the
|
|
105
|
+
* caller must treat it as unresolvable instead of silently mis-resolving. Returns
|
|
106
|
+
* false for the supported shapes (no `.then`, `.then((m) => m)`,
|
|
107
|
+
* `.then((m) => m.default)`) and for any shape it cannot positively identify as a
|
|
108
|
+
* non-default member selection (those keep the existing resolve-via-default path).
|
|
109
|
+
*/
|
|
110
|
+
function thenSelectsNonDefaultMember(expr: ts.Expression): boolean {
|
|
111
|
+
const findThenCall = (e: ts.Expression): ts.CallExpression | null => {
|
|
112
|
+
if (
|
|
113
|
+
ts.isCallExpression(e) &&
|
|
114
|
+
ts.isPropertyAccessExpression(e.expression) &&
|
|
115
|
+
e.expression.name.text === "then"
|
|
116
|
+
) {
|
|
117
|
+
return e;
|
|
118
|
+
}
|
|
119
|
+
if (ts.isCallExpression(e) && ts.isPropertyAccessExpression(e.expression)) {
|
|
120
|
+
return findThenCall(e.expression.expression);
|
|
121
|
+
}
|
|
122
|
+
if (ts.isPropertyAccessExpression(e)) return findThenCall(e.expression);
|
|
123
|
+
if (ts.isParenthesizedExpression(e)) return findThenCall(e.expression);
|
|
124
|
+
if (ts.isAwaitExpression(e)) return findThenCall(e.expression);
|
|
125
|
+
return null;
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
const thenCall = findThenCall(expr);
|
|
129
|
+
if (!thenCall || thenCall.arguments.length === 0) return false;
|
|
130
|
+
const cb = thenCall.arguments[0];
|
|
131
|
+
if (!ts.isArrowFunction(cb) && !ts.isFunctionExpression(cb)) return false;
|
|
132
|
+
|
|
133
|
+
let ret: ts.Expression | undefined;
|
|
134
|
+
if (ts.isBlock(cb.body)) {
|
|
135
|
+
for (const stmt of cb.body.statements) {
|
|
136
|
+
if (ts.isReturnStatement(stmt) && stmt.expression) {
|
|
137
|
+
ret = stmt.expression;
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
} else {
|
|
142
|
+
ret = cb.body;
|
|
143
|
+
}
|
|
144
|
+
if (!ret) return false;
|
|
145
|
+
|
|
146
|
+
if (ts.isPropertyAccessExpression(ret)) {
|
|
147
|
+
return ret.name.text !== "default";
|
|
148
|
+
}
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Extract the module specifier from an async include thunk
|
|
154
|
+
* (`() => import("./mod")`). Handles arrow and function-expression thunks,
|
|
155
|
+
* concise or block bodies, and `import("./mod").then(...)` chains. Returns the
|
|
156
|
+
* specifier string, or null when the second arg is not a dynamic-import thunk
|
|
157
|
+
* (so the caller can fall through to identifier / factory-call / dynamic-expr
|
|
158
|
+
* classification).
|
|
159
|
+
*/
|
|
160
|
+
function extractDynamicImportSpecifier(node: ts.Expression): string | null {
|
|
161
|
+
let body: ts.ConciseBody | undefined;
|
|
162
|
+
if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) {
|
|
163
|
+
body = node.body;
|
|
164
|
+
}
|
|
165
|
+
if (!body) return null;
|
|
166
|
+
|
|
167
|
+
// Concise body is the expression itself; block body: first `return <expr>`.
|
|
168
|
+
let expr: ts.Expression | undefined;
|
|
169
|
+
if (ts.isBlock(body)) {
|
|
170
|
+
for (const stmt of body.statements) {
|
|
171
|
+
if (ts.isReturnStatement(stmt) && stmt.expression) {
|
|
172
|
+
expr = stmt.expression;
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
} else {
|
|
177
|
+
expr = body;
|
|
178
|
+
}
|
|
179
|
+
if (!expr) return null;
|
|
180
|
+
|
|
181
|
+
// Descend `import("./mod").then(...)` / parenthesized / await wrappers down to
|
|
182
|
+
// the `import(...)` call itself.
|
|
183
|
+
const findImportCall = (e: ts.Expression): ts.CallExpression | null => {
|
|
184
|
+
if (
|
|
185
|
+
ts.isCallExpression(e) &&
|
|
186
|
+
e.expression.kind === ts.SyntaxKind.ImportKeyword
|
|
187
|
+
) {
|
|
188
|
+
return e;
|
|
189
|
+
}
|
|
190
|
+
if (ts.isCallExpression(e) && ts.isPropertyAccessExpression(e.expression)) {
|
|
191
|
+
return findImportCall(e.expression.expression);
|
|
192
|
+
}
|
|
193
|
+
if (ts.isPropertyAccessExpression(e)) return findImportCall(e.expression);
|
|
194
|
+
if (ts.isParenthesizedExpression(e)) return findImportCall(e.expression);
|
|
195
|
+
if (ts.isAwaitExpression(e)) return findImportCall(e.expression);
|
|
196
|
+
return null;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
const importCall = findImportCall(expr);
|
|
200
|
+
if (!importCall || importCall.arguments.length === 0) return null;
|
|
201
|
+
// A `.then()` selecting a non-default named export can't be statically
|
|
202
|
+
// resolved to `export default`; return null so the caller emits a diagnostic
|
|
203
|
+
// rather than silently generating types for the wrong export.
|
|
204
|
+
if (thenSelectsNonDefaultMember(expr)) return null;
|
|
205
|
+
return getStringValue(importCall.arguments[0]);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Resolve a module's `export default` to either a same-file `urls()` variable
|
|
210
|
+
* name (`export default shopPatterns`) or the inline call block
|
|
211
|
+
* (`export default urls(...)`). Used to walk async include modules
|
|
212
|
+
* (`() => import("./mod")`), whose convention is `export default urls(...)`.
|
|
213
|
+
*/
|
|
214
|
+
function resolveDefaultExportTarget(
|
|
215
|
+
code: string,
|
|
216
|
+
sourceFile: ts.SourceFile,
|
|
217
|
+
): { variableName?: string; inlineBlock?: string } | null {
|
|
218
|
+
let result: { variableName?: string; inlineBlock?: string } | null = null;
|
|
219
|
+
|
|
220
|
+
function visit(node: ts.Node) {
|
|
221
|
+
if (result) return;
|
|
222
|
+
if (ts.isExportAssignment(node) && !node.isExportEquals) {
|
|
223
|
+
const expr = node.expression;
|
|
224
|
+
if (ts.isIdentifier(expr)) {
|
|
225
|
+
result = { variableName: expr.text };
|
|
226
|
+
} else if (ts.isCallExpression(expr)) {
|
|
227
|
+
const callee = expr.expression;
|
|
228
|
+
if (ts.isIdentifier(callee) && callee.text === "urls") {
|
|
229
|
+
result = { inlineBlock: expr.getText(sourceFile) };
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
ts.forEachChild(node, visit);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
visit(sourceFile);
|
|
238
|
+
return result;
|
|
239
|
+
}
|
|
240
|
+
|
|
100
241
|
/**
|
|
101
242
|
* Extract include() calls with diagnostics for unresolvable ones.
|
|
102
243
|
* Returns both resolved includes (identifier second args) and unresolvable
|
|
@@ -108,7 +249,12 @@ export function extractIncludesWithDiagnostics(
|
|
|
108
249
|
): {
|
|
109
250
|
resolved: Array<{
|
|
110
251
|
pathPrefix: string;
|
|
111
|
-
variableName
|
|
252
|
+
// Exactly one of variableName / moduleSpecifier is set. variableName is the
|
|
253
|
+
// classic `include("/api", apiUrls)` identifier form; moduleSpecifier is the
|
|
254
|
+
// async `include("/api", () => import("./api"))` form, carrying the imported
|
|
255
|
+
// module path so resolution can walk its `export default`.
|
|
256
|
+
variableName?: string;
|
|
257
|
+
moduleSpecifier?: string;
|
|
112
258
|
namePrefix: string | null;
|
|
113
259
|
}>;
|
|
114
260
|
unresolvable: Array<{
|
|
@@ -130,7 +276,8 @@ export function extractIncludesWithDiagnostics(
|
|
|
130
276
|
);
|
|
131
277
|
const resolved: Array<{
|
|
132
278
|
pathPrefix: string;
|
|
133
|
-
variableName
|
|
279
|
+
variableName?: string;
|
|
280
|
+
moduleSpecifier?: string;
|
|
134
281
|
namePrefix: string | null;
|
|
135
282
|
}> = [];
|
|
136
283
|
const unresolvable: Array<{
|
|
@@ -158,12 +305,22 @@ export function extractIncludesWithDiagnostics(
|
|
|
158
305
|
const secondArg = node.arguments[1];
|
|
159
306
|
const namePrefix = extractNamePrefixFromInclude(node);
|
|
160
307
|
|
|
308
|
+
const dynamicImportSpec = extractDynamicImportSpecifier(secondArg);
|
|
309
|
+
|
|
161
310
|
if (ts.isIdentifier(secondArg)) {
|
|
162
311
|
resolved.push({
|
|
163
312
|
pathPrefix,
|
|
164
313
|
variableName: secondArg.text,
|
|
165
314
|
namePrefix,
|
|
166
315
|
});
|
|
316
|
+
} else if (dynamicImportSpec !== null) {
|
|
317
|
+
// Async include: `include("/api", () => import("./api"))`. Resolvable
|
|
318
|
+
// statically by walking the imported module's `export default`.
|
|
319
|
+
resolved.push({
|
|
320
|
+
pathPrefix,
|
|
321
|
+
moduleSpecifier: dynamicImportSpec,
|
|
322
|
+
namePrefix,
|
|
323
|
+
});
|
|
167
324
|
} else if (ts.isCallExpression(secondArg)) {
|
|
168
325
|
const callText = secondArg.expression.getText(sourceFile);
|
|
169
326
|
unresolvable.push({
|
|
@@ -348,65 +505,120 @@ function buildRouteMapFromBlock(
|
|
|
348
505
|
}
|
|
349
506
|
}
|
|
350
507
|
|
|
351
|
-
for (const
|
|
508
|
+
for (const inc of includes) {
|
|
509
|
+
const { pathPrefix, namePrefix } = inc;
|
|
352
510
|
let childResult: {
|
|
353
511
|
routes: Record<string, string>;
|
|
354
512
|
searchSchemas: Record<string, Record<string, string>>;
|
|
355
513
|
};
|
|
356
514
|
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
515
|
+
if (inc.moduleSpecifier) {
|
|
516
|
+
// Async include `() => import("./mod")`: resolve the imported module's
|
|
517
|
+
// `export default` (convention: `export default urls(...)`), then recurse
|
|
518
|
+
// into it exactly like an identifier include. Nested include()s inside the
|
|
519
|
+
// async module — eager or async — resolve through the same recursion.
|
|
520
|
+
const targetFile = resolveImportPath(inc.moduleSpecifier, filePath);
|
|
361
521
|
if (!targetFile) {
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
});
|
|
370
|
-
}
|
|
522
|
+
diagnosticsOut?.push({
|
|
523
|
+
pathPrefix,
|
|
524
|
+
namePrefix,
|
|
525
|
+
reason: "file-not-found",
|
|
526
|
+
sourceFile: filePath,
|
|
527
|
+
detail: `import("${inc.moduleSpecifier}") resolved to no file`,
|
|
528
|
+
});
|
|
371
529
|
continue;
|
|
372
530
|
}
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
531
|
+
let targetSource: string;
|
|
532
|
+
try {
|
|
533
|
+
targetSource = readSourceMemoized(memo, resolve(targetFile));
|
|
534
|
+
} catch (err) {
|
|
535
|
+
// Every other failure path in this function emits a diagnostic; a bare
|
|
536
|
+
// `continue` here would drop the group from generated types with no
|
|
537
|
+
// signal at all. Emit one like the siblings do.
|
|
538
|
+
diagnosticsOut?.push({
|
|
539
|
+
pathPrefix,
|
|
540
|
+
namePrefix,
|
|
541
|
+
reason: "file-not-found",
|
|
542
|
+
sourceFile: filePath,
|
|
543
|
+
detail: `import("${inc.moduleSpecifier}") resolved to "${targetFile}" but reading it failed: ${(err as Error)?.message ?? String(err)}`,
|
|
544
|
+
});
|
|
545
|
+
continue;
|
|
546
|
+
}
|
|
547
|
+
const def = resolveDefaultExportTarget(
|
|
548
|
+
targetSource,
|
|
549
|
+
parseBlock(memo, targetSource),
|
|
389
550
|
);
|
|
390
|
-
if (!
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
});
|
|
399
|
-
}
|
|
551
|
+
if (!def) {
|
|
552
|
+
diagnosticsOut?.push({
|
|
553
|
+
pathPrefix,
|
|
554
|
+
namePrefix,
|
|
555
|
+
reason: "unresolvable-import",
|
|
556
|
+
sourceFile: filePath,
|
|
557
|
+
detail: `import("${inc.moduleSpecifier}") has no resolvable \`export default urls(...)\``,
|
|
558
|
+
});
|
|
400
559
|
continue;
|
|
401
560
|
}
|
|
402
|
-
|
|
403
|
-
|
|
561
|
+
if (def.inlineBlock) {
|
|
562
|
+
// `export default urls(...)` — recurse into the inline call block.
|
|
563
|
+
childResult = buildCombinedRouteMapWithSearch(
|
|
564
|
+
targetFile,
|
|
565
|
+
undefined,
|
|
566
|
+
visited,
|
|
567
|
+
diagnosticsOut,
|
|
568
|
+
def.inlineBlock,
|
|
569
|
+
memo,
|
|
570
|
+
);
|
|
571
|
+
} else {
|
|
572
|
+
// `export default <name>`. That name may be a same-file
|
|
573
|
+
// `const name = urls(...)` OR itself re-exported from an import
|
|
574
|
+
// (`import { name } from "./x"; export default name`). The shared helper
|
|
575
|
+
// resolves the import chain first, then falls back to same-file
|
|
576
|
+
// extraction — without this a re-exported default silently yields empty
|
|
577
|
+
// routes. Resolution scope is the imported module (targetFile); the
|
|
578
|
+
// diagnostic is still attributed to the file with the async include.
|
|
579
|
+
const variableName = def.variableName!;
|
|
580
|
+
const resolved = resolveIncludedVariable({
|
|
581
|
+
variableName,
|
|
582
|
+
resolutionFile: targetFile,
|
|
583
|
+
resolutionSource: targetSource,
|
|
584
|
+
reportFile: filePath,
|
|
585
|
+
memo,
|
|
586
|
+
visited,
|
|
587
|
+
diagnosticsOut,
|
|
588
|
+
pathPrefix,
|
|
589
|
+
namePrefix,
|
|
590
|
+
fileNotFoundDetail: (specifier) =>
|
|
591
|
+
`import("${inc.moduleSpecifier}") default re-exports "${variableName}" from "${specifier}", which resolved to no file`,
|
|
592
|
+
notFoundDetail: () =>
|
|
593
|
+
`import("${inc.moduleSpecifier}") default "${variableName}" not found in its imports or same-file scope`,
|
|
594
|
+
});
|
|
595
|
+
if (!resolved) continue;
|
|
596
|
+
childResult = resolved;
|
|
597
|
+
}
|
|
598
|
+
} else if (inc.variableName) {
|
|
599
|
+
// Identifier include `include(prefix, patterns)`: resolve `patterns`
|
|
600
|
+
// (imported or same-file) through the same shared helper as the async
|
|
601
|
+
// `export default <name>` form above.
|
|
602
|
+
const variableName = inc.variableName;
|
|
603
|
+
const resolved = resolveIncludedVariable({
|
|
404
604
|
variableName,
|
|
605
|
+
resolutionFile: filePath,
|
|
606
|
+
resolutionSource: fullSource,
|
|
607
|
+
reportFile: filePath,
|
|
608
|
+
memo,
|
|
405
609
|
visited,
|
|
406
610
|
diagnosticsOut,
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
611
|
+
pathPrefix,
|
|
612
|
+
namePrefix,
|
|
613
|
+
fileNotFoundDetail: (specifier) =>
|
|
614
|
+
`import "${specifier}" resolved to no file`,
|
|
615
|
+
notFoundDetail: () =>
|
|
616
|
+
`variable "${variableName}" not found in imports or same-file scope`,
|
|
617
|
+
});
|
|
618
|
+
if (!resolved) continue;
|
|
619
|
+
childResult = resolved;
|
|
620
|
+
} else {
|
|
621
|
+
continue;
|
|
410
622
|
}
|
|
411
623
|
|
|
412
624
|
// Includes without a name keep their child names private to the mounted
|
|
@@ -438,6 +650,94 @@ function buildRouteMapFromBlock(
|
|
|
438
650
|
return routeMap;
|
|
439
651
|
}
|
|
440
652
|
|
|
653
|
+
/**
|
|
654
|
+
* Resolve an include's target VARIABLE to its child route map. The variable may
|
|
655
|
+
* be imported (`import { name } from "./x"`) or defined in the same file
|
|
656
|
+
* (`const name = urls(...)`). Shared by the identifier include branch and the
|
|
657
|
+
* async-include `export default <name>` branch so a future import-resolution fix
|
|
658
|
+
* cannot silently miss one form. Returns null (with a diagnostic pushed) when
|
|
659
|
+
* the variable is unresolvable — the caller should skip the include.
|
|
660
|
+
*
|
|
661
|
+
* `resolutionFile`/`resolutionSource` is the module whose import + same-file
|
|
662
|
+
* scope is searched; `reportFile` is the file the diagnostic is attributed to
|
|
663
|
+
* (the one containing the include() call), which differs for async includes.
|
|
664
|
+
*/
|
|
665
|
+
function resolveIncludedVariable(opts: {
|
|
666
|
+
variableName: string;
|
|
667
|
+
resolutionFile: string;
|
|
668
|
+
resolutionSource: string;
|
|
669
|
+
reportFile: string;
|
|
670
|
+
memo: ScanMemo | undefined;
|
|
671
|
+
visited: Set<string> | undefined;
|
|
672
|
+
diagnosticsOut: UnresolvableInclude[] | undefined;
|
|
673
|
+
pathPrefix: string;
|
|
674
|
+
namePrefix: string | null;
|
|
675
|
+
fileNotFoundDetail: (specifier: string) => string;
|
|
676
|
+
notFoundDetail: () => string;
|
|
677
|
+
}): {
|
|
678
|
+
routes: Record<string, string>;
|
|
679
|
+
searchSchemas: Record<string, Record<string, string>>;
|
|
680
|
+
} | null {
|
|
681
|
+
const {
|
|
682
|
+
variableName,
|
|
683
|
+
resolutionFile,
|
|
684
|
+
resolutionSource,
|
|
685
|
+
reportFile,
|
|
686
|
+
memo,
|
|
687
|
+
visited,
|
|
688
|
+
diagnosticsOut,
|
|
689
|
+
pathPrefix,
|
|
690
|
+
namePrefix,
|
|
691
|
+
} = opts;
|
|
692
|
+
const imported = resolveImportedVariable(resolutionSource, variableName);
|
|
693
|
+
if (imported) {
|
|
694
|
+
const targetFile = resolveImportPath(imported.specifier, resolutionFile);
|
|
695
|
+
if (!targetFile) {
|
|
696
|
+
diagnosticsOut?.push({
|
|
697
|
+
pathPrefix,
|
|
698
|
+
namePrefix,
|
|
699
|
+
reason: "file-not-found",
|
|
700
|
+
sourceFile: reportFile,
|
|
701
|
+
detail: opts.fileNotFoundDetail(imported.specifier),
|
|
702
|
+
});
|
|
703
|
+
return null;
|
|
704
|
+
}
|
|
705
|
+
return buildCombinedRouteMapWithSearch(
|
|
706
|
+
targetFile,
|
|
707
|
+
imported.exportedName,
|
|
708
|
+
visited,
|
|
709
|
+
diagnosticsOut,
|
|
710
|
+
undefined,
|
|
711
|
+
memo,
|
|
712
|
+
);
|
|
713
|
+
}
|
|
714
|
+
// Not imported: it must be a same-file `const name = urls(...)`. Confirm it
|
|
715
|
+
// exists so an undefined name emits a diagnostic instead of empty routes.
|
|
716
|
+
const sameFileBlock = extractUrlsBlockForVariable(
|
|
717
|
+
resolutionSource,
|
|
718
|
+
variableName,
|
|
719
|
+
parseBlock(memo, resolutionSource),
|
|
720
|
+
);
|
|
721
|
+
if (!sameFileBlock) {
|
|
722
|
+
diagnosticsOut?.push({
|
|
723
|
+
pathPrefix,
|
|
724
|
+
namePrefix,
|
|
725
|
+
reason: "unresolvable-import",
|
|
726
|
+
sourceFile: reportFile,
|
|
727
|
+
detail: opts.notFoundDetail(),
|
|
728
|
+
});
|
|
729
|
+
return null;
|
|
730
|
+
}
|
|
731
|
+
return buildCombinedRouteMapWithSearch(
|
|
732
|
+
resolutionFile,
|
|
733
|
+
variableName,
|
|
734
|
+
visited,
|
|
735
|
+
diagnosticsOut,
|
|
736
|
+
undefined,
|
|
737
|
+
memo,
|
|
738
|
+
);
|
|
739
|
+
}
|
|
740
|
+
|
|
441
741
|
/**
|
|
442
742
|
* Build route map and search schemas together.
|
|
443
743
|
* Internal helper used by the include resolution path.
|
|
@@ -139,7 +139,10 @@ export async function discoverAndWriteRouteTypes(
|
|
|
139
139
|
for (const [id, router] of registry) {
|
|
140
140
|
if (!router.urlpatterns) continue;
|
|
141
141
|
|
|
142
|
-
const manifest = generateManifest(
|
|
142
|
+
const manifest = await generateManifest(
|
|
143
|
+
router.urlpatterns,
|
|
144
|
+
routerMountIndex,
|
|
145
|
+
);
|
|
143
146
|
routerMountIndex++;
|
|
144
147
|
|
|
145
148
|
// Filter out auto-generated route names that the runtime creates for
|
|
@@ -2267,6 +2267,28 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
|
|
|
2267
2267
|
if (!this.kv || !this.waitUntil || totalTtl < 60) return;
|
|
2268
2268
|
|
|
2269
2269
|
const kvKey = this.toKVKey(key);
|
|
2270
|
+
|
|
2271
|
+
// Reject an oversized data-segment KV key the same way tag-marker keys are
|
|
2272
|
+
// rejected in invalidateTags(). A key over KV_MAX_KEY_BYTES makes kv.put()
|
|
2273
|
+
// fail, so the segment silently never lands in L2 (KV) and every cold-colo
|
|
2274
|
+
// or TTL-expired read re-renders instead of serving stale. Segment keys can
|
|
2275
|
+
// grow with user-controlled inputs (e.g. a route's search params), so report
|
|
2276
|
+
// a clear, actionable error and skip the doomed write rather than letting it
|
|
2277
|
+
// reject deep inside waitUntil as an opaque cache-write failure.
|
|
2278
|
+
const kvKeyBytes = kvKeyByteLength(kvKey);
|
|
2279
|
+
if (kvKeyBytes > KV_MAX_KEY_BYTES) {
|
|
2280
|
+
reportCacheError(
|
|
2281
|
+
new Error(
|
|
2282
|
+
`cache segment key produces a ${kvKeyBytes}-byte KV key, over the ` +
|
|
2283
|
+
`${KV_MAX_KEY_BYTES}-byte limit; the segment was not persisted to KV (L2). ` +
|
|
2284
|
+
`Reduce the cache-key inputs (e.g. large search params on this route).`,
|
|
2285
|
+
),
|
|
2286
|
+
"cache-write",
|
|
2287
|
+
"[CFCacheStore] kvSetSegment",
|
|
2288
|
+
);
|
|
2289
|
+
return;
|
|
2290
|
+
}
|
|
2291
|
+
|
|
2270
2292
|
const expiresAt = staleAt + swrWindow * 1000;
|
|
2271
2293
|
|
|
2272
2294
|
this.waitUntil(() =>
|
package/src/client.rsc.tsx
CHANGED
|
@@ -101,8 +101,5 @@ export { useHref } from "./browser/react/use-href.js";
|
|
|
101
101
|
export { useReverse } from "./browser/react/use-reverse.js";
|
|
102
102
|
|
|
103
103
|
export { useHandle } from "./browser/react/use-handle.js";
|
|
104
|
-
// Type a deferred-aware consumer narrows: an accumulated entry may be a Promise
|
|
105
|
-
// (a `ctx.use(Handle).defer()` slot) until it resolves.
|
|
106
|
-
export type { DeferredHandleEntry } from "./defer.js";
|
|
107
104
|
|
|
108
105
|
export { useLocationState } from "./browser/react/location-state.js";
|
package/src/client.tsx
CHANGED
|
@@ -389,9 +389,6 @@ export {
|
|
|
389
389
|
|
|
390
390
|
export { type Handle } from "./handle.js";
|
|
391
391
|
export { useHandle } from "./browser/react/use-handle.js";
|
|
392
|
-
// Type a deferred-aware consumer narrows: an accumulated entry may be a Promise
|
|
393
|
-
// (a `ctx.use(Handle).defer()` slot) until it resolves.
|
|
394
|
-
export type { DeferredHandleEntry } from "./defer.js";
|
|
395
392
|
|
|
396
393
|
export { Meta } from "./handles/meta.js";
|
|
397
394
|
export { MetaTags } from "./handles/MetaTags.js";
|
package/src/defer.ts
CHANGED
|
@@ -14,14 +14,14 @@
|
|
|
14
14
|
* // deep async component, far from ctx:
|
|
15
15
|
* resolve({ label, href, content }); // identical call, just deferred
|
|
16
16
|
*
|
|
17
|
-
* Under the hood the reserved slot is a Promise
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* slot whose resolver is never called would keep the
|
|
22
|
-
* response —
|
|
23
|
-
* (default {@link DEFAULT_DEFER_TIMEOUT_MS}) if the resolver is
|
|
24
|
-
* degrading gracefully (and warning in dev) instead of hanging
|
|
17
|
+
* Under the hood the reserved slot is a Promise. Handle values are resolved
|
|
18
|
+
* before any consumer sees them (resolve-by-default: the full render resolves
|
|
19
|
+
* server-side, navigation resolves client-side before apply), so `useHandle`
|
|
20
|
+
* receives the resolved value, never the Promise. The hazard that guards against
|
|
21
|
+
* bugs: a deferred slot whose resolver is never called would keep the render —
|
|
22
|
+
* and the HTTP response — waiting forever. So a deferred auto-resolves to `else`
|
|
23
|
+
* after `timeoutMs` (default {@link DEFAULT_DEFER_TIMEOUT_MS}) if the resolver is
|
|
24
|
+
* never called, degrading gracefully (and warning in dev) instead of hanging.
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
27
|
/** Default auto-resolve window. Long enough for genuine deep async work, short
|
|
@@ -74,24 +74,13 @@ export type HandlePush<TData> = HandlePushFn<TData> & {
|
|
|
74
74
|
* re-enter the deadlock-guard push-callback scope a direct push thunk gets,
|
|
75
75
|
* because a deferred resolver fires after the handler phase has closed.
|
|
76
76
|
*
|
|
77
|
-
* The reserved slot
|
|
78
|
-
* `
|
|
79
|
-
*
|
|
80
|
-
* check) before dereferencing.
|
|
77
|
+
* The reserved slot is resolved before any consumer reads it
|
|
78
|
+
* (resolve-by-default), so `useHandle` receives the resolved value (or the
|
|
79
|
+
* `else` fallback on timeout), never a Promise.
|
|
81
80
|
*/
|
|
82
81
|
defer(options?: DeferOptions<TData>): HandlePushFn<TData>;
|
|
83
82
|
};
|
|
84
83
|
|
|
85
|
-
/**
|
|
86
|
-
* A handle entry a deferred-aware consumer may read from `useHandle`: either a
|
|
87
|
-
* resolved value, or a pending `Promise` that resolves to the value, to `else`,
|
|
88
|
-
* or (when no `else` was given) `undefined` on timeout. Reading code should treat
|
|
89
|
-
* thenable entries as such and narrow before dereferencing.
|
|
90
|
-
*/
|
|
91
|
-
export type DeferredHandleEntry<TData> =
|
|
92
|
-
| TData
|
|
93
|
-
| Promise<TData | null | undefined>;
|
|
94
|
-
|
|
95
84
|
// Internal: a timeout-bounded { promise, resolve }. Not part of the public API
|
|
96
85
|
// (the public surface is `ctx.use(Handle).defer()`); exported for `withDefer`
|
|
97
86
|
// and unit tests only. Resolves to `T`, the `else` fallback, or `undefined`.
|
package/src/handle.ts
CHANGED
|
@@ -10,8 +10,11 @@ import { isUnderTestRunner } from "./runtime-env.js";
|
|
|
10
10
|
*
|
|
11
11
|
* @example
|
|
12
12
|
* ```ts
|
|
13
|
-
* // Define a handle (name auto-generated from file + export)
|
|
14
|
-
*
|
|
13
|
+
* // Define a handle (name auto-generated from file + export).
|
|
14
|
+
* // Default collect is the identity: one array per segment that pushed.
|
|
15
|
+
* export const Breadcrumbs = createHandle<BreadcrumbItem, BreadcrumbItem[]>(
|
|
16
|
+
* (segments) => segments.flat(), // opt into a single flat list
|
|
17
|
+
* );
|
|
15
18
|
*
|
|
16
19
|
* // Use in handler
|
|
17
20
|
* const push = ctx.use(Breadcrumbs);
|
|
@@ -21,7 +24,7 @@ import { isUnderTestRunner } from "./runtime-env.js";
|
|
|
21
24
|
* const crumbs = useHandle(Breadcrumbs);
|
|
22
25
|
* ```
|
|
23
26
|
*/
|
|
24
|
-
export interface Handle<TData, TAccumulated = TData[]> {
|
|
27
|
+
export interface Handle<TData, TAccumulated = TData[][]> {
|
|
25
28
|
/**
|
|
26
29
|
* Brand to distinguish handles from loaders in ctx.use()
|
|
27
30
|
*/
|
|
@@ -35,10 +38,13 @@ export interface Handle<TData, TAccumulated = TData[]> {
|
|
|
35
38
|
}
|
|
36
39
|
|
|
37
40
|
/**
|
|
38
|
-
* Default collect
|
|
41
|
+
* Default collect: pass the per-segment data through as-is — one array per segment
|
|
42
|
+
* that pushed, in segment order. Lossless, so a consumer can tell which/how-many
|
|
43
|
+
* segments contributed. Callers that want a single flat list opt in with
|
|
44
|
+
* `createHandle((segments) => segments.flat())`.
|
|
39
45
|
*/
|
|
40
|
-
function defaultCollect<T>(segments: T[][]): T[] {
|
|
41
|
-
return segments
|
|
46
|
+
function defaultCollect<T>(segments: T[][]): T[][] {
|
|
47
|
+
return segments;
|
|
42
48
|
}
|
|
43
49
|
|
|
44
50
|
// Module-level registry mapping $$id to collect functions.
|
|
@@ -62,13 +68,22 @@ export function getCollectFn(
|
|
|
62
68
|
* The $$id is auto-generated by the Vite exposeInternalIds plugin based on
|
|
63
69
|
* file path and export name. No manual naming required.
|
|
64
70
|
*
|
|
65
|
-
* @param collect - Optional collect function
|
|
71
|
+
* @param collect - Optional collect function. Default: pass the per-segment data
|
|
72
|
+
* through as-is (one array per segment that pushed, in segment order). Lossless,
|
|
73
|
+
* so a consumer can tell which/how-many segments contributed. Opt into a single
|
|
74
|
+
* flat list with `(segments) => segments.flat()`.
|
|
66
75
|
* @param __injectedId - Auto-injected by Vite plugin, do not provide manually
|
|
67
76
|
*
|
|
68
77
|
* @example
|
|
69
78
|
* ```ts
|
|
70
|
-
* // Default:
|
|
71
|
-
* export const
|
|
79
|
+
* // Default: per-segment grouping, as-is
|
|
80
|
+
* export const Pushed = createHandle<string>();
|
|
81
|
+
* // Result type: string[][] (e.g. [["a"], ["b", "c"]])
|
|
82
|
+
*
|
|
83
|
+
* // Opt into a single flat list
|
|
84
|
+
* export const Breadcrumbs = createHandle<BreadcrumbItem, BreadcrumbItem[]>(
|
|
85
|
+
* (segments) => segments.flat()
|
|
86
|
+
* );
|
|
72
87
|
* // Result type: BreadcrumbItem[]
|
|
73
88
|
*
|
|
74
89
|
* // Custom: last value wins
|
|
@@ -83,8 +98,9 @@ export function getCollectFn(
|
|
|
83
98
|
* );
|
|
84
99
|
* // Result type: MetaTags
|
|
85
100
|
*
|
|
86
|
-
* // Custom: dedupe by href
|
|
87
|
-
*
|
|
101
|
+
* // Custom: dedupe by href (TAccumulated must be given — a custom collect that
|
|
102
|
+
* // returns a flat array no longer matches the default TData[][])
|
|
103
|
+
* export const Breadcrumbs = createHandle<BreadcrumbItem, BreadcrumbItem[]>(
|
|
88
104
|
* (segments) => {
|
|
89
105
|
* const all = segments.flat();
|
|
90
106
|
* return all.filter((item, i) => all.findIndex(x => x.href === item.href) === i);
|
|
@@ -92,7 +108,7 @@ export function getCollectFn(
|
|
|
92
108
|
* );
|
|
93
109
|
* ```
|
|
94
110
|
*/
|
|
95
|
-
export function createHandle<TData, TAccumulated = TData[]>(
|
|
111
|
+
export function createHandle<TData, TAccumulated = TData[][]>(
|
|
96
112
|
collect?: (segments: TData[][]) => TAccumulated,
|
|
97
113
|
__injectedId?: string,
|
|
98
114
|
): Handle<TData, TAccumulated> {
|
|
@@ -156,12 +172,18 @@ export function collectHandleData<TData, TAccumulated>(
|
|
|
156
172
|
data: Record<string, Record<string, unknown[]>>,
|
|
157
173
|
segmentOrder: string[],
|
|
158
174
|
): TAccumulated {
|
|
175
|
+
// Fall back to the default (identity, pass-through) collect when none is
|
|
176
|
+
// registered — e.g. the handle's module was not imported so createHandle() never
|
|
177
|
+
// ran. This is harmless for a handle that wanted the default, but a handle with a
|
|
178
|
+
// CUSTOM collect that failed to register silently gets the wrong shape (identity
|
|
179
|
+
// TData[][]) cast as its declared TAccumulated. The runtime can't tell the two
|
|
180
|
+
// apart (a Handle only carries $$id), so warn in dev (folded out of production).
|
|
159
181
|
const collectFn = getCollectFn(handle.$$id);
|
|
160
182
|
if (!collectFn && process.env.NODE_ENV !== "production") {
|
|
161
183
|
console.warn(
|
|
162
|
-
`[rango] Handle "${handle.$$id}" has no registered collect
|
|
163
|
-
`
|
|
164
|
-
`createHandle() runs
|
|
184
|
+
`[rango] Handle "${handle.$$id}" has no registered collect — falling back ` +
|
|
185
|
+
`to the identity (per-segment data as-is). If this handle declares a ` +
|
|
186
|
+
`CUSTOM collect, import its module so createHandle() runs where it is read.`,
|
|
165
187
|
);
|
|
166
188
|
}
|
|
167
189
|
const collect = (collectFn ??
|