@rangojs/router 0.5.1 → 0.6.0
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 +5 -1
- package/dist/bin/rango.js +343 -125
- package/dist/types/browser/event-controller.d.ts +6 -0
- package/dist/types/browser/react/use-router.d.ts +10 -3
- package/dist/types/browser/react/use-search-params.d.ts +57 -10
- package/dist/types/browser/types.d.ts +22 -0
- package/dist/types/build/merge-full-manifests.d.ts +3 -0
- package/dist/types/build/route-trie.d.ts +4 -73
- package/dist/types/build/route-types/per-module-writer.d.ts +6 -4
- package/dist/types/build/route-types/router-processing.d.ts +2 -3
- package/dist/types/cache/cache-exec-scope.d.ts +31 -0
- package/dist/types/cache/cf/cf-cache-constants.d.ts +8 -1
- package/dist/types/cache/cf/cf-cache-store.d.ts +15 -1
- package/dist/types/cache/cf/cf-cache-types.d.ts +1 -1
- package/dist/types/cache/cf/cf-kv-utils.d.ts +21 -0
- package/dist/types/cache/taint.d.ts +12 -6
- package/dist/types/client-urls/client-root.d.ts +38 -0
- package/dist/types/client-urls/client-urls.d.ts +5 -0
- package/dist/types/client-urls/navigation.d.ts +38 -0
- package/dist/types/client-urls/revalidation-protocol.d.ts +25 -0
- package/dist/types/client-urls/server-projection.d.ts +62 -0
- package/dist/types/client-urls/types.d.ts +144 -0
- package/dist/types/client.d.ts +12 -4
- package/dist/types/client.rsc.d.ts +4 -1
- package/dist/types/decode-loader-results.d.ts +37 -0
- package/dist/types/errors.d.ts +1 -0
- package/dist/types/handles/is-thenable.d.ts +2 -4
- package/dist/types/index.d.ts +1 -1
- package/dist/types/loader-redirect.d.ts +27 -0
- package/dist/types/outlet-context.d.ts +12 -0
- package/dist/types/outlet-provider.d.ts +3 -1
- package/dist/types/redirect-origin.d.ts +4 -0
- package/dist/types/route-content-wrapper.d.ts +42 -1
- package/dist/types/route-definition/helpers-types.d.ts +13 -2
- package/dist/types/router/error-handling.d.ts +35 -1
- package/dist/types/router/intercept-resolution.d.ts +12 -0
- package/dist/types/router/loader-resolution.d.ts +24 -2
- package/dist/types/router/revalidation.d.ts +7 -0
- package/dist/{types.backup/build/route-trie.d.ts → types/router/route-trie-builder.d.ts} +4 -16
- package/dist/types/router/router-interfaces.d.ts +20 -0
- package/dist/types/router/segment-resolution/helpers.d.ts +1 -1
- package/dist/types/router/trie-matching.d.ts +1 -1
- package/dist/types/rsc/helpers.d.ts +3 -0
- package/dist/types/rsc/manifest-init.d.ts +5 -5
- package/dist/types/rsc/render-pipeline.d.ts +9 -0
- package/dist/types/rsc/routine-plan.d.ts +124 -0
- package/dist/types/rsc/shell-capture-constants.d.ts +17 -0
- package/dist/types/rsc/shell-capture.d.ts +9 -0
- package/dist/types/rsc/shell-serve.d.ts +11 -0
- package/dist/types/rsc/types.d.ts +30 -0
- package/dist/types/segment-system.d.ts +2 -0
- package/dist/types/server/context.d.ts +10 -0
- package/dist/types/server/handle-store.d.ts +34 -3
- package/dist/types/server/request-context.d.ts +14 -1
- package/dist/types/server.d.ts +1 -0
- package/dist/types/ssr/index.d.ts +22 -0
- package/dist/types/ssr/ssr-root.d.ts +10 -0
- package/dist/types/testing/dom.entry.d.ts +1 -1
- package/dist/types/testing/render-route.d.ts +16 -6
- package/dist/types/testing/run-loader.d.ts +9 -0
- package/dist/types/types/boundaries.d.ts +22 -0
- package/dist/types/types/index.d.ts +1 -1
- package/dist/types/types/loader-types.d.ts +57 -5
- package/dist/types/types/segments.d.ts +7 -0
- package/dist/types/urls/path-helper-types.d.ts +10 -4
- package/dist/types/vite/discovery/client-urls-projection.d.ts +53 -0
- package/dist/types/vite/discovery/discover-routers.d.ts +1 -1
- package/dist/types/vite/discovery/state.d.ts +8 -1
- package/dist/types/vite/encryption-key.d.ts +2 -0
- package/dist/types/vite/plugins/expose-internal-ids.d.ts +10 -0
- package/dist/types/vite/plugins/server-ref-hashing.d.ts +24 -0
- package/dist/types/vite/plugins/server-reference-pattern.d.ts +1 -0
- package/dist/types/vite/utils/shared-utils.d.ts +12 -0
- package/dist/vite/index.js +5101 -2056
- package/package.json +3 -3
- package/skills/breadcrumbs/SKILL.md +39 -9
- package/skills/caching/SKILL.md +1 -1
- package/skills/catalog.json +7 -1
- package/skills/client-urls/SKILL.md +338 -0
- package/skills/comparison/references/framework-comparison.md +23 -9
- package/skills/hooks/SKILL.md +2 -2
- package/skills/hooks/data.md +11 -2
- package/skills/hooks/handle-and-actions.md +7 -0
- package/skills/hooks/outlets.md +26 -5
- package/skills/hooks/urls.md +40 -3
- package/skills/loader/SKILL.md +132 -20
- package/skills/migrate-nextjs/SKILL.md +70 -10
- package/skills/migrate-react-router/SKILL.md +49 -13
- package/skills/migrate-react-router/component-migration.md +18 -13
- package/skills/migrate-react-router/data-and-actions.md +14 -3
- package/skills/migrate-react-router/route-mapping.md +15 -2
- package/skills/mime-routes/SKILL.md +3 -1
- package/skills/parallel/SKILL.md +32 -1
- package/skills/ppr/SKILL.md +16 -6
- package/skills/prerender/SKILL.md +8 -4
- package/skills/rango/SKILL.md +21 -17
- package/skills/react-compiler/SKILL.md +3 -3
- package/skills/response-routes/SKILL.md +4 -2
- package/skills/route/SKILL.md +5 -2
- package/skills/router-setup/SKILL.md +16 -2
- package/skills/scripts/SKILL.md +16 -6
- package/skills/shell-manifest/SKILL.md +16 -7
- package/skills/testing/SKILL.md +2 -2
- package/skills/testing/client-components.md +6 -0
- package/skills/testing/handles.md +30 -8
- package/skills/testing/loader.md +51 -49
- package/skills/testing/middleware.md +1 -1
- package/skills/theme/SKILL.md +8 -5
- package/skills/typesafety/generated-files-and-cli.md +16 -9
- package/skills/typesafety/route-types.md +5 -1
- package/skills/use-cache/SKILL.md +47 -0
- package/src/bin/rango.ts +7 -3
- package/src/browser/event-controller.ts +40 -15
- package/src/browser/navigation-bridge.ts +6 -0
- package/src/browser/navigation-client.ts +5 -0
- package/src/browser/partial-update.ts +77 -10
- package/src/browser/react/NavigationProvider.tsx +7 -0
- package/src/browser/react/use-router.ts +40 -11
- package/src/browser/react/use-search-params.ts +140 -17
- package/src/browser/rsc-router.tsx +59 -0
- package/src/browser/server-action-bridge.ts +26 -0
- package/src/browser/types.ts +22 -0
- package/src/build/merge-full-manifests.ts +161 -0
- package/src/build/route-trie.ts +9 -332
- package/src/build/route-types/include-resolution.ts +66 -11
- package/src/build/route-types/per-module-writer.ts +11 -6
- package/src/build/route-types/router-processing.ts +184 -153
- package/src/build/runtime-discovery.ts +23 -12
- package/src/cache/cache-exec-scope.ts +47 -0
- package/src/cache/cache-runtime.ts +113 -40
- package/src/cache/cf/cf-cache-constants.ts +8 -1
- package/src/cache/cf/cf-cache-store.ts +41 -64
- package/src/cache/cf/cf-cache-types.ts +1 -1
- package/src/cache/cf/cf-kv-utils.ts +38 -0
- package/src/cache/segment-codec.ts +21 -5
- package/src/cache/taint.ts +28 -9
- package/src/client-urls/client-root.tsx +168 -0
- package/src/client-urls/client-urls.ts +698 -0
- package/src/client-urls/navigation.ts +237 -0
- package/src/client-urls/revalidation-protocol.ts +56 -0
- package/src/client-urls/server-projection.ts +579 -0
- package/src/client-urls/types.ts +195 -0
- package/src/client.rsc.tsx +12 -0
- package/src/client.tsx +49 -6
- package/src/decode-loader-results.ts +113 -0
- package/src/errors.ts +14 -0
- package/src/handles/deferred-resolution.ts +14 -7
- package/src/handles/is-thenable.ts +2 -4
- package/src/index.ts +1 -0
- package/src/loader-redirect.tsx +64 -0
- package/src/outlet-context.ts +12 -0
- package/src/outlet-provider.tsx +15 -1
- package/src/redirect-origin.ts +29 -0
- package/src/route-content-wrapper.tsx +96 -3
- package/src/route-definition/dsl-helpers.ts +28 -3
- package/src/route-definition/helpers-types.ts +13 -0
- package/src/route-definition/redirect.ts +17 -18
- package/src/router/error-handling.ts +65 -11
- package/src/router/intercept-resolution.ts +29 -0
- package/src/router/loader-resolution.ts +261 -28
- package/src/router/match-middleware/cache-lookup.ts +24 -15
- package/src/router/match-result.ts +7 -0
- package/src/router/revalidation.ts +24 -11
- package/src/router/route-trie-builder.ts +334 -0
- package/src/router/router-interfaces.ts +38 -0
- package/src/router/segment-resolution/fresh.ts +47 -0
- package/src/router/segment-resolution/helpers.ts +9 -11
- package/src/router/segment-resolution/loader-cache.ts +14 -24
- package/src/router/segment-resolution/revalidation.ts +20 -1
- package/src/router/trie-matching.ts +3 -3
- package/src/router.ts +46 -1
- package/src/rsc/full-payload.ts +6 -0
- package/src/rsc/handler.ts +36 -12
- package/src/rsc/helpers.ts +13 -0
- package/src/rsc/loader-fetch.ts +2 -2
- package/src/rsc/manifest-init.ts +28 -9
- package/src/rsc/progressive-enhancement.ts +247 -70
- package/src/rsc/render-pipeline.ts +68 -24
- package/src/rsc/routine-plan.ts +359 -0
- package/src/rsc/rsc-rendering.ts +569 -302
- package/src/rsc/server-action.ts +180 -71
- package/src/rsc/shell-capture-constants.ts +18 -0
- package/src/rsc/shell-capture.ts +104 -21
- package/src/rsc/shell-serve.ts +15 -2
- package/src/rsc/ssr-setup.ts +10 -1
- package/src/rsc/types.ts +31 -2
- package/src/segment-system.tsx +83 -26
- package/src/server/context.ts +10 -0
- package/src/server/cookie-store.ts +19 -19
- package/src/server/handle-store.ts +185 -48
- package/src/server/request-context.ts +36 -6
- package/src/server.ts +7 -0
- package/src/ssr/index.tsx +37 -2
- package/src/ssr/ssr-root.tsx +30 -2
- package/src/testing/dom.entry.ts +1 -1
- package/src/testing/render-route.tsx +22 -8
- package/src/testing/run-loader.ts +51 -13
- package/src/types/boundaries.ts +19 -0
- package/src/types/index.ts +1 -0
- package/src/types/loader-types.ts +60 -5
- package/src/types/segments.ts +7 -0
- package/src/urls/include-helper.ts +22 -4
- package/src/urls/path-helper-types.ts +14 -1
- package/src/use-loader.tsx +67 -6
- package/src/vite/discovery/client-urls-projection.ts +322 -0
- package/src/vite/discovery/discover-routers.ts +43 -17
- package/src/vite/discovery/state.ts +11 -1
- package/src/vite/discovery/virtual-module-codegen.ts +20 -0
- package/src/vite/encryption-key.ts +29 -0
- package/src/vite/plugins/expose-action-id.ts +2 -2
- package/src/vite/plugins/expose-internal-ids.ts +46 -0
- package/src/vite/plugins/server-ref-hashing.ts +74 -0
- package/src/vite/plugins/server-reference-pattern.ts +10 -0
- package/src/vite/plugins/virtual-entries.ts +12 -3
- package/src/vite/rango.ts +9 -0
- package/src/vite/router-discovery.ts +184 -14
- package/src/vite/utils/shared-utils.ts +12 -7
- package/dist/types.backup/__internal.d.ts +0 -127
- package/dist/types.backup/bin/rango.d.ts +0 -1
- package/dist/types.backup/browser/action-coordinator.d.ts +0 -57
- package/dist/types.backup/browser/action-fence.d.ts +0 -33
- package/dist/types.backup/browser/app-shell.d.ts +0 -34
- package/dist/types.backup/browser/app-version.d.ts +0 -6
- package/dist/types.backup/browser/connection-warmup.d.ts +0 -31
- package/dist/types.backup/browser/cookie-name.d.ts +0 -66
- package/dist/types.backup/browser/event-controller.d.ts +0 -221
- package/dist/types.backup/browser/history-state.d.ts +0 -26
- package/dist/types.backup/browser/index.d.ts +0 -1
- package/dist/types.backup/browser/intercept-utils.d.ts +0 -30
- package/dist/types.backup/browser/invalidate-client-cache.d.ts +0 -17
- package/dist/types.backup/browser/link-interceptor.d.ts +0 -43
- package/dist/types.backup/browser/logging.d.ts +0 -33
- package/dist/types.backup/browser/merge-segment-loaders.d.ts +0 -38
- package/dist/types.backup/browser/navigation-bridge.d.ts +0 -27
- package/dist/types.backup/browser/navigation-client.d.ts +0 -17
- package/dist/types.backup/browser/navigation-store-handle.d.ts +0 -25
- package/dist/types.backup/browser/navigation-store.d.ts +0 -95
- package/dist/types.backup/browser/navigation-transaction.d.ts +0 -75
- package/dist/types.backup/browser/network-error-handler.d.ts +0 -35
- package/dist/types.backup/browser/partial-update.d.ts +0 -61
- package/dist/types.backup/browser/prefetch/cache.d.ts +0 -183
- package/dist/types.backup/browser/prefetch/fetch.d.ts +0 -52
- package/dist/types.backup/browser/prefetch/observer.d.ts +0 -27
- package/dist/types.backup/browser/prefetch/policy.d.ts +0 -13
- package/dist/types.backup/browser/prefetch/queue.d.ts +0 -48
- package/dist/types.backup/browser/prefetch/resource-ready.d.ts +0 -28
- package/dist/types.backup/browser/rango-state.d.ts +0 -52
- package/dist/types.backup/browser/react/Link.d.ts +0 -140
- package/dist/types.backup/browser/react/NavigationProvider.d.ts +0 -88
- package/dist/types.backup/browser/react/ScrollRestoration.d.ts +0 -78
- package/dist/types.backup/browser/react/context.d.ts +0 -54
- package/dist/types.backup/browser/react/filter-segment-order.d.ts +0 -35
- package/dist/types.backup/browser/react/index.d.ts +0 -1
- package/dist/types.backup/browser/react/location-state-shared.d.ts +0 -162
- package/dist/types.backup/browser/react/location-state.d.ts +0 -29
- package/dist/types.backup/browser/react/mount-context.d.ts +0 -23
- package/dist/types.backup/browser/react/nonce-context.d.ts +0 -14
- package/dist/types.backup/browser/react/shallow-equal.d.ts +0 -5
- package/dist/types.backup/browser/react/use-action.d.ts +0 -61
- package/dist/types.backup/browser/react/use-handle.d.ts +0 -21
- package/dist/types.backup/browser/react/use-href.d.ts +0 -32
- package/dist/types.backup/browser/react/use-link-status.d.ts +0 -36
- package/dist/types.backup/browser/react/use-mount.d.ts +0 -24
- package/dist/types.backup/browser/react/use-navigation.d.ts +0 -15
- package/dist/types.backup/browser/react/use-params.d.ts +0 -21
- package/dist/types.backup/browser/react/use-pathname.d.ts +0 -13
- package/dist/types.backup/browser/react/use-reverse.d.ts +0 -40
- package/dist/types.backup/browser/react/use-router.d.ts +0 -23
- package/dist/types.backup/browser/react/use-search-params.d.ts +0 -19
- package/dist/types.backup/browser/react/use-segments.d.ts +0 -29
- package/dist/types.backup/browser/response-adapter.d.ts +0 -58
- package/dist/types.backup/browser/rsc-router.d.ts +0 -141
- package/dist/types.backup/browser/scroll-restoration.d.ts +0 -103
- package/dist/types.backup/browser/segment-reconciler.d.ts +0 -74
- package/dist/types.backup/browser/segment-structure-assert.d.ts +0 -16
- package/dist/types.backup/browser/server-action-bridge.d.ts +0 -29
- package/dist/types.backup/browser/types.d.ts +0 -530
- package/dist/types.backup/browser/validate-redirect-origin.d.ts +0 -28
- package/dist/types.backup/build/collect-fallback-refs.d.ts +0 -5
- package/dist/types.backup/build/generate-manifest.d.ts +0 -100
- package/dist/types.backup/build/generate-route-types.d.ts +0 -8
- package/dist/types.backup/build/index.d.ts +0 -21
- package/dist/types.backup/build/prefix-tree-utils.d.ts +0 -56
- package/dist/types.backup/build/route-types/ast-helpers.d.ts +0 -3
- package/dist/types.backup/build/route-types/ast-route-extraction.d.ts +0 -13
- package/dist/types.backup/build/route-types/codegen.d.ts +0 -16
- package/dist/types.backup/build/route-types/include-resolution.d.ts +0 -74
- package/dist/types.backup/build/route-types/param-extraction.d.ts +0 -13
- package/dist/types.backup/build/route-types/per-module-writer.d.ts +0 -18
- package/dist/types.backup/build/route-types/router-processing.d.ts +0 -82
- package/dist/types.backup/build/route-types/scan-filter.d.ts +0 -17
- package/dist/types.backup/build/route-types/source-scan.d.ts +0 -13
- package/dist/types.backup/build/runtime-discovery.d.ts +0 -24
- package/dist/types.backup/cache/background-task.d.ts +0 -21
- package/dist/types.backup/cache/cache-error.d.ts +0 -71
- package/dist/types.backup/cache/cache-key-utils.d.ts +0 -35
- package/dist/types.backup/cache/cache-policy.d.ts +0 -59
- package/dist/types.backup/cache/cache-runtime.d.ts +0 -51
- package/dist/types.backup/cache/cache-scope.d.ts +0 -134
- package/dist/types.backup/cache/cache-tag.d.ts +0 -79
- package/dist/types.backup/cache/cf/cf-base64.d.ts +0 -4
- package/dist/types.backup/cache/cf/cf-cache-constants.d.ts +0 -105
- package/dist/types.backup/cache/cf/cf-cache-store.d.ts +0 -481
- package/dist/types.backup/cache/cf/cf-cache-types.d.ts +0 -300
- package/dist/types.backup/cache/cf/cf-kv-utils.d.ts +0 -22
- package/dist/types.backup/cache/cf/cf-tag-marker-memo.d.ts +0 -15
- package/dist/types.backup/cache/cf/index.d.ts +0 -3
- package/dist/types.backup/cache/document-cache.d.ts +0 -69
- package/dist/types.backup/cache/handle-capture.d.ts +0 -23
- package/dist/types.backup/cache/handle-snapshot.d.ts +0 -39
- package/dist/types.backup/cache/index.d.ts +0 -7
- package/dist/types.backup/cache/memory-segment-store.d.ts +0 -163
- package/dist/types.backup/cache/profile-registry.d.ts +0 -40
- package/dist/types.backup/cache/read-through-swr.d.ts +0 -60
- package/dist/types.backup/cache/segment-codec.d.ts +0 -78
- package/dist/types.backup/cache/shell-snapshot.d.ts +0 -162
- package/dist/types.backup/cache/tag-invalidation.d.ts +0 -74
- package/dist/types.backup/cache/taint.d.ts +0 -71
- package/dist/types.backup/cache/types.d.ts +0 -407
- package/dist/types.backup/cache/vercel/index.d.ts +0 -1
- package/dist/types.backup/cache/vercel/vercel-cache-store.d.ts +0 -267
- package/dist/types.backup/client.d.ts +0 -184
- package/dist/types.backup/client.rsc.d.ts +0 -39
- package/dist/types.backup/cloudflare/index.d.ts +0 -7
- package/dist/types.backup/cloudflare/tracing.d.ts +0 -53
- package/dist/types.backup/component-utils.d.ts +0 -46
- package/dist/types.backup/components/DefaultDocument.d.ts +0 -13
- package/dist/types.backup/context-var.d.ts +0 -84
- package/dist/types.backup/debug.d.ts +0 -57
- package/dist/types.backup/decode-loader-results.d.ts +0 -5
- package/dist/types.backup/default-error-boundary.d.ts +0 -10
- package/dist/types.backup/defer.d.ts +0 -89
- package/dist/types.backup/deps/browser.d.ts +0 -1
- package/dist/types.backup/deps/html-stream-client.d.ts +0 -1
- package/dist/types.backup/deps/html-stream-server.d.ts +0 -1
- package/dist/types.backup/deps/rsc.d.ts +0 -1
- package/dist/types.backup/deps/ssr.d.ts +0 -1
- package/dist/types.backup/encode-kv.d.ts +0 -35
- package/dist/types.backup/errors.d.ts +0 -226
- package/dist/types.backup/escape-script.d.ts +0 -44
- package/dist/types.backup/handle.d.ts +0 -93
- package/dist/types.backup/handles/MetaTags.d.ts +0 -17
- package/dist/types.backup/handles/Scripts.d.ts +0 -38
- package/dist/types.backup/handles/breadcrumbs.d.ts +0 -43
- package/dist/types.backup/handles/deferred-resolution.d.ts +0 -53
- package/dist/types.backup/handles/is-thenable.d.ts +0 -12
- package/dist/types.backup/handles/meta.d.ts +0 -43
- package/dist/types.backup/handles/script.d.ts +0 -139
- package/dist/types.backup/host/cookie-handler.d.ts +0 -8
- package/dist/types.backup/host/errors.d.ts +0 -40
- package/dist/types.backup/host/index.d.ts +0 -33
- package/dist/types.backup/host/pattern-matcher.d.ts +0 -30
- package/dist/types.backup/host/router.d.ts +0 -12
- package/dist/types.backup/host/testing.d.ts +0 -41
- package/dist/types.backup/host/types.d.ts +0 -148
- package/dist/types.backup/host/utils.d.ts +0 -20
- package/dist/types.backup/href-client.d.ts +0 -214
- package/dist/types.backup/index.d.ts +0 -112
- package/dist/types.backup/index.rsc.d.ts +0 -51
- package/dist/types.backup/internal-debug.d.ts +0 -1
- package/dist/types.backup/loader-store.d.ts +0 -193
- package/dist/types.backup/loader.d.ts +0 -18
- package/dist/types.backup/loader.rsc.d.ts +0 -18
- package/dist/types.backup/missing-id-error.d.ts +0 -1
- package/dist/types.backup/outlet-context.d.ts +0 -12
- package/dist/types.backup/outlet-provider.d.ts +0 -12
- package/dist/types.backup/prerender/build-shell-capture.d.ts +0 -104
- package/dist/types.backup/prerender/param-hash.d.ts +0 -6
- package/dist/types.backup/prerender/shell-manifest-key.d.ts +0 -18
- package/dist/types.backup/prerender/store.d.ts +0 -62
- package/dist/types.backup/prerender.d.ts +0 -292
- package/dist/types.backup/redirect-origin.d.ts +0 -55
- package/dist/types.backup/regex-escape.d.ts +0 -6
- package/dist/types.backup/render-error-thrower.d.ts +0 -13
- package/dist/types.backup/response-utils.d.ts +0 -35
- package/dist/types.backup/reverse.d.ts +0 -206
- package/dist/types.backup/root-error-boundary.d.ts +0 -32
- package/dist/types.backup/route-content-wrapper.d.ts +0 -40
- package/dist/types.backup/route-definition/dsl-helpers.d.ts +0 -130
- package/dist/types.backup/route-definition/helper-factories.d.ts +0 -22
- package/dist/types.backup/route-definition/helpers-types.d.ts +0 -392
- package/dist/types.backup/route-definition/index.d.ts +0 -7
- package/dist/types.backup/route-definition/redirect.d.ts +0 -48
- package/dist/types.backup/route-definition/resolve-handler-use.d.ts +0 -19
- package/dist/types.backup/route-definition/use-item-types.d.ts +0 -1
- package/dist/types.backup/route-definition.d.ts +0 -1
- package/dist/types.backup/route-map-builder.d.ts +0 -127
- package/dist/types.backup/route-name.d.ts +0 -27
- package/dist/types.backup/route-types.d.ts +0 -172
- package/dist/types.backup/router/basename.d.ts +0 -10
- package/dist/types.backup/router/content-negotiation.d.ts +0 -91
- package/dist/types.backup/router/debug-manifest.d.ts +0 -7
- package/dist/types.backup/router/error-handling.d.ts +0 -76
- package/dist/types.backup/router/find-match.d.ts +0 -19
- package/dist/types.backup/router/handler-context.d.ts +0 -41
- package/dist/types.backup/router/instrument.d.ts +0 -161
- package/dist/types.backup/router/intercept-resolution.d.ts +0 -79
- package/dist/types.backup/router/lazy-includes.d.ts +0 -26
- package/dist/types.backup/router/loader-resolution.d.ts +0 -63
- package/dist/types.backup/router/logging.d.ts +0 -41
- package/dist/types.backup/router/manifest.d.ts +0 -8
- package/dist/types.backup/router/match-api.d.ts +0 -19
- package/dist/types.backup/router/match-context.d.ts +0 -184
- package/dist/types.backup/router/match-handlers.d.ts +0 -49
- package/dist/types.backup/router/match-middleware/background-revalidation.d.ts +0 -113
- package/dist/types.backup/router/match-middleware/cache-lookup.d.ts +0 -113
- package/dist/types.backup/router/match-middleware/cache-store.d.ts +0 -112
- package/dist/types.backup/router/match-middleware/index.d.ts +0 -80
- package/dist/types.backup/router/match-middleware/intercept-resolution.d.ts +0 -116
- package/dist/types.backup/router/match-middleware/segment-resolution.d.ts +0 -94
- package/dist/types.backup/router/match-pipelines.d.ts +0 -103
- package/dist/types.backup/router/match-result.d.ts +0 -114
- package/dist/types.backup/router/metrics.d.ts +0 -6
- package/dist/types.backup/router/middleware-types.d.ts +0 -74
- package/dist/types.backup/router/middleware.d.ts +0 -116
- package/dist/types.backup/router/navigation-snapshot.d.ts +0 -22
- package/dist/types.backup/router/params-util.d.ts +0 -8
- package/dist/types.backup/router/parse-pattern.d.ts +0 -38
- package/dist/types.backup/router/pattern-matching.d.ts +0 -169
- package/dist/types.backup/router/prefetch-cache-ttl.d.ts +0 -27
- package/dist/types.backup/router/prefetch-limits.d.ts +0 -20
- package/dist/types.backup/router/prerender-match.d.ts +0 -50
- package/dist/types.backup/router/preview-match.d.ts +0 -22
- package/dist/types.backup/router/request-classification.d.ts +0 -104
- package/dist/types.backup/router/revalidation.d.ts +0 -57
- package/dist/types.backup/router/route-snapshot.d.ts +0 -112
- package/dist/types.backup/router/router-context.d.ts +0 -137
- package/dist/types.backup/router/router-interfaces.d.ts +0 -432
- package/dist/types.backup/router/router-options.d.ts +0 -738
- package/dist/types.backup/router/router-registry.d.ts +0 -15
- package/dist/types.backup/router/segment-resolution/fresh.d.ts +0 -55
- package/dist/types.backup/router/segment-resolution/helpers.d.ts +0 -93
- package/dist/types.backup/router/segment-resolution/loader-cache.d.ts +0 -33
- package/dist/types.backup/router/segment-resolution/loader-mask.d.ts +0 -44
- package/dist/types.backup/router/segment-resolution/loader-snapshot.d.ts +0 -90
- package/dist/types.backup/router/segment-resolution/mask-nested.d.ts +0 -53
- package/dist/types.backup/router/segment-resolution/revalidation.d.ts +0 -85
- package/dist/types.backup/router/segment-resolution/static-store.d.ts +0 -17
- package/dist/types.backup/router/segment-resolution/streamed-handler-telemetry.d.ts +0 -16
- package/dist/types.backup/router/segment-resolution/view-transition-default.d.ts +0 -28
- package/dist/types.backup/router/segment-resolution.d.ts +0 -3
- package/dist/types.backup/router/segment-wrappers.d.ts +0 -53
- package/dist/types.backup/router/state-cookie-name.d.ts +0 -1
- package/dist/types.backup/router/substitute-pattern-params.d.ts +0 -23
- package/dist/types.backup/router/telemetry-otel.d.ts +0 -113
- package/dist/types.backup/router/telemetry.d.ts +0 -215
- package/dist/types.backup/router/timeout.d.ts +0 -68
- package/dist/types.backup/router/tracing.d.ts +0 -125
- package/dist/types.backup/router/trie-matching.d.ts +0 -32
- package/dist/types.backup/router/types.d.ts +0 -98
- package/dist/types.backup/router/url-params.d.ts +0 -26
- package/dist/types.backup/router.d.ts +0 -7
- package/dist/types.backup/rsc/capture-queue.d.ts +0 -6
- package/dist/types.backup/rsc/full-payload.d.ts +0 -22
- package/dist/types.backup/rsc/handler-context.d.ts +0 -31
- package/dist/types.backup/rsc/handler.d.ts +0 -9
- package/dist/types.backup/rsc/helpers.d.ts +0 -213
- package/dist/types.backup/rsc/index.d.ts +0 -17
- package/dist/types.backup/rsc/json-route-result.d.ts +0 -20
- package/dist/types.backup/rsc/loader-fetch.d.ts +0 -14
- package/dist/types.backup/rsc/manifest-init.d.ts +0 -18
- package/dist/types.backup/rsc/nonce.d.ts +0 -28
- package/dist/types.backup/rsc/origin-guard.d.ts +0 -50
- package/dist/types.backup/rsc/progressive-enhancement.d.ts +0 -19
- package/dist/types.backup/rsc/redirect-guard.d.ts +0 -35
- package/dist/types.backup/rsc/response-cache-serve.d.ts +0 -46
- package/dist/types.backup/rsc/response-error.d.ts +0 -19
- package/dist/types.backup/rsc/response-route-handler.d.ts +0 -29
- package/dist/types.backup/rsc/rsc-rendering.d.ts +0 -23
- package/dist/types.backup/rsc/runtime-warnings.d.ts +0 -22
- package/dist/types.backup/rsc/server-action.d.ts +0 -68
- package/dist/types.backup/rsc/shell-build-manifest.d.ts +0 -84
- package/dist/types.backup/rsc/shell-capture-constants.d.ts +0 -27
- package/dist/types.backup/rsc/shell-capture.d.ts +0 -374
- package/dist/types.backup/rsc/shell-serve.d.ts +0 -136
- package/dist/types.backup/rsc/ssr-setup.d.ts +0 -48
- package/dist/types.backup/rsc/transition-gate.d.ts +0 -27
- package/dist/types.backup/rsc/types.d.ts +0 -290
- package/dist/types.backup/runtime-env.d.ts +0 -1
- package/dist/types.backup/search-params.d.ts +0 -125
- package/dist/types.backup/segment-content-promise.d.ts +0 -13
- package/dist/types.backup/segment-fragments.d.ts +0 -56
- package/dist/types.backup/segment-loader-promise.d.ts +0 -22
- package/dist/types.backup/segment-system.d.ts +0 -84
- package/dist/types.backup/serialize.d.ts +0 -164
- package/dist/types.backup/server/context.d.ts +0 -494
- package/dist/types.backup/server/cookie-parse.d.ts +0 -10
- package/dist/types.backup/server/cookie-store.d.ts +0 -107
- package/dist/types.backup/server/fetchable-loader-store.d.ts +0 -20
- package/dist/types.backup/server/handle-store.d.ts +0 -100
- package/dist/types.backup/server/loader-registry.d.ts +0 -32
- package/dist/types.backup/server/request-context.d.ts +0 -596
- package/dist/types.backup/server/root-layout.d.ts +0 -3
- package/dist/types.backup/server.d.ts +0 -15
- package/dist/types.backup/ssr/index.d.ts +0 -233
- package/dist/types.backup/ssr/inject-rsc-eager.d.ts +0 -3
- package/dist/types.backup/ssr/preinit-client-references.d.ts +0 -71
- package/dist/types.backup/ssr/ssr-root.d.ts +0 -69
- package/dist/types.backup/static-handler.d.ts +0 -57
- package/dist/types.backup/testing/cache-status.d.ts +0 -63
- package/dist/types.backup/testing/collect-handle.d.ts +0 -20
- package/dist/types.backup/testing/dispatch.d.ts +0 -123
- package/dist/types.backup/testing/dom.entry.d.ts +0 -15
- package/dist/types.backup/testing/e2e/fixture.d.ts +0 -37
- package/dist/types.backup/testing/e2e/index.d.ts +0 -30
- package/dist/types.backup/testing/e2e/matchers.d.ts +0 -17
- package/dist/types.backup/testing/e2e/page-helpers.d.ts +0 -62
- package/dist/types.backup/testing/e2e/parity.d.ts +0 -111
- package/dist/types.backup/testing/e2e/server.d.ts +0 -35
- package/dist/types.backup/testing/flight-matchers.d.ts +0 -55
- package/dist/types.backup/testing/flight-normalize.d.ts +0 -1
- package/dist/types.backup/testing/flight-tree.d.ts +0 -192
- package/dist/types.backup/testing/flight.d.ts +0 -115
- package/dist/types.backup/testing/flight.entry.d.ts +0 -27
- package/dist/types.backup/testing/generated-routes.d.ts +0 -66
- package/dist/types.backup/testing/index.d.ts +0 -52
- package/dist/types.backup/testing/internal/context.d.ts +0 -225
- package/dist/types.backup/testing/internal/flight-client-globals.d.ts +0 -1
- package/dist/types.backup/testing/internal/seed-vars.d.ts +0 -30
- package/dist/types.backup/testing/render-handler.d.ts +0 -160
- package/dist/types.backup/testing/render-route.d.ts +0 -246
- package/dist/types.backup/testing/run-loader.d.ts +0 -186
- package/dist/types.backup/testing/run-middleware.d.ts +0 -132
- package/dist/types.backup/testing/run-transition-when.d.ts +0 -77
- package/dist/types.backup/testing/vitest-stubs/cloudflare-email.d.ts +0 -6
- package/dist/types.backup/testing/vitest-stubs/cloudflare-workers.d.ts +0 -13
- package/dist/types.backup/testing/vitest-stubs/plugin-rsc.d.ts +0 -7
- package/dist/types.backup/testing/vitest-stubs/version.d.ts +0 -1
- package/dist/types.backup/testing/vitest.d.ts +0 -205
- package/dist/types.backup/theme/ThemeProvider.d.ts +0 -13
- package/dist/types.backup/theme/ThemeScript.d.ts +0 -45
- package/dist/types.backup/theme/constants.d.ts +0 -39
- package/dist/types.backup/theme/index.d.ts +0 -29
- package/dist/types.backup/theme/theme-context.d.ts +0 -21
- package/dist/types.backup/theme/theme-script.d.ts +0 -26
- package/dist/types.backup/theme/types.d.ts +0 -162
- package/dist/types.backup/theme/use-theme.d.ts +0 -8
- package/dist/types.backup/types/boundaries.d.ts +0 -93
- package/dist/types.backup/types/cache-types.d.ts +0 -191
- package/dist/types.backup/types/error-types.d.ts +0 -114
- package/dist/types.backup/types/global-namespace.d.ts +0 -90
- package/dist/types.backup/types/handler-context.d.ts +0 -658
- package/dist/types.backup/types/index.d.ts +0 -11
- package/dist/types.backup/types/loader-types.d.ts +0 -182
- package/dist/types.backup/types/request-scope.d.ts +0 -93
- package/dist/types.backup/types/route-config.d.ts +0 -105
- package/dist/types.backup/types/route-entry.d.ts +0 -95
- package/dist/types.backup/types/segments.d.ts +0 -234
- package/dist/types.backup/types.d.ts +0 -1
- package/dist/types.backup/urls/include-helper.d.ts +0 -17
- package/dist/types.backup/urls/include-provider.d.ts +0 -27
- package/dist/types.backup/urls/index.d.ts +0 -6
- package/dist/types.backup/urls/path-helper-types.d.ts +0 -197
- package/dist/types.backup/urls/path-helper.d.ts +0 -12
- package/dist/types.backup/urls/pattern-types.d.ts +0 -166
- package/dist/types.backup/urls/response-types.d.ts +0 -67
- package/dist/types.backup/urls/type-extraction.d.ts +0 -157
- package/dist/types.backup/urls/urls-function.d.ts +0 -24
- package/dist/types.backup/urls.d.ts +0 -1
- package/dist/types.backup/use-loader.d.ts +0 -150
- package/dist/types.backup/vercel/index.d.ts +0 -10
- package/dist/types.backup/vercel/tracing.d.ts +0 -70
- package/dist/types.backup/vite/debug.d.ts +0 -80
- package/dist/types.backup/vite/discovery/bundle-postprocess.d.ts +0 -12
- package/dist/types.backup/vite/discovery/dev-prerender-cache.d.ts +0 -65
- package/dist/types.backup/vite/discovery/discover-routers.d.ts +0 -17
- package/dist/types.backup/vite/discovery/discovery-errors.d.ts +0 -113
- package/dist/types.backup/vite/discovery/gate-state.d.ts +0 -79
- package/dist/types.backup/vite/discovery/prerender-collection.d.ts +0 -24
- package/dist/types.backup/vite/discovery/route-types-writer.d.ts +0 -32
- package/dist/types.backup/vite/discovery/self-gen-tracking.d.ts +0 -22
- package/dist/types.backup/vite/discovery/shell-prerender-phase.d.ts +0 -40
- package/dist/types.backup/vite/discovery/state.d.ts +0 -162
- package/dist/types.backup/vite/discovery/virtual-module-codegen.d.ts +0 -15
- package/dist/types.backup/vite/index.d.ts +0 -11
- package/dist/types.backup/vite/inject-client-debug.d.ts +0 -56
- package/dist/types.backup/vite/plugin-types.d.ts +0 -298
- package/dist/types.backup/vite/plugins/cjs-to-esm.d.ts +0 -6
- package/dist/types.backup/vite/plugins/client-ref-dedup.d.ts +0 -40
- package/dist/types.backup/vite/plugins/client-ref-hashing.d.ts +0 -35
- package/dist/types.backup/vite/plugins/cloudflare-protocol-stub.d.ts +0 -64
- package/dist/types.backup/vite/plugins/expose-action-id.d.ts +0 -18
- package/dist/types.backup/vite/plugins/expose-id-utils.d.ts +0 -37
- package/dist/types.backup/vite/plugins/expose-ids/export-analysis.d.ts +0 -19
- package/dist/types.backup/vite/plugins/expose-ids/handler-transform.d.ts +0 -10
- package/dist/types.backup/vite/plugins/expose-ids/loader-transform.d.ts +0 -8
- package/dist/types.backup/vite/plugins/expose-ids/router-transform.d.ts +0 -13
- package/dist/types.backup/vite/plugins/expose-ids/types.d.ts +0 -29
- package/dist/types.backup/vite/plugins/expose-internal-ids.d.ts +0 -6
- package/dist/types.backup/vite/plugins/performance-tracks.d.ts +0 -25
- package/dist/types.backup/vite/plugins/refresh-cmd.d.ts +0 -20
- package/dist/types.backup/vite/plugins/use-cache-transform.d.ts +0 -20
- package/dist/types.backup/vite/plugins/vercel-output.d.ts +0 -85
- package/dist/types.backup/vite/plugins/version-injector.d.ts +0 -21
- package/dist/types.backup/vite/plugins/version-plugin.d.ts +0 -19
- package/dist/types.backup/vite/plugins/virtual-entries.d.ts +0 -36
- package/dist/types.backup/vite/plugins/virtual-stub-plugin.d.ts +0 -7
- package/dist/types.backup/vite/rango.d.ts +0 -29
- package/dist/types.backup/vite/router-discovery.d.ts +0 -23
- package/dist/types.backup/vite/utils/ast-handler-extract.d.ts +0 -64
- package/dist/types.backup/vite/utils/banner.d.ts +0 -2
- package/dist/types.backup/vite/utils/bundle-analysis.d.ts +0 -28
- package/dist/types.backup/vite/utils/client-chunks.d.ts +0 -55
- package/dist/types.backup/vite/utils/directive-prologue.d.ts +0 -16
- package/dist/types.backup/vite/utils/forward-user-plugins.d.ts +0 -37
- package/dist/types.backup/vite/utils/manifest-utils.d.ts +0 -7
- package/dist/types.backup/vite/utils/package-resolution.d.ts +0 -6
- package/dist/types.backup/vite/utils/prerender-utils.d.ts +0 -32
- package/dist/types.backup/vite/utils/shared-utils.d.ts +0 -55
|
@@ -20,6 +20,8 @@ import {
|
|
|
20
20
|
resolveImportedVariable,
|
|
21
21
|
resolveImportPath,
|
|
22
22
|
buildCombinedRouteMapWithSearch,
|
|
23
|
+
createScanMemo,
|
|
24
|
+
type ScanMemo,
|
|
23
25
|
type UnresolvableInclude,
|
|
24
26
|
} from "./include-resolution.js";
|
|
25
27
|
import { findUrlsVariableNames } from "./per-module-writer.js";
|
|
@@ -197,18 +199,43 @@ export type UrlsExtractionResult =
|
|
|
197
199
|
| { kind: "variable"; name: string }
|
|
198
200
|
| { kind: "inline"; block: string };
|
|
199
201
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
export function extractUrlsFromRouter(
|
|
210
|
-
code: string,
|
|
202
|
+
function isCreateRouterCall(node: ts.Node): boolean {
|
|
203
|
+
if (!ts.isCallExpression(node)) return false;
|
|
204
|
+
const callee = node.expression;
|
|
205
|
+
return ts.isIdentifier(callee) && callee.text === "createRouter";
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
function extractUrlsArgument(
|
|
209
|
+
node: ts.Expression,
|
|
210
|
+
sourceFile: ts.SourceFile,
|
|
211
211
|
): UrlsExtractionResult | null {
|
|
212
|
+
if (ts.isIdentifier(node)) {
|
|
213
|
+
return { kind: "variable", name: node.text };
|
|
214
|
+
}
|
|
215
|
+
if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) {
|
|
216
|
+
return { kind: "inline", block: node.getText(sourceFile) };
|
|
217
|
+
}
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/** Return a createRouter call chain in runtime registration order. */
|
|
222
|
+
function collectCreateRouterCallChain(
|
|
223
|
+
endpoint: ts.CallExpression,
|
|
224
|
+
): ts.CallExpression[] | null {
|
|
225
|
+
const calls: ts.CallExpression[] = [];
|
|
226
|
+
let current = endpoint;
|
|
227
|
+
|
|
228
|
+
while (true) {
|
|
229
|
+
calls.push(current);
|
|
230
|
+
if (isCreateRouterCall(current)) return calls.reverse();
|
|
231
|
+
if (!ts.isPropertyAccessExpression(current.expression)) return null;
|
|
232
|
+
const receiver = current.expression.expression;
|
|
233
|
+
if (!ts.isCallExpression(receiver)) return null;
|
|
234
|
+
current = receiver;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
function extractAllUrlsFromRouter(code: string): UrlsExtractionResult[] {
|
|
212
239
|
const sourceFile = ts.createSourceFile(
|
|
213
240
|
"router.tsx",
|
|
214
241
|
code,
|
|
@@ -216,85 +243,71 @@ export function extractUrlsFromRouter(
|
|
|
216
243
|
true,
|
|
217
244
|
ts.ScriptKind.TSX,
|
|
218
245
|
);
|
|
219
|
-
let result: UrlsExtractionResult | null = null;
|
|
220
|
-
|
|
221
|
-
function isCreateRouterCall(node: ts.Node): boolean {
|
|
222
|
-
if (!ts.isCallExpression(node)) return false;
|
|
223
|
-
const callee = node.expression;
|
|
224
|
-
return ts.isIdentifier(callee) && callee.text === "createRouter";
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
/** Check if a node is an arrow/function expression (inline builder). */
|
|
228
|
-
function isInlineBuilder(node: ts.Node): boolean {
|
|
229
|
-
return ts.isArrowFunction(node) || ts.isFunctionExpression(node);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/** Check if a .routes() call chains from createRouter(). */
|
|
233
|
-
function isRoutesOnCreateRouter(node: ts.CallExpression): boolean {
|
|
234
|
-
if (
|
|
235
|
-
!ts.isPropertyAccessExpression(node.expression) ||
|
|
236
|
-
node.expression.name.text !== "routes"
|
|
237
|
-
)
|
|
238
|
-
return false;
|
|
239
|
-
let inner: ts.Expression = node.expression.expression;
|
|
240
|
-
while (
|
|
241
|
-
ts.isCallExpression(inner) &&
|
|
242
|
-
ts.isPropertyAccessExpression(inner.expression)
|
|
243
|
-
) {
|
|
244
|
-
inner = inner.expression.expression;
|
|
245
|
-
}
|
|
246
|
-
return isCreateRouterCall(inner);
|
|
247
|
-
}
|
|
246
|
+
let result: UrlsExtractionResult[] | null = null;
|
|
248
247
|
|
|
249
248
|
function visit(node: ts.Node) {
|
|
250
249
|
if (result) return;
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
if (ts.isIdentifier(arg)) {
|
|
260
|
-
result = { kind: "variable", name: arg.text };
|
|
261
|
-
} else if (isInlineBuilder(arg)) {
|
|
262
|
-
result = { kind: "inline", block: arg.getText(sourceFile) };
|
|
263
|
-
}
|
|
264
|
-
return;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
// Pattern 2 & 4: createRouter({ urls: variableName | builder, ... })
|
|
268
|
-
if (isCreateRouterCall(node)) {
|
|
269
|
-
const callExpr = node as ts.CallExpression;
|
|
270
|
-
for (const callArg of callExpr.arguments) {
|
|
271
|
-
if (ts.isObjectLiteralExpression(callArg)) {
|
|
250
|
+
if (ts.isCallExpression(node)) {
|
|
251
|
+
const chain = collectCreateRouterCallChain(node);
|
|
252
|
+
if (chain) {
|
|
253
|
+
const extracted: UrlsExtractionResult[] = [];
|
|
254
|
+
const createRouterCall = chain[0];
|
|
255
|
+
|
|
256
|
+
for (const callArg of createRouterCall.arguments) {
|
|
257
|
+
if (!ts.isObjectLiteralExpression(callArg)) continue;
|
|
272
258
|
for (const prop of callArg.properties) {
|
|
273
259
|
if (
|
|
274
|
-
ts.isPropertyAssignment(prop)
|
|
275
|
-
ts.isIdentifier(prop.name)
|
|
276
|
-
prop.name.text
|
|
260
|
+
!ts.isPropertyAssignment(prop) ||
|
|
261
|
+
!ts.isIdentifier(prop.name) ||
|
|
262
|
+
prop.name.text !== "urls"
|
|
277
263
|
) {
|
|
278
|
-
|
|
279
|
-
result = { kind: "variable", name: prop.initializer.text };
|
|
280
|
-
} else if (isInlineBuilder(prop.initializer)) {
|
|
281
|
-
result = {
|
|
282
|
-
kind: "inline",
|
|
283
|
-
block: prop.initializer.getText(sourceFile),
|
|
284
|
-
};
|
|
285
|
-
}
|
|
286
|
-
return;
|
|
264
|
+
continue;
|
|
287
265
|
}
|
|
266
|
+
const urls = extractUrlsArgument(prop.initializer, sourceFile);
|
|
267
|
+
if (urls) extracted.push(urls);
|
|
268
|
+
break;
|
|
288
269
|
}
|
|
289
270
|
}
|
|
271
|
+
|
|
272
|
+
for (const call of chain.slice(1)) {
|
|
273
|
+
if (
|
|
274
|
+
!ts.isPropertyAccessExpression(call.expression) ||
|
|
275
|
+
call.expression.name.text !== "routes" ||
|
|
276
|
+
call.arguments.length === 0
|
|
277
|
+
) {
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
const urls = extractUrlsArgument(call.arguments[0], sourceFile);
|
|
281
|
+
if (urls) extracted.push(urls);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
if (extracted.length > 0) {
|
|
285
|
+
result = extracted;
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
290
288
|
}
|
|
291
289
|
}
|
|
292
|
-
|
|
293
290
|
ts.forEachChild(node, visit);
|
|
294
291
|
}
|
|
295
292
|
|
|
296
293
|
visit(sourceFile);
|
|
297
|
-
return result;
|
|
294
|
+
return result ?? [];
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Extract the url patterns from a router file using AST.
|
|
299
|
+
* Detects four patterns:
|
|
300
|
+
* 1. createRouter(...).routes(variableName)
|
|
301
|
+
* 2. createRouter({ urls: variableName, ... })
|
|
302
|
+
* 3. createRouter(...).routes(({ path, ... }) => [...])
|
|
303
|
+
* 4. createRouter({ urls: ({ path, ... }) => [...], ... })
|
|
304
|
+
* Returns either a variable name or an inline code block.
|
|
305
|
+
*/
|
|
306
|
+
export function extractUrlsFromRouter(
|
|
307
|
+
code: string,
|
|
308
|
+
): UrlsExtractionResult | null {
|
|
309
|
+
const extractions = extractAllUrlsFromRouter(code);
|
|
310
|
+
return extractions[extractions.length - 1] ?? null;
|
|
298
311
|
}
|
|
299
312
|
|
|
300
313
|
/**
|
|
@@ -365,6 +378,77 @@ function applyBasenameToRoutes(
|
|
|
365
378
|
return { routes: prefixed, searchSchemas: result.searchSchemas };
|
|
366
379
|
}
|
|
367
380
|
|
|
381
|
+
type RouteMapWithSearch = {
|
|
382
|
+
routes: Record<string, string>;
|
|
383
|
+
searchSchemas: Record<string, Record<string, string>>;
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
function resolveRouterUrlsExtraction(
|
|
387
|
+
routerFilePath: string,
|
|
388
|
+
routerSource: string,
|
|
389
|
+
extraction: UrlsExtractionResult,
|
|
390
|
+
diagnosticsOut: UnresolvableInclude[] | undefined,
|
|
391
|
+
memo: ScanMemo,
|
|
392
|
+
): RouteMapWithSearch {
|
|
393
|
+
if (extraction.kind === "inline") {
|
|
394
|
+
return buildCombinedRouteMapWithSearch(
|
|
395
|
+
routerFilePath,
|
|
396
|
+
undefined,
|
|
397
|
+
new Set(),
|
|
398
|
+
diagnosticsOut,
|
|
399
|
+
extraction.block,
|
|
400
|
+
memo,
|
|
401
|
+
);
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
const imported = resolveImportedVariable(routerSource, extraction.name);
|
|
405
|
+
if (imported) {
|
|
406
|
+
const targetFile = resolveImportPath(imported.specifier, routerFilePath);
|
|
407
|
+
if (!targetFile) {
|
|
408
|
+
diagnosticsOut?.push({
|
|
409
|
+
pathPrefix: "/",
|
|
410
|
+
namePrefix: null,
|
|
411
|
+
reason: "file-not-found",
|
|
412
|
+
sourceFile: routerFilePath,
|
|
413
|
+
detail: `import "${imported.specifier}" resolved to no file`,
|
|
414
|
+
});
|
|
415
|
+
return { routes: {}, searchSchemas: {} };
|
|
416
|
+
}
|
|
417
|
+
return buildCombinedRouteMapWithSearch(
|
|
418
|
+
targetFile,
|
|
419
|
+
imported.exportedName,
|
|
420
|
+
new Set(),
|
|
421
|
+
diagnosticsOut,
|
|
422
|
+
undefined,
|
|
423
|
+
memo,
|
|
424
|
+
);
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
return buildCombinedRouteMapWithSearch(
|
|
428
|
+
routerFilePath,
|
|
429
|
+
extraction.name,
|
|
430
|
+
new Set(),
|
|
431
|
+
diagnosticsOut,
|
|
432
|
+
undefined,
|
|
433
|
+
memo,
|
|
434
|
+
);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
function mergeRouteMaps(
|
|
438
|
+
target: RouteMapWithSearch,
|
|
439
|
+
source: RouteMapWithSearch,
|
|
440
|
+
): void {
|
|
441
|
+
for (const [name, pattern] of Object.entries(source.routes)) {
|
|
442
|
+
target.routes[name] = pattern;
|
|
443
|
+
const search = source.searchSchemas[name];
|
|
444
|
+
if (search) {
|
|
445
|
+
target.searchSchemas[name] = search;
|
|
446
|
+
} else {
|
|
447
|
+
delete target.searchSchemas[name];
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
|
|
368
452
|
// Filesystem path of the generated route-types file for a router source file.
|
|
369
453
|
// Native separators — matches the self-gen-tracking Map key the watcher compares.
|
|
370
454
|
export function genFileTsPath(sourceFile: string): string {
|
|
@@ -396,9 +480,8 @@ export function resolveSearchSchemas(
|
|
|
396
480
|
}
|
|
397
481
|
|
|
398
482
|
/**
|
|
399
|
-
* Resolve routes and search schemas from
|
|
400
|
-
*
|
|
401
|
-
* or by parsing an inline builder function directly.
|
|
483
|
+
* Resolve routes and search schemas from every direct mount in a createRouter
|
|
484
|
+
* chain. Registrations are merged in runtime order, with later mounts winning.
|
|
402
485
|
*/
|
|
403
486
|
export function buildCombinedRouteMapForRouterFile(routerFilePath: string): {
|
|
404
487
|
routes: Record<string, string>;
|
|
@@ -411,8 +494,8 @@ export function buildCombinedRouteMapForRouterFile(routerFilePath: string): {
|
|
|
411
494
|
return { routes: {}, searchSchemas: {} };
|
|
412
495
|
}
|
|
413
496
|
|
|
414
|
-
const
|
|
415
|
-
if (
|
|
497
|
+
const extractions = extractAllUrlsFromRouter(routerSource);
|
|
498
|
+
if (extractions.length === 0) {
|
|
416
499
|
return { routes: {}, searchSchemas: {} };
|
|
417
500
|
}
|
|
418
501
|
|
|
@@ -422,40 +505,24 @@ export function buildCombinedRouteMapForRouterFile(routerFilePath: string): {
|
|
|
422
505
|
? ("/" + rawBasename.replace(/^\/+|\/+$/g, "")).replace(/^\/$/, "")
|
|
423
506
|
: undefined;
|
|
424
507
|
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
extraction.block,
|
|
508
|
+
const result: RouteMapWithSearch = { routes: {}, searchSchemas: {} };
|
|
509
|
+
const memo = createScanMemo();
|
|
510
|
+
for (const extraction of extractions) {
|
|
511
|
+
mergeRouteMaps(
|
|
512
|
+
result,
|
|
513
|
+
resolveRouterUrlsExtraction(
|
|
514
|
+
routerFilePath,
|
|
515
|
+
routerSource,
|
|
516
|
+
extraction,
|
|
517
|
+
undefined,
|
|
518
|
+
memo,
|
|
519
|
+
),
|
|
438
520
|
);
|
|
439
|
-
} else {
|
|
440
|
-
// Variable reference: follow imports or same-file declaration
|
|
441
|
-
const imported = resolveImportedVariable(routerSource, extraction.name);
|
|
442
|
-
if (imported) {
|
|
443
|
-
const targetFile = resolveImportPath(imported.specifier, routerFilePath);
|
|
444
|
-
if (!targetFile) {
|
|
445
|
-
return { routes: {}, searchSchemas: {} };
|
|
446
|
-
}
|
|
447
|
-
result = buildCombinedRouteMapWithSearch(
|
|
448
|
-
targetFile,
|
|
449
|
-
imported.exportedName,
|
|
450
|
-
);
|
|
451
|
-
} else {
|
|
452
|
-
result = buildCombinedRouteMapWithSearch(routerFilePath, extraction.name);
|
|
453
|
-
}
|
|
454
521
|
}
|
|
455
522
|
|
|
456
523
|
// Apply basename prefix to all extracted route patterns
|
|
457
524
|
if (basename) {
|
|
458
|
-
|
|
525
|
+
return applyBasenameToRoutes(result, basename);
|
|
459
526
|
}
|
|
460
527
|
|
|
461
528
|
return result;
|
|
@@ -481,56 +548,20 @@ export function detectUnresolvableIncludes(
|
|
|
481
548
|
return [];
|
|
482
549
|
}
|
|
483
550
|
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
if (!extraction) return [];
|
|
551
|
+
const extractions = extractAllUrlsFromRouter(source);
|
|
552
|
+
if (extractions.length === 0) return [];
|
|
487
553
|
|
|
488
554
|
const diagnostics: UnresolvableInclude[] = [];
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
buildCombinedRouteMapWithSearch(
|
|
555
|
+
const memo = createScanMemo();
|
|
556
|
+
for (const extraction of extractions) {
|
|
557
|
+
resolveRouterUrlsExtraction(
|
|
493
558
|
realPath,
|
|
494
|
-
|
|
495
|
-
|
|
559
|
+
source,
|
|
560
|
+
extraction,
|
|
496
561
|
diagnostics,
|
|
497
|
-
|
|
562
|
+
memo,
|
|
498
563
|
);
|
|
499
|
-
return diagnostics;
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
// Variable reference: resolve where it comes from
|
|
503
|
-
const imported = resolveImportedVariable(source, extraction.name);
|
|
504
|
-
let targetFile: string;
|
|
505
|
-
let exportedName: string | undefined;
|
|
506
|
-
|
|
507
|
-
if (imported) {
|
|
508
|
-
const resolved = resolveImportPath(imported.specifier, realPath);
|
|
509
|
-
if (!resolved) {
|
|
510
|
-
return [
|
|
511
|
-
{
|
|
512
|
-
pathPrefix: "/",
|
|
513
|
-
namePrefix: null,
|
|
514
|
-
reason: "file-not-found",
|
|
515
|
-
sourceFile: realPath,
|
|
516
|
-
detail: `import "${imported.specifier}" resolved to no file`,
|
|
517
|
-
},
|
|
518
|
-
];
|
|
519
|
-
}
|
|
520
|
-
targetFile = resolved;
|
|
521
|
-
exportedName = imported.exportedName;
|
|
522
|
-
} else {
|
|
523
|
-
// Same-file urls() definition
|
|
524
|
-
targetFile = realPath;
|
|
525
|
-
exportedName = extraction.name;
|
|
526
564
|
}
|
|
527
|
-
|
|
528
|
-
buildCombinedRouteMapWithSearch(
|
|
529
|
-
targetFile,
|
|
530
|
-
exportedName,
|
|
531
|
-
new Set(),
|
|
532
|
-
diagnostics,
|
|
533
|
-
);
|
|
534
565
|
return diagnostics;
|
|
535
566
|
}
|
|
536
567
|
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
genFileTsPath,
|
|
6
6
|
resolveSearchSchemas,
|
|
7
7
|
} from "./generate-route-types.ts";
|
|
8
|
+
import { mergeFullManifests } from "./merge-full-manifests.js";
|
|
8
9
|
import { isAutoGeneratedRouteName } from "../route-name.js";
|
|
9
10
|
|
|
10
11
|
export interface RuntimeDiscoveryOptions {
|
|
@@ -126,24 +127,34 @@ export async function discoverAndWriteRouteTypes(
|
|
|
126
127
|
|
|
127
128
|
// Import build utilities for manifest generation
|
|
128
129
|
const buildMod = await rscEnv.runner.import("@rangojs/router/build");
|
|
129
|
-
const
|
|
130
|
+
const generateManifestFull = buildMod.generateManifestFull;
|
|
130
131
|
|
|
131
|
-
if (!
|
|
132
|
-
throw new Error(
|
|
132
|
+
if (!generateManifestFull) {
|
|
133
|
+
throw new Error(
|
|
134
|
+
"generateManifestFull not found in @rangojs/router/build",
|
|
135
|
+
);
|
|
133
136
|
}
|
|
134
137
|
|
|
135
138
|
const outputFiles: string[] = [];
|
|
136
139
|
let totalRouteCount = 0;
|
|
137
|
-
let
|
|
140
|
+
let globalMountIndex = 0;
|
|
141
|
+
let routerCount = 0;
|
|
138
142
|
|
|
139
143
|
for (const [id, router] of registry) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
144
|
+
const mounts =
|
|
145
|
+
router.__urlpatternMounts ??
|
|
146
|
+
(router.urlpatterns ? [{ patterns: router.urlpatterns }] : []);
|
|
147
|
+
if (mounts.length === 0) continue;
|
|
148
|
+
|
|
149
|
+
const mountManifests = [];
|
|
150
|
+
for (const mount of mounts) {
|
|
151
|
+
mountManifests.push(
|
|
152
|
+
await generateManifestFull(mount.patterns, globalMountIndex),
|
|
153
|
+
);
|
|
154
|
+
globalMountIndex++;
|
|
155
|
+
}
|
|
156
|
+
const manifest = mergeFullManifests(mountManifests);
|
|
157
|
+
routerCount++;
|
|
147
158
|
|
|
148
159
|
// Filter out auto-generated route names that the runtime creates for
|
|
149
160
|
// unnamed routes (path() with no name option). These get names like
|
|
@@ -211,7 +222,7 @@ export async function discoverAndWriteRouteTypes(
|
|
|
211
222
|
}
|
|
212
223
|
|
|
213
224
|
return {
|
|
214
|
-
routerCount
|
|
225
|
+
routerCount,
|
|
215
226
|
routeCount: totalRouteCount,
|
|
216
227
|
outputFiles,
|
|
217
228
|
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Execution-chain scope for "use cache" function bodies.
|
|
3
|
+
*
|
|
4
|
+
* The ambient guards (cookies(), headers(), ctx.set() reached via
|
|
5
|
+
* getRequestContext()) must fire for code running INSIDE a cached body and
|
|
6
|
+
* stay silent for everything else on the request. A property stamped on the
|
|
7
|
+
* shared RequestContext cannot express that: while a slow "use cache" body is
|
|
8
|
+
* in flight, every parallel read on the same request sees the stamp. Scar: a
|
|
9
|
+
* 2s cached product fetch running beside a sibling loader made the loader's
|
|
10
|
+
* cookies() read throw `cannot be called inside a "use cache" function` —
|
|
11
|
+
* same shared-object hazard as issue #684 plan 010, which fixed only the
|
|
12
|
+
* background-revalidation path. AsyncLocalStorage follows the cached body's
|
|
13
|
+
* own async chain, so parallel work is invisible to the guard while genuine
|
|
14
|
+
* in-body reads still throw.
|
|
15
|
+
*
|
|
16
|
+
* Deliberately NOT entered on the store-less bypass paths in cache-runtime.ts:
|
|
17
|
+
* there the body executes for real on every call, side effects take effect,
|
|
18
|
+
* and request-scoped reads are safe (see the bypass comments there).
|
|
19
|
+
*
|
|
20
|
+
* Kept separate from taint.ts so `node:async_hooks` stays out of that module —
|
|
21
|
+
* taint.ts is reachable from browser-bundled DSL helpers. The probe
|
|
22
|
+
* registration below wires assertNotInsideCacheExec to this scope without
|
|
23
|
+
* taint.ts importing it.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
27
|
+
import { _setCacheExecScopeProbe } from "./taint.js";
|
|
28
|
+
|
|
29
|
+
const cacheExecStorage = new AsyncLocalStorage<true>();
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Run fn with the "use cache" execution scope active. Continuations spawned
|
|
33
|
+
* from fn's synchronous kickoff inherit the scope; parallel chains do not.
|
|
34
|
+
*/
|
|
35
|
+
export function runWithCacheExecScope<T>(fn: () => T): T {
|
|
36
|
+
return cacheExecStorage.run(true, fn);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** True when the calling async chain is inside a "use cache" body. */
|
|
40
|
+
export function isInsideCacheExecScope(): boolean {
|
|
41
|
+
return cacheExecStorage.getStore() === true;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Wire the ambient ctx-method guards (assertNotInsideCacheExec in taint.ts)
|
|
45
|
+
// to this scope. Module-init registration cannot be missed: exec scopes only
|
|
46
|
+
// exist once cache-runtime.ts (which imports this module) is loaded.
|
|
47
|
+
_setCacheExecScopeProbe(isInsideCacheExecScope);
|