@rangojs/router 0.0.0-experimental.137 → 0.0.0-experimental.139
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/README.md +273 -924
- package/dist/bin/rango.js +265 -56
- package/dist/vite/index.js +710 -119
- package/package.json +16 -1
- package/skills/comparison/SKILL.md +50 -0
- package/skills/comparison/agents/openai.yaml +4 -0
- package/skills/comparison/references/framework-comparison.md +837 -0
- package/skills/composability/SKILL.md +50 -0
- package/skills/host-router/SKILL.md +45 -3
- package/skills/layout/SKILL.md +26 -9
- package/skills/middleware/SKILL.md +6 -2
- package/skills/migrate-nextjs/SKILL.md +12 -0
- package/skills/observability/SKILL.md +23 -1
- package/skills/parallel/SKILL.md +11 -3
- package/skills/rango/SKILL.md +76 -24
- package/skills/response-routes/SKILL.md +14 -0
- package/skills/route/SKILL.md +19 -3
- package/skills/router-setup/SKILL.md +13 -0
- package/skills/shell-manifest/SKILL.md +185 -0
- package/skills/testing/reverse-and-types.md +8 -7
- package/skills/vercel/SKILL.md +128 -0
- package/src/build/generate-manifest.ts +155 -131
- package/src/build/generate-route-types.ts +1 -0
- package/src/build/index.ts +3 -1
- package/src/build/route-types/include-resolution.ts +347 -47
- package/src/build/route-types/router-processing.ts +77 -27
- package/src/build/runtime-discovery.ts +4 -1
- package/src/cache/cf/cf-cache-store.ts +22 -0
- package/src/cache/index.ts +12 -0
- package/src/cache/vercel/index.ts +11 -0
- package/src/cache/vercel/vercel-cache-store.ts +948 -0
- package/src/host/errors.ts +15 -0
- package/src/host/index.ts +1 -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/vercel/index.ts +11 -0
- package/src/vercel/tracing.ts +88 -0
- package/src/vite/discovery/discover-routers.ts +1 -1
- package/src/vite/discovery/state.ts +1 -1
- package/src/vite/index.ts +2 -0
- package/src/vite/plugin-types.ts +84 -2
- package/src/vite/plugins/vercel-output.ts +384 -0
- package/src/vite/plugins/virtual-entries.ts +72 -0
- package/src/vite/rango.ts +128 -21
- package/src/vite/router-discovery.ts +8 -0
- package/src/vite/utils/shared-utils.ts +52 -2
- 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/dist/vite/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/vite/rango.ts
|
|
2
|
-
import { readFileSync as readFileSync7 } from "node:fs";
|
|
3
|
-
import { resolve as
|
|
2
|
+
import { readFileSync as readFileSync7, existsSync as existsSync8 } from "node:fs";
|
|
3
|
+
import { resolve as resolve11 } from "node:path";
|
|
4
4
|
|
|
5
5
|
// src/vite/plugins/expose-action-id.ts
|
|
6
6
|
import MagicString from "magic-string";
|
|
@@ -2279,6 +2279,77 @@ export default function handler(request, env) {
|
|
|
2279
2279
|
}
|
|
2280
2280
|
`.trim();
|
|
2281
2281
|
}
|
|
2282
|
+
function getVirtualEntryRSCHost(hostEntryPath) {
|
|
2283
|
+
return `
|
|
2284
|
+
import * as __hostEntry from "${hostEntryPath}";
|
|
2285
|
+
import { isNoRouteMatchError } from "@rangojs/router/host";
|
|
2286
|
+
|
|
2287
|
+
// Register every sub-app's fetchable loaders + route manifests at startup, same
|
|
2288
|
+
// as the single-router entry. Discovery's host fallback populates these for all
|
|
2289
|
+
// mounted sub-apps, so the aggregate manifests cover the whole host tree.
|
|
2290
|
+
import "virtual:rsc-router/loader-manifest";
|
|
2291
|
+
import "virtual:rsc-router/routes-manifest";
|
|
2292
|
+
|
|
2293
|
+
// The host entry module must export the HostRouter instance (createHostRouter()),
|
|
2294
|
+
// as a default export or a named \`hostRouter\`/\`router\` export. A Cloudflare-style
|
|
2295
|
+
// \`export default { fetch }\` object is not a HostRouter and is rejected (on first
|
|
2296
|
+
// request; see the lazy resolution below).
|
|
2297
|
+
// We require BOTH .match() and .host(): a regular createRouter() also exposes
|
|
2298
|
+
// .match(), so matching on .match() alone would accept an ordinary router and then
|
|
2299
|
+
// return its MatchResult (not a Response) at runtime. .host() is unique to a
|
|
2300
|
+
// HostRouter, so it disambiguates a mistaken \`hostRouter\` path.
|
|
2301
|
+
// Exports are read dynamically (m[name]) so Rollup does not emit IMPORT_IS_UNDEFINED
|
|
2302
|
+
// warnings for the named exports a default-only host module legitimately omits.
|
|
2303
|
+
const __resolveHostRouter = (m) => {
|
|
2304
|
+
for (const name of ["default", "hostRouter", "router"]) {
|
|
2305
|
+
const candidate = m[name];
|
|
2306
|
+
if (
|
|
2307
|
+
candidate &&
|
|
2308
|
+
typeof candidate.match === "function" &&
|
|
2309
|
+
typeof candidate.host === "function"
|
|
2310
|
+
)
|
|
2311
|
+
return candidate;
|
|
2312
|
+
}
|
|
2313
|
+
return undefined;
|
|
2314
|
+
};
|
|
2315
|
+
|
|
2316
|
+
// Resolve + validate the HostRouter lazily on first request, mirroring the
|
|
2317
|
+
// single-router entry's \`_handler\`. During HMR the host module can re-evaluate
|
|
2318
|
+
// before its createHostRouter() export has resolved; validating at module-
|
|
2319
|
+
// evaluation time would then throw a spurious "must export a HostRouter" error
|
|
2320
|
+
// overlay for a perfectly valid app. Resolving on first request lets the live
|
|
2321
|
+
// binding settle first.
|
|
2322
|
+
let _hostRouter;
|
|
2323
|
+
|
|
2324
|
+
// input = { env, ctx } from the launcher / node server. The host router threads
|
|
2325
|
+
// it unchanged to each matched sub-app's handler and cache factory.
|
|
2326
|
+
// On node/vercel rango owns this entry, so there is no user worker to translate
|
|
2327
|
+
// an unmatched host into a response: catch NoRouteMatchError and return 404
|
|
2328
|
+
// (parity with the documented Cloudflare catch). Other errors propagate.
|
|
2329
|
+
export default async function handler(request, input) {
|
|
2330
|
+
if (!_hostRouter) {
|
|
2331
|
+
_hostRouter = __resolveHostRouter(__hostEntry);
|
|
2332
|
+
if (!_hostRouter) {
|
|
2333
|
+
throw new Error(
|
|
2334
|
+
"[rango] The host entry (${hostEntryPath}) must export a HostRouter instance (createHostRouter()) for the node/vercel preset: a default export, or a named 'hostRouter'/'router' export. An ordinary createRouter() is not a host router (it has no .host()), and a Cloudflare-style 'export default { fetch }' object is not supported on this preset."
|
|
2335
|
+
);
|
|
2336
|
+
}
|
|
2337
|
+
}
|
|
2338
|
+
try {
|
|
2339
|
+
return await _hostRouter.match(request, input);
|
|
2340
|
+
} catch (err) {
|
|
2341
|
+
// isNoRouteMatchError also matches by name: a workspace with a duplicated
|
|
2342
|
+
// @rangojs/router copy can throw a NoRouteMatchError whose prototype differs
|
|
2343
|
+
// from this module's import, so a bare instanceof would turn an
|
|
2344
|
+
// unmatched-host 404 into a 500.
|
|
2345
|
+
if (isNoRouteMatchError(err)) {
|
|
2346
|
+
return new Response("Not Found", { status: 404 });
|
|
2347
|
+
}
|
|
2348
|
+
throw err;
|
|
2349
|
+
}
|
|
2350
|
+
}
|
|
2351
|
+
`.trim();
|
|
2352
|
+
}
|
|
2282
2353
|
var VIRTUAL_IDS = {
|
|
2283
2354
|
browser: "virtual:rsc-router/entry.browser.js",
|
|
2284
2355
|
ssr: "virtual:rsc-router/entry.ssr.js",
|
|
@@ -2297,7 +2368,7 @@ import { resolve } from "node:path";
|
|
|
2297
2368
|
// package.json
|
|
2298
2369
|
var package_default = {
|
|
2299
2370
|
name: "@rangojs/router",
|
|
2300
|
-
version: "0.0.0-experimental.
|
|
2371
|
+
version: "0.0.0-experimental.139",
|
|
2301
2372
|
description: "Django-inspired RSC router with composable URL patterns",
|
|
2302
2373
|
keywords: [
|
|
2303
2374
|
"react",
|
|
@@ -2412,6 +2483,11 @@ var package_default = {
|
|
|
2412
2483
|
"react-server": "./src/cloudflare/index.ts",
|
|
2413
2484
|
default: "./src/cloudflare/index.ts"
|
|
2414
2485
|
},
|
|
2486
|
+
"./vercel": {
|
|
2487
|
+
types: "./src/vercel/index.ts",
|
|
2488
|
+
"react-server": "./src/vercel/index.ts",
|
|
2489
|
+
default: "./src/vercel/index.ts"
|
|
2490
|
+
},
|
|
2415
2491
|
"./theme": {
|
|
2416
2492
|
types: "./src/theme/index.ts",
|
|
2417
2493
|
default: "./src/theme/index.ts"
|
|
@@ -2477,9 +2553,11 @@ var package_default = {
|
|
|
2477
2553
|
"magic-string": "^0.30.17",
|
|
2478
2554
|
picomatch: "^4.0.4",
|
|
2479
2555
|
"rsc-html-stream": "^0.0.7",
|
|
2556
|
+
srvx: "^0.11.15",
|
|
2480
2557
|
tinyexec: "^0.3.2"
|
|
2481
2558
|
},
|
|
2482
2559
|
devDependencies: {
|
|
2560
|
+
"@opentelemetry/api": "^1.9.0",
|
|
2483
2561
|
"@playwright/test": "^1.49.1",
|
|
2484
2562
|
"@shared/e2e": "workspace:*",
|
|
2485
2563
|
"@testing-library/dom": "^10.4.1",
|
|
@@ -2497,8 +2575,10 @@ var package_default = {
|
|
|
2497
2575
|
},
|
|
2498
2576
|
peerDependencies: {
|
|
2499
2577
|
"@cloudflare/vite-plugin": "^1.42.1",
|
|
2578
|
+
"@opentelemetry/api": "^1.9.0",
|
|
2500
2579
|
"@playwright/test": "^1.49.1",
|
|
2501
2580
|
"@testing-library/react": ">=16",
|
|
2581
|
+
"@vercel/functions": "^3.0.0",
|
|
2502
2582
|
"@vitejs/plugin-rsc": "^0.5.27",
|
|
2503
2583
|
react: ">=19.2.6 <20",
|
|
2504
2584
|
"react-dom": ">=19.2.6 <20",
|
|
@@ -2509,12 +2589,18 @@ var package_default = {
|
|
|
2509
2589
|
"@cloudflare/vite-plugin": {
|
|
2510
2590
|
optional: true
|
|
2511
2591
|
},
|
|
2592
|
+
"@opentelemetry/api": {
|
|
2593
|
+
optional: true
|
|
2594
|
+
},
|
|
2512
2595
|
"@playwright/test": {
|
|
2513
2596
|
optional: true
|
|
2514
2597
|
},
|
|
2515
2598
|
"@testing-library/react": {
|
|
2516
2599
|
optional: true
|
|
2517
2600
|
},
|
|
2601
|
+
"@vercel/functions": {
|
|
2602
|
+
optional: true
|
|
2603
|
+
},
|
|
2518
2604
|
vite: {
|
|
2519
2605
|
optional: true
|
|
2520
2606
|
},
|
|
@@ -2795,6 +2881,96 @@ function extractNamePrefixFromInclude(node) {
|
|
|
2795
2881
|
}
|
|
2796
2882
|
return null;
|
|
2797
2883
|
}
|
|
2884
|
+
function thenSelectsNonDefaultMember(expr) {
|
|
2885
|
+
const findThenCall = (e) => {
|
|
2886
|
+
if (ts3.isCallExpression(e) && ts3.isPropertyAccessExpression(e.expression) && e.expression.name.text === "then") {
|
|
2887
|
+
return e;
|
|
2888
|
+
}
|
|
2889
|
+
if (ts3.isCallExpression(e) && ts3.isPropertyAccessExpression(e.expression)) {
|
|
2890
|
+
return findThenCall(e.expression.expression);
|
|
2891
|
+
}
|
|
2892
|
+
if (ts3.isPropertyAccessExpression(e)) return findThenCall(e.expression);
|
|
2893
|
+
if (ts3.isParenthesizedExpression(e)) return findThenCall(e.expression);
|
|
2894
|
+
if (ts3.isAwaitExpression(e)) return findThenCall(e.expression);
|
|
2895
|
+
return null;
|
|
2896
|
+
};
|
|
2897
|
+
const thenCall = findThenCall(expr);
|
|
2898
|
+
if (!thenCall || thenCall.arguments.length === 0) return false;
|
|
2899
|
+
const cb = thenCall.arguments[0];
|
|
2900
|
+
if (!ts3.isArrowFunction(cb) && !ts3.isFunctionExpression(cb)) return false;
|
|
2901
|
+
let ret;
|
|
2902
|
+
if (ts3.isBlock(cb.body)) {
|
|
2903
|
+
for (const stmt of cb.body.statements) {
|
|
2904
|
+
if (ts3.isReturnStatement(stmt) && stmt.expression) {
|
|
2905
|
+
ret = stmt.expression;
|
|
2906
|
+
break;
|
|
2907
|
+
}
|
|
2908
|
+
}
|
|
2909
|
+
} else {
|
|
2910
|
+
ret = cb.body;
|
|
2911
|
+
}
|
|
2912
|
+
if (!ret) return false;
|
|
2913
|
+
if (ts3.isPropertyAccessExpression(ret)) {
|
|
2914
|
+
return ret.name.text !== "default";
|
|
2915
|
+
}
|
|
2916
|
+
return false;
|
|
2917
|
+
}
|
|
2918
|
+
function extractDynamicImportSpecifier(node) {
|
|
2919
|
+
let body;
|
|
2920
|
+
if (ts3.isArrowFunction(node) || ts3.isFunctionExpression(node)) {
|
|
2921
|
+
body = node.body;
|
|
2922
|
+
}
|
|
2923
|
+
if (!body) return null;
|
|
2924
|
+
let expr;
|
|
2925
|
+
if (ts3.isBlock(body)) {
|
|
2926
|
+
for (const stmt of body.statements) {
|
|
2927
|
+
if (ts3.isReturnStatement(stmt) && stmt.expression) {
|
|
2928
|
+
expr = stmt.expression;
|
|
2929
|
+
break;
|
|
2930
|
+
}
|
|
2931
|
+
}
|
|
2932
|
+
} else {
|
|
2933
|
+
expr = body;
|
|
2934
|
+
}
|
|
2935
|
+
if (!expr) return null;
|
|
2936
|
+
const findImportCall = (e) => {
|
|
2937
|
+
if (ts3.isCallExpression(e) && e.expression.kind === ts3.SyntaxKind.ImportKeyword) {
|
|
2938
|
+
return e;
|
|
2939
|
+
}
|
|
2940
|
+
if (ts3.isCallExpression(e) && ts3.isPropertyAccessExpression(e.expression)) {
|
|
2941
|
+
return findImportCall(e.expression.expression);
|
|
2942
|
+
}
|
|
2943
|
+
if (ts3.isPropertyAccessExpression(e)) return findImportCall(e.expression);
|
|
2944
|
+
if (ts3.isParenthesizedExpression(e)) return findImportCall(e.expression);
|
|
2945
|
+
if (ts3.isAwaitExpression(e)) return findImportCall(e.expression);
|
|
2946
|
+
return null;
|
|
2947
|
+
};
|
|
2948
|
+
const importCall = findImportCall(expr);
|
|
2949
|
+
if (!importCall || importCall.arguments.length === 0) return null;
|
|
2950
|
+
if (thenSelectsNonDefaultMember(expr)) return null;
|
|
2951
|
+
return getStringValue(importCall.arguments[0]);
|
|
2952
|
+
}
|
|
2953
|
+
function resolveDefaultExportTarget(code, sourceFile) {
|
|
2954
|
+
let result = null;
|
|
2955
|
+
function visit(node) {
|
|
2956
|
+
if (result) return;
|
|
2957
|
+
if (ts3.isExportAssignment(node) && !node.isExportEquals) {
|
|
2958
|
+
const expr = node.expression;
|
|
2959
|
+
if (ts3.isIdentifier(expr)) {
|
|
2960
|
+
result = { variableName: expr.text };
|
|
2961
|
+
} else if (ts3.isCallExpression(expr)) {
|
|
2962
|
+
const callee = expr.expression;
|
|
2963
|
+
if (ts3.isIdentifier(callee) && callee.text === "urls") {
|
|
2964
|
+
result = { inlineBlock: expr.getText(sourceFile) };
|
|
2965
|
+
}
|
|
2966
|
+
}
|
|
2967
|
+
return;
|
|
2968
|
+
}
|
|
2969
|
+
ts3.forEachChild(node, visit);
|
|
2970
|
+
}
|
|
2971
|
+
visit(sourceFile);
|
|
2972
|
+
return result;
|
|
2973
|
+
}
|
|
2798
2974
|
function extractIncludesWithDiagnostics(code, sourceFileArg) {
|
|
2799
2975
|
const sourceFile = sourceFileArg ?? ts3.createSourceFile(
|
|
2800
2976
|
"input.tsx",
|
|
@@ -2820,12 +2996,19 @@ function extractIncludesWithDiagnostics(code, sourceFileArg) {
|
|
|
2820
2996
|
}
|
|
2821
2997
|
const secondArg = node.arguments[1];
|
|
2822
2998
|
const namePrefix = extractNamePrefixFromInclude(node);
|
|
2999
|
+
const dynamicImportSpec = extractDynamicImportSpecifier(secondArg);
|
|
2823
3000
|
if (ts3.isIdentifier(secondArg)) {
|
|
2824
3001
|
resolved.push({
|
|
2825
3002
|
pathPrefix,
|
|
2826
3003
|
variableName: secondArg.text,
|
|
2827
3004
|
namePrefix
|
|
2828
3005
|
});
|
|
3006
|
+
} else if (dynamicImportSpec !== null) {
|
|
3007
|
+
resolved.push({
|
|
3008
|
+
pathPrefix,
|
|
3009
|
+
moduleSpecifier: dynamicImportSpec,
|
|
3010
|
+
namePrefix
|
|
3011
|
+
});
|
|
2829
3012
|
} else if (ts3.isCallExpression(secondArg)) {
|
|
2830
3013
|
const callText = secondArg.expression.getText(sourceFile);
|
|
2831
3014
|
unresolvable.push({
|
|
@@ -2929,57 +3112,94 @@ function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSche
|
|
|
2929
3112
|
diagnosticsOut.push({ ...entry, sourceFile: filePath });
|
|
2930
3113
|
}
|
|
2931
3114
|
}
|
|
2932
|
-
for (const
|
|
3115
|
+
for (const inc of includes) {
|
|
3116
|
+
const { pathPrefix, namePrefix } = inc;
|
|
2933
3117
|
let childResult;
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
const targetFile = resolveImportPath(imported.specifier, filePath);
|
|
3118
|
+
if (inc.moduleSpecifier) {
|
|
3119
|
+
const targetFile = resolveImportPath(inc.moduleSpecifier, filePath);
|
|
2937
3120
|
if (!targetFile) {
|
|
2938
|
-
|
|
2939
|
-
|
|
2940
|
-
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
});
|
|
2946
|
-
}
|
|
3121
|
+
diagnosticsOut?.push({
|
|
3122
|
+
pathPrefix,
|
|
3123
|
+
namePrefix,
|
|
3124
|
+
reason: "file-not-found",
|
|
3125
|
+
sourceFile: filePath,
|
|
3126
|
+
detail: `import("${inc.moduleSpecifier}") resolved to no file`
|
|
3127
|
+
});
|
|
2947
3128
|
continue;
|
|
2948
3129
|
}
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
diagnosticsOut
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
3130
|
+
let targetSource;
|
|
3131
|
+
try {
|
|
3132
|
+
targetSource = readSourceMemoized(memo, resolve2(targetFile));
|
|
3133
|
+
} catch (err) {
|
|
3134
|
+
diagnosticsOut?.push({
|
|
3135
|
+
pathPrefix,
|
|
3136
|
+
namePrefix,
|
|
3137
|
+
reason: "file-not-found",
|
|
3138
|
+
sourceFile: filePath,
|
|
3139
|
+
detail: `import("${inc.moduleSpecifier}") resolved to "${targetFile}" but reading it failed: ${err?.message ?? String(err)}`
|
|
3140
|
+
});
|
|
3141
|
+
continue;
|
|
3142
|
+
}
|
|
3143
|
+
const def = resolveDefaultExportTarget(
|
|
3144
|
+
targetSource,
|
|
3145
|
+
parseBlock(memo, targetSource)
|
|
2962
3146
|
);
|
|
2963
|
-
if (!
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
});
|
|
2972
|
-
}
|
|
3147
|
+
if (!def) {
|
|
3148
|
+
diagnosticsOut?.push({
|
|
3149
|
+
pathPrefix,
|
|
3150
|
+
namePrefix,
|
|
3151
|
+
reason: "unresolvable-import",
|
|
3152
|
+
sourceFile: filePath,
|
|
3153
|
+
detail: `import("${inc.moduleSpecifier}") has no resolvable \`export default urls(...)\``
|
|
3154
|
+
});
|
|
2973
3155
|
continue;
|
|
2974
3156
|
}
|
|
2975
|
-
|
|
2976
|
-
|
|
3157
|
+
if (def.inlineBlock) {
|
|
3158
|
+
childResult = buildCombinedRouteMapWithSearch(
|
|
3159
|
+
targetFile,
|
|
3160
|
+
void 0,
|
|
3161
|
+
visited,
|
|
3162
|
+
diagnosticsOut,
|
|
3163
|
+
def.inlineBlock,
|
|
3164
|
+
memo
|
|
3165
|
+
);
|
|
3166
|
+
} else {
|
|
3167
|
+
const variableName = def.variableName;
|
|
3168
|
+
const resolved = resolveIncludedVariable({
|
|
3169
|
+
variableName,
|
|
3170
|
+
resolutionFile: targetFile,
|
|
3171
|
+
resolutionSource: targetSource,
|
|
3172
|
+
reportFile: filePath,
|
|
3173
|
+
memo,
|
|
3174
|
+
visited,
|
|
3175
|
+
diagnosticsOut,
|
|
3176
|
+
pathPrefix,
|
|
3177
|
+
namePrefix,
|
|
3178
|
+
fileNotFoundDetail: (specifier) => `import("${inc.moduleSpecifier}") default re-exports "${variableName}" from "${specifier}", which resolved to no file`,
|
|
3179
|
+
notFoundDetail: () => `import("${inc.moduleSpecifier}") default "${variableName}" not found in its imports or same-file scope`
|
|
3180
|
+
});
|
|
3181
|
+
if (!resolved) continue;
|
|
3182
|
+
childResult = resolved;
|
|
3183
|
+
}
|
|
3184
|
+
} else if (inc.variableName) {
|
|
3185
|
+
const variableName = inc.variableName;
|
|
3186
|
+
const resolved = resolveIncludedVariable({
|
|
2977
3187
|
variableName,
|
|
3188
|
+
resolutionFile: filePath,
|
|
3189
|
+
resolutionSource: fullSource,
|
|
3190
|
+
reportFile: filePath,
|
|
3191
|
+
memo,
|
|
2978
3192
|
visited,
|
|
2979
3193
|
diagnosticsOut,
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
3194
|
+
pathPrefix,
|
|
3195
|
+
namePrefix,
|
|
3196
|
+
fileNotFoundDetail: (specifier) => `import "${specifier}" resolved to no file`,
|
|
3197
|
+
notFoundDetail: () => `variable "${variableName}" not found in imports or same-file scope`
|
|
3198
|
+
});
|
|
3199
|
+
if (!resolved) continue;
|
|
3200
|
+
childResult = resolved;
|
|
3201
|
+
} else {
|
|
3202
|
+
continue;
|
|
2983
3203
|
}
|
|
2984
3204
|
if (namePrefix === null) {
|
|
2985
3205
|
continue;
|
|
@@ -3002,6 +3222,64 @@ function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSche
|
|
|
3002
3222
|
}
|
|
3003
3223
|
return routeMap;
|
|
3004
3224
|
}
|
|
3225
|
+
function resolveIncludedVariable(opts) {
|
|
3226
|
+
const {
|
|
3227
|
+
variableName,
|
|
3228
|
+
resolutionFile,
|
|
3229
|
+
resolutionSource,
|
|
3230
|
+
reportFile,
|
|
3231
|
+
memo,
|
|
3232
|
+
visited,
|
|
3233
|
+
diagnosticsOut,
|
|
3234
|
+
pathPrefix,
|
|
3235
|
+
namePrefix
|
|
3236
|
+
} = opts;
|
|
3237
|
+
const imported = resolveImportedVariable(resolutionSource, variableName);
|
|
3238
|
+
if (imported) {
|
|
3239
|
+
const targetFile = resolveImportPath(imported.specifier, resolutionFile);
|
|
3240
|
+
if (!targetFile) {
|
|
3241
|
+
diagnosticsOut?.push({
|
|
3242
|
+
pathPrefix,
|
|
3243
|
+
namePrefix,
|
|
3244
|
+
reason: "file-not-found",
|
|
3245
|
+
sourceFile: reportFile,
|
|
3246
|
+
detail: opts.fileNotFoundDetail(imported.specifier)
|
|
3247
|
+
});
|
|
3248
|
+
return null;
|
|
3249
|
+
}
|
|
3250
|
+
return buildCombinedRouteMapWithSearch(
|
|
3251
|
+
targetFile,
|
|
3252
|
+
imported.exportedName,
|
|
3253
|
+
visited,
|
|
3254
|
+
diagnosticsOut,
|
|
3255
|
+
void 0,
|
|
3256
|
+
memo
|
|
3257
|
+
);
|
|
3258
|
+
}
|
|
3259
|
+
const sameFileBlock = extractUrlsBlockForVariable(
|
|
3260
|
+
resolutionSource,
|
|
3261
|
+
variableName,
|
|
3262
|
+
parseBlock(memo, resolutionSource)
|
|
3263
|
+
);
|
|
3264
|
+
if (!sameFileBlock) {
|
|
3265
|
+
diagnosticsOut?.push({
|
|
3266
|
+
pathPrefix,
|
|
3267
|
+
namePrefix,
|
|
3268
|
+
reason: "unresolvable-import",
|
|
3269
|
+
sourceFile: reportFile,
|
|
3270
|
+
detail: opts.notFoundDetail()
|
|
3271
|
+
});
|
|
3272
|
+
return null;
|
|
3273
|
+
}
|
|
3274
|
+
return buildCombinedRouteMapWithSearch(
|
|
3275
|
+
resolutionFile,
|
|
3276
|
+
variableName,
|
|
3277
|
+
visited,
|
|
3278
|
+
diagnosticsOut,
|
|
3279
|
+
void 0,
|
|
3280
|
+
memo
|
|
3281
|
+
);
|
|
3282
|
+
}
|
|
3005
3283
|
function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagnosticsOut, inlineBlock, memo) {
|
|
3006
3284
|
visited = visited ?? /* @__PURE__ */ new Set();
|
|
3007
3285
|
memo = memo ?? createScanMemo();
|
|
@@ -3078,7 +3356,10 @@ var ROUTER_CALL_PATTERN_G = /\bcreateRouter\s*[<(]/g;
|
|
|
3078
3356
|
function isRoutableSourceFile(name) {
|
|
3079
3357
|
return (name.endsWith(".ts") || name.endsWith(".tsx") || name.endsWith(".js") || name.endsWith(".jsx")) && !name.includes(".gen.") && !name.includes(".test.") && !name.includes(".spec.");
|
|
3080
3358
|
}
|
|
3081
|
-
function
|
|
3359
|
+
function isExcludedScanDir(name) {
|
|
3360
|
+
return name === "node_modules" || name === "dist" || name === "coverage" || name === "__tests__" || name === "__mocks__" || name.startsWith(".");
|
|
3361
|
+
}
|
|
3362
|
+
function findCallSiteFilesRecursive(dir, pattern, patternG, stopAtMatchDir, filter, results) {
|
|
3082
3363
|
let entries;
|
|
3083
3364
|
try {
|
|
3084
3365
|
entries = readdirSync(dir, { withFileTypes: true });
|
|
@@ -3089,32 +3370,36 @@ function findRouterFilesRecursive(dir, filter, results) {
|
|
|
3089
3370
|
return;
|
|
3090
3371
|
}
|
|
3091
3372
|
const childDirs = [];
|
|
3092
|
-
const
|
|
3373
|
+
const matchesInDir = [];
|
|
3093
3374
|
for (const entry of entries) {
|
|
3094
3375
|
const fullPath = join2(dir, entry.name);
|
|
3095
3376
|
if (entry.isDirectory()) {
|
|
3096
|
-
if (entry.name
|
|
3097
|
-
continue;
|
|
3098
|
-
childDirs.push(fullPath);
|
|
3377
|
+
if (!isExcludedScanDir(entry.name)) childDirs.push(fullPath);
|
|
3099
3378
|
continue;
|
|
3100
3379
|
}
|
|
3101
3380
|
if (!isRoutableSourceFile(entry.name)) continue;
|
|
3102
3381
|
if (filter && !filter(fullPath)) continue;
|
|
3103
3382
|
try {
|
|
3104
3383
|
const source = readFileSync2(fullPath, "utf-8");
|
|
3105
|
-
if (
|
|
3106
|
-
|
|
3384
|
+
if (pattern.test(source) && firstCodeMatchIndex(source, patternG) >= 0) {
|
|
3385
|
+
matchesInDir.push(fullPath);
|
|
3107
3386
|
}
|
|
3108
3387
|
} catch {
|
|
3109
3388
|
continue;
|
|
3110
3389
|
}
|
|
3111
3390
|
}
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
|
|
3117
|
-
|
|
3391
|
+
results.push(...matchesInDir);
|
|
3392
|
+
if (!stopAtMatchDir || matchesInDir.length === 0) {
|
|
3393
|
+
for (const childDir of childDirs) {
|
|
3394
|
+
findCallSiteFilesRecursive(
|
|
3395
|
+
childDir,
|
|
3396
|
+
pattern,
|
|
3397
|
+
patternG,
|
|
3398
|
+
stopAtMatchDir,
|
|
3399
|
+
filter,
|
|
3400
|
+
results
|
|
3401
|
+
);
|
|
3402
|
+
}
|
|
3118
3403
|
}
|
|
3119
3404
|
}
|
|
3120
3405
|
function findNestedRouterConflict(routerFiles) {
|
|
@@ -3312,7 +3597,28 @@ function buildCombinedRouteMapForRouterFile(routerFilePath) {
|
|
|
3312
3597
|
}
|
|
3313
3598
|
function findRouterFiles(root, filter) {
|
|
3314
3599
|
const result = [];
|
|
3315
|
-
|
|
3600
|
+
findCallSiteFilesRecursive(
|
|
3601
|
+
root,
|
|
3602
|
+
ROUTER_CALL_PATTERN,
|
|
3603
|
+
ROUTER_CALL_PATTERN_G,
|
|
3604
|
+
true,
|
|
3605
|
+
filter,
|
|
3606
|
+
result
|
|
3607
|
+
);
|
|
3608
|
+
return result;
|
|
3609
|
+
}
|
|
3610
|
+
var HOST_ROUTER_CALL_PATTERN = /\bcreateHostRouter\s*[<(]/;
|
|
3611
|
+
var HOST_ROUTER_CALL_PATTERN_G = /\bcreateHostRouter\s*[<(]/g;
|
|
3612
|
+
function findHostRouterFiles(root, filter) {
|
|
3613
|
+
const result = [];
|
|
3614
|
+
findCallSiteFilesRecursive(
|
|
3615
|
+
root,
|
|
3616
|
+
HOST_ROUTER_CALL_PATTERN,
|
|
3617
|
+
HOST_ROUTER_CALL_PATTERN_G,
|
|
3618
|
+
false,
|
|
3619
|
+
filter,
|
|
3620
|
+
result
|
|
3621
|
+
);
|
|
3316
3622
|
return result;
|
|
3317
3623
|
}
|
|
3318
3624
|
function writeCombinedRouteTypes(root, knownRouterFiles, opts) {
|
|
@@ -3586,6 +3892,7 @@ function isViteDepCachePath(filePath, cacheDir) {
|
|
|
3586
3892
|
|
|
3587
3893
|
// src/vite/utils/shared-utils.ts
|
|
3588
3894
|
import * as Vite from "vite";
|
|
3895
|
+
import { isAbsolute, resolve as resolve4 } from "node:path";
|
|
3589
3896
|
|
|
3590
3897
|
// src/vite/plugins/performance-tracks.ts
|
|
3591
3898
|
import { readFile } from "node:fs/promises";
|
|
@@ -3668,6 +3975,21 @@ var versionRolldownPlugin = {
|
|
|
3668
3975
|
var sharedRolldownOptions = {
|
|
3669
3976
|
plugins: [versionRolldownPlugin, performanceTracksOptimizeDepsPlugin()]
|
|
3670
3977
|
};
|
|
3978
|
+
function normalizeHostRouterEntry(rawInput, root, exists) {
|
|
3979
|
+
const raw = rawInput.replaceAll("\\", "/");
|
|
3980
|
+
const isRelative = raw.startsWith("./") || raw.startsWith("../");
|
|
3981
|
+
const isRooted = raw.startsWith("/") || isAbsolute(rawInput);
|
|
3982
|
+
if (isRooted) return raw;
|
|
3983
|
+
if (isRelative) {
|
|
3984
|
+
if (!exists(resolve4(root, raw))) {
|
|
3985
|
+
throw new Error(
|
|
3986
|
+
`[rango] hostRouter entry not found: "${rawInput}" (resolved under ${root}). Point it at your createHostRouter() module, e.g. rango({ hostRouter: "./src/worker.rsc.tsx" }).`
|
|
3987
|
+
);
|
|
3988
|
+
}
|
|
3989
|
+
return raw;
|
|
3990
|
+
}
|
|
3991
|
+
return exists(resolve4(root, raw)) ? "./" + raw : raw;
|
|
3992
|
+
}
|
|
3671
3993
|
function createVirtualEntriesPlugin(entries, routerPathRef) {
|
|
3672
3994
|
const virtualModules = {};
|
|
3673
3995
|
if (entries.client === VIRTUAL_IDS.browser) {
|
|
@@ -3701,7 +4023,7 @@ function createVirtualEntriesPlugin(entries, routerPathRef) {
|
|
|
3701
4023
|
if (virtualId === VIRTUAL_IDS.rsc && routerPathRef?.path) {
|
|
3702
4024
|
const raw = routerPathRef.path.startsWith(".") ? "/" + routerPathRef.path.slice(2) : routerPathRef.path;
|
|
3703
4025
|
const absoluteRouterPath = raw.replaceAll("\\", "/");
|
|
3704
|
-
return getVirtualEntryRSC(absoluteRouterPath);
|
|
4026
|
+
return routerPathRef.kind === "host" ? getVirtualEntryRSCHost(absoluteRouterPath) : getVirtualEntryRSC(absoluteRouterPath);
|
|
3705
4027
|
}
|
|
3706
4028
|
}
|
|
3707
4029
|
return null;
|
|
@@ -3880,6 +4202,221 @@ function resolveClientChunks(option, ctx) {
|
|
|
3880
4202
|
return option;
|
|
3881
4203
|
}
|
|
3882
4204
|
|
|
4205
|
+
// src/vite/plugins/vercel-output.ts
|
|
4206
|
+
import { rm, mkdir, cp, writeFile } from "node:fs/promises";
|
|
4207
|
+
import { existsSync as existsSync4 } from "node:fs";
|
|
4208
|
+
import { resolve as resolve5, join as join3 } from "node:path";
|
|
4209
|
+
import { createRequire as createRequire2 } from "node:module";
|
|
4210
|
+
import { pathToFileURL } from "node:url";
|
|
4211
|
+
var LAUNCHER_SOURCE = `import { toNodeHandler } from "srvx/node";
|
|
4212
|
+
import { waitUntil } from "@vercel/functions";
|
|
4213
|
+
import rscHandler from "./rsc/index.js";
|
|
4214
|
+
|
|
4215
|
+
// The Vercel Node launcher invokes a Node (req, res) handler, not a Web fetch
|
|
4216
|
+
// handler. srvx's toNodeHandler bridges the Rango Web fetch handler and pipes
|
|
4217
|
+
// the streamed Response to the Node response (set supportsResponseStreaming).
|
|
4218
|
+
const onVercel = Boolean(process.env.VERCEL);
|
|
4219
|
+
|
|
4220
|
+
const fetchHandler = (request) =>
|
|
4221
|
+
rscHandler(request, {
|
|
4222
|
+
env: process.env,
|
|
4223
|
+
// Forward Vercel's waitUntil so cache writes / revalidation run off the
|
|
4224
|
+
// response path. Omitted off-platform so those writes settle inline.
|
|
4225
|
+
ctx: onVercel ? { waitUntil } : undefined,
|
|
4226
|
+
});
|
|
4227
|
+
|
|
4228
|
+
export default toNodeHandler(fetchHandler);
|
|
4229
|
+
`;
|
|
4230
|
+
function assertVercelNodeRuntime(runtime) {
|
|
4231
|
+
if (runtime != null && !runtime.startsWith("nodejs")) {
|
|
4232
|
+
throw new Error(
|
|
4233
|
+
`[rango] preset "vercel": runtime "${runtime}" is not supported. This preset emits a Node serverless function; use a "nodejs*" runtime (default "nodejs22.x"). The Edge runtime is not supported.`
|
|
4234
|
+
);
|
|
4235
|
+
}
|
|
4236
|
+
}
|
|
4237
|
+
function assertValidVercelFunctionName(functionName) {
|
|
4238
|
+
if (!/^[A-Za-z0-9._-]+$/.test(functionName)) {
|
|
4239
|
+
throw new Error(
|
|
4240
|
+
`[rango] preset "vercel": invalid functionName ${JSON.stringify(
|
|
4241
|
+
functionName
|
|
4242
|
+
)}. Use letters, digits, ".", "_" or "-" only (it becomes the .func directory and the routing dest).`
|
|
4243
|
+
);
|
|
4244
|
+
}
|
|
4245
|
+
}
|
|
4246
|
+
function buildVercelVcConfig(vercel) {
|
|
4247
|
+
const vcConfig = {
|
|
4248
|
+
runtime: vercel.runtime ?? "nodejs22.x",
|
|
4249
|
+
handler: "index.mjs",
|
|
4250
|
+
launcherType: "Nodejs",
|
|
4251
|
+
shouldAddHelpers: false,
|
|
4252
|
+
supportsResponseStreaming: true,
|
|
4253
|
+
maxDuration: vercel.maxDuration ?? 30
|
|
4254
|
+
};
|
|
4255
|
+
if (vercel.memory != null) vcConfig.memory = vercel.memory;
|
|
4256
|
+
if (vercel.regions != null) vcConfig.regions = vercel.regions;
|
|
4257
|
+
return vcConfig;
|
|
4258
|
+
}
|
|
4259
|
+
function buildVercelOutputConfig(functionName, assetsDir) {
|
|
4260
|
+
const assetsPrefix = assetsDir.replace(/^\/+|\/+$/g, "");
|
|
4261
|
+
const assetHeaderRoute = assetsPrefix ? [
|
|
4262
|
+
{
|
|
4263
|
+
src: `/${escapeRegExp(assetsPrefix)}/(.*)`,
|
|
4264
|
+
headers: { "cache-control": "public, max-age=31536000, immutable" },
|
|
4265
|
+
continue: true
|
|
4266
|
+
}
|
|
4267
|
+
] : [];
|
|
4268
|
+
return {
|
|
4269
|
+
version: 3,
|
|
4270
|
+
routes: [
|
|
4271
|
+
...assetHeaderRoute,
|
|
4272
|
+
{ handle: "filesystem" },
|
|
4273
|
+
{ src: "/(.*)", dest: `/${functionName}` }
|
|
4274
|
+
]
|
|
4275
|
+
};
|
|
4276
|
+
}
|
|
4277
|
+
async function assemble(root, options, assetsDir, publicDir) {
|
|
4278
|
+
const vercel = options.vercel ?? {};
|
|
4279
|
+
assertVercelNodeRuntime(vercel.runtime);
|
|
4280
|
+
const assetsPrefix = assetsDir.replace(/^\/+|\/+$/g, "");
|
|
4281
|
+
if (publicDir && assetsPrefix && existsSync4(join3(publicDir, assetsPrefix))) {
|
|
4282
|
+
console.warn(
|
|
4283
|
+
`[rango] preset "vercel": ${join3(publicDir, assetsPrefix)} exists. Files under public/${assetsPrefix}/ share the /${assetsPrefix}/ URL prefix with hashed build assets and will be served with a one-year immutable cache-control header. Move un-hashed public files out of "${assetsPrefix}/".`
|
|
4284
|
+
);
|
|
4285
|
+
}
|
|
4286
|
+
const dist = join3(root, "dist");
|
|
4287
|
+
for (const dir of ["client", "rsc", "ssr"]) {
|
|
4288
|
+
if (!existsSync4(join3(dist, dir))) {
|
|
4289
|
+
throw new Error(
|
|
4290
|
+
`[rango] preset "vercel": missing dist/${dir}. Run the production build first.`
|
|
4291
|
+
);
|
|
4292
|
+
}
|
|
4293
|
+
}
|
|
4294
|
+
const functionName = vercel.functionName ?? "index";
|
|
4295
|
+
assertValidVercelFunctionName(functionName);
|
|
4296
|
+
const out = join3(root, ".vercel", "output");
|
|
4297
|
+
const funcDir = join3(out, "functions", `${functionName}.func`);
|
|
4298
|
+
await rm(out, { recursive: true, force: true });
|
|
4299
|
+
await mkdir(funcDir, { recursive: true });
|
|
4300
|
+
await cp(join3(dist, "client"), join3(out, "static"), { recursive: true });
|
|
4301
|
+
await cp(join3(dist, "rsc"), join3(funcDir, "rsc"), { recursive: true });
|
|
4302
|
+
await cp(join3(dist, "ssr"), join3(funcDir, "ssr"), { recursive: true });
|
|
4303
|
+
if (existsSync4(join3(dist, "static"))) {
|
|
4304
|
+
await cp(join3(dist, "static"), join3(funcDir, "static"), {
|
|
4305
|
+
recursive: true
|
|
4306
|
+
});
|
|
4307
|
+
}
|
|
4308
|
+
const rangoRequire = createRequire2(import.meta.url);
|
|
4309
|
+
let srvxNodePath;
|
|
4310
|
+
try {
|
|
4311
|
+
srvxNodePath = rangoRequire.resolve("srvx/node");
|
|
4312
|
+
} catch {
|
|
4313
|
+
throw new Error(
|
|
4314
|
+
'[rango] preset "vercel" requires "srvx" (a dependency of @rangojs/router). Reinstall dependencies.'
|
|
4315
|
+
);
|
|
4316
|
+
}
|
|
4317
|
+
const appRequire = createRequire2(join3(root, "package.json"));
|
|
4318
|
+
const resolveEsbuildPath = () => {
|
|
4319
|
+
try {
|
|
4320
|
+
const viteRequire = createRequire2(appRequire.resolve("vite"));
|
|
4321
|
+
return viteRequire.resolve("esbuild");
|
|
4322
|
+
} catch {
|
|
4323
|
+
}
|
|
4324
|
+
try {
|
|
4325
|
+
return appRequire.resolve("esbuild");
|
|
4326
|
+
} catch {
|
|
4327
|
+
}
|
|
4328
|
+
return rangoRequire.resolve("esbuild");
|
|
4329
|
+
};
|
|
4330
|
+
let esbuildModule;
|
|
4331
|
+
try {
|
|
4332
|
+
esbuildModule = await import(pathToFileURL(resolveEsbuildPath()).href);
|
|
4333
|
+
} catch {
|
|
4334
|
+
throw new Error(
|
|
4335
|
+
'[rango] preset "vercel" requires "esbuild" to bundle the function launcher. It ships with Vite; reinstall dependencies (or add esbuild to your app dependencies).'
|
|
4336
|
+
);
|
|
4337
|
+
}
|
|
4338
|
+
const esbuildBuild = esbuildModule.build ?? esbuildModule.default?.build;
|
|
4339
|
+
if (typeof esbuildBuild !== "function") {
|
|
4340
|
+
throw new Error('[rango] preset "vercel": could not load esbuild.build.');
|
|
4341
|
+
}
|
|
4342
|
+
try {
|
|
4343
|
+
await esbuildBuild({
|
|
4344
|
+
stdin: {
|
|
4345
|
+
contents: LAUNCHER_SOURCE,
|
|
4346
|
+
resolveDir: root,
|
|
4347
|
+
sourcefile: "func-entry.mjs",
|
|
4348
|
+
loader: "js"
|
|
4349
|
+
},
|
|
4350
|
+
outfile: join3(funcDir, "index.mjs"),
|
|
4351
|
+
bundle: true,
|
|
4352
|
+
format: "esm",
|
|
4353
|
+
platform: "node",
|
|
4354
|
+
target: "node18",
|
|
4355
|
+
alias: { "srvx/node": srvxNodePath },
|
|
4356
|
+
plugins: [
|
|
4357
|
+
{
|
|
4358
|
+
name: "external-rsc-entry",
|
|
4359
|
+
setup(b) {
|
|
4360
|
+
b.onResolve({ filter: /^\.\/rsc\/index\.js$/ }, () => ({
|
|
4361
|
+
path: "./rsc/index.js",
|
|
4362
|
+
external: true
|
|
4363
|
+
}));
|
|
4364
|
+
}
|
|
4365
|
+
}
|
|
4366
|
+
]
|
|
4367
|
+
});
|
|
4368
|
+
} catch (error) {
|
|
4369
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
4370
|
+
if (/@vercel\/functions/.test(message)) {
|
|
4371
|
+
throw new Error(
|
|
4372
|
+
'[rango] preset "vercel": could not resolve "@vercel/functions". Add it to your app dependencies (it also backs VercelCacheStore).\n' + message
|
|
4373
|
+
);
|
|
4374
|
+
}
|
|
4375
|
+
throw error;
|
|
4376
|
+
}
|
|
4377
|
+
await writeFile(
|
|
4378
|
+
join3(funcDir, "package.json"),
|
|
4379
|
+
JSON.stringify({ type: "module" }, null, 2) + "\n"
|
|
4380
|
+
);
|
|
4381
|
+
await writeFile(
|
|
4382
|
+
join3(funcDir, ".vc-config.json"),
|
|
4383
|
+
JSON.stringify(buildVercelVcConfig(vercel), null, 2) + "\n"
|
|
4384
|
+
);
|
|
4385
|
+
await writeFile(
|
|
4386
|
+
join3(out, "config.json"),
|
|
4387
|
+
JSON.stringify(buildVercelOutputConfig(functionName, assetsDir), null, 2) + "\n"
|
|
4388
|
+
);
|
|
4389
|
+
console.log(
|
|
4390
|
+
`[rango] assembled .vercel/output (function: ${functionName}.func)`
|
|
4391
|
+
);
|
|
4392
|
+
}
|
|
4393
|
+
function createVercelOutputPlugin(options) {
|
|
4394
|
+
let root = process.cwd();
|
|
4395
|
+
let isBuild = false;
|
|
4396
|
+
let assetsDir = "assets";
|
|
4397
|
+
let publicDir = "";
|
|
4398
|
+
return {
|
|
4399
|
+
name: "@rangojs/router:vercel-output",
|
|
4400
|
+
configResolved(config) {
|
|
4401
|
+
root = resolve5(config.root);
|
|
4402
|
+
isBuild = config.command === "build";
|
|
4403
|
+
assetsDir = config.environments?.client?.build?.assetsDir ?? config.build?.assetsDir ?? "assets";
|
|
4404
|
+
publicDir = config.publicDir || "";
|
|
4405
|
+
},
|
|
4406
|
+
// buildApp runs once after the whole multi-environment build (rsc, client,
|
|
4407
|
+
// ssr), so dist/ is complete here. closeBundle is unusable for this: it
|
|
4408
|
+
// fires per environment, and twice for ssr (the server-reference scan and
|
|
4409
|
+
// the real build), so it would run before dist/client exists.
|
|
4410
|
+
buildApp: {
|
|
4411
|
+
order: "post",
|
|
4412
|
+
async handler() {
|
|
4413
|
+
if (!isBuild) return;
|
|
4414
|
+
await assemble(root, options, assetsDir, publicDir);
|
|
4415
|
+
}
|
|
4416
|
+
}
|
|
4417
|
+
};
|
|
4418
|
+
}
|
|
4419
|
+
|
|
3883
4420
|
// src/vite/utils/banner.ts
|
|
3884
4421
|
var rangoVersion = package_default.version;
|
|
3885
4422
|
var _bannerPrinted = false;
|
|
@@ -3907,7 +4444,7 @@ ${dim} ${reset}${bold}\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550$
|
|
|
3907
4444
|
}
|
|
3908
4445
|
|
|
3909
4446
|
// src/vite/plugins/version-injector.ts
|
|
3910
|
-
import { resolve as
|
|
4447
|
+
import { resolve as resolve6 } from "node:path";
|
|
3911
4448
|
import * as Vite2 from "vite";
|
|
3912
4449
|
function createVersionInjectorPlugin(rscEntryPath) {
|
|
3913
4450
|
let resolvedEntryPath = "";
|
|
@@ -3918,7 +4455,7 @@ function createVersionInjectorPlugin(rscEntryPath) {
|
|
|
3918
4455
|
let entryPath = rscEntryPath;
|
|
3919
4456
|
if (!entryPath) entryPath = resolveRscEntryFromConfig(config);
|
|
3920
4457
|
if (entryPath) {
|
|
3921
|
-
resolvedEntryPath =
|
|
4458
|
+
resolvedEntryPath = resolve6(config.root, entryPath);
|
|
3922
4459
|
}
|
|
3923
4460
|
},
|
|
3924
4461
|
transform(code, id) {
|
|
@@ -4027,10 +4564,10 @@ function createCjsToEsmPlugin() {
|
|
|
4027
4564
|
|
|
4028
4565
|
// src/vite/router-discovery.ts
|
|
4029
4566
|
import { createServer as createViteServer } from "vite";
|
|
4030
|
-
import { resolve as
|
|
4567
|
+
import { resolve as resolve10 } from "node:path";
|
|
4031
4568
|
import { readFileSync as readFileSync6 } from "node:fs";
|
|
4032
|
-
import { createRequire as
|
|
4033
|
-
import { pathToFileURL } from "node:url";
|
|
4569
|
+
import { createRequire as createRequire3, register } from "node:module";
|
|
4570
|
+
import { pathToFileURL as pathToFileURL2 } from "node:url";
|
|
4034
4571
|
|
|
4035
4572
|
// src/vite/inject-client-debug.ts
|
|
4036
4573
|
function injectClientDebugFlag(id) {
|
|
@@ -4668,13 +5205,13 @@ function contextSet(variables, keyOrVar, value, options) {
|
|
|
4668
5205
|
import { createHash as createHash4 } from "node:crypto";
|
|
4669
5206
|
import {
|
|
4670
5207
|
copyFileSync,
|
|
4671
|
-
existsSync as
|
|
5208
|
+
existsSync as existsSync5,
|
|
4672
5209
|
mkdirSync,
|
|
4673
5210
|
rmSync,
|
|
4674
5211
|
statSync,
|
|
4675
5212
|
writeFileSync as writeFileSync2
|
|
4676
5213
|
} from "node:fs";
|
|
4677
|
-
import { resolve as
|
|
5214
|
+
import { resolve as resolve7 } from "node:path";
|
|
4678
5215
|
function encodePathParam(value) {
|
|
4679
5216
|
return String(value).split("/").map((segment) => encodeURIComponent(segment)).join("/");
|
|
4680
5217
|
}
|
|
@@ -4797,7 +5334,7 @@ function resolvePrerenderError(registry, error, onError, label, elapsed, phase,
|
|
|
4797
5334
|
throw error;
|
|
4798
5335
|
}
|
|
4799
5336
|
function getStagedAssetDir(projectRoot) {
|
|
4800
|
-
return
|
|
5337
|
+
return resolve7(projectRoot, "node_modules/.rangojs-router-build/rsc-assets");
|
|
4801
5338
|
}
|
|
4802
5339
|
function resetStagedBuildAssets(projectRoot) {
|
|
4803
5340
|
rmSync(getStagedAssetDir(projectRoot), { recursive: true, force: true });
|
|
@@ -4807,8 +5344,8 @@ function stageBuildAssetModule(projectRoot, prefix, exportValue) {
|
|
|
4807
5344
|
mkdirSync(stagedDir, { recursive: true });
|
|
4808
5345
|
const contentHash = createHash4("sha256").update(exportValue).digest("hex").slice(0, 8);
|
|
4809
5346
|
const fileName = `${prefix}-${contentHash}.js`;
|
|
4810
|
-
const filePath =
|
|
4811
|
-
if (!
|
|
5347
|
+
const filePath = resolve7(stagedDir, fileName);
|
|
5348
|
+
if (!existsSync5(filePath)) {
|
|
4812
5349
|
writeFileSync2(filePath, `export default ${exportValue};
|
|
4813
5350
|
`);
|
|
4814
5351
|
}
|
|
@@ -4816,12 +5353,12 @@ function stageBuildAssetModule(projectRoot, prefix, exportValue) {
|
|
|
4816
5353
|
}
|
|
4817
5354
|
function copyStagedBuildAssets(projectRoot, fileNames) {
|
|
4818
5355
|
const stagedDir = getStagedAssetDir(projectRoot);
|
|
4819
|
-
const distAssetsDir =
|
|
5356
|
+
const distAssetsDir = resolve7(projectRoot, "dist/rsc/assets");
|
|
4820
5357
|
mkdirSync(distAssetsDir, { recursive: true });
|
|
4821
5358
|
let totalBytes = 0;
|
|
4822
5359
|
for (const fileName of new Set(fileNames)) {
|
|
4823
|
-
const stagedPath =
|
|
4824
|
-
const distPath =
|
|
5360
|
+
const stagedPath = resolve7(stagedDir, fileName);
|
|
5361
|
+
const distPath = resolve7(distAssetsDir, fileName);
|
|
4825
5362
|
copyFileSync(stagedPath, distPath);
|
|
4826
5363
|
totalBytes += statSync(stagedPath).size;
|
|
4827
5364
|
}
|
|
@@ -5346,7 +5883,7 @@ async function discoverRouters(state, rscEnv) {
|
|
|
5346
5883
|
if (!router.urlpatterns || !generateManifestFull) {
|
|
5347
5884
|
continue;
|
|
5348
5885
|
}
|
|
5349
|
-
const manifest = generateManifestFull(
|
|
5886
|
+
const manifest = await generateManifestFull(
|
|
5350
5887
|
router.urlpatterns,
|
|
5351
5888
|
routerMountIndex,
|
|
5352
5889
|
{
|
|
@@ -5490,8 +6027,8 @@ async function discoverRouters(state, rscEnv) {
|
|
|
5490
6027
|
}
|
|
5491
6028
|
|
|
5492
6029
|
// src/vite/discovery/route-types-writer.ts
|
|
5493
|
-
import { dirname as dirname3, join as
|
|
5494
|
-
import { readFileSync as readFileSync4, writeFileSync as writeFileSync3, existsSync as
|
|
6030
|
+
import { dirname as dirname3, join as join4, resolve as resolve8 } from "node:path";
|
|
6031
|
+
import { readFileSync as readFileSync4, writeFileSync as writeFileSync3, existsSync as existsSync6, unlinkSync as unlinkSync2 } from "node:fs";
|
|
5495
6032
|
function filterUserNamedRoutes(manifest) {
|
|
5496
6033
|
const filtered = {};
|
|
5497
6034
|
for (const [name, pattern] of Object.entries(manifest)) {
|
|
@@ -5502,7 +6039,7 @@ function filterUserNamedRoutes(manifest) {
|
|
|
5502
6039
|
return filtered;
|
|
5503
6040
|
}
|
|
5504
6041
|
function writeGenFileIfChanged(state, outPath, source, opts) {
|
|
5505
|
-
const existing =
|
|
6042
|
+
const existing = existsSync6(outPath) ? readFileSync4(outPath, "utf-8") : null;
|
|
5506
6043
|
if (existing === source) return;
|
|
5507
6044
|
markSelfGenWrite(state, outPath, source);
|
|
5508
6045
|
writeFileSync3(outPath, source);
|
|
@@ -5520,10 +6057,10 @@ function writeRouteTypesFiles(state) {
|
|
|
5520
6057
|
if (state.perRouterManifests.length === 0) return;
|
|
5521
6058
|
try {
|
|
5522
6059
|
const entryDir = dirname3(
|
|
5523
|
-
|
|
6060
|
+
resolve8(state.projectRoot, state.resolvedEntryPath)
|
|
5524
6061
|
);
|
|
5525
|
-
const oldCombinedPath =
|
|
5526
|
-
if (
|
|
6062
|
+
const oldCombinedPath = join4(entryDir, "named-routes.gen.ts");
|
|
6063
|
+
if (existsSync6(oldCombinedPath)) {
|
|
5527
6064
|
unlinkSync2(oldCombinedPath);
|
|
5528
6065
|
console.log(
|
|
5529
6066
|
`[rango] Removed stale combined route types: ${oldCombinedPath}`
|
|
@@ -5604,7 +6141,7 @@ function supplementGenFilesWithRuntimeRoutes(state) {
|
|
|
5604
6141
|
}
|
|
5605
6142
|
|
|
5606
6143
|
// src/vite/discovery/virtual-module-codegen.ts
|
|
5607
|
-
import { dirname as dirname4, basename, join as
|
|
6144
|
+
import { dirname as dirname4, basename, join as join5 } from "node:path";
|
|
5608
6145
|
function generateRoutesManifestModule(state) {
|
|
5609
6146
|
const hasManifest = state.mergedRouteManifest && Object.keys(state.mergedRouteManifest).length > 0;
|
|
5610
6147
|
if (hasManifest) {
|
|
@@ -5619,7 +6156,7 @@ function generateRoutesManifestModule(state) {
|
|
|
5619
6156
|
/\.(tsx?|jsx?)$/,
|
|
5620
6157
|
""
|
|
5621
6158
|
);
|
|
5622
|
-
const genPath =
|
|
6159
|
+
const genPath = join5(
|
|
5623
6160
|
routerDir,
|
|
5624
6161
|
`${routerBasename}.named-routes.gen.js`
|
|
5625
6162
|
).replaceAll("\\", "/");
|
|
@@ -5704,7 +6241,7 @@ function generatePerRouterModule(state, routerId) {
|
|
|
5704
6241
|
/\.(tsx?|jsx?)$/,
|
|
5705
6242
|
""
|
|
5706
6243
|
);
|
|
5707
|
-
const genPath =
|
|
6244
|
+
const genPath = join5(
|
|
5708
6245
|
routerDir,
|
|
5709
6246
|
`${routerBasename}.named-routes.gen.js`
|
|
5710
6247
|
).replaceAll("\\", "/");
|
|
@@ -5731,13 +6268,13 @@ function generatePerRouterModule(state, routerId) {
|
|
|
5731
6268
|
}
|
|
5732
6269
|
|
|
5733
6270
|
// src/vite/discovery/bundle-postprocess.ts
|
|
5734
|
-
import { resolve as
|
|
5735
|
-
import { readFileSync as readFileSync5, writeFileSync as writeFileSync4, existsSync as
|
|
6271
|
+
import { resolve as resolve9 } from "node:path";
|
|
6272
|
+
import { readFileSync as readFileSync5, writeFileSync as writeFileSync4, existsSync as existsSync7 } from "node:fs";
|
|
5736
6273
|
function postprocessBundle(state) {
|
|
5737
6274
|
const hasPrerenderData = state.prerenderManifestEntries && Object.keys(state.prerenderManifestEntries).length > 0;
|
|
5738
6275
|
const hasStaticData = state.staticManifestEntries && Object.keys(state.staticManifestEntries).length > 0;
|
|
5739
6276
|
if (!hasPrerenderData && !hasStaticData) return;
|
|
5740
|
-
const rscEntryPath =
|
|
6277
|
+
const rscEntryPath = resolve9(
|
|
5741
6278
|
state.projectRoot,
|
|
5742
6279
|
"dist/rsc",
|
|
5743
6280
|
state.rscEntryFileName ?? "index.js"
|
|
@@ -5758,7 +6295,7 @@ function postprocessBundle(state) {
|
|
|
5758
6295
|
];
|
|
5759
6296
|
for (const target of evictionTargets) {
|
|
5760
6297
|
for (const info of target.infos) {
|
|
5761
|
-
const chunkPath =
|
|
6298
|
+
const chunkPath = resolve9(state.projectRoot, "dist/rsc", info.fileName);
|
|
5762
6299
|
try {
|
|
5763
6300
|
const code = readFileSync5(chunkPath, "utf-8");
|
|
5764
6301
|
const result = evictHandlerCode(
|
|
@@ -5783,7 +6320,7 @@ function postprocessBundle(state) {
|
|
|
5783
6320
|
}
|
|
5784
6321
|
state.handlerChunkInfoMap.clear();
|
|
5785
6322
|
state.staticHandlerChunkInfoMap.clear();
|
|
5786
|
-
if (hasPrerenderData &&
|
|
6323
|
+
if (hasPrerenderData && existsSync7(rscEntryPath)) {
|
|
5787
6324
|
const rscCode = readFileSync5(rscEntryPath, "utf-8");
|
|
5788
6325
|
if (!rscCode.includes("__prerender-manifest.js")) {
|
|
5789
6326
|
try {
|
|
@@ -5803,7 +6340,7 @@ function postprocessBundle(state) {
|
|
|
5803
6340
|
`export default m;`,
|
|
5804
6341
|
""
|
|
5805
6342
|
].join("\n");
|
|
5806
|
-
const manifestPath =
|
|
6343
|
+
const manifestPath = resolve9(
|
|
5807
6344
|
state.projectRoot,
|
|
5808
6345
|
"dist/rsc/__prerender-manifest.js"
|
|
5809
6346
|
);
|
|
@@ -5823,7 +6360,7 @@ function postprocessBundle(state) {
|
|
|
5823
6360
|
}
|
|
5824
6361
|
}
|
|
5825
6362
|
}
|
|
5826
|
-
if (hasStaticData &&
|
|
6363
|
+
if (hasStaticData && existsSync7(rscEntryPath)) {
|
|
5827
6364
|
const rscCode = readFileSync5(rscEntryPath, "utf-8");
|
|
5828
6365
|
if (!rscCode.includes("__static-manifest.js")) {
|
|
5829
6366
|
try {
|
|
@@ -5841,7 +6378,7 @@ function postprocessBundle(state) {
|
|
|
5841
6378
|
}
|
|
5842
6379
|
const manifestCode = `const m={${manifestEntries.join(",")}};globalThis.__STATIC_MANIFEST=m;export default m;
|
|
5843
6380
|
`;
|
|
5844
|
-
const manifestPath =
|
|
6381
|
+
const manifestPath = resolve9(
|
|
5845
6382
|
state.projectRoot,
|
|
5846
6383
|
"dist/rsc/__static-manifest.js"
|
|
5847
6384
|
);
|
|
@@ -5873,8 +6410,8 @@ function createDiscoveryGate(s, debug11) {
|
|
|
5873
6410
|
let pendingEvents = false;
|
|
5874
6411
|
const beginGate = () => {
|
|
5875
6412
|
if (gatePending) return;
|
|
5876
|
-
s.discoveryDone = new Promise((
|
|
5877
|
-
gateResolver =
|
|
6413
|
+
s.discoveryDone = new Promise((resolve12) => {
|
|
6414
|
+
gateResolver = resolve12;
|
|
5878
6415
|
});
|
|
5879
6416
|
gatePending = true;
|
|
5880
6417
|
};
|
|
@@ -5966,15 +6503,15 @@ function selectForwardableResolvePlugins(plugins) {
|
|
|
5966
6503
|
}
|
|
5967
6504
|
function pickForwardedRunnerConfig(config) {
|
|
5968
6505
|
const r = config.resolve ?? {};
|
|
5969
|
-
const
|
|
5970
|
-
if (r.alias !== void 0)
|
|
5971
|
-
if (r.dedupe !== void 0)
|
|
5972
|
-
if (r.conditions !== void 0)
|
|
5973
|
-
if (r.mainFields !== void 0)
|
|
5974
|
-
if (r.extensions !== void 0)
|
|
6506
|
+
const resolve12 = {};
|
|
6507
|
+
if (r.alias !== void 0) resolve12.alias = r.alias;
|
|
6508
|
+
if (r.dedupe !== void 0) resolve12.dedupe = r.dedupe;
|
|
6509
|
+
if (r.conditions !== void 0) resolve12.conditions = r.conditions;
|
|
6510
|
+
if (r.mainFields !== void 0) resolve12.mainFields = r.mainFields;
|
|
6511
|
+
if (r.extensions !== void 0) resolve12.extensions = r.extensions;
|
|
5975
6512
|
if (r.preserveSymlinks !== void 0)
|
|
5976
|
-
|
|
5977
|
-
if (r.tsconfigPaths !== void 0)
|
|
6513
|
+
resolve12.preserveSymlinks = r.preserveSymlinks;
|
|
6514
|
+
if (r.tsconfigPaths !== void 0) resolve12.tsconfigPaths = r.tsconfigPaths;
|
|
5978
6515
|
const userOxc = config.oxc;
|
|
5979
6516
|
const userJsx = userOxc && typeof userOxc === "object" && typeof userOxc.jsx === "object" && userOxc.jsx !== null ? userOxc.jsx : {};
|
|
5980
6517
|
const oxc = userOxc && typeof userOxc === "object" ? {
|
|
@@ -5982,7 +6519,7 @@ function pickForwardedRunnerConfig(config) {
|
|
|
5982
6519
|
jsx: { ...userJsx, runtime: "automatic", importSource: "react" }
|
|
5983
6520
|
} : { jsx: { runtime: "automatic", importSource: "react" } };
|
|
5984
6521
|
return {
|
|
5985
|
-
resolve:
|
|
6522
|
+
resolve: resolve12,
|
|
5986
6523
|
define: config.define,
|
|
5987
6524
|
oxc
|
|
5988
6525
|
};
|
|
@@ -6060,11 +6597,11 @@ async function resolveBuildEnv(option, factoryCtx) {
|
|
|
6060
6597
|
);
|
|
6061
6598
|
}
|
|
6062
6599
|
try {
|
|
6063
|
-
const userRequire =
|
|
6064
|
-
|
|
6600
|
+
const userRequire = createRequire3(
|
|
6601
|
+
resolve10(factoryCtx.root, "package.json")
|
|
6065
6602
|
);
|
|
6066
6603
|
const wranglerPath = userRequire.resolve("wrangler");
|
|
6067
|
-
const { getPlatformProxy } = await import(
|
|
6604
|
+
const { getPlatformProxy } = await import(pathToFileURL2(wranglerPath).href);
|
|
6068
6605
|
const proxy = await getPlatformProxy();
|
|
6069
6606
|
return {
|
|
6070
6607
|
env: proxy.env,
|
|
@@ -6161,8 +6698,8 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
|
|
|
6161
6698
|
if (globalThis.__rscRouterDiscoveryActive) return;
|
|
6162
6699
|
s.devServer = server;
|
|
6163
6700
|
let resolveDiscovery;
|
|
6164
|
-
const discoveryPromise = new Promise((
|
|
6165
|
-
resolveDiscovery =
|
|
6701
|
+
const discoveryPromise = new Promise((resolve12) => {
|
|
6702
|
+
resolveDiscovery = resolve12;
|
|
6166
6703
|
});
|
|
6167
6704
|
const gate = createDiscoveryGate(s, debugDiscovery);
|
|
6168
6705
|
const beginDiscoveryGate = gate.beginGate;
|
|
@@ -6269,6 +6806,10 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
|
|
|
6269
6806
|
);
|
|
6270
6807
|
console.warn(`[rango] Failed to create temp runner: ${err.message}`);
|
|
6271
6808
|
}
|
|
6809
|
+
await prerenderTempServer?.close().catch(() => {
|
|
6810
|
+
});
|
|
6811
|
+
prerenderTempServer = null;
|
|
6812
|
+
prerenderNodeRegistry = null;
|
|
6272
6813
|
return null;
|
|
6273
6814
|
}
|
|
6274
6815
|
async function clearTempRegistries(tempRscEnv) {
|
|
@@ -6740,7 +7281,7 @@ ${err.stack}`
|
|
|
6740
7281
|
if (hasCreateRouter) {
|
|
6741
7282
|
const nestedRouterConflict = findNestedRouterConflict([
|
|
6742
7283
|
...s.cachedRouterFiles ?? [],
|
|
6743
|
-
|
|
7284
|
+
resolve10(filePath)
|
|
6744
7285
|
]);
|
|
6745
7286
|
if (nestedRouterConflict) {
|
|
6746
7287
|
server.config.logger.error(
|
|
@@ -7052,7 +7593,11 @@ async function rango(options) {
|
|
|
7052
7593
|
];
|
|
7053
7594
|
const pkg = getPublishedPackageName();
|
|
7054
7595
|
const nested = (spec) => `${pkg} > ${spec}`;
|
|
7055
|
-
const routerRef = {
|
|
7596
|
+
const routerRef = {
|
|
7597
|
+
path: void 0,
|
|
7598
|
+
kind: "router"
|
|
7599
|
+
};
|
|
7600
|
+
const explicitHostRouter = preset !== "cloudflare" ? resolvedOptions.hostRouter : void 0;
|
|
7056
7601
|
const prerenderEnabled = true;
|
|
7057
7602
|
if (preset === "cloudflare") {
|
|
7058
7603
|
const { default: rsc } = await import("@vitejs/plugin-rsc");
|
|
@@ -7160,17 +7705,49 @@ async function rango(options) {
|
|
|
7160
7705
|
name: "@rangojs/router:auto-discover",
|
|
7161
7706
|
config(userConfig) {
|
|
7162
7707
|
if (routerRef.path) return;
|
|
7163
|
-
const root = userConfig.root ?
|
|
7708
|
+
const root = userConfig.root ? resolve11(process.cwd(), userConfig.root) : process.cwd();
|
|
7709
|
+
const toRootRelative = (abs) => (abs.startsWith(root) ? "./" + abs.slice(root.length + 1) : abs).replaceAll("\\", "/");
|
|
7710
|
+
const bulletList = (files) => files.map((f) => " - " + toRootRelative(f)).join("\n");
|
|
7711
|
+
if (explicitHostRouter) {
|
|
7712
|
+
routerRef.path = normalizeHostRouterEntry(
|
|
7713
|
+
explicitHostRouter,
|
|
7714
|
+
root,
|
|
7715
|
+
existsSync8
|
|
7716
|
+
);
|
|
7717
|
+
routerRef.kind = "host";
|
|
7718
|
+
return;
|
|
7719
|
+
}
|
|
7720
|
+
const hostCandidates = findHostRouterFiles(root);
|
|
7721
|
+
if (hostCandidates.length === 1) {
|
|
7722
|
+
const hostPath = toRootRelative(hostCandidates[0]);
|
|
7723
|
+
console.info(
|
|
7724
|
+
`[rango] Serving host router entry ${hostPath} (auto-detected). Set the \`hostRouter\` option to override.`
|
|
7725
|
+
);
|
|
7726
|
+
routerRef.path = hostPath;
|
|
7727
|
+
routerRef.kind = "host";
|
|
7728
|
+
return;
|
|
7729
|
+
}
|
|
7730
|
+
if (hostCandidates.length > 1) {
|
|
7731
|
+
throw new Error(
|
|
7732
|
+
`[rango] Multiple host routers found:
|
|
7733
|
+
${bulletList(hostCandidates)}
|
|
7734
|
+
|
|
7735
|
+
Set the \`hostRouter\` option to the entry to serve, e.g. rango({ preset: "${preset}", hostRouter: "./src/worker.rsc.tsx" }).`
|
|
7736
|
+
);
|
|
7737
|
+
}
|
|
7164
7738
|
const candidates = findRouterFiles(root);
|
|
7165
7739
|
if (candidates.length === 1) {
|
|
7166
|
-
|
|
7167
|
-
routerRef.
|
|
7168
|
-
|
|
7169
|
-
|
|
7170
|
-
|
|
7171
|
-
|
|
7172
|
-
|
|
7173
|
-
${
|
|
7740
|
+
routerRef.path = toRootRelative(candidates[0]);
|
|
7741
|
+
routerRef.kind = "router";
|
|
7742
|
+
return;
|
|
7743
|
+
}
|
|
7744
|
+
if (candidates.length > 1) {
|
|
7745
|
+
throw new Error(
|
|
7746
|
+
`[rango] Multiple routers found:
|
|
7747
|
+
${bulletList(candidates)}
|
|
7748
|
+
|
|
7749
|
+
If this is a multi-app host router, export a createHostRouter() instance and set the \`hostRouter\` option (e.g. rango({ preset: "${preset}", hostRouter: "./src/worker.rsc.tsx" })), or use preset: "cloudflare" where you own the worker entry.`
|
|
7750
|
+
);
|
|
7174
7751
|
}
|
|
7175
7752
|
}
|
|
7176
7753
|
});
|
|
@@ -7184,8 +7761,11 @@ ${list}`);
|
|
|
7184
7761
|
plugins.push({
|
|
7185
7762
|
name: "@rangojs/router:rsc-integration",
|
|
7186
7763
|
enforce: "pre",
|
|
7187
|
-
config() {
|
|
7764
|
+
config(_userConfig, configEnv) {
|
|
7765
|
+
const vercelDefine = preset === "vercel" && configEnv.command === "build" ? { "process.env.NODE_ENV": JSON.stringify("production") } : void 0;
|
|
7766
|
+
const vercelServerEnv = preset === "vercel" && configEnv.command === "build" ? { resolve: { noExternal: true } } : void 0;
|
|
7188
7767
|
return {
|
|
7768
|
+
...vercelDefine ? { define: vercelDefine } : {},
|
|
7189
7769
|
optimizeDeps: {
|
|
7190
7770
|
exclude: excludeDeps,
|
|
7191
7771
|
rolldownOptions: sharedRolldownOptions
|
|
@@ -7228,6 +7808,7 @@ ${list}`);
|
|
|
7228
7808
|
}
|
|
7229
7809
|
},
|
|
7230
7810
|
ssr: {
|
|
7811
|
+
...vercelServerEnv ?? {},
|
|
7231
7812
|
optimizeDeps: {
|
|
7232
7813
|
entries: [VIRTUAL_IDS.ssr],
|
|
7233
7814
|
include: [
|
|
@@ -7246,6 +7827,7 @@ ${list}`);
|
|
|
7246
7827
|
}
|
|
7247
7828
|
},
|
|
7248
7829
|
rsc: {
|
|
7830
|
+
...vercelServerEnv ?? {},
|
|
7249
7831
|
optimizeDeps: {
|
|
7250
7832
|
entries: [VIRTUAL_IDS.rsc],
|
|
7251
7833
|
include: [
|
|
@@ -7271,7 +7853,11 @@ ${list}`);
|
|
|
7271
7853
|
configResolved(config) {
|
|
7272
7854
|
if (showBanner) {
|
|
7273
7855
|
const mode = config.command === "serve" ? process.argv.includes("preview") ? "preview" : "dev" : "build";
|
|
7274
|
-
printBanner(
|
|
7856
|
+
printBanner(
|
|
7857
|
+
mode,
|
|
7858
|
+
preset === "vercel" ? "vercel" : "node",
|
|
7859
|
+
rangoVersion
|
|
7860
|
+
);
|
|
7275
7861
|
}
|
|
7276
7862
|
const rscMinimalCount = config.plugins.filter(
|
|
7277
7863
|
(p) => p.name === "rsc:minimal"
|
|
@@ -7333,6 +7919,11 @@ ${list}`);
|
|
|
7333
7919
|
clientChunkCtx
|
|
7334
7920
|
})
|
|
7335
7921
|
);
|
|
7922
|
+
if (preset === "vercel") {
|
|
7923
|
+
plugins.push(
|
|
7924
|
+
createVercelOutputPlugin(resolvedOptions)
|
|
7925
|
+
);
|
|
7926
|
+
}
|
|
7336
7927
|
debugConfig?.(
|
|
7337
7928
|
"rango(%s) setup done: %d plugin(s) (%sms)",
|
|
7338
7929
|
preset,
|