@rangojs/router 0.0.0-experimental.137 → 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/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/reverse-and-types.md +8 -7
- 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/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 +4 -2
- 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/manifest-init.ts +1 -1
- package/src/testing/dispatch.ts +3 -3
- package/src/testing/generated-routes.ts +27 -11
- 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/build/index.ts
CHANGED
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
* import { generateManifest } from "@rangojs/router/build";
|
|
11
11
|
* import { urlpatterns } from "./urls";
|
|
12
12
|
*
|
|
13
|
-
*
|
|
13
|
+
* // Async: generateManifest awaits any async include() providers
|
|
14
|
+
* // (`() => import("./routes")`) so the split groups appear in the manifest.
|
|
15
|
+
* const manifest = await generateManifest(urlpatterns);
|
|
14
16
|
* console.log(manifest.routeManifest); // { home: "/", about: "/about", ... }
|
|
15
17
|
* ```
|
|
16
18
|
*/
|
|
@@ -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/router/find-match.ts
CHANGED
|
@@ -20,27 +20,39 @@ function cloneMatchResult<TEnv>(
|
|
|
20
20
|
|
|
21
21
|
export interface FindMatchDeps<TEnv = any> {
|
|
22
22
|
routesEntries: RouteEntry<TEnv>[];
|
|
23
|
-
|
|
23
|
+
// Returns a Promise only when it had to resolve an async include provider
|
|
24
|
+
// (`() => import()`); void for eager/precomputed includes, so the per-entry
|
|
25
|
+
// match loop pays no microtask in the common case.
|
|
26
|
+
evaluateLazyEntry: (entry: RouteEntry<TEnv>) => void | Promise<void>;
|
|
24
27
|
routerId: string;
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
/**
|
|
28
31
|
* Create a findMatch function bound to router state.
|
|
29
32
|
* Includes single-entry cache to avoid redundant matching within the same request.
|
|
33
|
+
*
|
|
34
|
+
* Async because a lazy include may be backed by an async provider
|
|
35
|
+
* (`() => import("./routes")`) that must be resolved before its routes can be
|
|
36
|
+
* matched. The hot path is unaffected: `await` only suspends on the first
|
|
37
|
+
* request to a not-yet-loaded dynamic include; eager routes resolve in the same
|
|
38
|
+
* microtask. Every caller already runs inside an async match pipeline.
|
|
30
39
|
*/
|
|
31
40
|
export function createFindMatch<TEnv = any>(
|
|
32
41
|
deps: FindMatchDeps<TEnv>,
|
|
33
|
-
): (
|
|
42
|
+
): (
|
|
43
|
+
pathname: string,
|
|
44
|
+
ms?: MetricsStore,
|
|
45
|
+
) => Promise<RouteMatchResult<TEnv> | null> {
|
|
34
46
|
// Single-entry cache for findMatch to avoid redundant matching within the same request.
|
|
35
47
|
// previewMatch and match both call findMatch with the same pathname — this ensures
|
|
36
48
|
// the route matching work (which may check thousands of routes) only happens once.
|
|
37
49
|
let lastFindMatchPathname: string | null = null;
|
|
38
50
|
let lastFindMatchResult: RouteMatchResult<TEnv> | null = null;
|
|
39
51
|
|
|
40
|
-
return function findMatch(
|
|
52
|
+
return async function findMatch(
|
|
41
53
|
pathname: string,
|
|
42
54
|
ms?: MetricsStore,
|
|
43
|
-
): RouteMatchResult<TEnv> | null {
|
|
55
|
+
): Promise<RouteMatchResult<TEnv> | null> {
|
|
44
56
|
if (lastFindMatchPathname === pathname) {
|
|
45
57
|
return cloneMatchResult(lastFindMatchResult);
|
|
46
58
|
}
|
|
@@ -71,11 +83,33 @@ export function createFindMatch<TEnv = any>(
|
|
|
71
83
|
const entryStart = performance.now();
|
|
72
84
|
let entry: RouteEntry<TEnv> | undefined;
|
|
73
85
|
let fallbackEntry: RouteEntry<TEnv> | undefined;
|
|
86
|
+
let candidateError: unknown;
|
|
87
|
+
let candidateFailed = false;
|
|
74
88
|
|
|
75
89
|
for (const e of deps.routesEntries) {
|
|
76
90
|
if (e.staticPrefix !== trieResult.sp) continue;
|
|
77
91
|
if (!fallbackEntry) fallbackEntry = e;
|
|
78
|
-
|
|
92
|
+
try {
|
|
93
|
+
const ev = deps.evaluateLazyEntry(e);
|
|
94
|
+
if (ev) await ev;
|
|
95
|
+
} catch (err) {
|
|
96
|
+
// Multiple async includes can share one collapsed static prefix, so
|
|
97
|
+
// this loop may evaluate a candidate that is NOT the route's owner.
|
|
98
|
+
// Remember the failure and keep scanning: if another candidate owns
|
|
99
|
+
// the route, this sibling's failure is correctly isolated (its
|
|
100
|
+
// _lazyInflight was cleared, so a later request retries). But if NO
|
|
101
|
+
// candidate ends up owning it, the failing one WAS the owner — a
|
|
102
|
+
// real, trie-matched route whose module failed to import — and we
|
|
103
|
+
// rethrow below as a 5xx rather than silently 404ing (see finding 3:
|
|
104
|
+
// owner failure must stay loud).
|
|
105
|
+
candidateError = err;
|
|
106
|
+
candidateFailed = true;
|
|
107
|
+
console.error(
|
|
108
|
+
`[@rangojs/router] include at "${e.staticPrefix}" failed to load: ` +
|
|
109
|
+
`${(err as Error)?.message ?? String(err)}`,
|
|
110
|
+
);
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
79
113
|
if (
|
|
80
114
|
e.routes &&
|
|
81
115
|
trieResult.routeKey in (e.routes as Record<string, unknown>)
|
|
@@ -85,6 +119,14 @@ export function createFindMatch<TEnv = any>(
|
|
|
85
119
|
}
|
|
86
120
|
}
|
|
87
121
|
|
|
122
|
+
// The trie matched this route, so it EXISTS. If no same-prefix candidate
|
|
123
|
+
// could own it AND one failed to load, the owning module is the one that
|
|
124
|
+
// threw — surface the module failure as a 5xx, not the misleading 404 a
|
|
125
|
+
// fallthrough would give.
|
|
126
|
+
if (!entry && candidateFailed) {
|
|
127
|
+
throw candidateError;
|
|
128
|
+
}
|
|
129
|
+
|
|
88
130
|
if (!entry) entry = fallbackEntry;
|
|
89
131
|
|
|
90
132
|
if (!entry) {
|
|
@@ -95,7 +137,8 @@ export function createFindMatch<TEnv = any>(
|
|
|
95
137
|
);
|
|
96
138
|
if (parent) {
|
|
97
139
|
const lazyStart = performance.now();
|
|
98
|
-
deps.evaluateLazyEntry(parent);
|
|
140
|
+
const ev = deps.evaluateLazyEntry(parent);
|
|
141
|
+
if (ev) await ev;
|
|
99
142
|
pushMetric?.("match:lazy-eval", lazyStart);
|
|
100
143
|
}
|
|
101
144
|
entry = deps.routesEntries.find(
|
|
@@ -141,7 +184,28 @@ export function createFindMatch<TEnv = any>(
|
|
|
141
184
|
lastFindMatchResult = null;
|
|
142
185
|
return null;
|
|
143
186
|
}
|
|
144
|
-
|
|
187
|
+
try {
|
|
188
|
+
const ev = deps.evaluateLazyEntry(result.lazyEntry);
|
|
189
|
+
if (ev) await ev;
|
|
190
|
+
} catch (err) {
|
|
191
|
+
// If the trie matched this pathname, the route is REAL and this lazy
|
|
192
|
+
// entry owns (part of) it — a module-load failure is a genuine error, so
|
|
193
|
+
// propagate it as a 5xx. If the trie did NOT match, this is a
|
|
194
|
+
// genuinely-unmatched pathname (a typo, a bot probe): its 404 must not be
|
|
195
|
+
// upgraded to a 500 just because some lazy include — e.g. a failing root
|
|
196
|
+
// `include("/")` — happened to need evaluating while we probed. Isolate
|
|
197
|
+
// and fall through to the 404 (finding 4: the two match phases agree —
|
|
198
|
+
// owner failure is loud, unmatched stays 404).
|
|
199
|
+
if (trieMatched) throw err;
|
|
200
|
+
console.error(
|
|
201
|
+
`[@rangojs/router] include at "${result.lazyEntry.staticPrefix}" ` +
|
|
202
|
+
`failed to load while resolving unmatched path "${pathname}": ` +
|
|
203
|
+
`${(err as Error)?.message ?? String(err)}`,
|
|
204
|
+
);
|
|
205
|
+
lastFindMatchPathname = pathname;
|
|
206
|
+
lastFindMatchResult = null;
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
145
209
|
result = findRouteMatch(pathname, deps.routesEntries);
|
|
146
210
|
}
|
|
147
211
|
pushMetric?.("match:regex-fallback", regexStart);
|