@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
|
@@ -9,6 +9,10 @@ import {
|
|
|
9
9
|
import type { UrlPatterns } from "../urls.js";
|
|
10
10
|
import type { AllUseItems, IncludeItem } from "../route-types.js";
|
|
11
11
|
import type { ResolvedRouteMap, RouteEntry, TrailingSlashMode } from "../types";
|
|
12
|
+
import {
|
|
13
|
+
isIncludeProvider,
|
|
14
|
+
resolveIncludeModule,
|
|
15
|
+
} from "../urls/include-provider.js";
|
|
12
16
|
|
|
13
17
|
export interface LazyEvalDeps<TEnv = any> {
|
|
14
18
|
routesEntries: RouteEntry<TEnv>[];
|
|
@@ -69,7 +73,7 @@ export function findLazyIncludes<TEnv = any>(
|
|
|
69
73
|
export function evaluateLazyEntry<TEnv = any>(
|
|
70
74
|
entry: RouteEntry<TEnv>,
|
|
71
75
|
deps: LazyEvalDeps<TEnv>,
|
|
72
|
-
): void {
|
|
76
|
+
): void | Promise<void> {
|
|
73
77
|
if (!entry.lazy || entry.lazyEvaluated || !entry.lazyPatterns) {
|
|
74
78
|
return;
|
|
75
79
|
}
|
|
@@ -93,9 +97,52 @@ export function evaluateLazyEntry<TEnv = any>(
|
|
|
93
97
|
}
|
|
94
98
|
}
|
|
95
99
|
|
|
96
|
-
|
|
100
|
+
// Async provider (`() => import("./routes")`): the route module is evaluated
|
|
101
|
+
// off the startup path, on the first request reaching this prefix. Concurrent
|
|
102
|
+
// first-hits share one in-flight promise so the import + expansion run exactly
|
|
103
|
+
// once. The eager path below stays fully synchronous (no Promise), so the
|
|
104
|
+
// per-entry match loop pays no microtask for normal includes.
|
|
105
|
+
const lazyPatterns = entry.lazyPatterns;
|
|
106
|
+
if (isIncludeProvider(lazyPatterns)) {
|
|
107
|
+
const inflight = (entry as { _lazyInflight?: Promise<void> })._lazyInflight;
|
|
108
|
+
if (inflight) return inflight;
|
|
109
|
+
const work = (async () => {
|
|
110
|
+
const resolved = resolveIncludeModule(
|
|
111
|
+
await lazyPatterns(),
|
|
112
|
+
entry.staticPrefix,
|
|
113
|
+
);
|
|
114
|
+
// Cache the resolved patterns: any later re-entry expands synchronously.
|
|
115
|
+
entry.lazyPatterns = resolved as unknown as UrlPatterns<TEnv>;
|
|
116
|
+
runExpansion(entry, deps, resolved as UrlPatterns<TEnv>);
|
|
117
|
+
})();
|
|
118
|
+
(entry as { _lazyInflight?: Promise<void> })._lazyInflight = work;
|
|
119
|
+
const clear = () => {
|
|
120
|
+
(entry as { _lazyInflight?: Promise<void> })._lazyInflight = undefined;
|
|
121
|
+
};
|
|
122
|
+
// On failure, clear the flag (lazyEvaluated stays false) so a later request
|
|
123
|
+
// can retry the import rather than wedging the route permanently.
|
|
124
|
+
work.then(clear, clear);
|
|
125
|
+
return work;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
runExpansion(entry, deps, lazyPatterns as UrlPatterns<TEnv>);
|
|
129
|
+
}
|
|
97
130
|
|
|
98
|
-
|
|
131
|
+
/**
|
|
132
|
+
* Synchronously expand a lazy entry's (already-resolved) patterns into routes
|
|
133
|
+
* and splice any nested lazy includes as new entries. Runs once per entry.
|
|
134
|
+
*/
|
|
135
|
+
function runExpansion<TEnv = any>(
|
|
136
|
+
entry: RouteEntry<TEnv>,
|
|
137
|
+
deps: LazyEvalDeps<TEnv>,
|
|
138
|
+
lazyPatterns: UrlPatterns<TEnv>,
|
|
139
|
+
): void {
|
|
140
|
+
// lazyEvaluated is set at the END, only after the handler ran and the routes
|
|
141
|
+
// (and any nested includes) were spliced. Setting it up-front would mark the
|
|
142
|
+
// entry done even if the handler throws mid-expansion: the async provider
|
|
143
|
+
// path clears _lazyInflight on rejection so a later request can retry, but a
|
|
144
|
+
// premature lazyEvaluated=true would make evaluateLazyEntry short-circuit
|
|
145
|
+
// (line ~77) forever, wedging the route at 404 until the isolate restarts.
|
|
99
146
|
const lazyContext = entry.lazyContext;
|
|
100
147
|
|
|
101
148
|
const manifest = new Map<string, EntryData>();
|
|
@@ -105,12 +152,9 @@ export function evaluateLazyEntry<TEnv = any>(
|
|
|
105
152
|
|
|
106
153
|
let handlerResult: AllUseItems[] = [];
|
|
107
154
|
|
|
108
|
-
const lazyCounters: Record<string, number> =
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
lazyCounters[key] = value;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
155
|
+
const lazyCounters: Record<string, number> = lazyContext?.counters
|
|
156
|
+
? { ...lazyContext.counters }
|
|
157
|
+
: {};
|
|
114
158
|
|
|
115
159
|
RangoContext.run(
|
|
116
160
|
{
|
|
@@ -170,7 +214,12 @@ export function evaluateLazyEntry<TEnv = any>(
|
|
|
170
214
|
staticPrefix: extractStaticPrefix(fullPrefix),
|
|
171
215
|
routes: {} as ResolvedRouteMap<any>,
|
|
172
216
|
trailingSlash: entry.trailingSlash,
|
|
173
|
-
handler
|
|
217
|
+
// include entries don't invoke their own handler (real handlers come from
|
|
218
|
+
// the expanded routes); use the parent's placeholder. A provider has no
|
|
219
|
+
// `.handler` until resolved, so never read it here.
|
|
220
|
+
handler: isIncludeProvider(lazyInclude.patterns)
|
|
221
|
+
? entry.handler
|
|
222
|
+
: (lazyInclude.patterns as UrlPatterns<TEnv>).handler,
|
|
174
223
|
mountIndex: deps.nextMountIndex(),
|
|
175
224
|
routerId: deps.routerId,
|
|
176
225
|
lazy: true,
|
|
@@ -197,4 +246,9 @@ export function evaluateLazyEntry<TEnv = any>(
|
|
|
197
246
|
}
|
|
198
247
|
|
|
199
248
|
registerRouteMap(deps.mergedRouteMap);
|
|
249
|
+
|
|
250
|
+
// Expansion fully succeeded (handler ran, routes + nested includes spliced) —
|
|
251
|
+
// mark done now so a mid-expansion throw above leaves lazyEvaluated=false and
|
|
252
|
+
// the entry retriable.
|
|
253
|
+
entry.lazyEvaluated = true;
|
|
200
254
|
}
|
package/src/router/manifest.ts
CHANGED
|
@@ -11,8 +11,17 @@ import MapRootLayout from "../server/root-layout";
|
|
|
11
11
|
import { joinPrefix } from "./pattern-matching.js";
|
|
12
12
|
import type { RouteEntry } from "../types";
|
|
13
13
|
import type { UrlPatterns } from "../urls";
|
|
14
|
+
import {
|
|
15
|
+
isIncludeProvider,
|
|
16
|
+
resolveIncludeModule,
|
|
17
|
+
} from "../urls/include-provider.js";
|
|
14
18
|
import { VERSION } from "@rangojs/router:version";
|
|
15
19
|
|
|
20
|
+
// Tags an error thrown while dynamically importing an async include's module
|
|
21
|
+
// (`() => import("./routes")`) so loadManifest's outer catch re-raises it as a
|
|
22
|
+
// server error rather than masking it as a RouteNotFoundError (404).
|
|
23
|
+
const MODULE_LOAD_FAILURE = Symbol.for("rango.moduleLoadFailure");
|
|
24
|
+
|
|
16
25
|
// Module-level manifest cache: avoids re-executing DSL handler on every request.
|
|
17
26
|
// Handler execution is deterministic (components, loaders, middleware are module-level
|
|
18
27
|
// stable references), so the resulting EntryData tree can be safely cached and reused
|
|
@@ -165,6 +174,29 @@ export async function loadManifest(
|
|
|
165
174
|
// not exist in the non-lazy (root handler) path and would produce
|
|
166
175
|
// mismatched shortCodes.
|
|
167
176
|
if (entry.lazy && entry.lazyPatterns) {
|
|
177
|
+
// Resolve an async include provider (`() => import("./routes")`) before
|
|
178
|
+
// running its handler. The match-time precomputed shortcut can skip
|
|
179
|
+
// evaluateLazyEntry's resolution, so render-time must resolve it here;
|
|
180
|
+
// cache the resolved patterns on the entry so later renders reuse them.
|
|
181
|
+
if (isIncludeProvider(entry.lazyPatterns)) {
|
|
182
|
+
try {
|
|
183
|
+
entry.lazyPatterns = resolveIncludeModule(
|
|
184
|
+
await entry.lazyPatterns(),
|
|
185
|
+
entry.staticPrefix,
|
|
186
|
+
) as unknown as UrlPatterns<any>;
|
|
187
|
+
} catch (err) {
|
|
188
|
+
// A failed dynamic import of a REAL, matched route's module is a
|
|
189
|
+
// server error, not a missing route. Tag it so the outer catch
|
|
190
|
+
// surfaces it as a 5xx instead of masking it as a
|
|
191
|
+
// RouteNotFoundError — which renders the 404 page (monitoring
|
|
192
|
+
// misses the failure and a CDN could cache the 404).
|
|
193
|
+
if (err && typeof err === "object") {
|
|
194
|
+
(err as Record<PropertyKey, unknown>)[MODULE_LOAD_FAILURE] =
|
|
195
|
+
true;
|
|
196
|
+
}
|
|
197
|
+
throw err;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
168
200
|
const lazyPatterns = entry.lazyPatterns as UrlPatterns<any>;
|
|
169
201
|
const includePrefix = (entry as any)._lazyPrefix || "";
|
|
170
202
|
// Slash-collapsing join so a trailing-slash parent prefix does not
|
|
@@ -192,12 +224,7 @@ export async function loadManifest(
|
|
|
192
224
|
|
|
193
225
|
if (promiseResult !== null) {
|
|
194
226
|
const load = await (promiseResult as Promise<any>);
|
|
195
|
-
if (
|
|
196
|
-
load &&
|
|
197
|
-
load !== null &&
|
|
198
|
-
typeof load === "object" &&
|
|
199
|
-
"default" in load
|
|
200
|
-
) {
|
|
227
|
+
if (load && typeof load === "object" && "default" in load) {
|
|
201
228
|
// Promise<{ default: () => Array }> - e.g., dynamic import
|
|
202
229
|
if (typeof load.default !== "function") {
|
|
203
230
|
throw new Error(
|
|
@@ -255,6 +282,16 @@ export async function loadManifest(
|
|
|
255
282
|
|
|
256
283
|
return Store.manifest.get(routeKey)!;
|
|
257
284
|
} catch (e) {
|
|
285
|
+
// A tagged async-include module-load failure is a server error for a REAL
|
|
286
|
+
// matched route — re-raise it unchanged (becomes a 5xx) instead of masking
|
|
287
|
+
// it as a RouteNotFoundError (which renders/caches a 404).
|
|
288
|
+
if (
|
|
289
|
+
e &&
|
|
290
|
+
typeof e === "object" &&
|
|
291
|
+
(e as Record<PropertyKey, unknown>)[MODULE_LOAD_FAILURE]
|
|
292
|
+
) {
|
|
293
|
+
throw e;
|
|
294
|
+
}
|
|
258
295
|
throw new RouteNotFoundError(
|
|
259
296
|
`Failed to load route handlers for ${path}: ${(e as Error).message}`,
|
|
260
297
|
{
|
package/src/router/match-api.ts
CHANGED
|
@@ -220,7 +220,7 @@ export async function createMatchContextForPartial<TEnv>(
|
|
|
220
220
|
matched.pt = true;
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
const nav = resolveNavigation(request, url, matched.routeKey, {
|
|
223
|
+
const nav = await resolveNavigation(request, url, matched.routeKey, {
|
|
224
224
|
findMatch: deps.findMatch,
|
|
225
225
|
});
|
|
226
226
|
if (!nav) {
|
|
@@ -404,7 +404,7 @@ export async function matchError<TEnv>(
|
|
|
404
404
|
|
|
405
405
|
debugLog("matchError", "matching error", { pathname });
|
|
406
406
|
|
|
407
|
-
const matched = deps.findMatch(pathname);
|
|
407
|
+
const matched = await deps.findMatch(pathname);
|
|
408
408
|
if (!matched) {
|
|
409
409
|
debugWarn("matchError", "no route matched", { pathname });
|
|
410
410
|
return null;
|
|
@@ -25,15 +25,17 @@ export interface NavigationSnapshot {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export interface ResolveNavigationDeps {
|
|
28
|
-
findMatch: (
|
|
28
|
+
findMatch: (
|
|
29
|
+
pathname: string,
|
|
30
|
+
) => RouteMatchResult | null | Promise<RouteMatchResult | null>;
|
|
29
31
|
}
|
|
30
32
|
|
|
31
|
-
export function resolveNavigation(
|
|
33
|
+
export async function resolveNavigation(
|
|
32
34
|
request: Request,
|
|
33
35
|
url: URL,
|
|
34
36
|
currentRouteKey: string,
|
|
35
37
|
deps: ResolveNavigationDeps,
|
|
36
|
-
): NavigationSnapshot | null {
|
|
38
|
+
): Promise<NavigationSnapshot | null> {
|
|
37
39
|
const clientSegmentIds =
|
|
38
40
|
url.searchParams.get("_rsc_segments")?.split(",").filter(Boolean) || [];
|
|
39
41
|
const stale = url.searchParams.get("_rsc_stale") === "true";
|
|
@@ -65,10 +67,10 @@ export function resolveNavigation(
|
|
|
65
67
|
interceptContextUrl = prevUrl;
|
|
66
68
|
}
|
|
67
69
|
|
|
68
|
-
const prevMatch = deps.findMatch(prevUrl.pathname);
|
|
70
|
+
const prevMatch = await deps.findMatch(prevUrl.pathname);
|
|
69
71
|
const prevParams = prevMatch?.params || {};
|
|
70
72
|
const interceptContextMatch = interceptSourceUrl
|
|
71
|
-
? deps.findMatch(interceptContextUrl.pathname)
|
|
73
|
+
? await deps.findMatch(interceptContextUrl.pathname)
|
|
72
74
|
: prevMatch;
|
|
73
75
|
|
|
74
76
|
const isSameRouteNavigation = !!(
|
|
@@ -33,7 +33,9 @@ import type {
|
|
|
33
33
|
import type { RouteMatchResult } from "./pattern-matching.js";
|
|
34
34
|
|
|
35
35
|
export interface PrerenderMatchDeps<TEnv = any> {
|
|
36
|
-
findMatch: (
|
|
36
|
+
findMatch: (
|
|
37
|
+
pathname: string,
|
|
38
|
+
) => RouteMatchResult<TEnv> | null | Promise<RouteMatchResult<TEnv> | null>;
|
|
37
39
|
buildRouterContext: () => RouterContext<TEnv>;
|
|
38
40
|
mergedRouteMap: Record<string, string>;
|
|
39
41
|
resolveAllSegments: (
|
|
@@ -74,7 +76,7 @@ export async function matchForPrerender<TEnv = any>(
|
|
|
74
76
|
passthrough?: true;
|
|
75
77
|
} | null> {
|
|
76
78
|
// 1. Find the matching route entry
|
|
77
|
-
const matched = deps.findMatch(pathname);
|
|
79
|
+
const matched = await deps.findMatch(pathname);
|
|
78
80
|
if (!matched) return null;
|
|
79
81
|
|
|
80
82
|
// Use params from trie match if available, fall back to provided params
|
|
@@ -6,7 +6,9 @@ import type { MiddlewareFn } from "./middleware.js";
|
|
|
6
6
|
import { resolveRoute } from "./route-snapshot.js";
|
|
7
7
|
|
|
8
8
|
export interface PreviewMatchDeps<TEnv = any> {
|
|
9
|
-
findMatch: (
|
|
9
|
+
findMatch: (
|
|
10
|
+
pathname: string,
|
|
11
|
+
) => RouteMatchResult<TEnv> | null | Promise<RouteMatchResult<TEnv> | null>;
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
/**
|
|
@@ -121,7 +121,9 @@ export type {
|
|
|
121
121
|
};
|
|
122
122
|
|
|
123
123
|
export interface ClassifyRequestDeps<TEnv = any> {
|
|
124
|
-
findMatch: (
|
|
124
|
+
findMatch: (
|
|
125
|
+
pathname: string,
|
|
126
|
+
) => RouteMatchResult<TEnv> | null | Promise<RouteMatchResult<TEnv> | null>;
|
|
125
127
|
routerVersion: string;
|
|
126
128
|
routerId: string;
|
|
127
129
|
}
|
|
@@ -56,7 +56,9 @@ export type ResolveRouteResult<TEnv = any> =
|
|
|
56
56
|
| null;
|
|
57
57
|
|
|
58
58
|
export interface ResolveRouteDeps<TEnv = any> {
|
|
59
|
-
findMatch: (
|
|
59
|
+
findMatch: (
|
|
60
|
+
pathname: string,
|
|
61
|
+
) => RouteMatchResult<TEnv> | null | Promise<RouteMatchResult<TEnv> | null>;
|
|
60
62
|
metricsStore?: MetricsStore;
|
|
61
63
|
isSSR?: boolean;
|
|
62
64
|
/**
|
|
@@ -105,7 +107,7 @@ export async function resolveRoute<TEnv = any>(
|
|
|
105
107
|
|
|
106
108
|
const routeMatchStart =
|
|
107
109
|
metricsStore && !skipRouteMatchMetric ? performance.now() : 0;
|
|
108
|
-
const matched = deps.findMatch(pathname);
|
|
110
|
+
const matched = await deps.findMatch(pathname);
|
|
109
111
|
if (metricsStore && !skipRouteMatchMetric) {
|
|
110
112
|
metricsStore.metrics.push({
|
|
111
113
|
label: "route-matching",
|
|
@@ -55,7 +55,9 @@ export interface InterceptResult {
|
|
|
55
55
|
* Instead of passing 20+ parameters, middleware calls getRouterContext() to access them.
|
|
56
56
|
*/
|
|
57
57
|
export interface RouterContext<TEnv = any> {
|
|
58
|
-
findMatch: (
|
|
58
|
+
findMatch: (
|
|
59
|
+
pathname: string,
|
|
60
|
+
) => RouteMatchResult | null | Promise<RouteMatchResult | null>;
|
|
59
61
|
|
|
60
62
|
loadManifest: (
|
|
61
63
|
entry: any,
|
|
@@ -9,6 +9,7 @@ import type { NonceProvider } from "../rsc/types.js";
|
|
|
9
9
|
import type { ExecutionContext } from "../server/request-context.js";
|
|
10
10
|
import type { SerializedSegmentData } from "../cache/types.js";
|
|
11
11
|
import type { MiddlewareEntry, MiddlewareFn } from "./middleware.js";
|
|
12
|
+
import type { RouteMatchResult } from "./pattern-matching.js";
|
|
12
13
|
import type { ExtractParams } from "../types/route-config.js";
|
|
13
14
|
import { RSC_ROUTER_BRAND } from "./router-registry.js";
|
|
14
15
|
import type { RangoOptions, RootLayoutProps } from "./router-options.js";
|
|
@@ -516,7 +517,14 @@ export interface RangoInternal<
|
|
|
516
517
|
* Used by classifyRequest() for request classification without
|
|
517
518
|
* entering the full match pipeline.
|
|
518
519
|
*/
|
|
519
|
-
|
|
520
|
+
// Async since a lazy async include (`() => import()`) must resolve before its
|
|
521
|
+
// routes can match. Typed (not `any`) so a consumer doing
|
|
522
|
+
// `const m = router.findMatch(p); if (!m) ...; m.entry` gets a compile error
|
|
523
|
+
// (m is a Promise) instead of the silent always-truthy bug.
|
|
524
|
+
findMatch(
|
|
525
|
+
pathname: string,
|
|
526
|
+
metricsStore?: any,
|
|
527
|
+
): Promise<RouteMatchResult<TEnv> | null>;
|
|
520
528
|
|
|
521
529
|
/**
|
|
522
530
|
* Debug utility to serialize the manifest for inspection
|
package/src/router.ts
CHANGED
|
@@ -620,8 +620,15 @@ export function createRouter<TEnv = any>(
|
|
|
620
620
|
routerId,
|
|
621
621
|
};
|
|
622
622
|
|
|
623
|
-
|
|
624
|
-
|
|
623
|
+
// Must return the Promise from _evaluateLazyEntry: an async include provider
|
|
624
|
+
// (`() => import("./routes")`) resolves off the startup path, and createFindMatch
|
|
625
|
+
// awaits this to know when the import + expansion have completed. Dropping it
|
|
626
|
+
// (typing this `void`) makes the import fire-and-forget, so findMatch spins the
|
|
627
|
+
// lazy-eval retry loop to its cap and returns null on the first request to any
|
|
628
|
+
// async include whose prefix isn't already covered by a unique precomputed entry
|
|
629
|
+
// (nested includes, shared prefixes, regex fallback).
|
|
630
|
+
function evaluateLazyEntry(entry: RouteEntry<TEnv>): void | Promise<void> {
|
|
631
|
+
return _evaluateLazyEntry(entry, lazyEvalDeps);
|
|
625
632
|
}
|
|
626
633
|
|
|
627
634
|
// Create findMatch with single-entry cache, bound to router state
|
package/src/rsc/manifest-init.ts
CHANGED
|
@@ -32,7 +32,7 @@ export async function buildRouterTrieFromUrlpatterns(
|
|
|
32
32
|
): Promise<void> {
|
|
33
33
|
const { generateManifestFull } =
|
|
34
34
|
await import("../build/generate-manifest.js");
|
|
35
|
-
const generated = generateManifestFull(
|
|
35
|
+
const generated = await generateManifestFull(
|
|
36
36
|
router.urlpatterns,
|
|
37
37
|
undefined,
|
|
38
38
|
router.basename ? { urlPrefix: router.basename } : undefined,
|
package/src/testing/dispatch.ts
CHANGED
|
@@ -140,11 +140,11 @@ interface DispatchableRouter<TEnv> {
|
|
|
140
140
|
routeMap: Record<string, unknown>;
|
|
141
141
|
middleware: MiddlewareEntry<TEnv>[];
|
|
142
142
|
onError?: OnErrorCallback<TEnv>;
|
|
143
|
-
findMatch(pathname: string): {
|
|
143
|
+
findMatch(pathname: string): Promise<{
|
|
144
144
|
redirectTo?: string;
|
|
145
145
|
routeKey?: string;
|
|
146
146
|
params?: Record<string, string>;
|
|
147
|
-
} | null
|
|
147
|
+
} | null>;
|
|
148
148
|
previewMatch(
|
|
149
149
|
request: Request,
|
|
150
150
|
input?: { env?: TEnv },
|
|
@@ -351,7 +351,7 @@ export async function dispatch<TEnv = any>(
|
|
|
351
351
|
|
|
352
352
|
// findMatch carries trailing-slash/redirect targets and null on no match.
|
|
353
353
|
// previewMatch swallows redirects, so detect them here first.
|
|
354
|
-
const match = router.findMatch(url.pathname);
|
|
354
|
+
const match = await router.findMatch(url.pathname);
|
|
355
355
|
const redirectTo = match?.redirectTo;
|
|
356
356
|
const isUnmatched = !match;
|
|
357
357
|
|
|
@@ -29,6 +29,10 @@ import { isAutoGeneratedRouteName } from "../route-name.js";
|
|
|
29
29
|
*/
|
|
30
30
|
interface RouterWithRouteMap {
|
|
31
31
|
routeMap: Record<string, unknown>;
|
|
32
|
+
// findMatch is async (it may await an async include provider's import before
|
|
33
|
+
// the route's names are spliced into routeMap), so expandLazyIncludes awaits
|
|
34
|
+
// it. Typed `unknown` (not `unknown | Promise<unknown>`, which collapses to
|
|
35
|
+
// the same thing) — the awaited value is never read, only its side effect.
|
|
32
36
|
findMatch?: (pathname: string) => unknown;
|
|
33
37
|
}
|
|
34
38
|
|
|
@@ -42,16 +46,28 @@ function concretePath(pattern: string): string {
|
|
|
42
46
|
);
|
|
43
47
|
}
|
|
44
48
|
|
|
45
|
-
function expandLazyIncludes(
|
|
49
|
+
async function expandLazyIncludes(
|
|
46
50
|
router: RouterWithRouteMap,
|
|
47
51
|
patterns: Iterable<string>,
|
|
48
|
-
): void {
|
|
52
|
+
): Promise<void> {
|
|
49
53
|
const findMatch = router.findMatch;
|
|
50
54
|
if (typeof findMatch !== "function") return;
|
|
51
55
|
for (const pattern of patterns) {
|
|
52
56
|
try {
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
// Await: an async include(`() => import()`) resolves its module + splices
|
|
58
|
+
// its routes into routeMap only after findMatch's Promise settles. Without
|
|
59
|
+
// the await, the routeMap read below races the import and reports the
|
|
60
|
+
// split-group routes as missing.
|
|
61
|
+
await findMatch.call(router, concretePath(pattern));
|
|
62
|
+
} catch (e) {
|
|
63
|
+
// A findMatch throw here is almost always a failing async include()
|
|
64
|
+
// provider (its `() => import()` rejected). Surface it — swallowed, it
|
|
65
|
+
// resurfaces downstream as a misleading "missing route" in the diff.
|
|
66
|
+
console.warn(
|
|
67
|
+
`[@rangojs/router] assertGeneratedRoutesMatch: could not expand include ` +
|
|
68
|
+
`for "${pattern}": ${(e as Error)?.message ?? String(e)}`,
|
|
69
|
+
);
|
|
70
|
+
}
|
|
55
71
|
}
|
|
56
72
|
}
|
|
57
73
|
|
|
@@ -91,13 +107,13 @@ function patternOf(value: unknown): string {
|
|
|
91
107
|
return String(value);
|
|
92
108
|
}
|
|
93
109
|
|
|
94
|
-
export function diffGeneratedRoutes(
|
|
110
|
+
export async function diffGeneratedRoutes(
|
|
95
111
|
router: RouterWithRouteMap,
|
|
96
112
|
generatedMap?: Record<string, unknown>,
|
|
97
|
-
): GeneratedRoutesDiff {
|
|
113
|
+
): Promise<GeneratedRoutesDiff> {
|
|
98
114
|
const generated = generatedMap ?? getGlobalRouteMap();
|
|
99
115
|
|
|
100
|
-
expandLazyIncludes(
|
|
116
|
+
await expandLazyIncludes(
|
|
101
117
|
router,
|
|
102
118
|
Object.values(generated).map((v) => patternOf(v)),
|
|
103
119
|
);
|
|
@@ -145,14 +161,14 @@ export function diffGeneratedRoutes(
|
|
|
145
161
|
* import generated from "./router.named-routes.gen";
|
|
146
162
|
* import { router } from "./router";
|
|
147
163
|
*
|
|
148
|
-
* assertGeneratedRoutesMatch(router, generated);
|
|
164
|
+
* await assertGeneratedRoutesMatch(router, generated);
|
|
149
165
|
* ```
|
|
150
166
|
*/
|
|
151
|
-
export function assertGeneratedRoutesMatch(
|
|
167
|
+
export async function assertGeneratedRoutesMatch(
|
|
152
168
|
router: RouterWithRouteMap,
|
|
153
169
|
generatedMap?: Record<string, unknown>,
|
|
154
|
-
): void {
|
|
155
|
-
const diff = diffGeneratedRoutes(router, generatedMap);
|
|
170
|
+
): Promise<void> {
|
|
171
|
+
const diff = await diffGeneratedRoutes(router, generatedMap);
|
|
156
172
|
if (diff.ok) return;
|
|
157
173
|
|
|
158
174
|
const lines: string[] = [
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
validateUserRouteName,
|
|
10
10
|
} from "../route-name.js";
|
|
11
11
|
import type { UrlPatterns, IncludeOptions } from "./pattern-types.js";
|
|
12
|
+
import type { IncludeProvider } from "./include-provider.js";
|
|
12
13
|
import type { IncludeFn } from "./path-helper-types.js";
|
|
13
14
|
|
|
14
15
|
function hasExplicitNameOption(options: IncludeOptions | undefined): boolean {
|
|
@@ -60,7 +61,11 @@ export function processItems(items: readonly AllUseItems[]): AllUseItems[] {
|
|
|
60
61
|
export function createIncludeHelper<TEnv>(): IncludeFn<TEnv> {
|
|
61
62
|
return (
|
|
62
63
|
prefix: string,
|
|
63
|
-
|
|
64
|
+
// A `urls()` value (eager) OR an async provider thunk
|
|
65
|
+
// (`() => import("./routes")`) whose evaluation is deferred to the first
|
|
66
|
+
// request matching `prefix`. The provider is stored unevaluated and
|
|
67
|
+
// resolved by the runtime lazy-include expansion / build-time discovery.
|
|
68
|
+
patterns: UrlPatterns<TEnv> | IncludeProvider<TEnv>,
|
|
64
69
|
options?: IncludeOptions,
|
|
65
70
|
): IncludeItem => {
|
|
66
71
|
const { ctx } = requireDslContext("include() must be called inside urls()");
|
|
@@ -81,10 +86,9 @@ export function createIncludeHelper<TEnv>(): IncludeFn<TEnv> {
|
|
|
81
86
|
? capturedUrlPrefix + prefix.slice(1)
|
|
82
87
|
: capturedUrlPrefix + prefix
|
|
83
88
|
: prefix;
|
|
84
|
-
const
|
|
85
|
-
?
|
|
86
|
-
:
|
|
87
|
-
const nextSegment = hasExplicitName ? explicitName : internalScope;
|
|
89
|
+
const nextSegment = hasExplicitName
|
|
90
|
+
? explicitName
|
|
91
|
+
: allocateInternalIncludeScopeId(ctx.counters);
|
|
88
92
|
const fullNamePrefix =
|
|
89
93
|
nextSegment !== undefined && nextSegment !== ""
|
|
90
94
|
? capturedNamePrefix
|
|
@@ -117,9 +121,7 @@ export function createIncludeHelper<TEnv>(): IncludeFn<TEnv> {
|
|
|
117
121
|
if (capturedParent?.shortCode) {
|
|
118
122
|
const includeCounterKey = `${capturedParent.shortCode}${parentScope}_include`;
|
|
119
123
|
ctx.counters[includeCounterKey] ??= 0;
|
|
120
|
-
|
|
121
|
-
ctx.counters[includeCounterKey] = includeIdx + 1;
|
|
122
|
-
includeScope = `${parentScope}I${includeIdx}`;
|
|
124
|
+
includeScope = `${parentScope}I${ctx.counters[includeCounterKey]++}`;
|
|
123
125
|
}
|
|
124
126
|
|
|
125
127
|
// Snapshot parent's counters AFTER allocating the include scope so lazy
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { UrlPatterns } from "./pattern-types.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* What an async `include()` provider may resolve to: a `urls()` value directly,
|
|
5
|
+
* or a module namespace whose `default` export is a `urls()` value (the shape
|
|
6
|
+
* produced by `() => import("./routes")` when the route module does
|
|
7
|
+
* `export default urls(...)`).
|
|
8
|
+
*/
|
|
9
|
+
export type IncludeModule<TEnv = any> =
|
|
10
|
+
| UrlPatterns<TEnv>
|
|
11
|
+
| { default: UrlPatterns<TEnv> };
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* An async/lazy include provider: a thunk returning a `urls()` value (or a
|
|
15
|
+
* Promise of one). The thunk is stored unevaluated by `include()` and called
|
|
16
|
+
* once, on the first request that matches the prefix — so the route module and
|
|
17
|
+
* its (code-split) subtree are not evaluated at startup.
|
|
18
|
+
*
|
|
19
|
+
* Forward-compatible: `() => import("./routes")` today (async, separate chunk);
|
|
20
|
+
* `() => m.routes` with native `import defer` later (sync, deferred eval).
|
|
21
|
+
*/
|
|
22
|
+
export type IncludeProvider<TEnv = any> = () =>
|
|
23
|
+
| IncludeModule<TEnv>
|
|
24
|
+
| Promise<IncludeModule<TEnv>>;
|
|
25
|
+
|
|
26
|
+
/** True when the include() argument is a provider thunk rather than a value. */
|
|
27
|
+
export function isIncludeProvider(value: unknown): value is IncludeProvider {
|
|
28
|
+
// A `urls()` value is a (branded) object; a provider is a function.
|
|
29
|
+
return typeof value === "function";
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** A `urls()` value is an object exposing a synchronous `handler()`. */
|
|
33
|
+
function isUrlPatterns(value: unknown): value is UrlPatterns {
|
|
34
|
+
return (
|
|
35
|
+
!!value && typeof (value as { handler?: unknown }).handler === "function"
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Normalize an async provider's resolved value to a `UrlPatterns`. Accepts a
|
|
41
|
+
* `urls()` value directly or a module whose `default` export is one.
|
|
42
|
+
*/
|
|
43
|
+
export function resolveIncludeModule<TEnv = any>(
|
|
44
|
+
mod: IncludeModule<TEnv>,
|
|
45
|
+
id?: string,
|
|
46
|
+
): UrlPatterns<TEnv> {
|
|
47
|
+
// Prefer an explicit `default` export (the `export default urls(...)`
|
|
48
|
+
// convention) BEFORE duck-typing the namespace. isUrlPatterns() keys on a
|
|
49
|
+
// `.handler` function, but a routes module can legitimately carry a NAMED
|
|
50
|
+
// `export function handler(...)` alongside its `export default urls(...)`;
|
|
51
|
+
// checking the namespace first would then misidentify the whole module as the
|
|
52
|
+
// urls() value and invoke the user's helper as the DSL handler (the group
|
|
53
|
+
// 404s with a misleading error). A bare `() => urls(...)` provider (no
|
|
54
|
+
// module) has no `default`, so it still resolves via the mod-as-value branch.
|
|
55
|
+
const def = (mod as { default?: unknown })?.default;
|
|
56
|
+
if (isUrlPatterns(def)) return def as UrlPatterns<TEnv>;
|
|
57
|
+
if (isUrlPatterns(mod)) return mod as UrlPatterns<TEnv>;
|
|
58
|
+
// The common failure is a module namespace whose `default` is missing or not a
|
|
59
|
+
// urls() value (e.g. only named exports); `typeof` alone says "object" and
|
|
60
|
+
// hides that, so name the keys present. "provider" (not "async provider") —
|
|
61
|
+
// synchronous providers are supported (see IncludeProvider).
|
|
62
|
+
const got =
|
|
63
|
+
mod && typeof mod === "object"
|
|
64
|
+
? `a module with keys [${Object.keys(mod).join(", ") || "none"}] but no valid \`default\``
|
|
65
|
+
: typeof mod;
|
|
66
|
+
throw new Error(
|
|
67
|
+
`[@rangojs/router] include() provider${id ? ` for "${id}"` : ""} must ` +
|
|
68
|
+
`resolve to a urls() value — either returned directly or as the module's ` +
|
|
69
|
+
`\`default\` export (e.g. \`export default urls(...)\`). Got ${got}.`,
|
|
70
|
+
);
|
|
71
|
+
}
|
|
@@ -152,6 +152,30 @@ export type TextResponsePathFn<TEnv> = <
|
|
|
152
152
|
use?: () => UseItems<ResponseRouteUseItem>,
|
|
153
153
|
) => TypedRouteItem<TName, TPattern, string, TSearch>;
|
|
154
154
|
|
|
155
|
+
/**
|
|
156
|
+
* What an async include() provider resolves to. Route types (`TRoutes`) are
|
|
157
|
+
* inferred from the resolved `urls()` value so `href()` and named routes stay
|
|
158
|
+
* type-safe through a code-split module (`() => import("./routes")`).
|
|
159
|
+
*/
|
|
160
|
+
type IncludeResolved<
|
|
161
|
+
TEnv,
|
|
162
|
+
TRoutes extends Record<string, any>,
|
|
163
|
+
TResponses extends Record<string, unknown>,
|
|
164
|
+
> =
|
|
165
|
+
| UrlPatterns<TEnv, TRoutes, TResponses>
|
|
166
|
+
| { default: UrlPatterns<TEnv, TRoutes, TResponses> };
|
|
167
|
+
|
|
168
|
+
/** include() argument: an eager `urls()` value or an async provider thunk. */
|
|
169
|
+
export type IncludeArg<
|
|
170
|
+
TEnv,
|
|
171
|
+
TRoutes extends Record<string, any>,
|
|
172
|
+
TResponses extends Record<string, unknown>,
|
|
173
|
+
> =
|
|
174
|
+
| UrlPatterns<TEnv, TRoutes, TResponses>
|
|
175
|
+
| (() =>
|
|
176
|
+
| IncludeResolved<TEnv, TRoutes, TResponses>
|
|
177
|
+
| Promise<IncludeResolved<TEnv, TRoutes, TResponses>>);
|
|
178
|
+
|
|
155
179
|
/**
|
|
156
180
|
* Base include function signature.
|
|
157
181
|
*/
|
|
@@ -162,7 +186,7 @@ export type IncludeFn<TEnv> = <
|
|
|
162
186
|
TResponses extends Record<string, unknown> = Record<string, unknown>,
|
|
163
187
|
>(
|
|
164
188
|
prefix: TUrlPrefix,
|
|
165
|
-
patterns:
|
|
189
|
+
patterns: IncludeArg<TEnv, TRoutes, TResponses>,
|
|
166
190
|
options?: IncludeOptions<TNamePrefix>,
|
|
167
191
|
) => TypedIncludeItem<TRoutes, TNamePrefix, TUrlPrefix, TResponses>;
|
|
168
192
|
|
|
@@ -544,6 +544,14 @@ export function createRouterDiscoveryPlugin(
|
|
|
544
544
|
);
|
|
545
545
|
console.warn(`[rango] Failed to create temp runner: ${err.message}`);
|
|
546
546
|
}
|
|
547
|
+
// Reached only on failure (runner unavailable, or create/import threw
|
|
548
|
+
// AFTER the server was created). Close the just-created server so a
|
|
549
|
+
// failed discovery does not leak it until the next call or dev shutdown,
|
|
550
|
+
// and null the refs so the reuse path above starts clean. Mirrors the
|
|
551
|
+
// close pattern used when an existing server is discarded (above).
|
|
552
|
+
await prerenderTempServer?.close().catch(() => {});
|
|
553
|
+
prerenderTempServer = null;
|
|
554
|
+
prerenderNodeRegistry = null;
|
|
547
555
|
return null;
|
|
548
556
|
}
|
|
549
557
|
|