@rangojs/router 0.0.0-experimental.21 → 0.0.0-experimental.21efdd86
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/AGENTS.md +4 -0
- package/README.md +122 -30
- package/dist/bin/rango.js +138 -50
- package/dist/vite/index.js +602 -309
- package/package.json +16 -15
- package/skills/breadcrumbs/SKILL.md +250 -0
- package/skills/cache-guide/SKILL.md +32 -0
- package/skills/caching/SKILL.md +49 -8
- package/skills/document-cache/SKILL.md +2 -2
- package/skills/hooks/SKILL.md +33 -31
- package/skills/host-router/SKILL.md +218 -0
- package/skills/links/SKILL.md +3 -1
- package/skills/loader/SKILL.md +72 -22
- package/skills/middleware/SKILL.md +2 -0
- package/skills/parallel/SKILL.md +126 -0
- package/skills/prerender/SKILL.md +112 -70
- package/skills/rango/SKILL.md +0 -1
- package/skills/route/SKILL.md +34 -4
- package/skills/router-setup/SKILL.md +95 -5
- package/skills/typesafety/SKILL.md +35 -23
- package/src/__internal.ts +92 -0
- package/src/browser/app-version.ts +14 -0
- package/src/browser/event-controller.ts +5 -0
- package/src/browser/link-interceptor.ts +4 -0
- package/src/browser/navigation-bridge.ts +104 -14
- package/src/browser/navigation-client.ts +126 -44
- package/src/browser/navigation-store.ts +43 -8
- package/src/browser/navigation-transaction.ts +11 -9
- package/src/browser/partial-update.ts +80 -15
- package/src/browser/prefetch/cache.ts +166 -27
- package/src/browser/prefetch/fetch.ts +52 -39
- package/src/browser/prefetch/policy.ts +6 -0
- package/src/browser/prefetch/queue.ts +92 -20
- package/src/browser/prefetch/resource-ready.ts +77 -0
- package/src/browser/react/Link.tsx +70 -14
- package/src/browser/react/NavigationProvider.tsx +40 -4
- package/src/browser/react/context.ts +7 -2
- package/src/browser/react/use-handle.ts +9 -58
- package/src/browser/react/use-router.ts +21 -8
- package/src/browser/rsc-router.tsx +143 -60
- package/src/browser/scroll-restoration.ts +41 -42
- package/src/browser/segment-reconciler.ts +6 -1
- package/src/browser/server-action-bridge.ts +8 -6
- package/src/browser/types.ts +60 -5
- package/src/build/generate-manifest.ts +6 -6
- package/src/build/generate-route-types.ts +3 -0
- package/src/build/route-trie.ts +19 -3
- package/src/build/route-types/include-resolution.ts +8 -1
- package/src/build/route-types/router-processing.ts +223 -74
- package/src/build/route-types/scan-filter.ts +8 -1
- package/src/cache/cache-runtime.ts +15 -11
- package/src/cache/cache-scope.ts +48 -7
- package/src/cache/cf/cf-cache-store.ts +453 -11
- package/src/cache/cf/index.ts +5 -1
- package/src/cache/document-cache.ts +17 -7
- package/src/cache/index.ts +1 -0
- package/src/cache/taint.ts +55 -0
- package/src/client.rsc.tsx +2 -1
- package/src/client.tsx +3 -102
- package/src/context-var.ts +72 -2
- package/src/debug.ts +2 -2
- package/src/handle.ts +40 -0
- package/src/handles/breadcrumbs.ts +66 -0
- package/src/handles/index.ts +1 -0
- package/src/host/index.ts +0 -3
- package/src/index.rsc.ts +6 -36
- package/src/index.ts +40 -66
- package/src/prerender/store.ts +5 -4
- package/src/prerender.ts +138 -77
- package/src/reverse.ts +22 -1
- package/src/route-definition/dsl-helpers.ts +73 -25
- package/src/route-definition/helpers-types.ts +10 -6
- package/src/route-definition/index.ts +3 -3
- package/src/route-definition/redirect.ts +11 -3
- package/src/route-definition/resolve-handler-use.ts +149 -0
- package/src/route-map-builder.ts +7 -1
- package/src/route-types.ts +11 -0
- package/src/router/content-negotiation.ts +100 -1
- package/src/router/find-match.ts +4 -2
- package/src/router/handler-context.ts +108 -25
- package/src/router/intercept-resolution.ts +11 -4
- package/src/router/lazy-includes.ts +4 -1
- package/src/router/loader-resolution.ts +123 -11
- package/src/router/logging.ts +5 -2
- package/src/router/manifest.ts +9 -3
- package/src/router/match-api.ts +125 -190
- package/src/router/match-middleware/background-revalidation.ts +30 -2
- package/src/router/match-middleware/cache-lookup.ts +88 -16
- package/src/router/match-middleware/cache-store.ts +53 -10
- package/src/router/match-middleware/intercept-resolution.ts +9 -7
- package/src/router/match-middleware/segment-resolution.ts +61 -5
- package/src/router/match-result.ts +22 -15
- package/src/router/metrics.ts +238 -13
- package/src/router/middleware-types.ts +53 -12
- package/src/router/middleware.ts +172 -85
- package/src/router/navigation-snapshot.ts +182 -0
- package/src/router/pattern-matching.ts +20 -5
- package/src/router/prerender-match.ts +114 -10
- package/src/router/preview-match.ts +30 -102
- package/src/router/request-classification.ts +310 -0
- package/src/router/revalidation.ts +27 -7
- package/src/router/route-snapshot.ts +245 -0
- package/src/router/router-context.ts +6 -1
- package/src/router/router-interfaces.ts +50 -5
- package/src/router/router-options.ts +50 -19
- package/src/router/segment-resolution/fresh.ts +210 -19
- package/src/router/segment-resolution/helpers.ts +30 -25
- package/src/router/segment-resolution/loader-cache.ts +1 -0
- package/src/router/segment-resolution/revalidation.ts +448 -301
- package/src/router/segment-wrappers.ts +2 -0
- package/src/router/trie-matching.ts +20 -2
- package/src/router/types.ts +1 -0
- package/src/router.ts +88 -15
- package/src/rsc/handler.ts +546 -359
- package/src/rsc/index.ts +0 -20
- package/src/rsc/manifest-init.ts +5 -1
- package/src/rsc/progressive-enhancement.ts +25 -8
- package/src/rsc/rsc-rendering.ts +35 -43
- package/src/rsc/server-action.ts +16 -10
- package/src/rsc/ssr-setup.ts +128 -0
- package/src/rsc/types.ts +10 -1
- package/src/search-params.ts +16 -13
- package/src/segment-system.tsx +140 -4
- package/src/server/context.ts +148 -16
- package/src/server/loader-registry.ts +9 -8
- package/src/server/request-context.ts +186 -29
- package/src/server.ts +6 -0
- package/src/ssr/index.tsx +4 -0
- package/src/static-handler.ts +18 -6
- package/src/theme/index.ts +4 -13
- package/src/types/cache-types.ts +4 -4
- package/src/types/handler-context.ts +149 -49
- package/src/types/loader-types.ts +36 -9
- package/src/types/route-config.ts +17 -8
- package/src/types/route-entry.ts +8 -1
- package/src/types/segments.ts +2 -5
- package/src/urls/path-helper-types.ts +9 -2
- package/src/urls/path-helper.ts +48 -13
- package/src/urls/pattern-types.ts +12 -0
- package/src/urls/response-types.ts +16 -6
- package/src/use-loader.tsx +73 -4
- package/src/vite/discovery/bundle-postprocess.ts +30 -33
- package/src/vite/discovery/discover-routers.ts +7 -4
- package/src/vite/discovery/prerender-collection.ts +14 -1
- package/src/vite/discovery/state.ts +13 -6
- package/src/vite/index.ts +8 -3
- package/src/vite/plugin-types.ts +51 -79
- package/src/vite/plugins/expose-action-id.ts +1 -3
- package/src/vite/plugins/performance-tracks.ts +88 -0
- package/src/vite/plugins/refresh-cmd.ts +127 -0
- package/src/vite/plugins/version-plugin.ts +13 -1
- package/src/vite/rango.ts +163 -211
- package/src/vite/router-discovery.ts +178 -45
- package/src/vite/utils/banner.ts +3 -3
- package/src/vite/utils/prerender-utils.ts +18 -0
- package/src/vite/utils/shared-utils.ts +3 -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.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/skills/testing/SKILL.md +0 -226
- package/src/route-definition/route-function.ts +0 -119
package/dist/vite/index.js
CHANGED
|
@@ -292,7 +292,7 @@ function exposeActionId() {
|
|
|
292
292
|
}
|
|
293
293
|
if (!rscPluginApi) {
|
|
294
294
|
throw new Error(
|
|
295
|
-
"[rsc-router] Could not find @vitejs/plugin-rsc. @rangojs/router requires the Vite RSC plugin
|
|
295
|
+
"[rsc-router] Could not find @vitejs/plugin-rsc. @rangojs/router requires the Vite RSC plugin, which is included automatically by rango()."
|
|
296
296
|
);
|
|
297
297
|
}
|
|
298
298
|
if (!isBuild) return;
|
|
@@ -1745,7 +1745,7 @@ import { resolve } from "node:path";
|
|
|
1745
1745
|
// package.json
|
|
1746
1746
|
var package_default = {
|
|
1747
1747
|
name: "@rangojs/router",
|
|
1748
|
-
version: "0.0.0-experimental.
|
|
1748
|
+
version: "0.0.0-experimental.21efdd86",
|
|
1749
1749
|
description: "Django-inspired RSC router with composable URL patterns",
|
|
1750
1750
|
keywords: [
|
|
1751
1751
|
"react",
|
|
@@ -1887,7 +1887,7 @@ var package_default = {
|
|
|
1887
1887
|
"test:unit:watch": "vitest"
|
|
1888
1888
|
},
|
|
1889
1889
|
dependencies: {
|
|
1890
|
-
"@vitejs/plugin-rsc": "^0.5.
|
|
1890
|
+
"@vitejs/plugin-rsc": "^0.5.19",
|
|
1891
1891
|
"magic-string": "^0.30.17",
|
|
1892
1892
|
picomatch: "^4.0.3",
|
|
1893
1893
|
"rsc-html-stream": "^0.0.7"
|
|
@@ -2095,31 +2095,7 @@ declare global {
|
|
|
2095
2095
|
}
|
|
2096
2096
|
|
|
2097
2097
|
// src/build/route-types/scan-filter.ts
|
|
2098
|
-
import { join, relative } from "node:path";
|
|
2099
2098
|
import picomatch from "picomatch";
|
|
2100
|
-
var DEFAULT_EXCLUDE_PATTERNS = [
|
|
2101
|
-
"**/__tests__/**",
|
|
2102
|
-
"**/__mocks__/**",
|
|
2103
|
-
"**/dist/**",
|
|
2104
|
-
"**/coverage/**",
|
|
2105
|
-
"**/*.test.{ts,tsx,js,jsx}",
|
|
2106
|
-
"**/*.spec.{ts,tsx,js,jsx}"
|
|
2107
|
-
];
|
|
2108
|
-
function createScanFilter(root, opts) {
|
|
2109
|
-
const { include, exclude } = opts;
|
|
2110
|
-
const hasInclude = include && include.length > 0;
|
|
2111
|
-
const hasCustomExclude = exclude !== void 0;
|
|
2112
|
-
if (!hasInclude && !hasCustomExclude) return void 0;
|
|
2113
|
-
const effectiveExclude = exclude ?? DEFAULT_EXCLUDE_PATTERNS;
|
|
2114
|
-
const includeMatcher = hasInclude ? picomatch(include) : null;
|
|
2115
|
-
const excludeMatcher = effectiveExclude.length > 0 ? picomatch(effectiveExclude) : null;
|
|
2116
|
-
return (absolutePath) => {
|
|
2117
|
-
const rel = relative(root, absolutePath);
|
|
2118
|
-
if (excludeMatcher && excludeMatcher(rel)) return false;
|
|
2119
|
-
if (includeMatcher) return includeMatcher(rel);
|
|
2120
|
-
return true;
|
|
2121
|
-
};
|
|
2122
|
-
}
|
|
2123
2099
|
|
|
2124
2100
|
// src/build/route-types/per-module-writer.ts
|
|
2125
2101
|
import ts4 from "typescript";
|
|
@@ -2341,7 +2317,7 @@ function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSche
|
|
|
2341
2317
|
}
|
|
2342
2318
|
return routeMap;
|
|
2343
2319
|
}
|
|
2344
|
-
function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagnosticsOut) {
|
|
2320
|
+
function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagnosticsOut, inlineBlock) {
|
|
2345
2321
|
visited = visited ?? /* @__PURE__ */ new Set();
|
|
2346
2322
|
const realPath = resolve2(filePath);
|
|
2347
2323
|
const key = variableName ? `${realPath}:${variableName}` : realPath;
|
|
@@ -2357,7 +2333,9 @@ function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagno
|
|
|
2357
2333
|
return { routes: {}, searchSchemas: {} };
|
|
2358
2334
|
}
|
|
2359
2335
|
let block;
|
|
2360
|
-
if (
|
|
2336
|
+
if (inlineBlock) {
|
|
2337
|
+
block = inlineBlock;
|
|
2338
|
+
} else if (variableName) {
|
|
2361
2339
|
const extracted = extractUrlsBlockForVariable(source, variableName);
|
|
2362
2340
|
if (!extracted) return { routes: {}, searchSchemas: {} };
|
|
2363
2341
|
block = extracted;
|
|
@@ -2386,7 +2364,7 @@ import {
|
|
|
2386
2364
|
readdirSync
|
|
2387
2365
|
} from "node:fs";
|
|
2388
2366
|
import {
|
|
2389
|
-
join
|
|
2367
|
+
join,
|
|
2390
2368
|
dirname as dirname2,
|
|
2391
2369
|
resolve as resolve3,
|
|
2392
2370
|
sep,
|
|
@@ -2406,7 +2384,7 @@ function countPublicRouteEntries(source) {
|
|
|
2406
2384
|
}
|
|
2407
2385
|
var ROUTER_CALL_PATTERN = /\bcreateRouter\s*[<(]/;
|
|
2408
2386
|
function isRoutableSourceFile(name) {
|
|
2409
|
-
return (name.endsWith(".ts") || name.endsWith(".tsx") || name.endsWith(".js") || name.endsWith(".jsx")) && !name.includes(".gen.");
|
|
2387
|
+
return (name.endsWith(".ts") || name.endsWith(".tsx") || name.endsWith(".js") || name.endsWith(".jsx")) && !name.includes(".gen.") && !name.includes(".test.") && !name.includes(".spec.");
|
|
2410
2388
|
}
|
|
2411
2389
|
function findRouterFilesRecursive(dir, filter, results) {
|
|
2412
2390
|
let entries;
|
|
@@ -2421,9 +2399,10 @@ function findRouterFilesRecursive(dir, filter, results) {
|
|
|
2421
2399
|
const childDirs = [];
|
|
2422
2400
|
const routerFilesInDir = [];
|
|
2423
2401
|
for (const entry of entries) {
|
|
2424
|
-
const fullPath =
|
|
2402
|
+
const fullPath = join(dir, entry.name);
|
|
2425
2403
|
if (entry.isDirectory()) {
|
|
2426
|
-
if (entry.name === "node_modules" || entry.name.startsWith("."))
|
|
2404
|
+
if (entry.name === "node_modules" || entry.name === "dist" || entry.name === "coverage" || entry.name === "__tests__" || entry.name === "__mocks__" || entry.name.startsWith("."))
|
|
2405
|
+
continue;
|
|
2427
2406
|
childDirs.push(fullPath);
|
|
2428
2407
|
continue;
|
|
2429
2408
|
}
|
|
@@ -2475,7 +2454,7 @@ Router root: ${conflict.ancestor}
|
|
|
2475
2454
|
Nested router: ${conflict.nested}
|
|
2476
2455
|
Move the nested router into a sibling directory or configure it as a separate app root.`;
|
|
2477
2456
|
}
|
|
2478
|
-
function
|
|
2457
|
+
function extractUrlsFromRouter(code) {
|
|
2479
2458
|
const sourceFile = ts5.createSourceFile(
|
|
2480
2459
|
"router.tsx",
|
|
2481
2460
|
code,
|
|
@@ -2489,24 +2468,70 @@ function extractUrlsVariableFromRouter(code) {
|
|
|
2489
2468
|
const callee = node.expression;
|
|
2490
2469
|
return ts5.isIdentifier(callee) && callee.text === "createRouter";
|
|
2491
2470
|
}
|
|
2471
|
+
function isInlineBuilder(node) {
|
|
2472
|
+
return ts5.isArrowFunction(node) || ts5.isFunctionExpression(node);
|
|
2473
|
+
}
|
|
2474
|
+
function isRoutesOnCreateRouter(node) {
|
|
2475
|
+
if (!ts5.isPropertyAccessExpression(node.expression) || node.expression.name.text !== "routes")
|
|
2476
|
+
return false;
|
|
2477
|
+
let inner = node.expression.expression;
|
|
2478
|
+
while (ts5.isCallExpression(inner) && ts5.isPropertyAccessExpression(inner.expression)) {
|
|
2479
|
+
inner = inner.expression.expression;
|
|
2480
|
+
}
|
|
2481
|
+
return isCreateRouterCall(inner);
|
|
2482
|
+
}
|
|
2492
2483
|
function visit(node) {
|
|
2493
2484
|
if (result) return;
|
|
2494
|
-
if (ts5.isCallExpression(node) &&
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
}
|
|
2499
|
-
|
|
2500
|
-
result = node.arguments[0].text;
|
|
2501
|
-
return;
|
|
2485
|
+
if (ts5.isCallExpression(node) && node.arguments.length >= 1 && isRoutesOnCreateRouter(node)) {
|
|
2486
|
+
const arg = node.arguments[0];
|
|
2487
|
+
if (ts5.isIdentifier(arg)) {
|
|
2488
|
+
result = { kind: "variable", name: arg.text };
|
|
2489
|
+
} else if (isInlineBuilder(arg)) {
|
|
2490
|
+
result = { kind: "inline", block: arg.getText(sourceFile) };
|
|
2502
2491
|
}
|
|
2492
|
+
return;
|
|
2503
2493
|
}
|
|
2504
2494
|
if (isCreateRouterCall(node)) {
|
|
2505
2495
|
const callExpr = node;
|
|
2506
|
-
for (const
|
|
2496
|
+
for (const callArg of callExpr.arguments) {
|
|
2497
|
+
if (ts5.isObjectLiteralExpression(callArg)) {
|
|
2498
|
+
for (const prop of callArg.properties) {
|
|
2499
|
+
if (ts5.isPropertyAssignment(prop) && ts5.isIdentifier(prop.name) && prop.name.text === "urls") {
|
|
2500
|
+
if (ts5.isIdentifier(prop.initializer)) {
|
|
2501
|
+
result = { kind: "variable", name: prop.initializer.text };
|
|
2502
|
+
} else if (isInlineBuilder(prop.initializer)) {
|
|
2503
|
+
result = {
|
|
2504
|
+
kind: "inline",
|
|
2505
|
+
block: prop.initializer.getText(sourceFile)
|
|
2506
|
+
};
|
|
2507
|
+
}
|
|
2508
|
+
return;
|
|
2509
|
+
}
|
|
2510
|
+
}
|
|
2511
|
+
}
|
|
2512
|
+
}
|
|
2513
|
+
}
|
|
2514
|
+
ts5.forEachChild(node, visit);
|
|
2515
|
+
}
|
|
2516
|
+
visit(sourceFile);
|
|
2517
|
+
return result;
|
|
2518
|
+
}
|
|
2519
|
+
function extractBasenameFromRouter(code) {
|
|
2520
|
+
const sourceFile = ts5.createSourceFile(
|
|
2521
|
+
"router.tsx",
|
|
2522
|
+
code,
|
|
2523
|
+
ts5.ScriptTarget.Latest,
|
|
2524
|
+
true,
|
|
2525
|
+
ts5.ScriptKind.TSX
|
|
2526
|
+
);
|
|
2527
|
+
let result;
|
|
2528
|
+
function visit(node) {
|
|
2529
|
+
if (result !== void 0) return;
|
|
2530
|
+
if (ts5.isCallExpression(node) && ts5.isIdentifier(node.expression) && node.expression.text === "createRouter") {
|
|
2531
|
+
for (const arg of node.arguments) {
|
|
2507
2532
|
if (ts5.isObjectLiteralExpression(arg)) {
|
|
2508
2533
|
for (const prop of arg.properties) {
|
|
2509
|
-
if (ts5.isPropertyAssignment(prop) && ts5.isIdentifier(prop.name) && prop.name.text === "
|
|
2534
|
+
if (ts5.isPropertyAssignment(prop) && ts5.isIdentifier(prop.name) && prop.name.text === "basename" && ts5.isStringLiteral(prop.initializer)) {
|
|
2510
2535
|
result = prop.initializer.text;
|
|
2511
2536
|
return;
|
|
2512
2537
|
}
|
|
@@ -2519,6 +2544,19 @@ function extractUrlsVariableFromRouter(code) {
|
|
|
2519
2544
|
visit(sourceFile);
|
|
2520
2545
|
return result;
|
|
2521
2546
|
}
|
|
2547
|
+
function applyBasenameToRoutes(result, basename3) {
|
|
2548
|
+
const prefixed = {};
|
|
2549
|
+
for (const [name, pattern] of Object.entries(result.routes)) {
|
|
2550
|
+
if (pattern === "/") {
|
|
2551
|
+
prefixed[name] = basename3;
|
|
2552
|
+
} else if (basename3.endsWith("/") && pattern.startsWith("/")) {
|
|
2553
|
+
prefixed[name] = basename3 + pattern.slice(1);
|
|
2554
|
+
} else {
|
|
2555
|
+
prefixed[name] = basename3 + pattern;
|
|
2556
|
+
}
|
|
2557
|
+
}
|
|
2558
|
+
return { routes: prefixed, searchSchemas: result.searchSchemas };
|
|
2559
|
+
}
|
|
2522
2560
|
function buildCombinedRouteMapForRouterFile(routerFilePath) {
|
|
2523
2561
|
let routerSource;
|
|
2524
2562
|
try {
|
|
@@ -2526,19 +2564,40 @@ function buildCombinedRouteMapForRouterFile(routerFilePath) {
|
|
|
2526
2564
|
} catch {
|
|
2527
2565
|
return { routes: {}, searchSchemas: {} };
|
|
2528
2566
|
}
|
|
2529
|
-
const
|
|
2530
|
-
if (!
|
|
2567
|
+
const extraction = extractUrlsFromRouter(routerSource);
|
|
2568
|
+
if (!extraction) {
|
|
2531
2569
|
return { routes: {}, searchSchemas: {} };
|
|
2532
2570
|
}
|
|
2533
|
-
const
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2571
|
+
const rawBasename = extractBasenameFromRouter(routerSource);
|
|
2572
|
+
const basename3 = rawBasename ? ("/" + rawBasename.replace(/^\/+|\/+$/g, "")).replace(/^\/$/, "") : void 0;
|
|
2573
|
+
let result;
|
|
2574
|
+
if (extraction.kind === "inline") {
|
|
2575
|
+
result = buildCombinedRouteMapWithSearch(
|
|
2576
|
+
routerFilePath,
|
|
2577
|
+
void 0,
|
|
2578
|
+
void 0,
|
|
2579
|
+
void 0,
|
|
2580
|
+
extraction.block
|
|
2581
|
+
);
|
|
2582
|
+
} else {
|
|
2583
|
+
const imported = resolveImportedVariable(routerSource, extraction.name);
|
|
2584
|
+
if (imported) {
|
|
2585
|
+
const targetFile = resolveImportPath(imported.specifier, routerFilePath);
|
|
2586
|
+
if (!targetFile) {
|
|
2587
|
+
return { routes: {}, searchSchemas: {} };
|
|
2588
|
+
}
|
|
2589
|
+
result = buildCombinedRouteMapWithSearch(
|
|
2590
|
+
targetFile,
|
|
2591
|
+
imported.exportedName
|
|
2592
|
+
);
|
|
2593
|
+
} else {
|
|
2594
|
+
result = buildCombinedRouteMapWithSearch(routerFilePath, extraction.name);
|
|
2538
2595
|
}
|
|
2539
|
-
return buildCombinedRouteMapWithSearch(targetFile, imported.exportedName);
|
|
2540
2596
|
}
|
|
2541
|
-
|
|
2597
|
+
if (basename3) {
|
|
2598
|
+
result = applyBasenameToRoutes(result, basename3);
|
|
2599
|
+
}
|
|
2600
|
+
return result;
|
|
2542
2601
|
}
|
|
2543
2602
|
function findRouterFiles(root, filter) {
|
|
2544
2603
|
const result = [];
|
|
@@ -2547,7 +2606,7 @@ function findRouterFiles(root, filter) {
|
|
|
2547
2606
|
}
|
|
2548
2607
|
function writeCombinedRouteTypes(root, knownRouterFiles, opts) {
|
|
2549
2608
|
try {
|
|
2550
|
-
const oldCombinedPath =
|
|
2609
|
+
const oldCombinedPath = join(root, "src", "named-routes.gen.ts");
|
|
2551
2610
|
if (existsSync3(oldCombinedPath)) {
|
|
2552
2611
|
unlinkSync(oldCombinedPath);
|
|
2553
2612
|
console.log(
|
|
@@ -2563,31 +2622,21 @@ function writeCombinedRouteTypes(root, knownRouterFiles, opts) {
|
|
|
2563
2622
|
throw new Error(formatNestedRouterConflictError(nestedRouterConflict));
|
|
2564
2623
|
}
|
|
2565
2624
|
for (const routerFilePath of routerFilePaths) {
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
routerSource
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
const imported = resolveImportedVariable(routerSource, urlsVarName);
|
|
2576
|
-
if (imported) {
|
|
2577
|
-
const targetFile = resolveImportPath(imported.specifier, routerFilePath);
|
|
2578
|
-
if (!targetFile) continue;
|
|
2579
|
-
result = buildCombinedRouteMapWithSearch(
|
|
2580
|
-
targetFile,
|
|
2581
|
-
imported.exportedName
|
|
2582
|
-
);
|
|
2583
|
-
} else {
|
|
2584
|
-
result = buildCombinedRouteMapWithSearch(routerFilePath, urlsVarName);
|
|
2625
|
+
const result = buildCombinedRouteMapForRouterFile(routerFilePath);
|
|
2626
|
+
if (Object.keys(result.routes).length === 0 && Object.keys(result.searchSchemas).length === 0) {
|
|
2627
|
+
let routerSource;
|
|
2628
|
+
try {
|
|
2629
|
+
routerSource = readFileSync2(routerFilePath, "utf-8");
|
|
2630
|
+
} catch {
|
|
2631
|
+
continue;
|
|
2632
|
+
}
|
|
2633
|
+
if (!extractUrlsFromRouter(routerSource)) continue;
|
|
2585
2634
|
}
|
|
2586
2635
|
const routerBasename = pathBasename(routerFilePath).replace(
|
|
2587
2636
|
/\.(tsx?|jsx?)$/,
|
|
2588
2637
|
""
|
|
2589
2638
|
);
|
|
2590
|
-
const outPath =
|
|
2639
|
+
const outPath = join(
|
|
2591
2640
|
dirname2(routerFilePath),
|
|
2592
2641
|
`${routerBasename}.named-routes.gen.ts`
|
|
2593
2642
|
);
|
|
@@ -2717,8 +2766,9 @@ function createVersionPlugin() {
|
|
|
2717
2766
|
let isDev = false;
|
|
2718
2767
|
let server = null;
|
|
2719
2768
|
const clientModuleSignatures = /* @__PURE__ */ new Map();
|
|
2769
|
+
let versionCounter = 0;
|
|
2720
2770
|
const bumpVersion = (reason) => {
|
|
2721
|
-
currentVersion = Date.now().toString(16);
|
|
2771
|
+
currentVersion = Date.now().toString(16) + String(++versionCounter);
|
|
2722
2772
|
console.log(`[rsc-router] ${reason}, version updated: ${currentVersion}`);
|
|
2723
2773
|
const rscEnv = server?.environments?.rsc;
|
|
2724
2774
|
const versionMod = rscEnv?.moduleGraph?.getModuleById(
|
|
@@ -2774,6 +2824,9 @@ function createVersionPlugin() {
|
|
|
2774
2824
|
if (!isDev) return;
|
|
2775
2825
|
const isRscModule = this.environment?.name === "rsc";
|
|
2776
2826
|
if (!isRscModule) return;
|
|
2827
|
+
if (ctx.modules.length === 1 && ctx.modules[0].id === "\0" + VIRTUAL_IDS.version) {
|
|
2828
|
+
return;
|
|
2829
|
+
}
|
|
2777
2830
|
if (isCodeModule(ctx.file)) {
|
|
2778
2831
|
const filePath = normalizeModuleId(ctx.file);
|
|
2779
2832
|
const previousSignature = clientModuleSignatures.get(filePath);
|
|
@@ -2803,6 +2856,68 @@ function createVersionPlugin() {
|
|
|
2803
2856
|
|
|
2804
2857
|
// src/vite/utils/shared-utils.ts
|
|
2805
2858
|
import * as Vite from "vite";
|
|
2859
|
+
|
|
2860
|
+
// src/vite/plugins/performance-tracks.ts
|
|
2861
|
+
import { readFile } from "node:fs/promises";
|
|
2862
|
+
var RSDW_PATCH_RE = /((?:var|let|const)\s+\w+\s*=\s*root\._children\s*,\s*(\w+)\s*=\s*root\._debugInfo\s*[;,])/;
|
|
2863
|
+
function buildPatchReplacement(match, debugInfoVar) {
|
|
2864
|
+
return `${match}
|
|
2865
|
+
if (${debugInfoVar} && 0 === ${debugInfoVar}.length && "fulfilled" === root.status) {
|
|
2866
|
+
var _resolved = "function" === typeof resolveLazy ? resolveLazy(root.value) : root.value;
|
|
2867
|
+
if ("object" === typeof _resolved && null !== _resolved && isArrayImpl(_resolved._debugInfo)) {
|
|
2868
|
+
${debugInfoVar} = _resolved._debugInfo;
|
|
2869
|
+
}
|
|
2870
|
+
}`;
|
|
2871
|
+
}
|
|
2872
|
+
function patchRsdwClientDebugInfoRecovery(code) {
|
|
2873
|
+
const match = code.match(RSDW_PATCH_RE);
|
|
2874
|
+
if (!match) {
|
|
2875
|
+
return { code, debugInfoVar: null };
|
|
2876
|
+
}
|
|
2877
|
+
return {
|
|
2878
|
+
code: code.replace(match[1], buildPatchReplacement(match[1], match[2])),
|
|
2879
|
+
debugInfoVar: match[2]
|
|
2880
|
+
};
|
|
2881
|
+
}
|
|
2882
|
+
function performanceTracksOptimizeDepsPlugin() {
|
|
2883
|
+
return {
|
|
2884
|
+
name: "@rangojs/router:performance-tracks-optimize-deps",
|
|
2885
|
+
setup(build) {
|
|
2886
|
+
build.onLoad(
|
|
2887
|
+
{
|
|
2888
|
+
filter: /react-server-dom-webpack-client\.browser\.(development|production)\.js$/
|
|
2889
|
+
},
|
|
2890
|
+
async (args) => {
|
|
2891
|
+
const code = await readFile(args.path, "utf8");
|
|
2892
|
+
const patched = patchRsdwClientDebugInfoRecovery(code);
|
|
2893
|
+
return {
|
|
2894
|
+
contents: patched.code,
|
|
2895
|
+
loader: "js"
|
|
2896
|
+
};
|
|
2897
|
+
}
|
|
2898
|
+
);
|
|
2899
|
+
}
|
|
2900
|
+
};
|
|
2901
|
+
}
|
|
2902
|
+
function performanceTracksPlugin() {
|
|
2903
|
+
return {
|
|
2904
|
+
name: "@rangojs/router:performance-tracks",
|
|
2905
|
+
transform(code, id) {
|
|
2906
|
+
if (!id.includes("react-server-dom") || !id.includes("client")) return;
|
|
2907
|
+
const patched = patchRsdwClientDebugInfoRecovery(code);
|
|
2908
|
+
if (!patched.debugInfoVar) return;
|
|
2909
|
+
if (process.env.INTERNAL_RANGO_DEBUG)
|
|
2910
|
+
console.log(
|
|
2911
|
+
"[perf-tracks] patched RSDW client (var:",
|
|
2912
|
+
patched.debugInfoVar,
|
|
2913
|
+
")"
|
|
2914
|
+
);
|
|
2915
|
+
return patched.code;
|
|
2916
|
+
}
|
|
2917
|
+
};
|
|
2918
|
+
}
|
|
2919
|
+
|
|
2920
|
+
// src/vite/utils/shared-utils.ts
|
|
2806
2921
|
var versionEsbuildPlugin = {
|
|
2807
2922
|
name: "@rangojs/router-version",
|
|
2808
2923
|
setup(build) {
|
|
@@ -2820,7 +2935,7 @@ var versionEsbuildPlugin = {
|
|
|
2820
2935
|
}
|
|
2821
2936
|
};
|
|
2822
2937
|
var sharedEsbuildOptions = {
|
|
2823
|
-
plugins: [versionEsbuildPlugin]
|
|
2938
|
+
plugins: [versionEsbuildPlugin, performanceTracksOptimizeDepsPlugin()]
|
|
2824
2939
|
};
|
|
2825
2940
|
function createVirtualEntriesPlugin(entries, routerPathRef) {
|
|
2826
2941
|
const virtualModules = {};
|
|
@@ -2903,11 +3018,11 @@ ${dim} \u2571${reset} ${bold}\u2554\u2550\u2557${reset}${dim} * \u2
|
|
|
2903
3018
|
${dim} ${reset}${bold}\u2551 \u2551${reset} ${bold}\u2554\u2550\u2557${reset}${dim} * \u2727. \u2571${reset}
|
|
2904
3019
|
${dim} ${reset}${bold}\u2554\u2557 \u2551 \u2551 \u2551 \u2551${reset}${dim} * \u2571${reset}
|
|
2905
3020
|
${dim} ${reset}${bold}\u2551\u2551 \u2551 \u2551 \u2551 \u2551 \u2566\u2550\u2557\u2554\u2550\u2557\u2554\u2557\u2554\u2554\u2550\u2557\u2554\u2550\u2557${reset}${dim} \u2727 \u2726${reset}
|
|
2906
|
-
${dim}
|
|
3021
|
+
${dim} ${reset}${bold}\u2551\u2551 \u2551 \u2560\u2550\u255D \u2551 \u2560\u2566\u255D\u2560\u2550\u2563\u2551\u2551\u2551\u2551 \u2566\u2551 \u2551${reset}${dim} * \u2727${reset}
|
|
2907
3022
|
${dim} ${reset}${bold}\u2551\u255A\u2550\u255D \u2554\u2550\u2550\u2550\u255D \u2569\u255A\u2550\u2569 \u2569\u255D\u255A\u255D\u255A\u2550\u255D\u255A\u2550\u255D${reset}${dim} \u2726 . *${reset}
|
|
2908
3023
|
${dim} ${reset}${bold}\u255A\u2550\u2550\u2557 \u2551${reset}${dim} * RSC Wrangler \u2727 \u2726${reset}
|
|
2909
|
-
${dim} * ${reset}${bold}\u2551 \
|
|
2910
|
-
${bold}\u2550\u2550\u2550\
|
|
3024
|
+
${dim} * ${reset}${bold}\u2551 \u2551${reset}${dim} * \u2727. \u2571${reset}
|
|
3025
|
+
${dim} ${reset}${bold}\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550${reset}${dim} \u2726 *${reset}
|
|
2911
3026
|
|
|
2912
3027
|
v${version} \xB7 ${preset} \xB7 ${mode}
|
|
2913
3028
|
`;
|
|
@@ -3026,6 +3141,8 @@ function createCjsToEsmPlugin() {
|
|
|
3026
3141
|
import { createServer as createViteServer } from "vite";
|
|
3027
3142
|
import { resolve as resolve8 } from "node:path";
|
|
3028
3143
|
import { readFileSync as readFileSync6 } from "node:fs";
|
|
3144
|
+
import { createRequire } from "node:module";
|
|
3145
|
+
import { pathToFileURL } from "node:url";
|
|
3029
3146
|
|
|
3030
3147
|
// src/vite/plugins/virtual-stub-plugin.ts
|
|
3031
3148
|
function createVirtualStubPlugin() {
|
|
@@ -3052,7 +3169,7 @@ function createVirtualStubPlugin() {
|
|
|
3052
3169
|
}
|
|
3053
3170
|
|
|
3054
3171
|
// src/vite/plugins/client-ref-hashing.ts
|
|
3055
|
-
import { relative
|
|
3172
|
+
import { relative } from "node:path";
|
|
3056
3173
|
import { createHash as createHash2 } from "node:crypto";
|
|
3057
3174
|
var CLIENT_PKG_PROXY_PREFIX = "/@id/__x00__virtual:vite-rsc/client-package-proxy/";
|
|
3058
3175
|
var CLIENT_IN_SERVER_PKG_PROXY_PREFIX = "/@id/__x00__virtual:vite-rsc/client-in-server-package-proxy/";
|
|
@@ -3065,10 +3182,10 @@ function computeProductionHash(projectRoot, refKey) {
|
|
|
3065
3182
|
const absPath = decodeURIComponent(
|
|
3066
3183
|
refKey.slice(CLIENT_IN_SERVER_PKG_PROXY_PREFIX.length)
|
|
3067
3184
|
);
|
|
3068
|
-
toHash =
|
|
3185
|
+
toHash = relative(projectRoot, absPath).replaceAll("\\", "/");
|
|
3069
3186
|
} else if (refKey.startsWith(FS_PREFIX)) {
|
|
3070
3187
|
const absPath = refKey.slice(FS_PREFIX.length - 1);
|
|
3071
|
-
toHash =
|
|
3188
|
+
toHash = relative(projectRoot, absPath).replaceAll("\\", "/");
|
|
3072
3189
|
} else if (refKey.startsWith("/")) {
|
|
3073
3190
|
toHash = refKey.slice(1);
|
|
3074
3191
|
} else {
|
|
@@ -3209,8 +3326,8 @@ function createDiscoveryState(entryPath, opts) {
|
|
|
3209
3326
|
perRouterManifestDataMap: /* @__PURE__ */ new Map(),
|
|
3210
3327
|
prerenderManifestEntries: null,
|
|
3211
3328
|
staticManifestEntries: null,
|
|
3212
|
-
|
|
3213
|
-
|
|
3329
|
+
handlerChunkInfoMap: /* @__PURE__ */ new Map(),
|
|
3330
|
+
staticHandlerChunkInfoMap: /* @__PURE__ */ new Map(),
|
|
3214
3331
|
rscEntryFileName: null,
|
|
3215
3332
|
resolvedPrerenderModules: void 0,
|
|
3216
3333
|
resolvedStaticModules: void 0,
|
|
@@ -3293,8 +3410,17 @@ function jsonParseExpression(value) {
|
|
|
3293
3410
|
}
|
|
3294
3411
|
|
|
3295
3412
|
// src/context-var.ts
|
|
3413
|
+
var NON_CACHEABLE_KEYS = /* @__PURE__ */ Symbol.for(
|
|
3414
|
+
"rango:non-cacheable-keys"
|
|
3415
|
+
);
|
|
3416
|
+
function getNonCacheableKeys(variables) {
|
|
3417
|
+
if (!variables[NON_CACHEABLE_KEYS]) {
|
|
3418
|
+
variables[NON_CACHEABLE_KEYS] = /* @__PURE__ */ new Set();
|
|
3419
|
+
}
|
|
3420
|
+
return variables[NON_CACHEABLE_KEYS];
|
|
3421
|
+
}
|
|
3296
3422
|
var FORBIDDEN_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
|
|
3297
|
-
function contextSet(variables, keyOrVar, value) {
|
|
3423
|
+
function contextSet(variables, keyOrVar, value, options) {
|
|
3298
3424
|
if (typeof keyOrVar === "string") {
|
|
3299
3425
|
if (FORBIDDEN_KEYS.has(keyOrVar)) {
|
|
3300
3426
|
throw new Error(
|
|
@@ -3302,8 +3428,14 @@ function contextSet(variables, keyOrVar, value) {
|
|
|
3302
3428
|
);
|
|
3303
3429
|
}
|
|
3304
3430
|
variables[keyOrVar] = value;
|
|
3431
|
+
if (options?.cache === false) {
|
|
3432
|
+
getNonCacheableKeys(variables).add(keyOrVar);
|
|
3433
|
+
}
|
|
3305
3434
|
} else {
|
|
3306
3435
|
variables[keyOrVar.key] = value;
|
|
3436
|
+
if (options?.cache === false) {
|
|
3437
|
+
getNonCacheableKeys(variables).add(keyOrVar.key);
|
|
3438
|
+
}
|
|
3307
3439
|
}
|
|
3308
3440
|
}
|
|
3309
3441
|
|
|
@@ -3326,6 +3458,7 @@ function encodePathParam(value) {
|
|
|
3326
3458
|
}
|
|
3327
3459
|
function substituteRouteParams(pattern, params, encode = encodeURIComponent) {
|
|
3328
3460
|
let result = pattern;
|
|
3461
|
+
let hadOmittedOptional = false;
|
|
3329
3462
|
for (const [key, value] of Object.entries(params)) {
|
|
3330
3463
|
const escaped = escapeRegExp2(key);
|
|
3331
3464
|
result = result.replace(
|
|
@@ -3334,6 +3467,15 @@ function substituteRouteParams(pattern, params, encode = encodeURIComponent) {
|
|
|
3334
3467
|
);
|
|
3335
3468
|
result = result.replace(`*${key}`, encode(value));
|
|
3336
3469
|
}
|
|
3470
|
+
result = result.replace(/:([a-zA-Z_][a-zA-Z0-9_]*)(\([^)]*\))?\?/g, () => {
|
|
3471
|
+
hadOmittedOptional = true;
|
|
3472
|
+
return "";
|
|
3473
|
+
});
|
|
3474
|
+
if (hadOmittedOptional) {
|
|
3475
|
+
const hadTrailingSlash = pattern.length > 1 && pattern.endsWith("/");
|
|
3476
|
+
result = result.replace(/\/\/+/g, "/").replace(/\/+$/, "") || "/";
|
|
3477
|
+
if (hadTrailingSlash && !result.endsWith("/")) result += "/";
|
|
3478
|
+
}
|
|
3337
3479
|
return result;
|
|
3338
3480
|
}
|
|
3339
3481
|
async function runWithConcurrency(items, concurrency, fn) {
|
|
@@ -3445,11 +3587,12 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
|
|
|
3445
3587
|
for (const { manifest } of allManifests) {
|
|
3446
3588
|
if (!manifest.prerenderRoutes) continue;
|
|
3447
3589
|
const defs = manifest._prerenderDefs || {};
|
|
3590
|
+
const passthroughSet = new Set(manifest.passthroughRoutes || []);
|
|
3448
3591
|
for (const routeName of manifest.prerenderRoutes) {
|
|
3449
3592
|
const pattern = manifest.routeManifest[routeName];
|
|
3450
3593
|
if (!pattern) continue;
|
|
3451
3594
|
const def = defs[routeName];
|
|
3452
|
-
const isPassthroughRoute =
|
|
3595
|
+
const isPassthroughRoute = passthroughSet.has(routeName);
|
|
3453
3596
|
const hasDynamic = pattern.includes(":") || pattern.includes("*");
|
|
3454
3597
|
if (!hasDynamic) {
|
|
3455
3598
|
entries.push({
|
|
@@ -3462,12 +3605,20 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
|
|
|
3462
3605
|
if (def?.getParams) {
|
|
3463
3606
|
try {
|
|
3464
3607
|
const buildVars = {};
|
|
3608
|
+
const buildEnv = state.resolvedBuildEnv;
|
|
3465
3609
|
const getParamsCtx = {
|
|
3466
3610
|
build: true,
|
|
3611
|
+
dev: !state.isBuildMode,
|
|
3467
3612
|
set: ((keyOrVar, value) => {
|
|
3468
3613
|
contextSet(buildVars, keyOrVar, value);
|
|
3469
3614
|
}),
|
|
3470
|
-
reverse: getParamsReverse
|
|
3615
|
+
reverse: getParamsReverse,
|
|
3616
|
+
get env() {
|
|
3617
|
+
if (buildEnv !== void 0) return buildEnv;
|
|
3618
|
+
throw new Error(
|
|
3619
|
+
"[rsc-router] ctx.env is not available during build-time getParams(). Configure buildEnv in your rango() plugin options to enable build-time env access."
|
|
3620
|
+
);
|
|
3621
|
+
}
|
|
3471
3622
|
};
|
|
3472
3623
|
const paramsList = await def.getParams(getParamsCtx);
|
|
3473
3624
|
const concurrency = def.options?.concurrency ?? 1;
|
|
@@ -3546,7 +3697,8 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
|
|
|
3546
3697
|
entry.urlPath,
|
|
3547
3698
|
{},
|
|
3548
3699
|
entry.buildVars,
|
|
3549
|
-
entry.isPassthroughRoute
|
|
3700
|
+
entry.isPassthroughRoute,
|
|
3701
|
+
state.resolvedBuildEnv
|
|
3550
3702
|
);
|
|
3551
3703
|
if (!result) continue;
|
|
3552
3704
|
if (result.passthrough) {
|
|
@@ -3670,7 +3822,9 @@ async function renderStaticHandlers(state, rscEnv, registry) {
|
|
|
3670
3822
|
const result = await routerInstance.renderStaticSegment(
|
|
3671
3823
|
def.handler,
|
|
3672
3824
|
def.$$id,
|
|
3673
|
-
def.$$routePrefix
|
|
3825
|
+
def.$$routePrefix,
|
|
3826
|
+
state.resolvedBuildEnv,
|
|
3827
|
+
!state.isBuildMode
|
|
3674
3828
|
);
|
|
3675
3829
|
if (result) {
|
|
3676
3830
|
const hasHandles = Object.keys(result.handles).length > 0;
|
|
@@ -3733,8 +3887,7 @@ async function discoverRouters(state, rscEnv) {
|
|
|
3733
3887
|
let registry = serverMod.RouterRegistry;
|
|
3734
3888
|
if (!registry || registry.size === 0) {
|
|
3735
3889
|
try {
|
|
3736
|
-
const
|
|
3737
|
-
const hostRegistry = hostMod.HostRouterRegistry;
|
|
3890
|
+
const hostRegistry = serverMod.HostRouterRegistry;
|
|
3738
3891
|
if (hostRegistry && hostRegistry.size > 0) {
|
|
3739
3892
|
console.log(
|
|
3740
3893
|
`[rsc-router] Found ${hostRegistry.size} host router(s), resolving lazy handlers...`
|
|
@@ -3796,7 +3949,11 @@ async function discoverRouters(state, rscEnv) {
|
|
|
3796
3949
|
if (!router.urlpatterns || !generateManifestFull) {
|
|
3797
3950
|
continue;
|
|
3798
3951
|
}
|
|
3799
|
-
const manifest = generateManifestFull(
|
|
3952
|
+
const manifest = generateManifestFull(
|
|
3953
|
+
router.urlpatterns,
|
|
3954
|
+
routerMountIndex,
|
|
3955
|
+
router.__basename ? { urlPrefix: router.__basename } : void 0
|
|
3956
|
+
);
|
|
3800
3957
|
routerMountIndex++;
|
|
3801
3958
|
allManifests.push({ id, manifest });
|
|
3802
3959
|
const routeCount = Object.keys(manifest.routeManifest).length;
|
|
@@ -3938,7 +4095,7 @@ async function discoverRouters(state, rscEnv) {
|
|
|
3938
4095
|
}
|
|
3939
4096
|
|
|
3940
4097
|
// src/vite/discovery/route-types-writer.ts
|
|
3941
|
-
import { dirname as dirname3, basename, join as
|
|
4098
|
+
import { dirname as dirname3, basename, join as join2, resolve as resolve6 } from "node:path";
|
|
3942
4099
|
import { readFileSync as readFileSync4, writeFileSync as writeFileSync3, existsSync as existsSync5, unlinkSync as unlinkSync2 } from "node:fs";
|
|
3943
4100
|
function filterUserNamedRoutes(manifest) {
|
|
3944
4101
|
const filtered = {};
|
|
@@ -3959,7 +4116,7 @@ function writeCombinedRouteTypesWithTracking(state, opts) {
|
|
|
3959
4116
|
/\.(tsx?|jsx?)$/,
|
|
3960
4117
|
""
|
|
3961
4118
|
);
|
|
3962
|
-
const outPath =
|
|
4119
|
+
const outPath = join2(routerDir, `${routerBasename}.named-routes.gen.ts`);
|
|
3963
4120
|
try {
|
|
3964
4121
|
preContent.set(outPath, readFileSync4(outPath, "utf-8"));
|
|
3965
4122
|
} catch {
|
|
@@ -3972,7 +4129,7 @@ function writeCombinedRouteTypesWithTracking(state, opts) {
|
|
|
3972
4129
|
/\.(tsx?|jsx?)$/,
|
|
3973
4130
|
""
|
|
3974
4131
|
);
|
|
3975
|
-
const outPath =
|
|
4132
|
+
const outPath = join2(routerDir, `${routerBasename}.named-routes.gen.ts`);
|
|
3976
4133
|
if (!existsSync5(outPath)) continue;
|
|
3977
4134
|
try {
|
|
3978
4135
|
const content = readFileSync4(outPath, "utf-8");
|
|
@@ -3989,7 +4146,7 @@ function writeRouteTypesFiles(state) {
|
|
|
3989
4146
|
const entryDir = dirname3(
|
|
3990
4147
|
resolve6(state.projectRoot, state.resolvedEntryPath)
|
|
3991
4148
|
);
|
|
3992
|
-
const oldCombinedPath =
|
|
4149
|
+
const oldCombinedPath = join2(entryDir, "named-routes.gen.ts");
|
|
3993
4150
|
if (existsSync5(oldCombinedPath)) {
|
|
3994
4151
|
unlinkSync2(oldCombinedPath);
|
|
3995
4152
|
console.log(
|
|
@@ -4014,7 +4171,7 @@ Set an explicit \`id\` on createRouter() or check the call site.`
|
|
|
4014
4171
|
}
|
|
4015
4172
|
const routerDir = dirname3(sourceFile);
|
|
4016
4173
|
const routerBasename = basename(sourceFile).replace(/\.(tsx?|jsx?)$/, "");
|
|
4017
|
-
const outPath =
|
|
4174
|
+
const outPath = join2(routerDir, `${routerBasename}.named-routes.gen.ts`);
|
|
4018
4175
|
const userRoutes = filterUserNamedRoutes(routeManifest);
|
|
4019
4176
|
let effectiveSearchSchemas = routeSearchSchemas;
|
|
4020
4177
|
if ((!effectiveSearchSchemas || Object.keys(effectiveSearchSchemas).length === 0) && sourceFile) {
|
|
@@ -4079,7 +4236,7 @@ function supplementGenFilesWithRuntimeRoutes(state) {
|
|
|
4079
4236
|
}
|
|
4080
4237
|
const routerDir = dirname3(sourceFile);
|
|
4081
4238
|
const routerBasename = basename(sourceFile).replace(/\.(tsx?|jsx?)$/, "");
|
|
4082
|
-
const outPath =
|
|
4239
|
+
const outPath = join2(routerDir, `${routerBasename}.named-routes.gen.ts`);
|
|
4083
4240
|
const source = generateRouteTypesSource(
|
|
4084
4241
|
mergedRoutes,
|
|
4085
4242
|
Object.keys(mergedSearchSchemas).length > 0 ? mergedSearchSchemas : void 0
|
|
@@ -4093,7 +4250,7 @@ function supplementGenFilesWithRuntimeRoutes(state) {
|
|
|
4093
4250
|
}
|
|
4094
4251
|
|
|
4095
4252
|
// src/vite/discovery/virtual-module-codegen.ts
|
|
4096
|
-
import { dirname as dirname4, basename as basename2, join as
|
|
4253
|
+
import { dirname as dirname4, basename as basename2, join as join3 } from "node:path";
|
|
4097
4254
|
function generateRoutesManifestModule(state) {
|
|
4098
4255
|
const hasManifest = state.mergedRouteManifest && Object.keys(state.mergedRouteManifest).length > 0;
|
|
4099
4256
|
if (hasManifest) {
|
|
@@ -4108,7 +4265,7 @@ function generateRoutesManifestModule(state) {
|
|
|
4108
4265
|
/\.(tsx?|jsx?)$/,
|
|
4109
4266
|
""
|
|
4110
4267
|
);
|
|
4111
|
-
const genPath =
|
|
4268
|
+
const genPath = join3(
|
|
4112
4269
|
routerDir,
|
|
4113
4270
|
`${routerBasename}.named-routes.gen.js`
|
|
4114
4271
|
).replaceAll("\\", "/");
|
|
@@ -4205,7 +4362,7 @@ function generatePerRouterModule(state, routerId) {
|
|
|
4205
4362
|
/\.(tsx?|jsx?)$/,
|
|
4206
4363
|
""
|
|
4207
4364
|
);
|
|
4208
|
-
const genPath =
|
|
4365
|
+
const genPath = join3(
|
|
4209
4366
|
routerDir,
|
|
4210
4367
|
`${routerBasename}.named-routes.gen.js`
|
|
4211
4368
|
).replaceAll("\\", "/");
|
|
@@ -4245,48 +4402,45 @@ function postprocessBundle(state) {
|
|
|
4245
4402
|
);
|
|
4246
4403
|
const evictionTargets = [
|
|
4247
4404
|
{
|
|
4248
|
-
|
|
4405
|
+
infos: state.handlerChunkInfoMap.values(),
|
|
4249
4406
|
fnName: "Prerender",
|
|
4250
4407
|
brand: "prerenderHandler",
|
|
4251
4408
|
label: "handler code from RSC bundle"
|
|
4252
4409
|
},
|
|
4253
4410
|
{
|
|
4254
|
-
|
|
4411
|
+
infos: state.staticHandlerChunkInfoMap.values(),
|
|
4255
4412
|
fnName: "Static",
|
|
4256
4413
|
brand: "staticHandler",
|
|
4257
4414
|
label: "static handler code"
|
|
4258
4415
|
}
|
|
4259
4416
|
];
|
|
4260
4417
|
for (const target of evictionTargets) {
|
|
4261
|
-
|
|
4262
|
-
|
|
4263
|
-
|
|
4264
|
-
|
|
4265
|
-
|
|
4266
|
-
|
|
4267
|
-
|
|
4268
|
-
|
|
4269
|
-
|
|
4270
|
-
|
|
4271
|
-
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
|
|
4418
|
+
for (const info of target.infos) {
|
|
4419
|
+
const chunkPath = resolve7(state.projectRoot, "dist/rsc", info.fileName);
|
|
4420
|
+
try {
|
|
4421
|
+
const code = readFileSync5(chunkPath, "utf-8");
|
|
4422
|
+
const result = evictHandlerCode(
|
|
4423
|
+
code,
|
|
4424
|
+
info.exports,
|
|
4425
|
+
target.fnName,
|
|
4426
|
+
target.brand
|
|
4427
|
+
);
|
|
4428
|
+
if (result) {
|
|
4429
|
+
writeFileSync4(chunkPath, result.code);
|
|
4430
|
+
const savedKB = (result.savedBytes / 1024).toFixed(1);
|
|
4431
|
+
console.log(
|
|
4432
|
+
`[rsc-router] Evicted ${target.label} (${savedKB} KB saved): ${info.fileName}`
|
|
4433
|
+
);
|
|
4434
|
+
}
|
|
4435
|
+
} catch (replaceErr) {
|
|
4436
|
+
console.warn(
|
|
4437
|
+
`[rsc-router] Failed to evict ${target.label}: ${replaceErr.message}`
|
|
4280
4438
|
);
|
|
4281
4439
|
}
|
|
4282
|
-
} catch (replaceErr) {
|
|
4283
|
-
console.warn(
|
|
4284
|
-
`[rsc-router] Failed to evict ${target.label}: ${replaceErr.message}`
|
|
4285
|
-
);
|
|
4286
4440
|
}
|
|
4287
4441
|
}
|
|
4288
|
-
state.
|
|
4289
|
-
state.
|
|
4442
|
+
state.handlerChunkInfoMap.clear();
|
|
4443
|
+
state.staticHandlerChunkInfoMap.clear();
|
|
4290
4444
|
if (hasPrerenderData && existsSync6(rscEntryPath)) {
|
|
4291
4445
|
const rscCode = readFileSync5(rscEntryPath, "utf-8");
|
|
4292
4446
|
if (!rscCode.includes("__prerender-manifest.js")) {
|
|
@@ -4329,7 +4483,7 @@ function postprocessBundle(state) {
|
|
|
4329
4483
|
}
|
|
4330
4484
|
if (hasStaticData && existsSync6(rscEntryPath)) {
|
|
4331
4485
|
const rscCode = readFileSync5(rscEntryPath, "utf-8");
|
|
4332
|
-
if (!rscCode.includes("
|
|
4486
|
+
if (!rscCode.includes("__static-manifest.js")) {
|
|
4333
4487
|
try {
|
|
4334
4488
|
const manifestEntries = [];
|
|
4335
4489
|
let totalBytes = copyStagedBuildAssets(
|
|
@@ -4398,8 +4552,67 @@ async function createTempRscServer(state, options = {}) {
|
|
|
4398
4552
|
]
|
|
4399
4553
|
});
|
|
4400
4554
|
}
|
|
4555
|
+
async function resolveBuildEnv(option, factoryCtx) {
|
|
4556
|
+
if (!option) return null;
|
|
4557
|
+
if (option === "auto") {
|
|
4558
|
+
if (factoryCtx.preset !== "cloudflare") {
|
|
4559
|
+
throw new Error(
|
|
4560
|
+
'[rsc-router] buildEnv: "auto" is only supported with preset: "cloudflare". Use a factory function or plain object for other presets.'
|
|
4561
|
+
);
|
|
4562
|
+
}
|
|
4563
|
+
try {
|
|
4564
|
+
const userRequire = createRequire(
|
|
4565
|
+
resolve8(factoryCtx.root, "package.json")
|
|
4566
|
+
);
|
|
4567
|
+
const wranglerPath = userRequire.resolve("wrangler");
|
|
4568
|
+
const { getPlatformProxy } = await import(pathToFileURL(wranglerPath).href);
|
|
4569
|
+
const proxy = await getPlatformProxy();
|
|
4570
|
+
return {
|
|
4571
|
+
env: proxy.env,
|
|
4572
|
+
dispose: proxy.dispose
|
|
4573
|
+
};
|
|
4574
|
+
} catch (err) {
|
|
4575
|
+
throw new Error(
|
|
4576
|
+
`[rsc-router] buildEnv: "auto" requires wrangler to be installed.
|
|
4577
|
+
Install it with: pnpm add -D wrangler
|
|
4578
|
+
${err.message}`
|
|
4579
|
+
);
|
|
4580
|
+
}
|
|
4581
|
+
}
|
|
4582
|
+
if (typeof option === "function") {
|
|
4583
|
+
return await option(factoryCtx);
|
|
4584
|
+
}
|
|
4585
|
+
return { env: option };
|
|
4586
|
+
}
|
|
4587
|
+
async function acquireBuildEnv(s, command, mode) {
|
|
4588
|
+
const option = s.opts?.buildEnv;
|
|
4589
|
+
if (!option) return false;
|
|
4590
|
+
const result = await resolveBuildEnv(option, {
|
|
4591
|
+
root: s.projectRoot,
|
|
4592
|
+
mode,
|
|
4593
|
+
command,
|
|
4594
|
+
preset: s.opts?.preset ?? "node"
|
|
4595
|
+
});
|
|
4596
|
+
if (!result) return false;
|
|
4597
|
+
s.resolvedBuildEnv = result.env;
|
|
4598
|
+
s.buildEnvDispose = result.dispose ?? null;
|
|
4599
|
+
return true;
|
|
4600
|
+
}
|
|
4601
|
+
async function releaseBuildEnv(s) {
|
|
4602
|
+
if (s.buildEnvDispose) {
|
|
4603
|
+
try {
|
|
4604
|
+
await s.buildEnvDispose();
|
|
4605
|
+
} catch (err) {
|
|
4606
|
+
console.warn(`[rsc-router] buildEnv dispose failed: ${err.message}`);
|
|
4607
|
+
}
|
|
4608
|
+
s.buildEnvDispose = null;
|
|
4609
|
+
}
|
|
4610
|
+
s.resolvedBuildEnv = void 0;
|
|
4611
|
+
}
|
|
4401
4612
|
function createRouterDiscoveryPlugin(entryPath, opts) {
|
|
4402
4613
|
const s = createDiscoveryState(entryPath, opts);
|
|
4614
|
+
let viteCommand = "build";
|
|
4615
|
+
let viteMode = "production";
|
|
4403
4616
|
return {
|
|
4404
4617
|
name: "@rangojs/router:discovery",
|
|
4405
4618
|
config() {
|
|
@@ -4408,31 +4621,13 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
|
|
|
4408
4621
|
__RANGO_DEBUG__: JSON.stringify(!!process.env.INTERNAL_RANGO_DEBUG)
|
|
4409
4622
|
}
|
|
4410
4623
|
};
|
|
4411
|
-
if (opts?.enableBuildPrerender) {
|
|
4412
|
-
config.environments = {
|
|
4413
|
-
rsc: {
|
|
4414
|
-
build: {
|
|
4415
|
-
rollupOptions: {
|
|
4416
|
-
output: {
|
|
4417
|
-
manualChunks(id) {
|
|
4418
|
-
if (s.resolvedPrerenderModules?.has(id)) {
|
|
4419
|
-
return "__prerender-handlers";
|
|
4420
|
-
}
|
|
4421
|
-
if (s.resolvedStaticModules?.has(id)) {
|
|
4422
|
-
return "__static-handlers";
|
|
4423
|
-
}
|
|
4424
|
-
}
|
|
4425
|
-
}
|
|
4426
|
-
}
|
|
4427
|
-
}
|
|
4428
|
-
}
|
|
4429
|
-
};
|
|
4430
|
-
}
|
|
4431
4624
|
return config;
|
|
4432
4625
|
},
|
|
4433
4626
|
configResolved(config) {
|
|
4434
4627
|
s.projectRoot = config.root;
|
|
4435
4628
|
s.isBuildMode = config.command === "build";
|
|
4629
|
+
viteCommand = config.command;
|
|
4630
|
+
viteMode = config.mode;
|
|
4436
4631
|
s.userResolveAlias = config.resolve.alias;
|
|
4437
4632
|
if (!s.resolvedEntryPath && opts?.routerPathRef?.path) {
|
|
4438
4633
|
s.resolvedEntryPath = opts.routerPathRef.path;
|
|
@@ -4446,12 +4641,6 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
|
|
|
4446
4641
|
s.resolvedEntryPath = entries[0];
|
|
4447
4642
|
}
|
|
4448
4643
|
}
|
|
4449
|
-
if (opts?.include || opts?.exclude) {
|
|
4450
|
-
s.scanFilter = createScanFilter(s.projectRoot, {
|
|
4451
|
-
include: opts.include,
|
|
4452
|
-
exclude: opts.exclude
|
|
4453
|
-
});
|
|
4454
|
-
}
|
|
4455
4644
|
if (opts?.staticRouteTypesGeneration !== false) {
|
|
4456
4645
|
s.cachedRouterFiles = findRouterFiles(s.projectRoot, s.scanFilter);
|
|
4457
4646
|
writeCombinedRouteTypesWithTracking(s, { preserveIfLarger: true });
|
|
@@ -4483,6 +4672,8 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
|
|
|
4483
4672
|
});
|
|
4484
4673
|
prerenderTempServer = null;
|
|
4485
4674
|
}
|
|
4675
|
+
releaseBuildEnv(s).catch(() => {
|
|
4676
|
+
});
|
|
4486
4677
|
});
|
|
4487
4678
|
async function getOrCreateTempServer() {
|
|
4488
4679
|
if (prerenderNodeRegistry) {
|
|
@@ -4513,6 +4704,7 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
|
|
|
4513
4704
|
if (!rscEnv?.runner) {
|
|
4514
4705
|
s.devServerOrigin = getDevServerOrigin();
|
|
4515
4706
|
try {
|
|
4707
|
+
await acquireBuildEnv(s, viteCommand, viteMode);
|
|
4516
4708
|
const tempRscEnv = await getOrCreateTempServer();
|
|
4517
4709
|
if (tempRscEnv) {
|
|
4518
4710
|
await discoverRouters(s, tempRscEnv);
|
|
@@ -4528,6 +4720,7 @@ ${err.stack}`
|
|
|
4528
4720
|
return;
|
|
4529
4721
|
}
|
|
4530
4722
|
try {
|
|
4723
|
+
await acquireBuildEnv(s, viteCommand, viteMode);
|
|
4531
4724
|
const serverMod = await rscEnv.runner.import(
|
|
4532
4725
|
"@rangojs/router/server"
|
|
4533
4726
|
);
|
|
@@ -4592,7 +4785,26 @@ ${err.stack}`
|
|
|
4592
4785
|
res.end("Missing pathname");
|
|
4593
4786
|
return;
|
|
4594
4787
|
}
|
|
4595
|
-
|
|
4788
|
+
const rscEnv = server.environments?.rsc;
|
|
4789
|
+
let registry = null;
|
|
4790
|
+
if (rscEnv?.runner && s.resolvedEntryPath) {
|
|
4791
|
+
try {
|
|
4792
|
+
await rscEnv.runner.import(s.resolvedEntryPath);
|
|
4793
|
+
const serverMod = await rscEnv.runner.import(
|
|
4794
|
+
"@rangojs/router/server"
|
|
4795
|
+
);
|
|
4796
|
+
registry = serverMod.RouterRegistry ?? null;
|
|
4797
|
+
} catch (err) {
|
|
4798
|
+
console.warn(
|
|
4799
|
+
`[rsc-router] Dev prerender module refresh failed: ${err.message}`
|
|
4800
|
+
);
|
|
4801
|
+
res.statusCode = 500;
|
|
4802
|
+
res.end(`Prerender handler error: ${err.message}`);
|
|
4803
|
+
return;
|
|
4804
|
+
}
|
|
4805
|
+
} else {
|
|
4806
|
+
registry = mainRegistry;
|
|
4807
|
+
}
|
|
4596
4808
|
if (!registry) {
|
|
4597
4809
|
if (!prerenderNodeRegistry) {
|
|
4598
4810
|
await getOrCreateTempServer();
|
|
@@ -4614,7 +4826,10 @@ ${err.stack}`
|
|
|
4614
4826
|
pathname,
|
|
4615
4827
|
{},
|
|
4616
4828
|
void 0,
|
|
4617
|
-
wantPassthrough
|
|
4829
|
+
wantPassthrough,
|
|
4830
|
+
s.resolvedBuildEnv,
|
|
4831
|
+
true
|
|
4832
|
+
// devMode: check getParams for passthrough routes
|
|
4618
4833
|
);
|
|
4619
4834
|
if (!result) continue;
|
|
4620
4835
|
if (result.passthrough) continue;
|
|
@@ -4750,6 +4965,7 @@ ${err.stack}`
|
|
|
4750
4965
|
resetStagedBuildAssets(s.projectRoot);
|
|
4751
4966
|
s.prerenderManifestEntries = null;
|
|
4752
4967
|
s.staticManifestEntries = null;
|
|
4968
|
+
await acquireBuildEnv(s, viteCommand, viteMode);
|
|
4753
4969
|
let tempServer = null;
|
|
4754
4970
|
globalThis.__rscRouterDiscoveryActive = true;
|
|
4755
4971
|
try {
|
|
@@ -4789,6 +5005,7 @@ ${details}`
|
|
|
4789
5005
|
if (tempServer) {
|
|
4790
5006
|
await tempServer.close();
|
|
4791
5007
|
}
|
|
5008
|
+
await releaseBuildEnv(s);
|
|
4792
5009
|
}
|
|
4793
5010
|
},
|
|
4794
5011
|
// Virtual module: provides the pre-generated route manifest as a JS module
|
|
@@ -4831,20 +5048,30 @@ ${details}`
|
|
|
4831
5048
|
}
|
|
4832
5049
|
if (!s.resolvedPrerenderModules?.size && !s.resolvedStaticModules?.size)
|
|
4833
5050
|
return;
|
|
5051
|
+
s.handlerChunkInfoMap.clear();
|
|
5052
|
+
s.staticHandlerChunkInfoMap.clear();
|
|
4834
5053
|
for (const [fileName, chunk] of Object.entries(bundle)) {
|
|
4835
5054
|
if (chunk.type !== "chunk") continue;
|
|
4836
|
-
if (
|
|
5055
|
+
if (s.resolvedPrerenderModules?.size) {
|
|
4837
5056
|
const handlers = extractHandlerExportsFromChunk(
|
|
4838
5057
|
chunk.code,
|
|
4839
5058
|
s.resolvedPrerenderModules,
|
|
4840
5059
|
"Prerender",
|
|
4841
|
-
|
|
5060
|
+
false
|
|
4842
5061
|
);
|
|
4843
5062
|
if (handlers.length > 0) {
|
|
4844
|
-
|
|
5063
|
+
const existing = s.handlerChunkInfoMap.get(fileName);
|
|
5064
|
+
if (existing) {
|
|
5065
|
+
existing.exports.push(...handlers);
|
|
5066
|
+
} else {
|
|
5067
|
+
s.handlerChunkInfoMap.set(fileName, {
|
|
5068
|
+
fileName,
|
|
5069
|
+
exports: handlers
|
|
5070
|
+
});
|
|
5071
|
+
}
|
|
4845
5072
|
}
|
|
4846
5073
|
}
|
|
4847
|
-
if (
|
|
5074
|
+
if (s.resolvedStaticModules?.size) {
|
|
4848
5075
|
const handlers = extractHandlerExportsFromChunk(
|
|
4849
5076
|
chunk.code,
|
|
4850
5077
|
s.resolvedStaticModules,
|
|
@@ -4852,7 +5079,15 @@ ${details}`
|
|
|
4852
5079
|
false
|
|
4853
5080
|
);
|
|
4854
5081
|
if (handlers.length > 0) {
|
|
4855
|
-
|
|
5082
|
+
const existing = s.staticHandlerChunkInfoMap.get(fileName);
|
|
5083
|
+
if (existing) {
|
|
5084
|
+
existing.exports.push(...handlers);
|
|
5085
|
+
} else {
|
|
5086
|
+
s.staticHandlerChunkInfoMap.set(fileName, {
|
|
5087
|
+
fileName,
|
|
5088
|
+
exports: handlers
|
|
5089
|
+
});
|
|
5090
|
+
}
|
|
4856
5091
|
}
|
|
4857
5092
|
}
|
|
4858
5093
|
}
|
|
@@ -4879,8 +5114,16 @@ async function rango(options) {
|
|
|
4879
5114
|
const showBanner = resolvedOptions.banner ?? true;
|
|
4880
5115
|
const plugins = [];
|
|
4881
5116
|
const rangoAliases = getPackageAliases();
|
|
4882
|
-
const excludeDeps =
|
|
4883
|
-
|
|
5117
|
+
const excludeDeps = [
|
|
5118
|
+
...getExcludeDeps(),
|
|
5119
|
+
// The public browser entry re-exports the RSDW browser client.
|
|
5120
|
+
// Excluding both keeps Vite from freezing the unpatched bundle into
|
|
5121
|
+
// .vite/deps before our source transforms run.
|
|
5122
|
+
"@vitejs/plugin-rsc/browser",
|
|
5123
|
+
// Keep the browser RSDW client out of Vite's dep optimizer so our
|
|
5124
|
+
// cjs-to-esm transform can patch the real file.
|
|
5125
|
+
"@vitejs/plugin-rsc/vendor/react-server-dom/client.browser"
|
|
5126
|
+
];
|
|
4884
5127
|
const routerRef = { path: void 0 };
|
|
4885
5128
|
const prerenderEnabled = true;
|
|
4886
5129
|
if (preset === "cloudflare") {
|
|
@@ -4976,6 +5219,7 @@ async function rango(options) {
|
|
|
4976
5219
|
}
|
|
4977
5220
|
});
|
|
4978
5221
|
plugins.push(createVirtualEntriesPlugin(finalEntries));
|
|
5222
|
+
plugins.push(performanceTracksPlugin());
|
|
4979
5223
|
plugins.push(
|
|
4980
5224
|
rsc({
|
|
4981
5225
|
entries: finalEntries,
|
|
@@ -4984,153 +5228,122 @@ async function rango(options) {
|
|
|
4984
5228
|
);
|
|
4985
5229
|
plugins.push(clientRefDedup());
|
|
4986
5230
|
} else {
|
|
4987
|
-
|
|
4988
|
-
|
|
4989
|
-
|
|
4990
|
-
|
|
4991
|
-
|
|
4992
|
-
|
|
4993
|
-
|
|
4994
|
-
const
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
|
|
4998
|
-
|
|
4999
|
-
|
|
5000
|
-
|
|
5001
|
-
|
|
5002
|
-
routerRef.path = (abs.startsWith(root) ? "./" + abs.slice(root.length + 1) : abs).replaceAll("\\", "/");
|
|
5003
|
-
} else if (candidates.length > 1) {
|
|
5004
|
-
const list = candidates.map(
|
|
5005
|
-
(f) => " - " + (f.startsWith(root) ? f.slice(root.length + 1) : f)
|
|
5006
|
-
).join("\n");
|
|
5007
|
-
throw new Error(
|
|
5008
|
-
`[rsc-router] Multiple routers found. Specify \`router\` to choose one:
|
|
5009
|
-
${list}`
|
|
5010
|
-
);
|
|
5011
|
-
}
|
|
5231
|
+
plugins.push({
|
|
5232
|
+
name: "@rangojs/router:auto-discover",
|
|
5233
|
+
config(userConfig) {
|
|
5234
|
+
if (routerRef.path) return;
|
|
5235
|
+
const root = userConfig.root ? resolve9(process.cwd(), userConfig.root) : process.cwd();
|
|
5236
|
+
const candidates = findRouterFiles(root);
|
|
5237
|
+
if (candidates.length === 1) {
|
|
5238
|
+
const abs = candidates[0];
|
|
5239
|
+
routerRef.path = (abs.startsWith(root) ? "./" + abs.slice(root.length + 1) : abs).replaceAll("\\", "/");
|
|
5240
|
+
} else if (candidates.length > 1) {
|
|
5241
|
+
const list = candidates.map(
|
|
5242
|
+
(f) => " - " + (f.startsWith(root) ? f.slice(root.length + 1) : f)
|
|
5243
|
+
).join("\n");
|
|
5244
|
+
throw new Error(`[rsc-router] Multiple routers found:
|
|
5245
|
+
${list}`);
|
|
5012
5246
|
}
|
|
5013
|
-
}
|
|
5014
|
-
}
|
|
5015
|
-
const
|
|
5016
|
-
|
|
5017
|
-
|
|
5018
|
-
|
|
5019
|
-
|
|
5020
|
-
|
|
5021
|
-
|
|
5022
|
-
|
|
5023
|
-
|
|
5024
|
-
|
|
5025
|
-
|
|
5026
|
-
|
|
5027
|
-
|
|
5028
|
-
|
|
5029
|
-
|
|
5030
|
-
|
|
5031
|
-
|
|
5032
|
-
|
|
5033
|
-
|
|
5034
|
-
|
|
5035
|
-
|
|
5036
|
-
|
|
5037
|
-
|
|
5038
|
-
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
resolve: {
|
|
5044
|
-
alias: rangoAliases
|
|
5045
|
-
},
|
|
5046
|
-
environments: {
|
|
5047
|
-
client: {
|
|
5048
|
-
build: {
|
|
5049
|
-
rollupOptions: {
|
|
5050
|
-
output: {
|
|
5051
|
-
manualChunks: getManualChunks
|
|
5052
|
-
}
|
|
5053
|
-
}
|
|
5054
|
-
},
|
|
5055
|
-
// Always exclude rsc-router modules, conditionally add virtual entry
|
|
5056
|
-
optimizeDeps: {
|
|
5057
|
-
// Pre-bundle React and rsc-html-stream to prevent late discovery
|
|
5058
|
-
// triggering ERR_OUTDATED_OPTIMIZED_DEP on cold starts
|
|
5059
|
-
include: [
|
|
5060
|
-
"react",
|
|
5061
|
-
"react-dom",
|
|
5062
|
-
"react/jsx-runtime",
|
|
5063
|
-
"react/jsx-dev-runtime",
|
|
5064
|
-
"rsc-html-stream/client"
|
|
5065
|
-
],
|
|
5066
|
-
exclude: excludeDeps,
|
|
5067
|
-
esbuildOptions: sharedEsbuildOptions,
|
|
5068
|
-
...useVirtualClient && {
|
|
5069
|
-
// Tell Vite to scan the virtual entry for dependencies
|
|
5070
|
-
entries: [VIRTUAL_IDS.browser]
|
|
5071
|
-
}
|
|
5072
|
-
}
|
|
5073
|
-
},
|
|
5074
|
-
...useVirtualSSR && {
|
|
5075
|
-
ssr: {
|
|
5076
|
-
optimizeDeps: {
|
|
5077
|
-
entries: [VIRTUAL_IDS.ssr],
|
|
5078
|
-
// Pre-bundle all SSR deps to prevent late discovery triggering ERR_OUTDATED_OPTIMIZED_DEP
|
|
5079
|
-
include: [
|
|
5080
|
-
"react",
|
|
5081
|
-
"react-dom",
|
|
5082
|
-
"react-dom/server.edge",
|
|
5083
|
-
"react-dom/static.edge",
|
|
5084
|
-
"react/jsx-runtime",
|
|
5085
|
-
"react/jsx-dev-runtime",
|
|
5086
|
-
"@vitejs/plugin-rsc/vendor/react-server-dom/client.edge"
|
|
5087
|
-
],
|
|
5088
|
-
exclude: excludeDeps,
|
|
5089
|
-
esbuildOptions: sharedEsbuildOptions
|
|
5247
|
+
}
|
|
5248
|
+
});
|
|
5249
|
+
const finalEntries = {
|
|
5250
|
+
client: VIRTUAL_IDS.browser,
|
|
5251
|
+
ssr: VIRTUAL_IDS.ssr,
|
|
5252
|
+
rsc: VIRTUAL_IDS.rsc
|
|
5253
|
+
};
|
|
5254
|
+
const { default: rsc } = await import("@vitejs/plugin-rsc");
|
|
5255
|
+
let hasWarnedDuplicate = false;
|
|
5256
|
+
plugins.push({
|
|
5257
|
+
name: "@rangojs/router:rsc-integration",
|
|
5258
|
+
enforce: "pre",
|
|
5259
|
+
config() {
|
|
5260
|
+
return {
|
|
5261
|
+
optimizeDeps: {
|
|
5262
|
+
exclude: excludeDeps,
|
|
5263
|
+
esbuildOptions: sharedEsbuildOptions
|
|
5264
|
+
},
|
|
5265
|
+
build: {
|
|
5266
|
+
rollupOptions: { onwarn }
|
|
5267
|
+
},
|
|
5268
|
+
resolve: {
|
|
5269
|
+
alias: rangoAliases
|
|
5270
|
+
},
|
|
5271
|
+
environments: {
|
|
5272
|
+
client: {
|
|
5273
|
+
build: {
|
|
5274
|
+
rollupOptions: {
|
|
5275
|
+
output: {
|
|
5276
|
+
manualChunks: getManualChunks
|
|
5090
5277
|
}
|
|
5091
5278
|
}
|
|
5092
5279
|
},
|
|
5093
|
-
|
|
5094
|
-
|
|
5095
|
-
|
|
5096
|
-
|
|
5097
|
-
|
|
5098
|
-
|
|
5099
|
-
|
|
5100
|
-
|
|
5101
|
-
|
|
5102
|
-
|
|
5103
|
-
|
|
5104
|
-
|
|
5105
|
-
|
|
5106
|
-
|
|
5280
|
+
optimizeDeps: {
|
|
5281
|
+
include: [
|
|
5282
|
+
"react",
|
|
5283
|
+
"react-dom",
|
|
5284
|
+
"react/jsx-runtime",
|
|
5285
|
+
"react/jsx-dev-runtime",
|
|
5286
|
+
"rsc-html-stream/client"
|
|
5287
|
+
],
|
|
5288
|
+
exclude: excludeDeps,
|
|
5289
|
+
esbuildOptions: sharedEsbuildOptions,
|
|
5290
|
+
entries: [VIRTUAL_IDS.browser]
|
|
5291
|
+
}
|
|
5292
|
+
},
|
|
5293
|
+
ssr: {
|
|
5294
|
+
optimizeDeps: {
|
|
5295
|
+
entries: [VIRTUAL_IDS.ssr],
|
|
5296
|
+
include: [
|
|
5297
|
+
"react",
|
|
5298
|
+
"react-dom",
|
|
5299
|
+
"react-dom/server.edge",
|
|
5300
|
+
"react-dom/static.edge",
|
|
5301
|
+
"react/jsx-runtime",
|
|
5302
|
+
"react/jsx-dev-runtime",
|
|
5303
|
+
"@vitejs/plugin-rsc/vendor/react-server-dom/client.edge"
|
|
5304
|
+
],
|
|
5305
|
+
exclude: excludeDeps,
|
|
5306
|
+
esbuildOptions: sharedEsbuildOptions
|
|
5307
|
+
}
|
|
5308
|
+
},
|
|
5309
|
+
rsc: {
|
|
5310
|
+
optimizeDeps: {
|
|
5311
|
+
entries: [VIRTUAL_IDS.rsc],
|
|
5312
|
+
include: [
|
|
5313
|
+
"react",
|
|
5314
|
+
"react/jsx-runtime",
|
|
5315
|
+
"react/jsx-dev-runtime",
|
|
5316
|
+
"@vitejs/plugin-rsc/vendor/react-server-dom/server.edge"
|
|
5317
|
+
],
|
|
5318
|
+
esbuildOptions: sharedEsbuildOptions
|
|
5107
5319
|
}
|
|
5108
5320
|
}
|
|
5109
|
-
};
|
|
5110
|
-
},
|
|
5111
|
-
configResolved(config) {
|
|
5112
|
-
if (showBanner) {
|
|
5113
|
-
const mode = config.command === "serve" ? process.argv.includes("preview") ? "preview" : "dev" : "build";
|
|
5114
|
-
printBanner(mode, "node", rangoVersion);
|
|
5115
|
-
}
|
|
5116
|
-
const rscMinimalCount = config.plugins.filter(
|
|
5117
|
-
(p) => p.name === "rsc:minimal"
|
|
5118
|
-
).length;
|
|
5119
|
-
if (rscMinimalCount > 1 && !hasWarnedDuplicate) {
|
|
5120
|
-
hasWarnedDuplicate = true;
|
|
5121
|
-
console.warn(
|
|
5122
|
-
"[rsc-router] Duplicate @vitejs/plugin-rsc detected. Remove rsc() from your config or use rango({ rsc: false }) for manual configuration."
|
|
5123
|
-
);
|
|
5124
5321
|
}
|
|
5322
|
+
};
|
|
5323
|
+
},
|
|
5324
|
+
configResolved(config) {
|
|
5325
|
+
if (showBanner) {
|
|
5326
|
+
const mode = config.command === "serve" ? process.argv.includes("preview") ? "preview" : "dev" : "build";
|
|
5327
|
+
printBanner(mode, "node", rangoVersion);
|
|
5125
5328
|
}
|
|
5126
|
-
|
|
5127
|
-
|
|
5128
|
-
|
|
5129
|
-
|
|
5130
|
-
|
|
5131
|
-
|
|
5132
|
-
|
|
5133
|
-
|
|
5329
|
+
const rscMinimalCount = config.plugins.filter(
|
|
5330
|
+
(p) => p.name === "rsc:minimal"
|
|
5331
|
+
).length;
|
|
5332
|
+
if (rscMinimalCount > 1 && !hasWarnedDuplicate) {
|
|
5333
|
+
hasWarnedDuplicate = true;
|
|
5334
|
+
console.warn(
|
|
5335
|
+
"[rsc-router] Duplicate @vitejs/plugin-rsc detected. Remove rsc() from your vite config \u2014 rango() includes it automatically."
|
|
5336
|
+
);
|
|
5337
|
+
}
|
|
5338
|
+
}
|
|
5339
|
+
});
|
|
5340
|
+
plugins.push(createVirtualEntriesPlugin(finalEntries, routerRef));
|
|
5341
|
+
plugins.push(performanceTracksPlugin());
|
|
5342
|
+
plugins.push(
|
|
5343
|
+
rsc({
|
|
5344
|
+
entries: finalEntries
|
|
5345
|
+
})
|
|
5346
|
+
);
|
|
5134
5347
|
plugins.push(clientRefDedup());
|
|
5135
5348
|
}
|
|
5136
5349
|
plugins.push({
|
|
@@ -5158,22 +5371,102 @@ ${list}`
|
|
|
5158
5371
|
plugins.push(createVersionPlugin());
|
|
5159
5372
|
const discoveryEntryPath = preset !== "cloudflare" ? routerRef.path : void 0;
|
|
5160
5373
|
const discoveryRouterRef = preset !== "cloudflare" ? routerRef : void 0;
|
|
5161
|
-
|
|
5162
|
-
|
|
5163
|
-
plugins.push(createVersionInjectorPlugin(injectorEntryPath));
|
|
5374
|
+
if (preset === "cloudflare") {
|
|
5375
|
+
plugins.push(createVersionInjectorPlugin(void 0));
|
|
5164
5376
|
}
|
|
5165
5377
|
plugins.push(createCjsToEsmPlugin());
|
|
5166
5378
|
plugins.push(
|
|
5167
5379
|
createRouterDiscoveryPlugin(discoveryEntryPath, {
|
|
5168
5380
|
routerPathRef: discoveryRouterRef,
|
|
5169
5381
|
enableBuildPrerender: prerenderEnabled,
|
|
5170
|
-
|
|
5171
|
-
|
|
5172
|
-
exclude: resolvedOptions.exclude
|
|
5382
|
+
buildEnv: options?.buildEnv,
|
|
5383
|
+
preset
|
|
5173
5384
|
})
|
|
5174
5385
|
);
|
|
5175
5386
|
return plugins;
|
|
5176
5387
|
}
|
|
5388
|
+
|
|
5389
|
+
// src/vite/plugins/refresh-cmd.ts
|
|
5390
|
+
function poke() {
|
|
5391
|
+
return {
|
|
5392
|
+
name: "vite-plugin-poke",
|
|
5393
|
+
apply: "serve",
|
|
5394
|
+
configureServer(server) {
|
|
5395
|
+
const stdin = process.stdin;
|
|
5396
|
+
const debug = process.env.RANGO_POKE_DEBUG === "1";
|
|
5397
|
+
const triggerReload = (source) => {
|
|
5398
|
+
server.hot.send({ type: "full-reload", path: "*" });
|
|
5399
|
+
server.config.logger.info(` browser reload (${source})`, {
|
|
5400
|
+
timestamp: true
|
|
5401
|
+
});
|
|
5402
|
+
};
|
|
5403
|
+
const toBuffer = (chunk) => {
|
|
5404
|
+
return typeof chunk === "string" ? Buffer.from(chunk, "utf8") : chunk;
|
|
5405
|
+
};
|
|
5406
|
+
const formatChunk = (chunk) => {
|
|
5407
|
+
const data = toBuffer(chunk);
|
|
5408
|
+
const hex = Array.from(data).map((byte) => `0x${byte.toString(16).padStart(2, "0")}`).join(" ");
|
|
5409
|
+
const ascii = Array.from(data).map((byte) => {
|
|
5410
|
+
if (byte >= 32 && byte <= 126) return String.fromCharCode(byte);
|
|
5411
|
+
if (byte === 10) return "\\n";
|
|
5412
|
+
if (byte === 13) return "\\r";
|
|
5413
|
+
if (byte === 9) return "\\t";
|
|
5414
|
+
return ".";
|
|
5415
|
+
}).join("");
|
|
5416
|
+
return `len=${data.length} hex=[${hex}] ascii="${ascii}"`;
|
|
5417
|
+
};
|
|
5418
|
+
const readCtrlR = (chunk) => {
|
|
5419
|
+
const data = typeof chunk === "string" ? Buffer.from(chunk, "utf8") : chunk;
|
|
5420
|
+
return data.length === 1 && data[0] === 18;
|
|
5421
|
+
};
|
|
5422
|
+
const readSubmittedCommands = (chunk) => {
|
|
5423
|
+
const text = toBuffer(chunk).toString("utf8").replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
5424
|
+
if (!text.includes("\n")) return [];
|
|
5425
|
+
const lines = text.split("\n");
|
|
5426
|
+
lines.pop();
|
|
5427
|
+
return lines;
|
|
5428
|
+
};
|
|
5429
|
+
if (debug) {
|
|
5430
|
+
server.config.logger.info(
|
|
5431
|
+
` poke debug enabled (isTTY=${stdin.isTTY ? "yes" : "no"}, isRaw=${stdin.isTTY ? stdin.isRaw ? "yes" : "no" : "n/a"})`,
|
|
5432
|
+
{ timestamp: true }
|
|
5433
|
+
);
|
|
5434
|
+
}
|
|
5435
|
+
if (stdin.isTTY) {
|
|
5436
|
+
server.config.logger.info(
|
|
5437
|
+
" poke ready: press e + enter to reload browser (ctrl+r also works when available)",
|
|
5438
|
+
{ timestamp: true }
|
|
5439
|
+
);
|
|
5440
|
+
}
|
|
5441
|
+
const onData = (data) => {
|
|
5442
|
+
if (debug) {
|
|
5443
|
+
server.config.logger.info(` poke stdin ${formatChunk(data)}`, {
|
|
5444
|
+
timestamp: true
|
|
5445
|
+
});
|
|
5446
|
+
}
|
|
5447
|
+
if (readCtrlR(data)) {
|
|
5448
|
+
triggerReload("ctrl+r");
|
|
5449
|
+
return;
|
|
5450
|
+
}
|
|
5451
|
+
for (const command of readSubmittedCommands(data)) {
|
|
5452
|
+
if (command === "e") {
|
|
5453
|
+
triggerReload("e+enter");
|
|
5454
|
+
return;
|
|
5455
|
+
}
|
|
5456
|
+
if (command === "\x1Br") {
|
|
5457
|
+
triggerReload("option+r+enter");
|
|
5458
|
+
return;
|
|
5459
|
+
}
|
|
5460
|
+
}
|
|
5461
|
+
};
|
|
5462
|
+
stdin.on("data", onData);
|
|
5463
|
+
server.httpServer?.on("close", () => {
|
|
5464
|
+
stdin.off("data", onData);
|
|
5465
|
+
});
|
|
5466
|
+
}
|
|
5467
|
+
};
|
|
5468
|
+
}
|
|
5177
5469
|
export {
|
|
5470
|
+
poke,
|
|
5178
5471
|
rango
|
|
5179
5472
|
};
|