@rangojs/router 0.0.0-experimental.6fe6a3cc → 0.0.0-experimental.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -18
- package/dist/bin/rango.js +138 -50
- package/dist/vite/index.js +839 -429
- package/package.json +2 -2
- package/skills/cache-guide/SKILL.md +32 -0
- package/skills/caching/SKILL.md +45 -4
- package/skills/links/SKILL.md +3 -1
- package/skills/loader/SKILL.md +53 -43
- package/skills/middleware/SKILL.md +2 -0
- package/skills/parallel/SKILL.md +126 -0
- package/skills/prerender/SKILL.md +110 -68
- package/skills/route/SKILL.md +31 -0
- package/skills/router-setup/SKILL.md +87 -2
- package/skills/typesafety/SKILL.md +10 -0
- package/src/__internal.ts +1 -1
- package/src/browser/app-version.ts +14 -0
- package/src/browser/event-controller.ts +5 -0
- package/src/browser/navigation-bridge.ts +17 -6
- package/src/browser/navigation-client.ts +115 -58
- package/src/browser/navigation-store.ts +43 -8
- package/src/browser/navigation-transaction.ts +11 -9
- package/src/browser/partial-update.ts +76 -13
- package/src/browser/prefetch/cache.ts +57 -5
- package/src/browser/prefetch/fetch.ts +38 -23
- package/src/browser/prefetch/queue.ts +92 -20
- package/src/browser/prefetch/resource-ready.ts +77 -0
- package/src/browser/react/Link.tsx +53 -9
- 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 +134 -59
- package/src/browser/scroll-restoration.ts +30 -15
- package/src/browser/segment-reconciler.ts +6 -1
- package/src/browser/server-action-bridge.ts +8 -6
- package/src/browser/types.ts +36 -5
- package/src/build/generate-manifest.ts +6 -6
- package/src/build/generate-route-types.ts +3 -0
- 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.tsx +2 -56
- package/src/context-var.ts +72 -2
- package/src/debug.ts +2 -2
- package/src/handle.ts +40 -0
- package/src/index.rsc.ts +3 -1
- package/src/index.ts +12 -0
- 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 -0
- 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 +79 -23
- package/src/router/intercept-resolution.ts +11 -4
- package/src/router/lazy-includes.ts +4 -1
- package/src/router/loader-resolution.ts +156 -21
- package/src/router/logging.ts +5 -2
- package/src/router/manifest.ts +9 -3
- package/src/router/match-api.ts +124 -189
- package/src/router/match-middleware/background-revalidation.ts +30 -2
- package/src/router/match-middleware/cache-lookup.ts +92 -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 +60 -5
- package/src/router/match-result.ts +22 -6
- package/src/router/metrics.ts +6 -1
- package/src/router/middleware-types.ts +6 -8
- package/src/router/middleware.ts +4 -6
- package/src/router/navigation-snapshot.ts +182 -0
- package/src/router/prerender-match.ts +110 -10
- package/src/router/preview-match.ts +30 -102
- package/src/router/request-classification.ts +310 -0
- package/src/router/route-snapshot.ts +245 -0
- package/src/router/router-context.ts +5 -1
- package/src/router/router-interfaces.ts +36 -4
- package/src/router/router-options.ts +37 -11
- package/src/router/segment-resolution/fresh.ts +193 -20
- package/src/router/segment-resolution/helpers.ts +29 -24
- package/src/router/segment-resolution/loader-cache.ts +1 -0
- package/src/router/segment-resolution/revalidation.ts +429 -296
- package/src/router/types.ts +1 -0
- package/src/router.ts +59 -6
- package/src/rsc/handler.ts +472 -372
- package/src/rsc/loader-fetch.ts +23 -3
- package/src/rsc/manifest-init.ts +5 -1
- package/src/rsc/progressive-enhancement.ts +14 -2
- package/src/rsc/rsc-rendering.ts +10 -1
- package/src/rsc/server-action.ts +8 -0
- package/src/rsc/ssr-setup.ts +2 -2
- package/src/rsc/types.ts +9 -1
- package/src/segment-system.tsx +140 -4
- package/src/server/context.ts +140 -14
- package/src/server/handle-store.ts +19 -0
- package/src/server/loader-registry.ts +9 -8
- package/src/server/request-context.ts +185 -19
- package/src/ssr/index.tsx +4 -0
- package/src/static-handler.ts +18 -6
- package/src/types/cache-types.ts +4 -4
- package/src/types/handler-context.ts +137 -33
- package/src/types/loader-types.ts +36 -9
- package/src/types/route-entry.ts +8 -1
- package/src/types/segments.ts +2 -0
- 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 +77 -5
- package/src/vite/discovery/bundle-postprocess.ts +30 -33
- package/src/vite/discovery/discover-routers.ts +5 -1
- package/src/vite/discovery/prerender-collection.ts +128 -74
- package/src/vite/discovery/state.ts +13 -6
- package/src/vite/index.ts +4 -0
- package/src/vite/plugin-types.ts +51 -79
- package/src/vite/plugins/expose-action-id.ts +1 -3
- package/src/vite/plugins/expose-id-utils.ts +12 -0
- package/src/vite/plugins/expose-ids/handler-transform.ts +30 -0
- package/src/vite/plugins/expose-internal-ids.ts +257 -40
- package/src/vite/plugins/performance-tracks.ts +88 -0
- package/src/vite/plugins/refresh-cmd.ts +88 -26
- 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/dist/vite/index.js
CHANGED
|
@@ -18,6 +18,9 @@ function hashId(filePath, exportName) {
|
|
|
18
18
|
const hash = crypto.createHash("sha256").update(input).digest("hex");
|
|
19
19
|
return `${hash.slice(0, 8)}#${exportName}`;
|
|
20
20
|
}
|
|
21
|
+
function makeStubId(filePath, exportName, isBuild) {
|
|
22
|
+
return isBuild ? hashId(filePath, exportName) : `${filePath}#${exportName}`;
|
|
23
|
+
}
|
|
21
24
|
function hashInlineId(filePath, lineNumber, index) {
|
|
22
25
|
const input = index !== void 0 && index > 0 ? `${filePath}:${lineNumber}:${index}` : `${filePath}:${lineNumber}`;
|
|
23
26
|
return crypto.createHash("sha256").update(input).digest("hex").slice(0, 8);
|
|
@@ -292,7 +295,7 @@ function exposeActionId() {
|
|
|
292
295
|
}
|
|
293
296
|
if (!rscPluginApi) {
|
|
294
297
|
throw new Error(
|
|
295
|
-
"[rsc-router] Could not find @vitejs/plugin-rsc. @rangojs/router requires the Vite RSC plugin
|
|
298
|
+
"[rsc-router] Could not find @vitejs/plugin-rsc. @rangojs/router requires the Vite RSC plugin, which is included automatically by rango()."
|
|
296
299
|
);
|
|
297
300
|
}
|
|
298
301
|
if (!isBuild) return;
|
|
@@ -910,9 +913,7 @@ function generateWholeFileStubs(cfg, bindings, code, filePath, isBuild) {
|
|
|
910
913
|
});
|
|
911
914
|
return { code: stubs.join("\n") + "\n", map: null };
|
|
912
915
|
}
|
|
913
|
-
function
|
|
914
|
-
if (bindings.length === 0) return null;
|
|
915
|
-
const s = new MagicString2(code);
|
|
916
|
+
function stubHandlerExprs(cfg, bindings, s, filePath, isBuild) {
|
|
916
917
|
let hasChanges = false;
|
|
917
918
|
for (const binding of bindings) {
|
|
918
919
|
const exportName = binding.exportNames[0];
|
|
@@ -924,15 +925,7 @@ function generateExprStubs(cfg, bindings, code, filePath, sourceId, isBuild) {
|
|
|
924
925
|
);
|
|
925
926
|
hasChanges = true;
|
|
926
927
|
}
|
|
927
|
-
|
|
928
|
-
return {
|
|
929
|
-
code: s.toString(),
|
|
930
|
-
map: s.generateMap({
|
|
931
|
-
source: sourceId,
|
|
932
|
-
includeContent: true,
|
|
933
|
-
hires: "boundary"
|
|
934
|
-
})
|
|
935
|
-
};
|
|
928
|
+
return hasChanges;
|
|
936
929
|
}
|
|
937
930
|
function transformHandlerIds(cfg, bindings, s, filePath, isBuild) {
|
|
938
931
|
let hasChanges = false;
|
|
@@ -1269,15 +1262,6 @@ ${lazyImports.join(",\n")}
|
|
|
1269
1262
|
isBuild
|
|
1270
1263
|
);
|
|
1271
1264
|
if (wholeFile) return wholeFile;
|
|
1272
|
-
const exprStubs = generateExprStubs(
|
|
1273
|
-
PRERENDER_CONFIG,
|
|
1274
|
-
bindings,
|
|
1275
|
-
code,
|
|
1276
|
-
filePath,
|
|
1277
|
-
id,
|
|
1278
|
-
isBuild
|
|
1279
|
-
);
|
|
1280
|
-
if (exprStubs) return exprStubs;
|
|
1281
1265
|
}
|
|
1282
1266
|
if (hasPrerenderHandlerCode && isRscEnv && isBuild) {
|
|
1283
1267
|
const fnNames = getFnNames(PRERENDER_CONFIG.fnName);
|
|
@@ -1329,15 +1313,134 @@ ${lazyImports.join(",\n")}
|
|
|
1329
1313
|
isBuild
|
|
1330
1314
|
);
|
|
1331
1315
|
if (wholeFile) return wholeFile;
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1316
|
+
}
|
|
1317
|
+
if (!isRscEnv && (hasPrerenderHandlerCode || hasStaticHandlerCode)) {
|
|
1318
|
+
const prerenderFnNames = hasPrerenderHandlerCode ? getFnNames(PRERENDER_CONFIG.fnName) : [];
|
|
1319
|
+
const staticFnNames = hasStaticHandlerCode ? getFnNames(STATIC_CONFIG.fnName) : [];
|
|
1320
|
+
const loaderFnNames = hasLoaderCode ? getFnNames("createLoader") : [];
|
|
1321
|
+
const handleFnNames = hasHandleCode ? getFnNames("createHandle") : [];
|
|
1322
|
+
const lsFnNames = hasLocationStateCode ? getFnNames("createLocationState") : [];
|
|
1323
|
+
const allBindings = [];
|
|
1324
|
+
for (const fnNames of [
|
|
1325
|
+
prerenderFnNames,
|
|
1326
|
+
staticFnNames,
|
|
1327
|
+
loaderFnNames,
|
|
1328
|
+
handleFnNames,
|
|
1329
|
+
lsFnNames
|
|
1330
|
+
]) {
|
|
1331
|
+
if (fnNames.length > 0) {
|
|
1332
|
+
allBindings.push(...getBindings(code, fnNames));
|
|
1333
|
+
}
|
|
1334
|
+
}
|
|
1335
|
+
let canStubWholeFile = allBindings.length > 0 && isExportOnlyFile(code, allBindings);
|
|
1336
|
+
if (canStubWholeFile && (handleFnNames.length > 0 || lsFnNames.length > 0)) {
|
|
1337
|
+
const exportedLocals = new Set(allBindings.map((b) => b.localName));
|
|
1338
|
+
const strippedBindings = [];
|
|
1339
|
+
const localDeclPattern = /(?:^|;|\n)\s*(?:const|let|var|function)\s+(\w+)/g;
|
|
1340
|
+
let declMatch;
|
|
1341
|
+
while ((declMatch = localDeclPattern.exec(code)) !== null) {
|
|
1342
|
+
const name = declMatch[1];
|
|
1343
|
+
if (!exportedLocals.has(name) && !/^_c\d*$/.test(name)) {
|
|
1344
|
+
strippedBindings.push(name);
|
|
1345
|
+
}
|
|
1346
|
+
}
|
|
1347
|
+
const importPattern = /import\s*\{([^}]*)\}\s*from\s*["'](?!@rangojs\/router)[^"']*["']/g;
|
|
1348
|
+
let importMatch;
|
|
1349
|
+
while ((importMatch = importPattern.exec(code)) !== null) {
|
|
1350
|
+
for (const spec of importMatch[1].split(",")) {
|
|
1351
|
+
const m = spec.trim().match(/^[A-Za-z_$][\w$]*(?:\s+as\s+([A-Za-z_$][\w$]*))?$/);
|
|
1352
|
+
if (m) strippedBindings.push(m[1] || m[0].trim().split(/\s/)[0]);
|
|
1353
|
+
}
|
|
1354
|
+
}
|
|
1355
|
+
const defaultImportPattern = /import\s+([A-Za-z_$][\w$]*)\s+from\s*["'](?!@rangojs\/router)[^"']*["']/g;
|
|
1356
|
+
while ((importMatch = defaultImportPattern.exec(code)) !== null) {
|
|
1357
|
+
strippedBindings.push(importMatch[1]);
|
|
1358
|
+
}
|
|
1359
|
+
const nsImportPattern = /import\s+\*\s+as\s+([A-Za-z_$][\w$]*)\s+from\s*["'](?!@rangojs\/router)[^"']*["']/g;
|
|
1360
|
+
while ((importMatch = nsImportPattern.exec(code)) !== null) {
|
|
1361
|
+
strippedBindings.push(importMatch[1]);
|
|
1362
|
+
}
|
|
1363
|
+
if (strippedBindings.length > 0) {
|
|
1364
|
+
const preservedBindings = allBindings.filter((b) => {
|
|
1365
|
+
const fc = code.slice(b.callExprStart, b.callOpenParenPos + 1);
|
|
1366
|
+
return handleFnNames.some((n) => fc.includes(n)) || lsFnNames.some((n) => fc.includes(n));
|
|
1367
|
+
});
|
|
1368
|
+
const strippedRe = new RegExp(
|
|
1369
|
+
`\\b(?:${strippedBindings.join("|")})\\b`
|
|
1370
|
+
);
|
|
1371
|
+
canStubWholeFile = !preservedBindings.some((b) => {
|
|
1372
|
+
const expr = code.slice(b.callExprStart, b.callCloseParenPos + 1);
|
|
1373
|
+
return strippedRe.test(expr);
|
|
1374
|
+
});
|
|
1375
|
+
}
|
|
1376
|
+
}
|
|
1377
|
+
if (canStubWholeFile) {
|
|
1378
|
+
const lines = [];
|
|
1379
|
+
const neededImports = [];
|
|
1380
|
+
if (handleFnNames.length > 0) neededImports.push("createHandle");
|
|
1381
|
+
if (lsFnNames.length > 0) neededImports.push("createLocationState");
|
|
1382
|
+
if (neededImports.length > 0) {
|
|
1383
|
+
lines.push(
|
|
1384
|
+
`import { ${neededImports.join(", ")} } from "@rangojs/router";`
|
|
1385
|
+
);
|
|
1386
|
+
}
|
|
1387
|
+
for (const binding of allBindings) {
|
|
1388
|
+
const fnCall = code.slice(
|
|
1389
|
+
binding.callExprStart,
|
|
1390
|
+
binding.callOpenParenPos + 1
|
|
1391
|
+
);
|
|
1392
|
+
const isHandle = handleFnNames.some((n) => fnCall.includes(n));
|
|
1393
|
+
const isLocationState = lsFnNames.some((n) => fnCall.includes(n));
|
|
1394
|
+
const primaryName = binding.exportNames[0];
|
|
1395
|
+
const stubId = makeStubId(filePath, primaryName, isBuild);
|
|
1396
|
+
if (isHandle || isLocationState) {
|
|
1397
|
+
const rawArgs = code.slice(binding.callOpenParenPos + 1, binding.callCloseParenPos).replace(/\b_c\d*\s*=\s*/g, "");
|
|
1398
|
+
const canonicalName = isHandle ? "createHandle" : "createLocationState";
|
|
1399
|
+
const activeFnNames = isHandle ? handleFnNames : lsFnNames;
|
|
1400
|
+
let rawCallee = code.slice(
|
|
1401
|
+
binding.callExprStart,
|
|
1402
|
+
binding.callOpenParenPos
|
|
1403
|
+
);
|
|
1404
|
+
for (const alias of activeFnNames) {
|
|
1405
|
+
if (alias !== canonicalName && rawCallee.startsWith(alias)) {
|
|
1406
|
+
rawCallee = canonicalName + rawCallee.slice(alias.length);
|
|
1407
|
+
break;
|
|
1408
|
+
}
|
|
1409
|
+
}
|
|
1410
|
+
if (isHandle) {
|
|
1411
|
+
const idParam = binding.argCount === 0 ? `undefined, "${stubId}"` : `, "${stubId}"`;
|
|
1412
|
+
lines.push(
|
|
1413
|
+
`export const ${primaryName} = ${rawCallee}(${rawArgs}${idParam});`
|
|
1414
|
+
);
|
|
1415
|
+
lines.push(`${primaryName}.$$id = "${stubId}";`);
|
|
1416
|
+
} else {
|
|
1417
|
+
lines.push(
|
|
1418
|
+
`export const ${primaryName} = ${rawCallee}(${rawArgs});`
|
|
1419
|
+
);
|
|
1420
|
+
lines.push(
|
|
1421
|
+
`${primaryName}.__rsc_ls_key = "__rsc_ls_${stubId}";`
|
|
1422
|
+
);
|
|
1423
|
+
}
|
|
1424
|
+
for (const name of binding.exportNames.slice(1)) {
|
|
1425
|
+
lines.push(`export const ${name} = ${primaryName};`);
|
|
1426
|
+
}
|
|
1427
|
+
} else {
|
|
1428
|
+
let brand = "loader";
|
|
1429
|
+
if (prerenderFnNames.some((n) => fnCall.includes(n))) {
|
|
1430
|
+
brand = PRERENDER_CONFIG.brand;
|
|
1431
|
+
} else if (staticFnNames.some((n) => fnCall.includes(n))) {
|
|
1432
|
+
brand = STATIC_CONFIG.brand;
|
|
1433
|
+
}
|
|
1434
|
+
lines.push(
|
|
1435
|
+
`export const ${primaryName} = { __brand: "${brand}", $$id: "${stubId}" };`
|
|
1436
|
+
);
|
|
1437
|
+
for (const name of binding.exportNames.slice(1)) {
|
|
1438
|
+
lines.push(`export const ${name} = ${primaryName};`);
|
|
1439
|
+
}
|
|
1440
|
+
}
|
|
1441
|
+
}
|
|
1442
|
+
return { code: lines.join("\n") + "\n", map: null };
|
|
1443
|
+
}
|
|
1341
1444
|
}
|
|
1342
1445
|
if (hasStaticHandlerCode && isRscEnv && isBuild) {
|
|
1343
1446
|
const fnNames = getFnNames(STATIC_CONFIG.fnName);
|
|
@@ -1372,25 +1475,41 @@ ${lazyImports.join(",\n")}
|
|
|
1372
1475
|
isBuild
|
|
1373
1476
|
) || changed;
|
|
1374
1477
|
}
|
|
1375
|
-
if (hasPrerenderHandlerCode
|
|
1478
|
+
if (hasPrerenderHandlerCode) {
|
|
1376
1479
|
const fnNames = getFnNames(PRERENDER_CONFIG.fnName);
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1480
|
+
const bindings = getBindings(code, fnNames);
|
|
1481
|
+
if (isRscEnv) {
|
|
1482
|
+
changed = transformHandlerIds(
|
|
1483
|
+
PRERENDER_CONFIG,
|
|
1484
|
+
bindings,
|
|
1485
|
+
s,
|
|
1486
|
+
filePath,
|
|
1487
|
+
isBuild
|
|
1488
|
+
) || changed;
|
|
1489
|
+
} else {
|
|
1490
|
+
changed = stubHandlerExprs(
|
|
1491
|
+
PRERENDER_CONFIG,
|
|
1492
|
+
bindings,
|
|
1493
|
+
s,
|
|
1494
|
+
filePath,
|
|
1495
|
+
isBuild
|
|
1496
|
+
) || changed;
|
|
1497
|
+
}
|
|
1384
1498
|
}
|
|
1385
|
-
if (hasStaticHandlerCode
|
|
1499
|
+
if (hasStaticHandlerCode) {
|
|
1386
1500
|
const fnNames = getFnNames(STATIC_CONFIG.fnName);
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1501
|
+
const bindings = getBindings(code, fnNames);
|
|
1502
|
+
if (isRscEnv) {
|
|
1503
|
+
changed = transformHandlerIds(
|
|
1504
|
+
STATIC_CONFIG,
|
|
1505
|
+
bindings,
|
|
1506
|
+
s,
|
|
1507
|
+
filePath,
|
|
1508
|
+
isBuild
|
|
1509
|
+
) || changed;
|
|
1510
|
+
} else {
|
|
1511
|
+
changed = stubHandlerExprs(STATIC_CONFIG, bindings, s, filePath, isBuild) || changed;
|
|
1512
|
+
}
|
|
1394
1513
|
}
|
|
1395
1514
|
if (!changed) return;
|
|
1396
1515
|
return {
|
|
@@ -1745,7 +1864,7 @@ import { resolve } from "node:path";
|
|
|
1745
1864
|
// package.json
|
|
1746
1865
|
var package_default = {
|
|
1747
1866
|
name: "@rangojs/router",
|
|
1748
|
-
version: "0.0.0-experimental.
|
|
1867
|
+
version: "0.0.0-experimental.70",
|
|
1749
1868
|
description: "Django-inspired RSC router with composable URL patterns",
|
|
1750
1869
|
keywords: [
|
|
1751
1870
|
"react",
|
|
@@ -1887,7 +2006,7 @@ var package_default = {
|
|
|
1887
2006
|
"test:unit:watch": "vitest"
|
|
1888
2007
|
},
|
|
1889
2008
|
dependencies: {
|
|
1890
|
-
"@vitejs/plugin-rsc": "^0.5.
|
|
2009
|
+
"@vitejs/plugin-rsc": "^0.5.19",
|
|
1891
2010
|
"magic-string": "^0.30.17",
|
|
1892
2011
|
picomatch: "^4.0.3",
|
|
1893
2012
|
"rsc-html-stream": "^0.0.7"
|
|
@@ -2095,31 +2214,7 @@ declare global {
|
|
|
2095
2214
|
}
|
|
2096
2215
|
|
|
2097
2216
|
// src/build/route-types/scan-filter.ts
|
|
2098
|
-
import { join, relative } from "node:path";
|
|
2099
2217
|
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
2218
|
|
|
2124
2219
|
// src/build/route-types/per-module-writer.ts
|
|
2125
2220
|
import ts4 from "typescript";
|
|
@@ -2341,7 +2436,7 @@ function buildRouteMapFromBlock(block, fullSource, filePath, visited, searchSche
|
|
|
2341
2436
|
}
|
|
2342
2437
|
return routeMap;
|
|
2343
2438
|
}
|
|
2344
|
-
function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagnosticsOut) {
|
|
2439
|
+
function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagnosticsOut, inlineBlock) {
|
|
2345
2440
|
visited = visited ?? /* @__PURE__ */ new Set();
|
|
2346
2441
|
const realPath = resolve2(filePath);
|
|
2347
2442
|
const key = variableName ? `${realPath}:${variableName}` : realPath;
|
|
@@ -2357,7 +2452,9 @@ function buildCombinedRouteMapWithSearch(filePath, variableName, visited, diagno
|
|
|
2357
2452
|
return { routes: {}, searchSchemas: {} };
|
|
2358
2453
|
}
|
|
2359
2454
|
let block;
|
|
2360
|
-
if (
|
|
2455
|
+
if (inlineBlock) {
|
|
2456
|
+
block = inlineBlock;
|
|
2457
|
+
} else if (variableName) {
|
|
2361
2458
|
const extracted = extractUrlsBlockForVariable(source, variableName);
|
|
2362
2459
|
if (!extracted) return { routes: {}, searchSchemas: {} };
|
|
2363
2460
|
block = extracted;
|
|
@@ -2386,7 +2483,7 @@ import {
|
|
|
2386
2483
|
readdirSync
|
|
2387
2484
|
} from "node:fs";
|
|
2388
2485
|
import {
|
|
2389
|
-
join
|
|
2486
|
+
join,
|
|
2390
2487
|
dirname as dirname2,
|
|
2391
2488
|
resolve as resolve3,
|
|
2392
2489
|
sep,
|
|
@@ -2406,7 +2503,7 @@ function countPublicRouteEntries(source) {
|
|
|
2406
2503
|
}
|
|
2407
2504
|
var ROUTER_CALL_PATTERN = /\bcreateRouter\s*[<(]/;
|
|
2408
2505
|
function isRoutableSourceFile(name) {
|
|
2409
|
-
return (name.endsWith(".ts") || name.endsWith(".tsx") || name.endsWith(".js") || name.endsWith(".jsx")) && !name.includes(".gen.");
|
|
2506
|
+
return (name.endsWith(".ts") || name.endsWith(".tsx") || name.endsWith(".js") || name.endsWith(".jsx")) && !name.includes(".gen.") && !name.includes(".test.") && !name.includes(".spec.");
|
|
2410
2507
|
}
|
|
2411
2508
|
function findRouterFilesRecursive(dir, filter, results) {
|
|
2412
2509
|
let entries;
|
|
@@ -2421,9 +2518,10 @@ function findRouterFilesRecursive(dir, filter, results) {
|
|
|
2421
2518
|
const childDirs = [];
|
|
2422
2519
|
const routerFilesInDir = [];
|
|
2423
2520
|
for (const entry of entries) {
|
|
2424
|
-
const fullPath =
|
|
2521
|
+
const fullPath = join(dir, entry.name);
|
|
2425
2522
|
if (entry.isDirectory()) {
|
|
2426
|
-
if (entry.name === "node_modules" || entry.name.startsWith("."))
|
|
2523
|
+
if (entry.name === "node_modules" || entry.name === "dist" || entry.name === "coverage" || entry.name === "__tests__" || entry.name === "__mocks__" || entry.name.startsWith("."))
|
|
2524
|
+
continue;
|
|
2427
2525
|
childDirs.push(fullPath);
|
|
2428
2526
|
continue;
|
|
2429
2527
|
}
|
|
@@ -2475,7 +2573,7 @@ Router root: ${conflict.ancestor}
|
|
|
2475
2573
|
Nested router: ${conflict.nested}
|
|
2476
2574
|
Move the nested router into a sibling directory or configure it as a separate app root.`;
|
|
2477
2575
|
}
|
|
2478
|
-
function
|
|
2576
|
+
function extractUrlsFromRouter(code) {
|
|
2479
2577
|
const sourceFile = ts5.createSourceFile(
|
|
2480
2578
|
"router.tsx",
|
|
2481
2579
|
code,
|
|
@@ -2489,24 +2587,70 @@ function extractUrlsVariableFromRouter(code) {
|
|
|
2489
2587
|
const callee = node.expression;
|
|
2490
2588
|
return ts5.isIdentifier(callee) && callee.text === "createRouter";
|
|
2491
2589
|
}
|
|
2590
|
+
function isInlineBuilder(node) {
|
|
2591
|
+
return ts5.isArrowFunction(node) || ts5.isFunctionExpression(node);
|
|
2592
|
+
}
|
|
2593
|
+
function isRoutesOnCreateRouter(node) {
|
|
2594
|
+
if (!ts5.isPropertyAccessExpression(node.expression) || node.expression.name.text !== "routes")
|
|
2595
|
+
return false;
|
|
2596
|
+
let inner = node.expression.expression;
|
|
2597
|
+
while (ts5.isCallExpression(inner) && ts5.isPropertyAccessExpression(inner.expression)) {
|
|
2598
|
+
inner = inner.expression.expression;
|
|
2599
|
+
}
|
|
2600
|
+
return isCreateRouterCall(inner);
|
|
2601
|
+
}
|
|
2492
2602
|
function visit(node) {
|
|
2493
2603
|
if (result) return;
|
|
2494
|
-
if (ts5.isCallExpression(node) &&
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
}
|
|
2499
|
-
|
|
2500
|
-
result = node.arguments[0].text;
|
|
2501
|
-
return;
|
|
2604
|
+
if (ts5.isCallExpression(node) && node.arguments.length >= 1 && isRoutesOnCreateRouter(node)) {
|
|
2605
|
+
const arg = node.arguments[0];
|
|
2606
|
+
if (ts5.isIdentifier(arg)) {
|
|
2607
|
+
result = { kind: "variable", name: arg.text };
|
|
2608
|
+
} else if (isInlineBuilder(arg)) {
|
|
2609
|
+
result = { kind: "inline", block: arg.getText(sourceFile) };
|
|
2502
2610
|
}
|
|
2611
|
+
return;
|
|
2503
2612
|
}
|
|
2504
2613
|
if (isCreateRouterCall(node)) {
|
|
2505
2614
|
const callExpr = node;
|
|
2506
|
-
for (const
|
|
2615
|
+
for (const callArg of callExpr.arguments) {
|
|
2616
|
+
if (ts5.isObjectLiteralExpression(callArg)) {
|
|
2617
|
+
for (const prop of callArg.properties) {
|
|
2618
|
+
if (ts5.isPropertyAssignment(prop) && ts5.isIdentifier(prop.name) && prop.name.text === "urls") {
|
|
2619
|
+
if (ts5.isIdentifier(prop.initializer)) {
|
|
2620
|
+
result = { kind: "variable", name: prop.initializer.text };
|
|
2621
|
+
} else if (isInlineBuilder(prop.initializer)) {
|
|
2622
|
+
result = {
|
|
2623
|
+
kind: "inline",
|
|
2624
|
+
block: prop.initializer.getText(sourceFile)
|
|
2625
|
+
};
|
|
2626
|
+
}
|
|
2627
|
+
return;
|
|
2628
|
+
}
|
|
2629
|
+
}
|
|
2630
|
+
}
|
|
2631
|
+
}
|
|
2632
|
+
}
|
|
2633
|
+
ts5.forEachChild(node, visit);
|
|
2634
|
+
}
|
|
2635
|
+
visit(sourceFile);
|
|
2636
|
+
return result;
|
|
2637
|
+
}
|
|
2638
|
+
function extractBasenameFromRouter(code) {
|
|
2639
|
+
const sourceFile = ts5.createSourceFile(
|
|
2640
|
+
"router.tsx",
|
|
2641
|
+
code,
|
|
2642
|
+
ts5.ScriptTarget.Latest,
|
|
2643
|
+
true,
|
|
2644
|
+
ts5.ScriptKind.TSX
|
|
2645
|
+
);
|
|
2646
|
+
let result;
|
|
2647
|
+
function visit(node) {
|
|
2648
|
+
if (result !== void 0) return;
|
|
2649
|
+
if (ts5.isCallExpression(node) && ts5.isIdentifier(node.expression) && node.expression.text === "createRouter") {
|
|
2650
|
+
for (const arg of node.arguments) {
|
|
2507
2651
|
if (ts5.isObjectLiteralExpression(arg)) {
|
|
2508
2652
|
for (const prop of arg.properties) {
|
|
2509
|
-
if (ts5.isPropertyAssignment(prop) && ts5.isIdentifier(prop.name) && prop.name.text === "
|
|
2653
|
+
if (ts5.isPropertyAssignment(prop) && ts5.isIdentifier(prop.name) && prop.name.text === "basename" && ts5.isStringLiteral(prop.initializer)) {
|
|
2510
2654
|
result = prop.initializer.text;
|
|
2511
2655
|
return;
|
|
2512
2656
|
}
|
|
@@ -2519,6 +2663,19 @@ function extractUrlsVariableFromRouter(code) {
|
|
|
2519
2663
|
visit(sourceFile);
|
|
2520
2664
|
return result;
|
|
2521
2665
|
}
|
|
2666
|
+
function applyBasenameToRoutes(result, basename3) {
|
|
2667
|
+
const prefixed = {};
|
|
2668
|
+
for (const [name, pattern] of Object.entries(result.routes)) {
|
|
2669
|
+
if (pattern === "/") {
|
|
2670
|
+
prefixed[name] = basename3;
|
|
2671
|
+
} else if (basename3.endsWith("/") && pattern.startsWith("/")) {
|
|
2672
|
+
prefixed[name] = basename3 + pattern.slice(1);
|
|
2673
|
+
} else {
|
|
2674
|
+
prefixed[name] = basename3 + pattern;
|
|
2675
|
+
}
|
|
2676
|
+
}
|
|
2677
|
+
return { routes: prefixed, searchSchemas: result.searchSchemas };
|
|
2678
|
+
}
|
|
2522
2679
|
function buildCombinedRouteMapForRouterFile(routerFilePath) {
|
|
2523
2680
|
let routerSource;
|
|
2524
2681
|
try {
|
|
@@ -2526,19 +2683,40 @@ function buildCombinedRouteMapForRouterFile(routerFilePath) {
|
|
|
2526
2683
|
} catch {
|
|
2527
2684
|
return { routes: {}, searchSchemas: {} };
|
|
2528
2685
|
}
|
|
2529
|
-
const
|
|
2530
|
-
if (!
|
|
2686
|
+
const extraction = extractUrlsFromRouter(routerSource);
|
|
2687
|
+
if (!extraction) {
|
|
2531
2688
|
return { routes: {}, searchSchemas: {} };
|
|
2532
2689
|
}
|
|
2533
|
-
const
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2690
|
+
const rawBasename = extractBasenameFromRouter(routerSource);
|
|
2691
|
+
const basename3 = rawBasename ? ("/" + rawBasename.replace(/^\/+|\/+$/g, "")).replace(/^\/$/, "") : void 0;
|
|
2692
|
+
let result;
|
|
2693
|
+
if (extraction.kind === "inline") {
|
|
2694
|
+
result = buildCombinedRouteMapWithSearch(
|
|
2695
|
+
routerFilePath,
|
|
2696
|
+
void 0,
|
|
2697
|
+
void 0,
|
|
2698
|
+
void 0,
|
|
2699
|
+
extraction.block
|
|
2700
|
+
);
|
|
2701
|
+
} else {
|
|
2702
|
+
const imported = resolveImportedVariable(routerSource, extraction.name);
|
|
2703
|
+
if (imported) {
|
|
2704
|
+
const targetFile = resolveImportPath(imported.specifier, routerFilePath);
|
|
2705
|
+
if (!targetFile) {
|
|
2706
|
+
return { routes: {}, searchSchemas: {} };
|
|
2707
|
+
}
|
|
2708
|
+
result = buildCombinedRouteMapWithSearch(
|
|
2709
|
+
targetFile,
|
|
2710
|
+
imported.exportedName
|
|
2711
|
+
);
|
|
2712
|
+
} else {
|
|
2713
|
+
result = buildCombinedRouteMapWithSearch(routerFilePath, extraction.name);
|
|
2538
2714
|
}
|
|
2539
|
-
return buildCombinedRouteMapWithSearch(targetFile, imported.exportedName);
|
|
2540
2715
|
}
|
|
2541
|
-
|
|
2716
|
+
if (basename3) {
|
|
2717
|
+
result = applyBasenameToRoutes(result, basename3);
|
|
2718
|
+
}
|
|
2719
|
+
return result;
|
|
2542
2720
|
}
|
|
2543
2721
|
function findRouterFiles(root, filter) {
|
|
2544
2722
|
const result = [];
|
|
@@ -2547,7 +2725,7 @@ function findRouterFiles(root, filter) {
|
|
|
2547
2725
|
}
|
|
2548
2726
|
function writeCombinedRouteTypes(root, knownRouterFiles, opts) {
|
|
2549
2727
|
try {
|
|
2550
|
-
const oldCombinedPath =
|
|
2728
|
+
const oldCombinedPath = join(root, "src", "named-routes.gen.ts");
|
|
2551
2729
|
if (existsSync3(oldCombinedPath)) {
|
|
2552
2730
|
unlinkSync(oldCombinedPath);
|
|
2553
2731
|
console.log(
|
|
@@ -2563,31 +2741,21 @@ function writeCombinedRouteTypes(root, knownRouterFiles, opts) {
|
|
|
2563
2741
|
throw new Error(formatNestedRouterConflictError(nestedRouterConflict));
|
|
2564
2742
|
}
|
|
2565
2743
|
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);
|
|
2744
|
+
const result = buildCombinedRouteMapForRouterFile(routerFilePath);
|
|
2745
|
+
if (Object.keys(result.routes).length === 0 && Object.keys(result.searchSchemas).length === 0) {
|
|
2746
|
+
let routerSource;
|
|
2747
|
+
try {
|
|
2748
|
+
routerSource = readFileSync2(routerFilePath, "utf-8");
|
|
2749
|
+
} catch {
|
|
2750
|
+
continue;
|
|
2751
|
+
}
|
|
2752
|
+
if (!extractUrlsFromRouter(routerSource)) continue;
|
|
2585
2753
|
}
|
|
2586
2754
|
const routerBasename = pathBasename(routerFilePath).replace(
|
|
2587
2755
|
/\.(tsx?|jsx?)$/,
|
|
2588
2756
|
""
|
|
2589
2757
|
);
|
|
2590
|
-
const outPath =
|
|
2758
|
+
const outPath = join(
|
|
2591
2759
|
dirname2(routerFilePath),
|
|
2592
2760
|
`${routerBasename}.named-routes.gen.ts`
|
|
2593
2761
|
);
|
|
@@ -2717,8 +2885,9 @@ function createVersionPlugin() {
|
|
|
2717
2885
|
let isDev = false;
|
|
2718
2886
|
let server = null;
|
|
2719
2887
|
const clientModuleSignatures = /* @__PURE__ */ new Map();
|
|
2888
|
+
let versionCounter = 0;
|
|
2720
2889
|
const bumpVersion = (reason) => {
|
|
2721
|
-
currentVersion = Date.now().toString(16);
|
|
2890
|
+
currentVersion = Date.now().toString(16) + String(++versionCounter);
|
|
2722
2891
|
console.log(`[rsc-router] ${reason}, version updated: ${currentVersion}`);
|
|
2723
2892
|
const rscEnv = server?.environments?.rsc;
|
|
2724
2893
|
const versionMod = rscEnv?.moduleGraph?.getModuleById(
|
|
@@ -2774,6 +2943,9 @@ function createVersionPlugin() {
|
|
|
2774
2943
|
if (!isDev) return;
|
|
2775
2944
|
const isRscModule = this.environment?.name === "rsc";
|
|
2776
2945
|
if (!isRscModule) return;
|
|
2946
|
+
if (ctx.modules.length === 1 && ctx.modules[0].id === "\0" + VIRTUAL_IDS.version) {
|
|
2947
|
+
return;
|
|
2948
|
+
}
|
|
2777
2949
|
if (isCodeModule(ctx.file)) {
|
|
2778
2950
|
const filePath = normalizeModuleId(ctx.file);
|
|
2779
2951
|
const previousSignature = clientModuleSignatures.get(filePath);
|
|
@@ -2803,6 +2975,68 @@ function createVersionPlugin() {
|
|
|
2803
2975
|
|
|
2804
2976
|
// src/vite/utils/shared-utils.ts
|
|
2805
2977
|
import * as Vite from "vite";
|
|
2978
|
+
|
|
2979
|
+
// src/vite/plugins/performance-tracks.ts
|
|
2980
|
+
import { readFile } from "node:fs/promises";
|
|
2981
|
+
var RSDW_PATCH_RE = /((?:var|let|const)\s+\w+\s*=\s*root\._children\s*,\s*(\w+)\s*=\s*root\._debugInfo\s*[;,])/;
|
|
2982
|
+
function buildPatchReplacement(match, debugInfoVar) {
|
|
2983
|
+
return `${match}
|
|
2984
|
+
if (${debugInfoVar} && 0 === ${debugInfoVar}.length && "fulfilled" === root.status) {
|
|
2985
|
+
var _resolved = "function" === typeof resolveLazy ? resolveLazy(root.value) : root.value;
|
|
2986
|
+
if ("object" === typeof _resolved && null !== _resolved && isArrayImpl(_resolved._debugInfo)) {
|
|
2987
|
+
${debugInfoVar} = _resolved._debugInfo;
|
|
2988
|
+
}
|
|
2989
|
+
}`;
|
|
2990
|
+
}
|
|
2991
|
+
function patchRsdwClientDebugInfoRecovery(code) {
|
|
2992
|
+
const match = code.match(RSDW_PATCH_RE);
|
|
2993
|
+
if (!match) {
|
|
2994
|
+
return { code, debugInfoVar: null };
|
|
2995
|
+
}
|
|
2996
|
+
return {
|
|
2997
|
+
code: code.replace(match[1], buildPatchReplacement(match[1], match[2])),
|
|
2998
|
+
debugInfoVar: match[2]
|
|
2999
|
+
};
|
|
3000
|
+
}
|
|
3001
|
+
function performanceTracksOptimizeDepsPlugin() {
|
|
3002
|
+
return {
|
|
3003
|
+
name: "@rangojs/router:performance-tracks-optimize-deps",
|
|
3004
|
+
setup(build) {
|
|
3005
|
+
build.onLoad(
|
|
3006
|
+
{
|
|
3007
|
+
filter: /react-server-dom-webpack-client\.browser\.(development|production)\.js$/
|
|
3008
|
+
},
|
|
3009
|
+
async (args) => {
|
|
3010
|
+
const code = await readFile(args.path, "utf8");
|
|
3011
|
+
const patched = patchRsdwClientDebugInfoRecovery(code);
|
|
3012
|
+
return {
|
|
3013
|
+
contents: patched.code,
|
|
3014
|
+
loader: "js"
|
|
3015
|
+
};
|
|
3016
|
+
}
|
|
3017
|
+
);
|
|
3018
|
+
}
|
|
3019
|
+
};
|
|
3020
|
+
}
|
|
3021
|
+
function performanceTracksPlugin() {
|
|
3022
|
+
return {
|
|
3023
|
+
name: "@rangojs/router:performance-tracks",
|
|
3024
|
+
transform(code, id) {
|
|
3025
|
+
if (!id.includes("react-server-dom") || !id.includes("client")) return;
|
|
3026
|
+
const patched = patchRsdwClientDebugInfoRecovery(code);
|
|
3027
|
+
if (!patched.debugInfoVar) return;
|
|
3028
|
+
if (process.env.INTERNAL_RANGO_DEBUG)
|
|
3029
|
+
console.log(
|
|
3030
|
+
"[perf-tracks] patched RSDW client (var:",
|
|
3031
|
+
patched.debugInfoVar,
|
|
3032
|
+
")"
|
|
3033
|
+
);
|
|
3034
|
+
return patched.code;
|
|
3035
|
+
}
|
|
3036
|
+
};
|
|
3037
|
+
}
|
|
3038
|
+
|
|
3039
|
+
// src/vite/utils/shared-utils.ts
|
|
2806
3040
|
var versionEsbuildPlugin = {
|
|
2807
3041
|
name: "@rangojs/router-version",
|
|
2808
3042
|
setup(build) {
|
|
@@ -2820,7 +3054,7 @@ var versionEsbuildPlugin = {
|
|
|
2820
3054
|
}
|
|
2821
3055
|
};
|
|
2822
3056
|
var sharedEsbuildOptions = {
|
|
2823
|
-
plugins: [versionEsbuildPlugin]
|
|
3057
|
+
plugins: [versionEsbuildPlugin, performanceTracksOptimizeDepsPlugin()]
|
|
2824
3058
|
};
|
|
2825
3059
|
function createVirtualEntriesPlugin(entries, routerPathRef) {
|
|
2826
3060
|
const virtualModules = {};
|
|
@@ -2903,11 +3137,11 @@ ${dim} \u2571${reset} ${bold}\u2554\u2550\u2557${reset}${dim} * \u2
|
|
|
2903
3137
|
${dim} ${reset}${bold}\u2551 \u2551${reset} ${bold}\u2554\u2550\u2557${reset}${dim} * \u2727. \u2571${reset}
|
|
2904
3138
|
${dim} ${reset}${bold}\u2554\u2557 \u2551 \u2551 \u2551 \u2551${reset}${dim} * \u2571${reset}
|
|
2905
3139
|
${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}
|
|
3140
|
+
${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
3141
|
${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
3142
|
${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\
|
|
3143
|
+
${dim} * ${reset}${bold}\u2551 \u2551${reset}${dim} * \u2727. \u2571${reset}
|
|
3144
|
+
${dim} ${reset}${bold}\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550${reset}${dim} \u2726 *${reset}
|
|
2911
3145
|
|
|
2912
3146
|
v${version} \xB7 ${preset} \xB7 ${mode}
|
|
2913
3147
|
`;
|
|
@@ -3026,6 +3260,8 @@ function createCjsToEsmPlugin() {
|
|
|
3026
3260
|
import { createServer as createViteServer } from "vite";
|
|
3027
3261
|
import { resolve as resolve8 } from "node:path";
|
|
3028
3262
|
import { readFileSync as readFileSync6 } from "node:fs";
|
|
3263
|
+
import { createRequire } from "node:module";
|
|
3264
|
+
import { pathToFileURL } from "node:url";
|
|
3029
3265
|
|
|
3030
3266
|
// src/vite/plugins/virtual-stub-plugin.ts
|
|
3031
3267
|
function createVirtualStubPlugin() {
|
|
@@ -3052,7 +3288,7 @@ function createVirtualStubPlugin() {
|
|
|
3052
3288
|
}
|
|
3053
3289
|
|
|
3054
3290
|
// src/vite/plugins/client-ref-hashing.ts
|
|
3055
|
-
import { relative
|
|
3291
|
+
import { relative } from "node:path";
|
|
3056
3292
|
import { createHash as createHash2 } from "node:crypto";
|
|
3057
3293
|
var CLIENT_PKG_PROXY_PREFIX = "/@id/__x00__virtual:vite-rsc/client-package-proxy/";
|
|
3058
3294
|
var CLIENT_IN_SERVER_PKG_PROXY_PREFIX = "/@id/__x00__virtual:vite-rsc/client-in-server-package-proxy/";
|
|
@@ -3065,10 +3301,10 @@ function computeProductionHash(projectRoot, refKey) {
|
|
|
3065
3301
|
const absPath = decodeURIComponent(
|
|
3066
3302
|
refKey.slice(CLIENT_IN_SERVER_PKG_PROXY_PREFIX.length)
|
|
3067
3303
|
);
|
|
3068
|
-
toHash =
|
|
3304
|
+
toHash = relative(projectRoot, absPath).replaceAll("\\", "/");
|
|
3069
3305
|
} else if (refKey.startsWith(FS_PREFIX)) {
|
|
3070
3306
|
const absPath = refKey.slice(FS_PREFIX.length - 1);
|
|
3071
|
-
toHash =
|
|
3307
|
+
toHash = relative(projectRoot, absPath).replaceAll("\\", "/");
|
|
3072
3308
|
} else if (refKey.startsWith("/")) {
|
|
3073
3309
|
toHash = refKey.slice(1);
|
|
3074
3310
|
} else {
|
|
@@ -3209,8 +3445,8 @@ function createDiscoveryState(entryPath, opts) {
|
|
|
3209
3445
|
perRouterManifestDataMap: /* @__PURE__ */ new Map(),
|
|
3210
3446
|
prerenderManifestEntries: null,
|
|
3211
3447
|
staticManifestEntries: null,
|
|
3212
|
-
|
|
3213
|
-
|
|
3448
|
+
handlerChunkInfoMap: /* @__PURE__ */ new Map(),
|
|
3449
|
+
staticHandlerChunkInfoMap: /* @__PURE__ */ new Map(),
|
|
3214
3450
|
rscEntryFileName: null,
|
|
3215
3451
|
resolvedPrerenderModules: void 0,
|
|
3216
3452
|
resolvedStaticModules: void 0,
|
|
@@ -3293,8 +3529,17 @@ function jsonParseExpression(value) {
|
|
|
3293
3529
|
}
|
|
3294
3530
|
|
|
3295
3531
|
// src/context-var.ts
|
|
3532
|
+
var NON_CACHEABLE_KEYS = /* @__PURE__ */ Symbol.for(
|
|
3533
|
+
"rango:non-cacheable-keys"
|
|
3534
|
+
);
|
|
3535
|
+
function getNonCacheableKeys(variables) {
|
|
3536
|
+
if (!variables[NON_CACHEABLE_KEYS]) {
|
|
3537
|
+
variables[NON_CACHEABLE_KEYS] = /* @__PURE__ */ new Set();
|
|
3538
|
+
}
|
|
3539
|
+
return variables[NON_CACHEABLE_KEYS];
|
|
3540
|
+
}
|
|
3296
3541
|
var FORBIDDEN_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
|
|
3297
|
-
function contextSet(variables, keyOrVar, value) {
|
|
3542
|
+
function contextSet(variables, keyOrVar, value, options) {
|
|
3298
3543
|
if (typeof keyOrVar === "string") {
|
|
3299
3544
|
if (FORBIDDEN_KEYS.has(keyOrVar)) {
|
|
3300
3545
|
throw new Error(
|
|
@@ -3302,8 +3547,14 @@ function contextSet(variables, keyOrVar, value) {
|
|
|
3302
3547
|
);
|
|
3303
3548
|
}
|
|
3304
3549
|
variables[keyOrVar] = value;
|
|
3550
|
+
if (options?.cache === false) {
|
|
3551
|
+
getNonCacheableKeys(variables).add(keyOrVar);
|
|
3552
|
+
}
|
|
3305
3553
|
} else {
|
|
3306
3554
|
variables[keyOrVar.key] = value;
|
|
3555
|
+
if (options?.cache === false) {
|
|
3556
|
+
getNonCacheableKeys(variables).add(keyOrVar.key);
|
|
3557
|
+
}
|
|
3307
3558
|
}
|
|
3308
3559
|
}
|
|
3309
3560
|
|
|
@@ -3326,6 +3577,7 @@ function encodePathParam(value) {
|
|
|
3326
3577
|
}
|
|
3327
3578
|
function substituteRouteParams(pattern, params, encode = encodeURIComponent) {
|
|
3328
3579
|
let result = pattern;
|
|
3580
|
+
let hadOmittedOptional = false;
|
|
3329
3581
|
for (const [key, value] of Object.entries(params)) {
|
|
3330
3582
|
const escaped = escapeRegExp2(key);
|
|
3331
3583
|
result = result.replace(
|
|
@@ -3334,6 +3586,15 @@ function substituteRouteParams(pattern, params, encode = encodeURIComponent) {
|
|
|
3334
3586
|
);
|
|
3335
3587
|
result = result.replace(`*${key}`, encode(value));
|
|
3336
3588
|
}
|
|
3589
|
+
result = result.replace(/:([a-zA-Z_][a-zA-Z0-9_]*)(\([^)]*\))?\?/g, () => {
|
|
3590
|
+
hadOmittedOptional = true;
|
|
3591
|
+
return "";
|
|
3592
|
+
});
|
|
3593
|
+
if (hadOmittedOptional) {
|
|
3594
|
+
const hadTrailingSlash = pattern.length > 1 && pattern.endsWith("/");
|
|
3595
|
+
result = result.replace(/\/\/+/g, "/").replace(/\/+$/, "") || "/";
|
|
3596
|
+
if (hadTrailingSlash && !result.endsWith("/")) result += "/";
|
|
3597
|
+
}
|
|
3337
3598
|
return result;
|
|
3338
3599
|
}
|
|
3339
3600
|
async function runWithConcurrency(items, concurrency, fn) {
|
|
@@ -3442,84 +3703,126 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
|
|
|
3442
3703
|
if (!params) return pattern;
|
|
3443
3704
|
return substituteRouteParams(pattern, params);
|
|
3444
3705
|
};
|
|
3706
|
+
let resolvedRoutes = 0;
|
|
3707
|
+
let totalDynamic = 0;
|
|
3445
3708
|
for (const { manifest } of allManifests) {
|
|
3446
3709
|
if (!manifest.prerenderRoutes) continue;
|
|
3447
|
-
const defs = manifest._prerenderDefs || {};
|
|
3448
3710
|
for (const routeName of manifest.prerenderRoutes) {
|
|
3449
3711
|
const pattern = manifest.routeManifest[routeName];
|
|
3450
|
-
if (
|
|
3451
|
-
|
|
3452
|
-
|
|
3453
|
-
|
|
3454
|
-
|
|
3455
|
-
|
|
3456
|
-
|
|
3457
|
-
|
|
3458
|
-
|
|
3459
|
-
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
|
|
3465
|
-
|
|
3466
|
-
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
|
|
3479
|
-
|
|
3480
|
-
|
|
3481
|
-
|
|
3482
|
-
|
|
3483
|
-
|
|
3484
|
-
|
|
3712
|
+
if (pattern && (pattern.includes(":") || pattern.includes("*"))) {
|
|
3713
|
+
totalDynamic++;
|
|
3714
|
+
}
|
|
3715
|
+
}
|
|
3716
|
+
}
|
|
3717
|
+
const paramsStart = performance.now();
|
|
3718
|
+
const progressInterval = totalDynamic > 0 ? setInterval(() => {
|
|
3719
|
+
const elapsed = ((performance.now() - paramsStart) / 1e3).toFixed(1);
|
|
3720
|
+
console.log(
|
|
3721
|
+
`[rsc-router] Resolving prerender params... ${resolvedRoutes}/${totalDynamic} routes (${elapsed}s)`
|
|
3722
|
+
);
|
|
3723
|
+
}, 5e3) : void 0;
|
|
3724
|
+
try {
|
|
3725
|
+
for (const { manifest } of allManifests) {
|
|
3726
|
+
if (!manifest.prerenderRoutes) continue;
|
|
3727
|
+
const defs = manifest._prerenderDefs || {};
|
|
3728
|
+
const passthroughSet = new Set(manifest.passthroughRoutes || []);
|
|
3729
|
+
for (const routeName of manifest.prerenderRoutes) {
|
|
3730
|
+
const pattern = manifest.routeManifest[routeName];
|
|
3731
|
+
if (!pattern) continue;
|
|
3732
|
+
const def = defs[routeName];
|
|
3733
|
+
const isPassthroughRoute = passthroughSet.has(routeName);
|
|
3734
|
+
const hasDynamic = pattern.includes(":") || pattern.includes("*");
|
|
3735
|
+
if (!hasDynamic) {
|
|
3736
|
+
entries.push({
|
|
3737
|
+
urlPath: pattern.replace(/\/$/, "") || "/",
|
|
3738
|
+
routeName,
|
|
3739
|
+
concurrency: 1,
|
|
3740
|
+
isPassthroughRoute
|
|
3741
|
+
});
|
|
3742
|
+
} else {
|
|
3743
|
+
if (def?.getParams) {
|
|
3744
|
+
try {
|
|
3745
|
+
const buildVars = {};
|
|
3746
|
+
const buildEnv = state.resolvedBuildEnv;
|
|
3747
|
+
const getParamsCtx = {
|
|
3748
|
+
build: true,
|
|
3749
|
+
dev: !state.isBuildMode,
|
|
3750
|
+
set: ((keyOrVar, value) => {
|
|
3751
|
+
contextSet(buildVars, keyOrVar, value);
|
|
3752
|
+
}),
|
|
3753
|
+
reverse: getParamsReverse,
|
|
3754
|
+
get env() {
|
|
3755
|
+
if (buildEnv !== void 0) return buildEnv;
|
|
3756
|
+
throw new Error(
|
|
3757
|
+
"[rsc-router] ctx.env is not available during build-time getParams(). Configure buildEnv in your rango() plugin options to enable build-time env access."
|
|
3758
|
+
);
|
|
3759
|
+
}
|
|
3760
|
+
};
|
|
3761
|
+
const paramsList = await def.getParams(getParamsCtx);
|
|
3762
|
+
const concurrency = def.options?.concurrency ?? 1;
|
|
3763
|
+
const hasBuildVars = Object.keys(buildVars).length > 0 || Object.getOwnPropertySymbols(buildVars).length > 0;
|
|
3764
|
+
for (const params of paramsList) {
|
|
3765
|
+
let url = substituteRouteParams(
|
|
3766
|
+
pattern,
|
|
3767
|
+
params,
|
|
3768
|
+
encodePathParam
|
|
3769
|
+
);
|
|
3770
|
+
if (url.includes("*")) {
|
|
3771
|
+
const wildcardValue = params["*"] ?? params.splat;
|
|
3772
|
+
if (wildcardValue !== void 0) {
|
|
3773
|
+
url = url.replace(
|
|
3774
|
+
/\*[^/]*$/,
|
|
3775
|
+
encodePathParam(wildcardValue)
|
|
3776
|
+
);
|
|
3777
|
+
}
|
|
3485
3778
|
}
|
|
3779
|
+
entries.push({
|
|
3780
|
+
urlPath: url.replace(/\/$/, "") || "/",
|
|
3781
|
+
routeName,
|
|
3782
|
+
concurrency,
|
|
3783
|
+
...hasBuildVars ? { buildVars } : {},
|
|
3784
|
+
isPassthroughRoute
|
|
3785
|
+
});
|
|
3486
3786
|
}
|
|
3487
|
-
|
|
3488
|
-
|
|
3489
|
-
|
|
3490
|
-
|
|
3491
|
-
|
|
3492
|
-
|
|
3493
|
-
|
|
3494
|
-
|
|
3495
|
-
|
|
3496
|
-
|
|
3497
|
-
|
|
3498
|
-
|
|
3499
|
-
|
|
3500
|
-
|
|
3501
|
-
|
|
3502
|
-
|
|
3503
|
-
|
|
3504
|
-
|
|
3505
|
-
|
|
3506
|
-
true
|
|
3787
|
+
resolvedRoutes++;
|
|
3788
|
+
} catch (err) {
|
|
3789
|
+
resolvedRoutes++;
|
|
3790
|
+
if (err.name === "Skip") {
|
|
3791
|
+
console.log(
|
|
3792
|
+
`[rsc-router] SKIP route "${routeName}" - ${err.message}`
|
|
3793
|
+
);
|
|
3794
|
+
notifyOnError(
|
|
3795
|
+
registry,
|
|
3796
|
+
err,
|
|
3797
|
+
"prerender",
|
|
3798
|
+
routeName,
|
|
3799
|
+
void 0,
|
|
3800
|
+
true
|
|
3801
|
+
);
|
|
3802
|
+
continue;
|
|
3803
|
+
}
|
|
3804
|
+
console.error(
|
|
3805
|
+
`[rsc-router] Failed to get params for prerender route "${routeName}": ${err.message}`
|
|
3507
3806
|
);
|
|
3508
|
-
|
|
3807
|
+
notifyOnError(registry, err, "prerender", routeName);
|
|
3808
|
+
throw err;
|
|
3509
3809
|
}
|
|
3510
|
-
|
|
3511
|
-
|
|
3810
|
+
} else {
|
|
3811
|
+
console.warn(
|
|
3812
|
+
`[rsc-router] Dynamic prerender route "${routeName}" has no getParams(), skipping`
|
|
3512
3813
|
);
|
|
3513
|
-
notifyOnError(registry, err, "prerender", routeName);
|
|
3514
|
-
throw err;
|
|
3515
3814
|
}
|
|
3516
|
-
} else {
|
|
3517
|
-
console.warn(
|
|
3518
|
-
`[rsc-router] Dynamic prerender route "${routeName}" has no getParams(), skipping`
|
|
3519
|
-
);
|
|
3520
3815
|
}
|
|
3521
3816
|
}
|
|
3522
3817
|
}
|
|
3818
|
+
} finally {
|
|
3819
|
+
if (progressInterval) {
|
|
3820
|
+
clearInterval(progressInterval);
|
|
3821
|
+
const elapsed = ((performance.now() - paramsStart) / 1e3).toFixed(1);
|
|
3822
|
+
console.log(
|
|
3823
|
+
`[rsc-router] Resolved prerender params: ${resolvedRoutes}/${totalDynamic} routes (${elapsed}s)`
|
|
3824
|
+
);
|
|
3825
|
+
}
|
|
3523
3826
|
}
|
|
3524
3827
|
if (entries.length === 0) return;
|
|
3525
3828
|
const maxConcurrency = Math.max(...entries.map((e) => e.concurrency));
|
|
@@ -3546,7 +3849,8 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
|
|
|
3546
3849
|
entry.urlPath,
|
|
3547
3850
|
{},
|
|
3548
3851
|
entry.buildVars,
|
|
3549
|
-
entry.isPassthroughRoute
|
|
3852
|
+
entry.isPassthroughRoute,
|
|
3853
|
+
state.resolvedBuildEnv
|
|
3550
3854
|
);
|
|
3551
3855
|
if (!result) continue;
|
|
3552
3856
|
if (result.passthrough) {
|
|
@@ -3670,7 +3974,9 @@ async function renderStaticHandlers(state, rscEnv, registry) {
|
|
|
3670
3974
|
const result = await routerInstance.renderStaticSegment(
|
|
3671
3975
|
def.handler,
|
|
3672
3976
|
def.$$id,
|
|
3673
|
-
def.$$routePrefix
|
|
3977
|
+
def.$$routePrefix,
|
|
3978
|
+
state.resolvedBuildEnv,
|
|
3979
|
+
!state.isBuildMode
|
|
3674
3980
|
);
|
|
3675
3981
|
if (result) {
|
|
3676
3982
|
const hasHandles = Object.keys(result.handles).length > 0;
|
|
@@ -3795,7 +4101,11 @@ async function discoverRouters(state, rscEnv) {
|
|
|
3795
4101
|
if (!router.urlpatterns || !generateManifestFull) {
|
|
3796
4102
|
continue;
|
|
3797
4103
|
}
|
|
3798
|
-
const manifest = generateManifestFull(
|
|
4104
|
+
const manifest = generateManifestFull(
|
|
4105
|
+
router.urlpatterns,
|
|
4106
|
+
routerMountIndex,
|
|
4107
|
+
router.__basename ? { urlPrefix: router.__basename } : void 0
|
|
4108
|
+
);
|
|
3799
4109
|
routerMountIndex++;
|
|
3800
4110
|
allManifests.push({ id, manifest });
|
|
3801
4111
|
const routeCount = Object.keys(manifest.routeManifest).length;
|
|
@@ -3937,7 +4247,7 @@ async function discoverRouters(state, rscEnv) {
|
|
|
3937
4247
|
}
|
|
3938
4248
|
|
|
3939
4249
|
// src/vite/discovery/route-types-writer.ts
|
|
3940
|
-
import { dirname as dirname3, basename, join as
|
|
4250
|
+
import { dirname as dirname3, basename, join as join2, resolve as resolve6 } from "node:path";
|
|
3941
4251
|
import { readFileSync as readFileSync4, writeFileSync as writeFileSync3, existsSync as existsSync5, unlinkSync as unlinkSync2 } from "node:fs";
|
|
3942
4252
|
function filterUserNamedRoutes(manifest) {
|
|
3943
4253
|
const filtered = {};
|
|
@@ -3958,7 +4268,7 @@ function writeCombinedRouteTypesWithTracking(state, opts) {
|
|
|
3958
4268
|
/\.(tsx?|jsx?)$/,
|
|
3959
4269
|
""
|
|
3960
4270
|
);
|
|
3961
|
-
const outPath =
|
|
4271
|
+
const outPath = join2(routerDir, `${routerBasename}.named-routes.gen.ts`);
|
|
3962
4272
|
try {
|
|
3963
4273
|
preContent.set(outPath, readFileSync4(outPath, "utf-8"));
|
|
3964
4274
|
} catch {
|
|
@@ -3971,7 +4281,7 @@ function writeCombinedRouteTypesWithTracking(state, opts) {
|
|
|
3971
4281
|
/\.(tsx?|jsx?)$/,
|
|
3972
4282
|
""
|
|
3973
4283
|
);
|
|
3974
|
-
const outPath =
|
|
4284
|
+
const outPath = join2(routerDir, `${routerBasename}.named-routes.gen.ts`);
|
|
3975
4285
|
if (!existsSync5(outPath)) continue;
|
|
3976
4286
|
try {
|
|
3977
4287
|
const content = readFileSync4(outPath, "utf-8");
|
|
@@ -3988,7 +4298,7 @@ function writeRouteTypesFiles(state) {
|
|
|
3988
4298
|
const entryDir = dirname3(
|
|
3989
4299
|
resolve6(state.projectRoot, state.resolvedEntryPath)
|
|
3990
4300
|
);
|
|
3991
|
-
const oldCombinedPath =
|
|
4301
|
+
const oldCombinedPath = join2(entryDir, "named-routes.gen.ts");
|
|
3992
4302
|
if (existsSync5(oldCombinedPath)) {
|
|
3993
4303
|
unlinkSync2(oldCombinedPath);
|
|
3994
4304
|
console.log(
|
|
@@ -4013,7 +4323,7 @@ Set an explicit \`id\` on createRouter() or check the call site.`
|
|
|
4013
4323
|
}
|
|
4014
4324
|
const routerDir = dirname3(sourceFile);
|
|
4015
4325
|
const routerBasename = basename(sourceFile).replace(/\.(tsx?|jsx?)$/, "");
|
|
4016
|
-
const outPath =
|
|
4326
|
+
const outPath = join2(routerDir, `${routerBasename}.named-routes.gen.ts`);
|
|
4017
4327
|
const userRoutes = filterUserNamedRoutes(routeManifest);
|
|
4018
4328
|
let effectiveSearchSchemas = routeSearchSchemas;
|
|
4019
4329
|
if ((!effectiveSearchSchemas || Object.keys(effectiveSearchSchemas).length === 0) && sourceFile) {
|
|
@@ -4078,7 +4388,7 @@ function supplementGenFilesWithRuntimeRoutes(state) {
|
|
|
4078
4388
|
}
|
|
4079
4389
|
const routerDir = dirname3(sourceFile);
|
|
4080
4390
|
const routerBasename = basename(sourceFile).replace(/\.(tsx?|jsx?)$/, "");
|
|
4081
|
-
const outPath =
|
|
4391
|
+
const outPath = join2(routerDir, `${routerBasename}.named-routes.gen.ts`);
|
|
4082
4392
|
const source = generateRouteTypesSource(
|
|
4083
4393
|
mergedRoutes,
|
|
4084
4394
|
Object.keys(mergedSearchSchemas).length > 0 ? mergedSearchSchemas : void 0
|
|
@@ -4092,7 +4402,7 @@ function supplementGenFilesWithRuntimeRoutes(state) {
|
|
|
4092
4402
|
}
|
|
4093
4403
|
|
|
4094
4404
|
// src/vite/discovery/virtual-module-codegen.ts
|
|
4095
|
-
import { dirname as dirname4, basename as basename2, join as
|
|
4405
|
+
import { dirname as dirname4, basename as basename2, join as join3 } from "node:path";
|
|
4096
4406
|
function generateRoutesManifestModule(state) {
|
|
4097
4407
|
const hasManifest = state.mergedRouteManifest && Object.keys(state.mergedRouteManifest).length > 0;
|
|
4098
4408
|
if (hasManifest) {
|
|
@@ -4107,7 +4417,7 @@ function generateRoutesManifestModule(state) {
|
|
|
4107
4417
|
/\.(tsx?|jsx?)$/,
|
|
4108
4418
|
""
|
|
4109
4419
|
);
|
|
4110
|
-
const genPath =
|
|
4420
|
+
const genPath = join3(
|
|
4111
4421
|
routerDir,
|
|
4112
4422
|
`${routerBasename}.named-routes.gen.js`
|
|
4113
4423
|
).replaceAll("\\", "/");
|
|
@@ -4204,7 +4514,7 @@ function generatePerRouterModule(state, routerId) {
|
|
|
4204
4514
|
/\.(tsx?|jsx?)$/,
|
|
4205
4515
|
""
|
|
4206
4516
|
);
|
|
4207
|
-
const genPath =
|
|
4517
|
+
const genPath = join3(
|
|
4208
4518
|
routerDir,
|
|
4209
4519
|
`${routerBasename}.named-routes.gen.js`
|
|
4210
4520
|
).replaceAll("\\", "/");
|
|
@@ -4244,48 +4554,45 @@ function postprocessBundle(state) {
|
|
|
4244
4554
|
);
|
|
4245
4555
|
const evictionTargets = [
|
|
4246
4556
|
{
|
|
4247
|
-
|
|
4557
|
+
infos: state.handlerChunkInfoMap.values(),
|
|
4248
4558
|
fnName: "Prerender",
|
|
4249
4559
|
brand: "prerenderHandler",
|
|
4250
4560
|
label: "handler code from RSC bundle"
|
|
4251
4561
|
},
|
|
4252
4562
|
{
|
|
4253
|
-
|
|
4563
|
+
infos: state.staticHandlerChunkInfoMap.values(),
|
|
4254
4564
|
fnName: "Static",
|
|
4255
4565
|
brand: "staticHandler",
|
|
4256
4566
|
label: "static handler code"
|
|
4257
4567
|
}
|
|
4258
4568
|
];
|
|
4259
4569
|
for (const target of evictionTargets) {
|
|
4260
|
-
|
|
4261
|
-
|
|
4262
|
-
|
|
4263
|
-
|
|
4264
|
-
|
|
4265
|
-
|
|
4266
|
-
|
|
4267
|
-
|
|
4268
|
-
|
|
4269
|
-
|
|
4270
|
-
|
|
4271
|
-
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4570
|
+
for (const info of target.infos) {
|
|
4571
|
+
const chunkPath = resolve7(state.projectRoot, "dist/rsc", info.fileName);
|
|
4572
|
+
try {
|
|
4573
|
+
const code = readFileSync5(chunkPath, "utf-8");
|
|
4574
|
+
const result = evictHandlerCode(
|
|
4575
|
+
code,
|
|
4576
|
+
info.exports,
|
|
4577
|
+
target.fnName,
|
|
4578
|
+
target.brand
|
|
4579
|
+
);
|
|
4580
|
+
if (result) {
|
|
4581
|
+
writeFileSync4(chunkPath, result.code);
|
|
4582
|
+
const savedKB = (result.savedBytes / 1024).toFixed(1);
|
|
4583
|
+
console.log(
|
|
4584
|
+
`[rsc-router] Evicted ${target.label} (${savedKB} KB saved): ${info.fileName}`
|
|
4585
|
+
);
|
|
4586
|
+
}
|
|
4587
|
+
} catch (replaceErr) {
|
|
4588
|
+
console.warn(
|
|
4589
|
+
`[rsc-router] Failed to evict ${target.label}: ${replaceErr.message}`
|
|
4279
4590
|
);
|
|
4280
4591
|
}
|
|
4281
|
-
} catch (replaceErr) {
|
|
4282
|
-
console.warn(
|
|
4283
|
-
`[rsc-router] Failed to evict ${target.label}: ${replaceErr.message}`
|
|
4284
|
-
);
|
|
4285
4592
|
}
|
|
4286
4593
|
}
|
|
4287
|
-
state.
|
|
4288
|
-
state.
|
|
4594
|
+
state.handlerChunkInfoMap.clear();
|
|
4595
|
+
state.staticHandlerChunkInfoMap.clear();
|
|
4289
4596
|
if (hasPrerenderData && existsSync6(rscEntryPath)) {
|
|
4290
4597
|
const rscCode = readFileSync5(rscEntryPath, "utf-8");
|
|
4291
4598
|
if (!rscCode.includes("__prerender-manifest.js")) {
|
|
@@ -4328,7 +4635,7 @@ function postprocessBundle(state) {
|
|
|
4328
4635
|
}
|
|
4329
4636
|
if (hasStaticData && existsSync6(rscEntryPath)) {
|
|
4330
4637
|
const rscCode = readFileSync5(rscEntryPath, "utf-8");
|
|
4331
|
-
if (!rscCode.includes("
|
|
4638
|
+
if (!rscCode.includes("__static-manifest.js")) {
|
|
4332
4639
|
try {
|
|
4333
4640
|
const manifestEntries = [];
|
|
4334
4641
|
let totalBytes = copyStagedBuildAssets(
|
|
@@ -4397,8 +4704,67 @@ async function createTempRscServer(state, options = {}) {
|
|
|
4397
4704
|
]
|
|
4398
4705
|
});
|
|
4399
4706
|
}
|
|
4707
|
+
async function resolveBuildEnv(option, factoryCtx) {
|
|
4708
|
+
if (!option) return null;
|
|
4709
|
+
if (option === "auto") {
|
|
4710
|
+
if (factoryCtx.preset !== "cloudflare") {
|
|
4711
|
+
throw new Error(
|
|
4712
|
+
'[rsc-router] buildEnv: "auto" is only supported with preset: "cloudflare". Use a factory function or plain object for other presets.'
|
|
4713
|
+
);
|
|
4714
|
+
}
|
|
4715
|
+
try {
|
|
4716
|
+
const userRequire = createRequire(
|
|
4717
|
+
resolve8(factoryCtx.root, "package.json")
|
|
4718
|
+
);
|
|
4719
|
+
const wranglerPath = userRequire.resolve("wrangler");
|
|
4720
|
+
const { getPlatformProxy } = await import(pathToFileURL(wranglerPath).href);
|
|
4721
|
+
const proxy = await getPlatformProxy();
|
|
4722
|
+
return {
|
|
4723
|
+
env: proxy.env,
|
|
4724
|
+
dispose: proxy.dispose
|
|
4725
|
+
};
|
|
4726
|
+
} catch (err) {
|
|
4727
|
+
throw new Error(
|
|
4728
|
+
`[rsc-router] buildEnv: "auto" requires wrangler to be installed.
|
|
4729
|
+
Install it with: pnpm add -D wrangler
|
|
4730
|
+
${err.message}`
|
|
4731
|
+
);
|
|
4732
|
+
}
|
|
4733
|
+
}
|
|
4734
|
+
if (typeof option === "function") {
|
|
4735
|
+
return await option(factoryCtx);
|
|
4736
|
+
}
|
|
4737
|
+
return { env: option };
|
|
4738
|
+
}
|
|
4739
|
+
async function acquireBuildEnv(s, command, mode) {
|
|
4740
|
+
const option = s.opts?.buildEnv;
|
|
4741
|
+
if (!option) return false;
|
|
4742
|
+
const result = await resolveBuildEnv(option, {
|
|
4743
|
+
root: s.projectRoot,
|
|
4744
|
+
mode,
|
|
4745
|
+
command,
|
|
4746
|
+
preset: s.opts?.preset ?? "node"
|
|
4747
|
+
});
|
|
4748
|
+
if (!result) return false;
|
|
4749
|
+
s.resolvedBuildEnv = result.env;
|
|
4750
|
+
s.buildEnvDispose = result.dispose ?? null;
|
|
4751
|
+
return true;
|
|
4752
|
+
}
|
|
4753
|
+
async function releaseBuildEnv(s) {
|
|
4754
|
+
if (s.buildEnvDispose) {
|
|
4755
|
+
try {
|
|
4756
|
+
await s.buildEnvDispose();
|
|
4757
|
+
} catch (err) {
|
|
4758
|
+
console.warn(`[rsc-router] buildEnv dispose failed: ${err.message}`);
|
|
4759
|
+
}
|
|
4760
|
+
s.buildEnvDispose = null;
|
|
4761
|
+
}
|
|
4762
|
+
s.resolvedBuildEnv = void 0;
|
|
4763
|
+
}
|
|
4400
4764
|
function createRouterDiscoveryPlugin(entryPath, opts) {
|
|
4401
4765
|
const s = createDiscoveryState(entryPath, opts);
|
|
4766
|
+
let viteCommand = "build";
|
|
4767
|
+
let viteMode = "production";
|
|
4402
4768
|
return {
|
|
4403
4769
|
name: "@rangojs/router:discovery",
|
|
4404
4770
|
config() {
|
|
@@ -4407,31 +4773,13 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
|
|
|
4407
4773
|
__RANGO_DEBUG__: JSON.stringify(!!process.env.INTERNAL_RANGO_DEBUG)
|
|
4408
4774
|
}
|
|
4409
4775
|
};
|
|
4410
|
-
if (opts?.enableBuildPrerender) {
|
|
4411
|
-
config.environments = {
|
|
4412
|
-
rsc: {
|
|
4413
|
-
build: {
|
|
4414
|
-
rollupOptions: {
|
|
4415
|
-
output: {
|
|
4416
|
-
manualChunks(id) {
|
|
4417
|
-
if (s.resolvedPrerenderModules?.has(id)) {
|
|
4418
|
-
return "__prerender-handlers";
|
|
4419
|
-
}
|
|
4420
|
-
if (s.resolvedStaticModules?.has(id)) {
|
|
4421
|
-
return "__static-handlers";
|
|
4422
|
-
}
|
|
4423
|
-
}
|
|
4424
|
-
}
|
|
4425
|
-
}
|
|
4426
|
-
}
|
|
4427
|
-
}
|
|
4428
|
-
};
|
|
4429
|
-
}
|
|
4430
4776
|
return config;
|
|
4431
4777
|
},
|
|
4432
4778
|
configResolved(config) {
|
|
4433
4779
|
s.projectRoot = config.root;
|
|
4434
4780
|
s.isBuildMode = config.command === "build";
|
|
4781
|
+
viteCommand = config.command;
|
|
4782
|
+
viteMode = config.mode;
|
|
4435
4783
|
s.userResolveAlias = config.resolve.alias;
|
|
4436
4784
|
if (!s.resolvedEntryPath && opts?.routerPathRef?.path) {
|
|
4437
4785
|
s.resolvedEntryPath = opts.routerPathRef.path;
|
|
@@ -4445,12 +4793,6 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
|
|
|
4445
4793
|
s.resolvedEntryPath = entries[0];
|
|
4446
4794
|
}
|
|
4447
4795
|
}
|
|
4448
|
-
if (opts?.include || opts?.exclude) {
|
|
4449
|
-
s.scanFilter = createScanFilter(s.projectRoot, {
|
|
4450
|
-
include: opts.include,
|
|
4451
|
-
exclude: opts.exclude
|
|
4452
|
-
});
|
|
4453
|
-
}
|
|
4454
4796
|
if (opts?.staticRouteTypesGeneration !== false) {
|
|
4455
4797
|
s.cachedRouterFiles = findRouterFiles(s.projectRoot, s.scanFilter);
|
|
4456
4798
|
writeCombinedRouteTypesWithTracking(s, { preserveIfLarger: true });
|
|
@@ -4482,6 +4824,8 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
|
|
|
4482
4824
|
});
|
|
4483
4825
|
prerenderTempServer = null;
|
|
4484
4826
|
}
|
|
4827
|
+
releaseBuildEnv(s).catch(() => {
|
|
4828
|
+
});
|
|
4485
4829
|
});
|
|
4486
4830
|
async function getOrCreateTempServer() {
|
|
4487
4831
|
if (prerenderNodeRegistry) {
|
|
@@ -4512,6 +4856,7 @@ function createRouterDiscoveryPlugin(entryPath, opts) {
|
|
|
4512
4856
|
if (!rscEnv?.runner) {
|
|
4513
4857
|
s.devServerOrigin = getDevServerOrigin();
|
|
4514
4858
|
try {
|
|
4859
|
+
await acquireBuildEnv(s, viteCommand, viteMode);
|
|
4515
4860
|
const tempRscEnv = await getOrCreateTempServer();
|
|
4516
4861
|
if (tempRscEnv) {
|
|
4517
4862
|
await discoverRouters(s, tempRscEnv);
|
|
@@ -4527,6 +4872,7 @@ ${err.stack}`
|
|
|
4527
4872
|
return;
|
|
4528
4873
|
}
|
|
4529
4874
|
try {
|
|
4875
|
+
await acquireBuildEnv(s, viteCommand, viteMode);
|
|
4530
4876
|
const serverMod = await rscEnv.runner.import(
|
|
4531
4877
|
"@rangojs/router/server"
|
|
4532
4878
|
);
|
|
@@ -4591,7 +4937,26 @@ ${err.stack}`
|
|
|
4591
4937
|
res.end("Missing pathname");
|
|
4592
4938
|
return;
|
|
4593
4939
|
}
|
|
4594
|
-
|
|
4940
|
+
const rscEnv = server.environments?.rsc;
|
|
4941
|
+
let registry = null;
|
|
4942
|
+
if (rscEnv?.runner && s.resolvedEntryPath) {
|
|
4943
|
+
try {
|
|
4944
|
+
await rscEnv.runner.import(s.resolvedEntryPath);
|
|
4945
|
+
const serverMod = await rscEnv.runner.import(
|
|
4946
|
+
"@rangojs/router/server"
|
|
4947
|
+
);
|
|
4948
|
+
registry = serverMod.RouterRegistry ?? null;
|
|
4949
|
+
} catch (err) {
|
|
4950
|
+
console.warn(
|
|
4951
|
+
`[rsc-router] Dev prerender module refresh failed: ${err.message}`
|
|
4952
|
+
);
|
|
4953
|
+
res.statusCode = 500;
|
|
4954
|
+
res.end(`Prerender handler error: ${err.message}`);
|
|
4955
|
+
return;
|
|
4956
|
+
}
|
|
4957
|
+
} else {
|
|
4958
|
+
registry = mainRegistry;
|
|
4959
|
+
}
|
|
4595
4960
|
if (!registry) {
|
|
4596
4961
|
if (!prerenderNodeRegistry) {
|
|
4597
4962
|
await getOrCreateTempServer();
|
|
@@ -4613,7 +4978,10 @@ ${err.stack}`
|
|
|
4613
4978
|
pathname,
|
|
4614
4979
|
{},
|
|
4615
4980
|
void 0,
|
|
4616
|
-
wantPassthrough
|
|
4981
|
+
wantPassthrough,
|
|
4982
|
+
s.resolvedBuildEnv,
|
|
4983
|
+
true
|
|
4984
|
+
// devMode: check getParams for passthrough routes
|
|
4617
4985
|
);
|
|
4618
4986
|
if (!result) continue;
|
|
4619
4987
|
if (result.passthrough) continue;
|
|
@@ -4749,6 +5117,7 @@ ${err.stack}`
|
|
|
4749
5117
|
resetStagedBuildAssets(s.projectRoot);
|
|
4750
5118
|
s.prerenderManifestEntries = null;
|
|
4751
5119
|
s.staticManifestEntries = null;
|
|
5120
|
+
await acquireBuildEnv(s, viteCommand, viteMode);
|
|
4752
5121
|
let tempServer = null;
|
|
4753
5122
|
globalThis.__rscRouterDiscoveryActive = true;
|
|
4754
5123
|
try {
|
|
@@ -4788,6 +5157,7 @@ ${details}`
|
|
|
4788
5157
|
if (tempServer) {
|
|
4789
5158
|
await tempServer.close();
|
|
4790
5159
|
}
|
|
5160
|
+
await releaseBuildEnv(s);
|
|
4791
5161
|
}
|
|
4792
5162
|
},
|
|
4793
5163
|
// Virtual module: provides the pre-generated route manifest as a JS module
|
|
@@ -4830,20 +5200,30 @@ ${details}`
|
|
|
4830
5200
|
}
|
|
4831
5201
|
if (!s.resolvedPrerenderModules?.size && !s.resolvedStaticModules?.size)
|
|
4832
5202
|
return;
|
|
5203
|
+
s.handlerChunkInfoMap.clear();
|
|
5204
|
+
s.staticHandlerChunkInfoMap.clear();
|
|
4833
5205
|
for (const [fileName, chunk] of Object.entries(bundle)) {
|
|
4834
5206
|
if (chunk.type !== "chunk") continue;
|
|
4835
|
-
if (
|
|
5207
|
+
if (s.resolvedPrerenderModules?.size) {
|
|
4836
5208
|
const handlers = extractHandlerExportsFromChunk(
|
|
4837
5209
|
chunk.code,
|
|
4838
5210
|
s.resolvedPrerenderModules,
|
|
4839
5211
|
"Prerender",
|
|
4840
|
-
|
|
5212
|
+
false
|
|
4841
5213
|
);
|
|
4842
5214
|
if (handlers.length > 0) {
|
|
4843
|
-
|
|
5215
|
+
const existing = s.handlerChunkInfoMap.get(fileName);
|
|
5216
|
+
if (existing) {
|
|
5217
|
+
existing.exports.push(...handlers);
|
|
5218
|
+
} else {
|
|
5219
|
+
s.handlerChunkInfoMap.set(fileName, {
|
|
5220
|
+
fileName,
|
|
5221
|
+
exports: handlers
|
|
5222
|
+
});
|
|
5223
|
+
}
|
|
4844
5224
|
}
|
|
4845
5225
|
}
|
|
4846
|
-
if (
|
|
5226
|
+
if (s.resolvedStaticModules?.size) {
|
|
4847
5227
|
const handlers = extractHandlerExportsFromChunk(
|
|
4848
5228
|
chunk.code,
|
|
4849
5229
|
s.resolvedStaticModules,
|
|
@@ -4851,7 +5231,15 @@ ${details}`
|
|
|
4851
5231
|
false
|
|
4852
5232
|
);
|
|
4853
5233
|
if (handlers.length > 0) {
|
|
4854
|
-
|
|
5234
|
+
const existing = s.staticHandlerChunkInfoMap.get(fileName);
|
|
5235
|
+
if (existing) {
|
|
5236
|
+
existing.exports.push(...handlers);
|
|
5237
|
+
} else {
|
|
5238
|
+
s.staticHandlerChunkInfoMap.set(fileName, {
|
|
5239
|
+
fileName,
|
|
5240
|
+
exports: handlers
|
|
5241
|
+
});
|
|
5242
|
+
}
|
|
4855
5243
|
}
|
|
4856
5244
|
}
|
|
4857
5245
|
}
|
|
@@ -4878,8 +5266,16 @@ async function rango(options) {
|
|
|
4878
5266
|
const showBanner = resolvedOptions.banner ?? true;
|
|
4879
5267
|
const plugins = [];
|
|
4880
5268
|
const rangoAliases = getPackageAliases();
|
|
4881
|
-
const excludeDeps =
|
|
4882
|
-
|
|
5269
|
+
const excludeDeps = [
|
|
5270
|
+
...getExcludeDeps(),
|
|
5271
|
+
// The public browser entry re-exports the RSDW browser client.
|
|
5272
|
+
// Excluding both keeps Vite from freezing the unpatched bundle into
|
|
5273
|
+
// .vite/deps before our source transforms run.
|
|
5274
|
+
"@vitejs/plugin-rsc/browser",
|
|
5275
|
+
// Keep the browser RSDW client out of Vite's dep optimizer so our
|
|
5276
|
+
// cjs-to-esm transform can patch the real file.
|
|
5277
|
+
"@vitejs/plugin-rsc/vendor/react-server-dom/client.browser"
|
|
5278
|
+
];
|
|
4883
5279
|
const routerRef = { path: void 0 };
|
|
4884
5280
|
const prerenderEnabled = true;
|
|
4885
5281
|
if (preset === "cloudflare") {
|
|
@@ -4975,6 +5371,7 @@ async function rango(options) {
|
|
|
4975
5371
|
}
|
|
4976
5372
|
});
|
|
4977
5373
|
plugins.push(createVirtualEntriesPlugin(finalEntries));
|
|
5374
|
+
plugins.push(performanceTracksPlugin());
|
|
4978
5375
|
plugins.push(
|
|
4979
5376
|
rsc({
|
|
4980
5377
|
entries: finalEntries,
|
|
@@ -4983,153 +5380,122 @@ async function rango(options) {
|
|
|
4983
5380
|
);
|
|
4984
5381
|
plugins.push(clientRefDedup());
|
|
4985
5382
|
} else {
|
|
4986
|
-
|
|
4987
|
-
|
|
4988
|
-
|
|
4989
|
-
|
|
4990
|
-
|
|
4991
|
-
|
|
4992
|
-
|
|
4993
|
-
const
|
|
4994
|
-
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
|
|
4998
|
-
|
|
4999
|
-
|
|
5000
|
-
|
|
5001
|
-
routerRef.path = (abs.startsWith(root) ? "./" + abs.slice(root.length + 1) : abs).replaceAll("\\", "/");
|
|
5002
|
-
} else if (candidates.length > 1) {
|
|
5003
|
-
const list = candidates.map(
|
|
5004
|
-
(f) => " - " + (f.startsWith(root) ? f.slice(root.length + 1) : f)
|
|
5005
|
-
).join("\n");
|
|
5006
|
-
throw new Error(
|
|
5007
|
-
`[rsc-router] Multiple routers found. Specify \`router\` to choose one:
|
|
5008
|
-
${list}`
|
|
5009
|
-
);
|
|
5010
|
-
}
|
|
5383
|
+
plugins.push({
|
|
5384
|
+
name: "@rangojs/router:auto-discover",
|
|
5385
|
+
config(userConfig) {
|
|
5386
|
+
if (routerRef.path) return;
|
|
5387
|
+
const root = userConfig.root ? resolve9(process.cwd(), userConfig.root) : process.cwd();
|
|
5388
|
+
const candidates = findRouterFiles(root);
|
|
5389
|
+
if (candidates.length === 1) {
|
|
5390
|
+
const abs = candidates[0];
|
|
5391
|
+
routerRef.path = (abs.startsWith(root) ? "./" + abs.slice(root.length + 1) : abs).replaceAll("\\", "/");
|
|
5392
|
+
} else if (candidates.length > 1) {
|
|
5393
|
+
const list = candidates.map(
|
|
5394
|
+
(f) => " - " + (f.startsWith(root) ? f.slice(root.length + 1) : f)
|
|
5395
|
+
).join("\n");
|
|
5396
|
+
throw new Error(`[rsc-router] Multiple routers found:
|
|
5397
|
+
${list}`);
|
|
5011
5398
|
}
|
|
5012
|
-
}
|
|
5013
|
-
}
|
|
5014
|
-
const
|
|
5015
|
-
|
|
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
|
-
resolve: {
|
|
5043
|
-
alias: rangoAliases
|
|
5044
|
-
},
|
|
5045
|
-
environments: {
|
|
5046
|
-
client: {
|
|
5047
|
-
build: {
|
|
5048
|
-
rollupOptions: {
|
|
5049
|
-
output: {
|
|
5050
|
-
manualChunks: getManualChunks
|
|
5051
|
-
}
|
|
5052
|
-
}
|
|
5053
|
-
},
|
|
5054
|
-
// Always exclude rsc-router modules, conditionally add virtual entry
|
|
5055
|
-
optimizeDeps: {
|
|
5056
|
-
// Pre-bundle React and rsc-html-stream to prevent late discovery
|
|
5057
|
-
// triggering ERR_OUTDATED_OPTIMIZED_DEP on cold starts
|
|
5058
|
-
include: [
|
|
5059
|
-
"react",
|
|
5060
|
-
"react-dom",
|
|
5061
|
-
"react/jsx-runtime",
|
|
5062
|
-
"react/jsx-dev-runtime",
|
|
5063
|
-
"rsc-html-stream/client"
|
|
5064
|
-
],
|
|
5065
|
-
exclude: excludeDeps,
|
|
5066
|
-
esbuildOptions: sharedEsbuildOptions,
|
|
5067
|
-
...useVirtualClient && {
|
|
5068
|
-
// Tell Vite to scan the virtual entry for dependencies
|
|
5069
|
-
entries: [VIRTUAL_IDS.browser]
|
|
5070
|
-
}
|
|
5071
|
-
}
|
|
5072
|
-
},
|
|
5073
|
-
...useVirtualSSR && {
|
|
5074
|
-
ssr: {
|
|
5075
|
-
optimizeDeps: {
|
|
5076
|
-
entries: [VIRTUAL_IDS.ssr],
|
|
5077
|
-
// Pre-bundle all SSR deps to prevent late discovery triggering ERR_OUTDATED_OPTIMIZED_DEP
|
|
5078
|
-
include: [
|
|
5079
|
-
"react",
|
|
5080
|
-
"react-dom",
|
|
5081
|
-
"react-dom/server.edge",
|
|
5082
|
-
"react-dom/static.edge",
|
|
5083
|
-
"react/jsx-runtime",
|
|
5084
|
-
"react/jsx-dev-runtime",
|
|
5085
|
-
"@vitejs/plugin-rsc/vendor/react-server-dom/client.edge"
|
|
5086
|
-
],
|
|
5087
|
-
exclude: excludeDeps,
|
|
5088
|
-
esbuildOptions: sharedEsbuildOptions
|
|
5399
|
+
}
|
|
5400
|
+
});
|
|
5401
|
+
const finalEntries = {
|
|
5402
|
+
client: VIRTUAL_IDS.browser,
|
|
5403
|
+
ssr: VIRTUAL_IDS.ssr,
|
|
5404
|
+
rsc: VIRTUAL_IDS.rsc
|
|
5405
|
+
};
|
|
5406
|
+
const { default: rsc } = await import("@vitejs/plugin-rsc");
|
|
5407
|
+
let hasWarnedDuplicate = false;
|
|
5408
|
+
plugins.push({
|
|
5409
|
+
name: "@rangojs/router:rsc-integration",
|
|
5410
|
+
enforce: "pre",
|
|
5411
|
+
config() {
|
|
5412
|
+
return {
|
|
5413
|
+
optimizeDeps: {
|
|
5414
|
+
exclude: excludeDeps,
|
|
5415
|
+
esbuildOptions: sharedEsbuildOptions
|
|
5416
|
+
},
|
|
5417
|
+
build: {
|
|
5418
|
+
rollupOptions: { onwarn }
|
|
5419
|
+
},
|
|
5420
|
+
resolve: {
|
|
5421
|
+
alias: rangoAliases
|
|
5422
|
+
},
|
|
5423
|
+
environments: {
|
|
5424
|
+
client: {
|
|
5425
|
+
build: {
|
|
5426
|
+
rollupOptions: {
|
|
5427
|
+
output: {
|
|
5428
|
+
manualChunks: getManualChunks
|
|
5089
5429
|
}
|
|
5090
5430
|
}
|
|
5091
5431
|
},
|
|
5092
|
-
|
|
5093
|
-
|
|
5094
|
-
|
|
5095
|
-
|
|
5096
|
-
|
|
5097
|
-
|
|
5098
|
-
|
|
5099
|
-
|
|
5100
|
-
|
|
5101
|
-
|
|
5102
|
-
|
|
5103
|
-
|
|
5104
|
-
|
|
5105
|
-
|
|
5432
|
+
optimizeDeps: {
|
|
5433
|
+
include: [
|
|
5434
|
+
"react",
|
|
5435
|
+
"react-dom",
|
|
5436
|
+
"react/jsx-runtime",
|
|
5437
|
+
"react/jsx-dev-runtime",
|
|
5438
|
+
"rsc-html-stream/client"
|
|
5439
|
+
],
|
|
5440
|
+
exclude: excludeDeps,
|
|
5441
|
+
esbuildOptions: sharedEsbuildOptions,
|
|
5442
|
+
entries: [VIRTUAL_IDS.browser]
|
|
5443
|
+
}
|
|
5444
|
+
},
|
|
5445
|
+
ssr: {
|
|
5446
|
+
optimizeDeps: {
|
|
5447
|
+
entries: [VIRTUAL_IDS.ssr],
|
|
5448
|
+
include: [
|
|
5449
|
+
"react",
|
|
5450
|
+
"react-dom",
|
|
5451
|
+
"react-dom/server.edge",
|
|
5452
|
+
"react-dom/static.edge",
|
|
5453
|
+
"react/jsx-runtime",
|
|
5454
|
+
"react/jsx-dev-runtime",
|
|
5455
|
+
"@vitejs/plugin-rsc/vendor/react-server-dom/client.edge"
|
|
5456
|
+
],
|
|
5457
|
+
exclude: excludeDeps,
|
|
5458
|
+
esbuildOptions: sharedEsbuildOptions
|
|
5459
|
+
}
|
|
5460
|
+
},
|
|
5461
|
+
rsc: {
|
|
5462
|
+
optimizeDeps: {
|
|
5463
|
+
entries: [VIRTUAL_IDS.rsc],
|
|
5464
|
+
include: [
|
|
5465
|
+
"react",
|
|
5466
|
+
"react/jsx-runtime",
|
|
5467
|
+
"react/jsx-dev-runtime",
|
|
5468
|
+
"@vitejs/plugin-rsc/vendor/react-server-dom/server.edge"
|
|
5469
|
+
],
|
|
5470
|
+
esbuildOptions: sharedEsbuildOptions
|
|
5106
5471
|
}
|
|
5107
5472
|
}
|
|
5108
|
-
};
|
|
5109
|
-
},
|
|
5110
|
-
configResolved(config) {
|
|
5111
|
-
if (showBanner) {
|
|
5112
|
-
const mode = config.command === "serve" ? process.argv.includes("preview") ? "preview" : "dev" : "build";
|
|
5113
|
-
printBanner(mode, "node", rangoVersion);
|
|
5114
|
-
}
|
|
5115
|
-
const rscMinimalCount = config.plugins.filter(
|
|
5116
|
-
(p) => p.name === "rsc:minimal"
|
|
5117
|
-
).length;
|
|
5118
|
-
if (rscMinimalCount > 1 && !hasWarnedDuplicate) {
|
|
5119
|
-
hasWarnedDuplicate = true;
|
|
5120
|
-
console.warn(
|
|
5121
|
-
"[rsc-router] Duplicate @vitejs/plugin-rsc detected. Remove rsc() from your config or use rango({ rsc: false }) for manual configuration."
|
|
5122
|
-
);
|
|
5123
5473
|
}
|
|
5474
|
+
};
|
|
5475
|
+
},
|
|
5476
|
+
configResolved(config) {
|
|
5477
|
+
if (showBanner) {
|
|
5478
|
+
const mode = config.command === "serve" ? process.argv.includes("preview") ? "preview" : "dev" : "build";
|
|
5479
|
+
printBanner(mode, "node", rangoVersion);
|
|
5124
5480
|
}
|
|
5125
|
-
|
|
5126
|
-
|
|
5127
|
-
|
|
5128
|
-
|
|
5129
|
-
|
|
5130
|
-
|
|
5131
|
-
|
|
5132
|
-
|
|
5481
|
+
const rscMinimalCount = config.plugins.filter(
|
|
5482
|
+
(p) => p.name === "rsc:minimal"
|
|
5483
|
+
).length;
|
|
5484
|
+
if (rscMinimalCount > 1 && !hasWarnedDuplicate) {
|
|
5485
|
+
hasWarnedDuplicate = true;
|
|
5486
|
+
console.warn(
|
|
5487
|
+
"[rsc-router] Duplicate @vitejs/plugin-rsc detected. Remove rsc() from your vite config \u2014 rango() includes it automatically."
|
|
5488
|
+
);
|
|
5489
|
+
}
|
|
5490
|
+
}
|
|
5491
|
+
});
|
|
5492
|
+
plugins.push(createVirtualEntriesPlugin(finalEntries, routerRef));
|
|
5493
|
+
plugins.push(performanceTracksPlugin());
|
|
5494
|
+
plugins.push(
|
|
5495
|
+
rsc({
|
|
5496
|
+
entries: finalEntries
|
|
5497
|
+
})
|
|
5498
|
+
);
|
|
5133
5499
|
plugins.push(clientRefDedup());
|
|
5134
5500
|
}
|
|
5135
5501
|
plugins.push({
|
|
@@ -5157,18 +5523,16 @@ ${list}`
|
|
|
5157
5523
|
plugins.push(createVersionPlugin());
|
|
5158
5524
|
const discoveryEntryPath = preset !== "cloudflare" ? routerRef.path : void 0;
|
|
5159
5525
|
const discoveryRouterRef = preset !== "cloudflare" ? routerRef : void 0;
|
|
5160
|
-
|
|
5161
|
-
|
|
5162
|
-
plugins.push(createVersionInjectorPlugin(injectorEntryPath));
|
|
5526
|
+
if (preset === "cloudflare") {
|
|
5527
|
+
plugins.push(createVersionInjectorPlugin(void 0));
|
|
5163
5528
|
}
|
|
5164
5529
|
plugins.push(createCjsToEsmPlugin());
|
|
5165
5530
|
plugins.push(
|
|
5166
5531
|
createRouterDiscoveryPlugin(discoveryEntryPath, {
|
|
5167
5532
|
routerPathRef: discoveryRouterRef,
|
|
5168
5533
|
enableBuildPrerender: prerenderEnabled,
|
|
5169
|
-
|
|
5170
|
-
|
|
5171
|
-
exclude: resolvedOptions.exclude
|
|
5534
|
+
buildEnv: options?.buildEnv,
|
|
5535
|
+
preset
|
|
5172
5536
|
})
|
|
5173
5537
|
);
|
|
5174
5538
|
return plugins;
|
|
@@ -5181,29 +5545,75 @@ function poke() {
|
|
|
5181
5545
|
apply: "serve",
|
|
5182
5546
|
configureServer(server) {
|
|
5183
5547
|
const stdin = process.stdin;
|
|
5184
|
-
const
|
|
5548
|
+
const debug = process.env.RANGO_POKE_DEBUG === "1";
|
|
5549
|
+
const triggerReload = (source) => {
|
|
5550
|
+
server.hot.send({ type: "full-reload", path: "*" });
|
|
5551
|
+
server.config.logger.info(` browser reload (${source})`, {
|
|
5552
|
+
timestamp: true
|
|
5553
|
+
});
|
|
5554
|
+
};
|
|
5555
|
+
const toBuffer = (chunk) => {
|
|
5556
|
+
return typeof chunk === "string" ? Buffer.from(chunk, "utf8") : chunk;
|
|
5557
|
+
};
|
|
5558
|
+
const formatChunk = (chunk) => {
|
|
5559
|
+
const data = toBuffer(chunk);
|
|
5560
|
+
const hex = Array.from(data).map((byte) => `0x${byte.toString(16).padStart(2, "0")}`).join(" ");
|
|
5561
|
+
const ascii = Array.from(data).map((byte) => {
|
|
5562
|
+
if (byte >= 32 && byte <= 126) return String.fromCharCode(byte);
|
|
5563
|
+
if (byte === 10) return "\\n";
|
|
5564
|
+
if (byte === 13) return "\\r";
|
|
5565
|
+
if (byte === 9) return "\\t";
|
|
5566
|
+
return ".";
|
|
5567
|
+
}).join("");
|
|
5568
|
+
return `len=${data.length} hex=[${hex}] ascii="${ascii}"`;
|
|
5569
|
+
};
|
|
5570
|
+
const readCtrlR = (chunk) => {
|
|
5571
|
+
const data = typeof chunk === "string" ? Buffer.from(chunk, "utf8") : chunk;
|
|
5572
|
+
return data.length === 1 && data[0] === 18;
|
|
5573
|
+
};
|
|
5574
|
+
const readSubmittedCommands = (chunk) => {
|
|
5575
|
+
const text = toBuffer(chunk).toString("utf8").replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
5576
|
+
if (!text.includes("\n")) return [];
|
|
5577
|
+
const lines = text.split("\n");
|
|
5578
|
+
lines.pop();
|
|
5579
|
+
return lines;
|
|
5580
|
+
};
|
|
5581
|
+
if (debug) {
|
|
5582
|
+
server.config.logger.info(
|
|
5583
|
+
` poke debug enabled (isTTY=${stdin.isTTY ? "yes" : "no"}, isRaw=${stdin.isTTY ? stdin.isRaw ? "yes" : "no" : "n/a"})`,
|
|
5584
|
+
{ timestamp: true }
|
|
5585
|
+
);
|
|
5586
|
+
}
|
|
5185
5587
|
if (stdin.isTTY) {
|
|
5186
|
-
|
|
5588
|
+
server.config.logger.info(
|
|
5589
|
+
" poke ready: press e + enter to reload browser (ctrl+r also works when available)",
|
|
5590
|
+
{ timestamp: true }
|
|
5591
|
+
);
|
|
5187
5592
|
}
|
|
5188
5593
|
const onData = (data) => {
|
|
5189
|
-
if (
|
|
5190
|
-
|
|
5191
|
-
process.emit("SIGINT", "SIGINT");
|
|
5192
|
-
return;
|
|
5193
|
-
}
|
|
5194
|
-
if (data[0] === 18) {
|
|
5195
|
-
server.hot.send({ type: "full-reload", path: "*" });
|
|
5196
|
-
server.config.logger.info(" browser reload (ctrl+r)", {
|
|
5594
|
+
if (debug) {
|
|
5595
|
+
server.config.logger.info(` poke stdin ${formatChunk(data)}`, {
|
|
5197
5596
|
timestamp: true
|
|
5198
5597
|
});
|
|
5199
5598
|
}
|
|
5599
|
+
if (readCtrlR(data)) {
|
|
5600
|
+
triggerReload("ctrl+r");
|
|
5601
|
+
return;
|
|
5602
|
+
}
|
|
5603
|
+
for (const command of readSubmittedCommands(data)) {
|
|
5604
|
+
if (command === "e") {
|
|
5605
|
+
triggerReload("e+enter");
|
|
5606
|
+
return;
|
|
5607
|
+
}
|
|
5608
|
+
if (command === "\x1Br") {
|
|
5609
|
+
triggerReload("option+r+enter");
|
|
5610
|
+
return;
|
|
5611
|
+
}
|
|
5612
|
+
}
|
|
5200
5613
|
};
|
|
5201
5614
|
stdin.on("data", onData);
|
|
5202
5615
|
server.httpServer?.on("close", () => {
|
|
5203
5616
|
stdin.off("data", onData);
|
|
5204
|
-
if (stdin.isTTY && previousRawMode !== null) {
|
|
5205
|
-
stdin.setRawMode(previousRawMode);
|
|
5206
|
-
}
|
|
5207
5617
|
});
|
|
5208
5618
|
}
|
|
5209
5619
|
};
|