@rangojs/router 0.0.0-experimental.d20dd405 → 0.0.0-experimental.d5d3070a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +8 -0
- package/README.md +57 -14
- package/dist/bin/rango.js +312 -93
- package/dist/testing/vitest.js +82 -0
- package/dist/vite/index.js +1632 -705
- package/package.json +64 -12
- package/skills/api-client/SKILL.md +211 -0
- package/skills/breadcrumbs/SKILL.md +61 -1
- package/skills/bundle-analysis/SKILL.md +159 -0
- package/skills/cache-guide/SKILL.md +224 -32
- package/skills/caching/SKILL.md +279 -17
- package/skills/composability/SKILL.md +27 -2
- package/skills/css/SKILL.md +76 -0
- package/skills/debug-manifest/SKILL.md +4 -2
- package/skills/document-cache/SKILL.md +78 -55
- package/skills/handler-use/SKILL.md +2 -2
- package/skills/hooks/SKILL.md +217 -31
- package/skills/host-router/SKILL.md +83 -23
- package/skills/intercept/SKILL.md +5 -6
- package/skills/layout/SKILL.md +11 -9
- package/skills/links/SKILL.md +22 -10
- package/skills/loader/SKILL.md +172 -23
- package/skills/middleware/SKILL.md +16 -10
- package/skills/migrate-nextjs/SKILL.md +38 -16
- package/skills/migrate-react-router/SKILL.md +4 -2
- package/skills/mime-routes/SKILL.md +28 -1
- package/skills/observability/SKILL.md +172 -0
- package/skills/parallel/SKILL.md +9 -7
- package/skills/prerender/SKILL.md +45 -43
- package/skills/rango/SKILL.md +251 -26
- package/skills/react-compiler/SKILL.md +168 -0
- package/skills/response-routes/SKILL.md +115 -48
- package/skills/route/SKILL.md +22 -5
- package/skills/router-setup/SKILL.md +29 -6
- package/skills/scripts/SKILL.md +179 -0
- package/skills/server-actions/SKILL.md +78 -42
- package/skills/tailwind/SKILL.md +27 -3
- package/skills/testing/SKILL.md +129 -0
- package/skills/testing/bindings.md +103 -0
- package/skills/testing/cache-prerender.md +127 -0
- package/skills/testing/client-components.md +124 -0
- package/skills/testing/e2e-parity.md +125 -0
- package/skills/testing/flight.md +91 -0
- package/skills/testing/handles.md +129 -0
- package/skills/testing/loader.md +128 -0
- package/skills/testing/middleware.md +99 -0
- package/skills/testing/render-handler.md +121 -0
- package/skills/testing/response-routes.md +95 -0
- package/skills/testing/reverse-and-types.md +84 -0
- package/skills/testing/server-actions.md +107 -0
- package/skills/testing/server-tree.md +128 -0
- package/skills/testing/setup.md +123 -0
- package/skills/typesafety/SKILL.md +313 -28
- package/skills/use-cache/SKILL.md +46 -14
- package/skills/view-transitions/SKILL.md +85 -3
- package/src/__augment-tests__/augment.ts +81 -0
- package/src/__augment-tests__/augmented.check.ts +116 -0
- package/src/__internal.ts +0 -65
- package/src/browser/action-coordinator.ts +53 -36
- package/src/browser/action-fence.ts +47 -0
- package/src/browser/app-shell.ts +14 -27
- package/src/browser/connection-warmup.ts +134 -0
- package/src/browser/cookie-name.ts +140 -0
- package/src/browser/event-controller.ts +151 -149
- package/src/browser/history-state.ts +21 -0
- package/src/browser/index.ts +3 -3
- package/src/browser/invalidate-client-cache.ts +52 -0
- package/src/browser/navigation-bridge.ts +67 -126
- package/src/browser/navigation-client.ts +110 -84
- package/src/browser/navigation-store-handle.ts +38 -0
- package/src/browser/navigation-store.ts +32 -82
- package/src/browser/navigation-transaction.ts +9 -59
- package/src/browser/network-error-handler.ts +34 -7
- package/src/browser/partial-update.ts +108 -144
- package/src/browser/prefetch/cache.ts +107 -72
- package/src/browser/prefetch/fetch.ts +186 -34
- package/src/browser/prefetch/queue.ts +6 -3
- package/src/browser/rango-state.ts +157 -115
- package/src/browser/react/Link.tsx +30 -7
- package/src/browser/react/NavigationProvider.tsx +173 -160
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/filter-segment-order.ts +17 -2
- package/src/browser/react/index.ts +0 -51
- package/src/browser/react/location-state-shared.ts +178 -8
- package/src/browser/react/location-state.ts +39 -14
- package/src/browser/react/use-action.ts +6 -15
- package/src/browser/react/use-handle.ts +17 -14
- package/src/browser/react/use-href.tsx +8 -1
- package/src/browser/react/use-link-status.ts +33 -8
- package/src/browser/react/use-navigation.ts +10 -5
- package/src/browser/react/use-params.ts +3 -6
- package/src/browser/react/use-reverse.ts +19 -12
- package/src/browser/react/use-router.ts +20 -5
- package/src/browser/react/use-search-params.ts +0 -5
- package/src/browser/react/use-segments.ts +0 -13
- package/src/browser/response-adapter.ts +80 -5
- package/src/browser/rsc-router.tsx +73 -34
- package/src/browser/scroll-restoration.ts +38 -28
- package/src/browser/segment-structure-assert.ts +2 -2
- package/src/browser/server-action-bridge.ts +214 -55
- package/src/browser/types.ts +51 -21
- package/src/browser/validate-redirect-origin.ts +43 -16
- package/src/build/collect-fallback-refs.ts +107 -0
- package/src/build/generate-manifest.ts +60 -35
- package/src/build/generate-route-types.ts +2 -1
- package/src/build/index.ts +8 -2
- package/src/build/prefix-tree-utils.ts +123 -0
- package/src/build/route-trie.ts +117 -15
- package/src/build/route-types/ast-route-extraction.ts +15 -8
- package/src/build/route-types/codegen.ts +16 -5
- package/src/build/route-types/include-resolution.ts +117 -23
- package/src/build/route-types/param-extraction.ts +6 -3
- package/src/build/route-types/per-module-writer.ts +22 -6
- package/src/build/route-types/router-processing.ts +55 -28
- package/src/build/route-types/scan-filter.ts +1 -1
- package/src/build/route-types/source-scan.ts +216 -0
- package/src/build/runtime-discovery.ts +9 -20
- package/src/cache/cache-error.ts +104 -0
- package/src/cache/cache-key-utils.ts +29 -13
- package/src/cache/cache-policy.ts +108 -34
- package/src/cache/cache-runtime.ts +199 -37
- package/src/cache/cache-scope.ts +188 -82
- package/src/cache/cache-tag.ts +103 -0
- package/src/cache/cf/cf-base64.ts +33 -0
- package/src/cache/cf/cf-cache-constants.ts +127 -0
- package/src/cache/cf/cf-cache-store.ts +1990 -377
- package/src/cache/cf/cf-cache-types.ts +349 -0
- package/src/cache/cf/cf-kv-utils.ts +46 -0
- package/src/cache/cf/cf-tag-marker-memo.ts +105 -0
- package/src/cache/cf/index.ts +6 -16
- package/src/cache/document-cache.ts +72 -20
- package/src/cache/handle-snapshot.ts +70 -0
- package/src/cache/index.ts +10 -20
- package/src/cache/memory-segment-store.ts +136 -37
- package/src/cache/profile-registry.ts +31 -31
- package/src/cache/read-through-swr.ts +41 -11
- package/src/cache/segment-codec.ts +9 -17
- package/src/cache/tag-invalidation.ts +230 -0
- package/src/cache/types.ts +37 -100
- package/src/client.rsc.tsx +42 -22
- package/src/client.tsx +33 -62
- package/src/cloudflare/index.ts +11 -0
- package/src/cloudflare/tracing.ts +109 -0
- package/src/component-utils.ts +19 -0
- package/src/components/DefaultDocument.tsx +8 -2
- package/src/context-var.ts +18 -6
- package/src/decode-loader-results.ts +52 -0
- package/src/defer.ts +196 -0
- package/src/deps/ssr.ts +0 -1
- package/src/encode-kv.ts +49 -0
- package/src/errors.ts +30 -4
- package/src/escape-script.ts +52 -0
- package/src/handle.ts +31 -23
- package/src/handles/MetaTags.tsx +62 -19
- package/src/handles/Scripts.tsx +183 -0
- package/src/handles/breadcrumbs.ts +37 -8
- package/src/handles/is-thenable.ts +19 -0
- package/src/handles/meta.ts +51 -40
- package/src/handles/script.ts +244 -0
- package/src/host/cookie-handler.ts +9 -60
- package/src/host/errors.ts +0 -24
- package/src/host/index.ts +8 -2
- package/src/host/pattern-matcher.ts +23 -52
- package/src/host/router.ts +107 -99
- package/src/host/testing.ts +40 -27
- package/src/host/types.ts +37 -4
- package/src/host/utils.ts +1 -1
- package/src/href-client.ts +136 -24
- package/src/index.rsc.ts +87 -11
- package/src/index.ts +85 -10
- package/src/internal-debug.ts +11 -10
- package/src/loader-store.ts +500 -0
- package/src/loader.rsc.ts +20 -13
- package/src/loader.ts +12 -11
- package/src/missing-id-error.ts +68 -0
- package/src/outlet-provider.tsx +1 -5
- package/src/prerender/param-hash.ts +16 -16
- package/src/prerender/store.ts +32 -37
- package/src/prerender.ts +61 -6
- package/src/redirect-origin.ts +100 -0
- package/src/regex-escape.ts +8 -0
- package/src/render-error-thrower.tsx +20 -0
- package/src/response-utils.ts +34 -0
- package/src/reverse.ts +16 -13
- package/src/root-error-boundary.tsx +1 -19
- package/src/route-content-wrapper.tsx +7 -72
- package/src/route-definition/dsl-helpers.ts +276 -283
- package/src/route-definition/helper-factories.ts +29 -139
- package/src/route-definition/helpers-types.ts +40 -17
- package/src/route-definition/redirect.ts +44 -11
- package/src/route-definition/resolve-handler-use.ts +6 -0
- package/src/route-definition/use-item-types.ts +32 -0
- package/src/route-map-builder.ts +0 -16
- package/src/route-types.ts +19 -41
- package/src/router/basename.ts +14 -0
- package/src/router/content-negotiation.ts +73 -25
- package/src/router/error-handling.ts +45 -18
- package/src/router/find-match.ts +44 -23
- package/src/router/handler-context.ts +6 -1
- package/src/router/instrument.ts +350 -0
- package/src/router/intercept-resolution.ts +39 -20
- package/src/router/lazy-includes.ts +9 -46
- package/src/router/loader-resolution.ts +152 -72
- package/src/router/logging.ts +0 -6
- package/src/router/manifest.ts +18 -29
- package/src/router/match-api.ts +0 -20
- package/src/router/match-context.ts +0 -22
- package/src/router/match-handlers.ts +57 -58
- package/src/router/match-middleware/background-revalidation.ts +6 -7
- package/src/router/match-middleware/cache-lookup.ts +159 -285
- package/src/router/match-middleware/cache-store.ts +31 -34
- package/src/router/match-middleware/intercept-resolution.ts +0 -22
- package/src/router/match-middleware/segment-resolution.ts +0 -22
- package/src/router/match-pipelines.ts +1 -42
- package/src/router/match-result.ts +31 -80
- package/src/router/metrics.ts +0 -34
- package/src/router/middleware-types.ts +0 -116
- package/src/router/middleware.ts +216 -163
- package/src/router/navigation-snapshot.ts +0 -51
- package/src/router/params-util.ts +23 -0
- package/src/router/pattern-matching.ts +47 -89
- package/src/router/prefetch-cache-ttl.ts +51 -0
- package/src/router/prerender-match.ts +104 -65
- package/src/router/preview-match.ts +3 -1
- package/src/router/request-classification.ts +28 -62
- package/src/router/revalidation.ts +110 -74
- package/src/router/route-snapshot.ts +0 -1
- package/src/router/router-context.ts +3 -28
- package/src/router/router-interfaces.ts +83 -35
- package/src/router/router-options.ts +136 -5
- package/src/router/router-registry.ts +2 -5
- package/src/router/segment-resolution/fresh.ts +85 -84
- package/src/router/segment-resolution/helpers.ts +86 -6
- package/src/router/segment-resolution/loader-cache.ts +62 -37
- package/src/router/segment-resolution/revalidation.ts +227 -306
- package/src/router/segment-resolution/static-store.ts +19 -5
- package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
- package/src/router/segment-resolution/view-transition-default.ts +36 -0
- package/src/router/segment-resolution.ts +5 -1
- package/src/router/segment-wrappers.ts +6 -5
- package/src/router/state-cookie-name.ts +33 -0
- package/src/router/telemetry-otel.ts +161 -199
- package/src/router/telemetry.ts +96 -19
- package/src/router/timeout.ts +0 -20
- package/src/router/tracing.ts +206 -0
- package/src/router/trie-matching.ts +163 -64
- package/src/router/types.ts +9 -63
- package/src/router/url-params.ts +0 -5
- package/src/router.ts +109 -53
- package/src/rsc/handler-context.ts +3 -2
- package/src/rsc/handler.ts +262 -219
- package/src/rsc/helpers.ts +100 -6
- package/src/rsc/index.ts +2 -5
- package/src/rsc/json-route-result.ts +38 -0
- package/src/rsc/loader-fetch.ts +114 -38
- package/src/rsc/manifest-init.ts +28 -41
- package/src/rsc/origin-guard.ts +39 -25
- package/src/rsc/progressive-enhancement.ts +59 -9
- package/src/rsc/redirect-guard.ts +99 -0
- package/src/rsc/response-cache-serve.ts +238 -0
- package/src/rsc/response-error.ts +79 -12
- package/src/rsc/response-route-handler.ts +85 -188
- package/src/rsc/rsc-rendering.ts +91 -77
- package/src/rsc/runtime-warnings.ts +23 -10
- package/src/rsc/server-action.ts +256 -117
- package/src/rsc/ssr-setup.ts +16 -0
- package/src/rsc/types.ts +17 -5
- package/src/runtime-env.ts +18 -0
- package/src/search-params.ts +35 -30
- package/src/segment-loader-promise.ts +31 -4
- package/src/segment-system.tsx +151 -136
- package/src/serialize.ts +243 -0
- package/src/server/context.ts +150 -51
- package/src/server/cookie-parse.ts +32 -0
- package/src/server/cookie-store.ts +80 -5
- package/src/server/handle-store.ts +21 -38
- package/src/server/loader-registry.ts +21 -42
- package/src/server/request-context.ts +225 -133
- package/src/ssr/index.tsx +19 -18
- package/src/static-handler.ts +10 -13
- package/src/testing/cache-status.ts +162 -0
- package/src/testing/collect-handle.ts +40 -0
- package/src/testing/dispatch.ts +701 -0
- package/src/testing/dom.entry.ts +22 -0
- package/src/testing/e2e/fixture.ts +188 -0
- package/src/testing/e2e/index.ts +128 -0
- package/src/testing/e2e/matchers.ts +35 -0
- package/src/testing/e2e/page-helpers.ts +272 -0
- package/src/testing/e2e/parity.ts +387 -0
- package/src/testing/e2e/server.ts +195 -0
- package/src/testing/flight-matchers.ts +97 -0
- package/src/testing/flight-normalize.ts +11 -0
- package/src/testing/flight-runtime.d.ts +57 -0
- package/src/testing/flight-tree.ts +682 -0
- package/src/testing/flight.entry.ts +52 -0
- package/src/testing/flight.ts +257 -0
- package/src/testing/generated-routes.ts +183 -0
- package/src/testing/index.ts +99 -0
- package/src/testing/internal/context.ts +371 -0
- package/src/testing/internal/flight-client-globals.ts +30 -0
- package/src/testing/internal/seed-vars.ts +54 -0
- package/src/testing/render-handler.ts +343 -0
- package/src/testing/render-route.tsx +581 -0
- package/src/testing/run-loader.ts +385 -0
- package/src/testing/run-middleware.ts +205 -0
- package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
- package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
- package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
- package/src/testing/vitest-stubs/version.ts +5 -0
- package/src/testing/vitest.ts +305 -0
- package/src/theme/ThemeProvider.tsx +20 -58
- package/src/theme/ThemeScript.tsx +7 -9
- package/src/theme/constants.ts +52 -13
- package/src/theme/index.ts +0 -7
- package/src/theme/theme-context.ts +1 -5
- package/src/theme/theme-script.ts +22 -21
- package/src/theme/use-theme.ts +0 -3
- package/src/types/boundaries.ts +0 -35
- package/src/types/cache-types.ts +13 -4
- package/src/types/error-types.ts +30 -90
- package/src/types/global-namespace.ts +54 -41
- package/src/types/handler-context.ts +97 -22
- package/src/types/index.ts +1 -10
- package/src/types/loader-types.ts +6 -3
- package/src/types/request-scope.ts +8 -22
- package/src/types/route-config.ts +6 -50
- package/src/types/route-entry.ts +0 -6
- package/src/types/segments.ts +18 -14
- package/src/urls/include-helper.ts +9 -56
- package/src/urls/index.ts +1 -11
- package/src/urls/path-helper-types.ts +19 -5
- package/src/urls/path-helper.ts +17 -106
- package/src/urls/pattern-types.ts +36 -19
- package/src/urls/response-types.ts +20 -19
- package/src/urls/type-extraction.ts +58 -139
- package/src/urls/urls-function.ts +1 -18
- package/src/use-loader.tsx +292 -107
- package/src/vite/debug.ts +1 -0
- package/src/vite/discovery/bundle-postprocess.ts +8 -7
- package/src/vite/discovery/discover-routers.ts +95 -82
- package/src/vite/discovery/discovery-errors.ts +194 -0
- package/src/vite/discovery/prerender-collection.ts +48 -67
- package/src/vite/discovery/route-types-writer.ts +40 -84
- package/src/vite/discovery/state.ts +44 -0
- package/src/vite/discovery/virtual-module-codegen.ts +14 -34
- package/src/vite/index.ts +2 -0
- package/src/vite/inject-client-debug.ts +36 -0
- package/src/vite/plugin-types.ts +126 -8
- package/src/vite/plugins/cjs-to-esm.ts +11 -19
- package/src/vite/plugins/client-ref-dedup.ts +0 -11
- package/src/vite/plugins/client-ref-hashing.ts +12 -11
- package/src/vite/plugins/cloudflare-protocol-stub.ts +1 -21
- package/src/vite/plugins/expose-action-id.ts +4 -75
- package/src/vite/plugins/expose-id-utils.ts +88 -55
- package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
- package/src/vite/plugins/expose-ids/handler-transform.ts +11 -90
- package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
- package/src/vite/plugins/expose-ids/router-transform.ts +98 -26
- package/src/vite/plugins/expose-internal-ids.ts +57 -68
- package/src/vite/plugins/performance-tracks.ts +9 -16
- package/src/vite/plugins/refresh-cmd.ts +1 -1
- package/src/vite/plugins/use-cache-transform.ts +26 -49
- package/src/vite/plugins/version-injector.ts +2 -32
- package/src/vite/plugins/version-plugin.ts +37 -40
- package/src/vite/plugins/virtual-entries.ts +13 -18
- package/src/vite/rango.ts +60 -104
- package/src/vite/router-discovery.ts +236 -83
- package/src/vite/utils/ast-handler-extract.ts +26 -35
- package/src/vite/utils/bundle-analysis.ts +10 -15
- package/src/vite/utils/client-chunks.ts +184 -0
- package/src/vite/utils/directive-prologue.ts +40 -0
- package/src/vite/utils/forward-user-plugins.ts +171 -0
- package/src/vite/utils/manifest-utils.ts +4 -59
- package/src/vite/utils/package-resolution.ts +1 -73
- package/src/vite/utils/prerender-utils.ts +54 -40
- package/src/vite/utils/shared-utils.ts +90 -41
- package/dist/__internal.d.ts +0 -83
- package/dist/__internal.d.ts.map +0 -1
- package/dist/__internal.js +0 -19
- package/dist/__internal.js.map +0 -1
- package/dist/__mocks__/version.d.ts +0 -7
- package/dist/__mocks__/version.d.ts.map +0 -1
- package/dist/__mocks__/version.js +0 -7
- package/dist/__mocks__/version.js.map +0 -1
- package/dist/__tests__/client-href.test.d.ts +0 -2
- package/dist/__tests__/client-href.test.d.ts.map +0 -1
- package/dist/__tests__/client-href.test.js +0 -74
- package/dist/__tests__/client-href.test.js.map +0 -1
- package/dist/__tests__/component-utils.test.d.ts +0 -2
- package/dist/__tests__/component-utils.test.d.ts.map +0 -1
- package/dist/__tests__/component-utils.test.js +0 -51
- package/dist/__tests__/component-utils.test.js.map +0 -1
- package/dist/__tests__/event-controller.test.d.ts +0 -2
- package/dist/__tests__/event-controller.test.d.ts.map +0 -1
- package/dist/__tests__/event-controller.test.js +0 -538
- package/dist/__tests__/event-controller.test.js.map +0 -1
- package/dist/__tests__/helpers/route-tree.d.ts +0 -118
- package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
- package/dist/__tests__/helpers/route-tree.js +0 -374
- package/dist/__tests__/helpers/route-tree.js.map +0 -1
- package/dist/__tests__/match-result.test.d.ts +0 -2
- package/dist/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/__tests__/match-result.test.js +0 -154
- package/dist/__tests__/match-result.test.js.map +0 -1
- package/dist/__tests__/navigation-store.test.d.ts +0 -2
- package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
- package/dist/__tests__/navigation-store.test.js +0 -440
- package/dist/__tests__/navigation-store.test.js.map +0 -1
- package/dist/__tests__/partial-update.test.d.ts +0 -2
- package/dist/__tests__/partial-update.test.d.ts.map +0 -1
- package/dist/__tests__/partial-update.test.js +0 -1009
- package/dist/__tests__/partial-update.test.js.map +0 -1
- package/dist/__tests__/reverse-types.test.d.ts +0 -8
- package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
- package/dist/__tests__/reverse-types.test.js +0 -656
- package/dist/__tests__/reverse-types.test.js.map +0 -1
- package/dist/__tests__/route-definition.test.d.ts +0 -2
- package/dist/__tests__/route-definition.test.d.ts.map +0 -1
- package/dist/__tests__/route-definition.test.js +0 -55
- package/dist/__tests__/route-definition.test.js.map +0 -1
- package/dist/__tests__/router-helpers.test.d.ts +0 -2
- package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
- package/dist/__tests__/router-helpers.test.js +0 -377
- package/dist/__tests__/router-helpers.test.js.map +0 -1
- package/dist/__tests__/router-integration-2.test.d.ts +0 -2
- package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration-2.test.js +0 -426
- package/dist/__tests__/router-integration-2.test.js.map +0 -1
- package/dist/__tests__/router-integration.test.d.ts +0 -2
- package/dist/__tests__/router-integration.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration.test.js +0 -1051
- package/dist/__tests__/router-integration.test.js.map +0 -1
- package/dist/__tests__/search-params.test.d.ts +0 -5
- package/dist/__tests__/search-params.test.d.ts.map +0 -1
- package/dist/__tests__/search-params.test.js +0 -306
- package/dist/__tests__/search-params.test.js.map +0 -1
- package/dist/__tests__/segment-system.test.d.ts +0 -2
- package/dist/__tests__/segment-system.test.d.ts.map +0 -1
- package/dist/__tests__/segment-system.test.js +0 -627
- package/dist/__tests__/segment-system.test.js.map +0 -1
- package/dist/__tests__/static-handler-types.test.d.ts +0 -8
- package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
- package/dist/__tests__/static-handler-types.test.js +0 -63
- package/dist/__tests__/static-handler-types.test.js.map +0 -1
- package/dist/__tests__/urls.test.d.ts +0 -2
- package/dist/__tests__/urls.test.d.ts.map +0 -1
- package/dist/__tests__/urls.test.js +0 -421
- package/dist/__tests__/urls.test.js.map +0 -1
- package/dist/__tests__/use-mount.test.d.ts +0 -2
- package/dist/__tests__/use-mount.test.d.ts.map +0 -1
- package/dist/__tests__/use-mount.test.js +0 -35
- package/dist/__tests__/use-mount.test.js.map +0 -1
- package/dist/bin/rango.d.ts +0 -2
- package/dist/bin/rango.d.ts.map +0 -1
- package/dist/bin/rango.js.map +0 -1
- package/dist/browser/event-controller.d.ts +0 -191
- package/dist/browser/event-controller.d.ts.map +0 -1
- package/dist/browser/event-controller.js +0 -559
- package/dist/browser/event-controller.js.map +0 -1
- package/dist/browser/index.d.ts +0 -2
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -14
- package/dist/browser/index.js.map +0 -1
- package/dist/browser/link-interceptor.d.ts +0 -38
- package/dist/browser/link-interceptor.d.ts.map +0 -1
- package/dist/browser/link-interceptor.js +0 -99
- package/dist/browser/link-interceptor.js.map +0 -1
- package/dist/browser/logging.d.ts +0 -10
- package/dist/browser/logging.d.ts.map +0 -1
- package/dist/browser/logging.js +0 -29
- package/dist/browser/logging.js.map +0 -1
- package/dist/browser/lru-cache.d.ts +0 -17
- package/dist/browser/lru-cache.d.ts.map +0 -1
- package/dist/browser/lru-cache.js +0 -50
- package/dist/browser/lru-cache.js.map +0 -1
- package/dist/browser/merge-segment-loaders.d.ts +0 -39
- package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
- package/dist/browser/merge-segment-loaders.js +0 -102
- package/dist/browser/merge-segment-loaders.js.map +0 -1
- package/dist/browser/navigation-bridge.d.ts +0 -102
- package/dist/browser/navigation-bridge.d.ts.map +0 -1
- package/dist/browser/navigation-bridge.js +0 -708
- package/dist/browser/navigation-bridge.js.map +0 -1
- package/dist/browser/navigation-client.d.ts +0 -25
- package/dist/browser/navigation-client.d.ts.map +0 -1
- package/dist/browser/navigation-client.js +0 -157
- package/dist/browser/navigation-client.js.map +0 -1
- package/dist/browser/navigation-store.d.ts +0 -101
- package/dist/browser/navigation-store.d.ts.map +0 -1
- package/dist/browser/navigation-store.js +0 -625
- package/dist/browser/navigation-store.js.map +0 -1
- package/dist/browser/partial-update.d.ts +0 -75
- package/dist/browser/partial-update.d.ts.map +0 -1
- package/dist/browser/partial-update.js +0 -426
- package/dist/browser/partial-update.js.map +0 -1
- package/dist/browser/react/Link.d.ts +0 -86
- package/dist/browser/react/Link.d.ts.map +0 -1
- package/dist/browser/react/Link.js +0 -128
- package/dist/browser/react/Link.js.map +0 -1
- package/dist/browser/react/NavigationProvider.d.ts +0 -63
- package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
- package/dist/browser/react/NavigationProvider.js +0 -216
- package/dist/browser/react/NavigationProvider.js.map +0 -1
- package/dist/browser/react/ScrollRestoration.d.ts +0 -75
- package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
- package/dist/browser/react/ScrollRestoration.js +0 -57
- package/dist/browser/react/ScrollRestoration.js.map +0 -1
- package/dist/browser/react/context.d.ts +0 -46
- package/dist/browser/react/context.d.ts.map +0 -1
- package/dist/browser/react/context.js +0 -10
- package/dist/browser/react/context.js.map +0 -1
- package/dist/browser/react/index.d.ts +0 -11
- package/dist/browser/react/index.d.ts.map +0 -1
- package/dist/browser/react/index.js +0 -22
- package/dist/browser/react/index.js.map +0 -1
- package/dist/browser/react/location-state-shared.d.ts +0 -63
- package/dist/browser/react/location-state-shared.d.ts.map +0 -1
- package/dist/browser/react/location-state-shared.js +0 -81
- package/dist/browser/react/location-state-shared.js.map +0 -1
- package/dist/browser/react/location-state.d.ts +0 -23
- package/dist/browser/react/location-state.d.ts.map +0 -1
- package/dist/browser/react/location-state.js +0 -29
- package/dist/browser/react/location-state.js.map +0 -1
- package/dist/browser/react/mount-context.d.ts +0 -24
- package/dist/browser/react/mount-context.d.ts.map +0 -1
- package/dist/browser/react/mount-context.js +0 -24
- package/dist/browser/react/mount-context.js.map +0 -1
- package/dist/browser/react/use-action.d.ts +0 -64
- package/dist/browser/react/use-action.d.ts.map +0 -1
- package/dist/browser/react/use-action.js +0 -134
- package/dist/browser/react/use-action.js.map +0 -1
- package/dist/browser/react/use-client-cache.d.ts +0 -41
- package/dist/browser/react/use-client-cache.d.ts.map +0 -1
- package/dist/browser/react/use-client-cache.js +0 -39
- package/dist/browser/react/use-client-cache.js.map +0 -1
- package/dist/browser/react/use-handle.d.ts +0 -31
- package/dist/browser/react/use-handle.d.ts.map +0 -1
- package/dist/browser/react/use-handle.js +0 -144
- package/dist/browser/react/use-handle.js.map +0 -1
- package/dist/browser/react/use-href.d.ts +0 -33
- package/dist/browser/react/use-href.d.ts.map +0 -1
- package/dist/browser/react/use-href.js +0 -39
- package/dist/browser/react/use-href.js.map +0 -1
- package/dist/browser/react/use-link-status.d.ts +0 -37
- package/dist/browser/react/use-link-status.d.ts.map +0 -1
- package/dist/browser/react/use-link-status.js +0 -99
- package/dist/browser/react/use-link-status.js.map +0 -1
- package/dist/browser/react/use-mount.d.ts +0 -25
- package/dist/browser/react/use-mount.d.ts.map +0 -1
- package/dist/browser/react/use-mount.js +0 -30
- package/dist/browser/react/use-mount.js.map +0 -1
- package/dist/browser/react/use-navigation.d.ts +0 -27
- package/dist/browser/react/use-navigation.d.ts.map +0 -1
- package/dist/browser/react/use-navigation.js +0 -87
- package/dist/browser/react/use-navigation.js.map +0 -1
- package/dist/browser/react/use-segments.d.ts +0 -38
- package/dist/browser/react/use-segments.d.ts.map +0 -1
- package/dist/browser/react/use-segments.js +0 -130
- package/dist/browser/react/use-segments.js.map +0 -1
- package/dist/browser/request-controller.d.ts +0 -26
- package/dist/browser/request-controller.d.ts.map +0 -1
- package/dist/browser/request-controller.js +0 -147
- package/dist/browser/request-controller.js.map +0 -1
- package/dist/browser/rsc-router.d.ts +0 -129
- package/dist/browser/rsc-router.d.ts.map +0 -1
- package/dist/browser/rsc-router.js +0 -195
- package/dist/browser/rsc-router.js.map +0 -1
- package/dist/browser/scroll-restoration.d.ts +0 -93
- package/dist/browser/scroll-restoration.d.ts.map +0 -1
- package/dist/browser/scroll-restoration.js +0 -321
- package/dist/browser/scroll-restoration.js.map +0 -1
- package/dist/browser/segment-structure-assert.d.ts +0 -17
- package/dist/browser/segment-structure-assert.d.ts.map +0 -1
- package/dist/browser/segment-structure-assert.js +0 -59
- package/dist/browser/segment-structure-assert.js.map +0 -1
- package/dist/browser/server-action-bridge.d.ts +0 -26
- package/dist/browser/server-action-bridge.d.ts.map +0 -1
- package/dist/browser/server-action-bridge.js +0 -668
- package/dist/browser/server-action-bridge.js.map +0 -1
- package/dist/browser/shallow.d.ts +0 -12
- package/dist/browser/shallow.d.ts.map +0 -1
- package/dist/browser/shallow.js +0 -34
- package/dist/browser/shallow.js.map +0 -1
- package/dist/browser/types.d.ts +0 -369
- package/dist/browser/types.d.ts.map +0 -1
- package/dist/browser/types.js +0 -2
- package/dist/browser/types.js.map +0 -1
- package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
- package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-cli.test.js +0 -237
- package/dist/build/__tests__/generate-cli.test.js.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.js +0 -119
- package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.js +0 -620
- package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.js +0 -308
- package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
- package/dist/build/generate-manifest.d.ts +0 -81
- package/dist/build/generate-manifest.d.ts.map +0 -1
- package/dist/build/generate-manifest.js +0 -276
- package/dist/build/generate-manifest.js.map +0 -1
- package/dist/build/generate-route-types.d.ts +0 -115
- package/dist/build/generate-route-types.d.ts.map +0 -1
- package/dist/build/generate-route-types.js +0 -740
- package/dist/build/generate-route-types.js.map +0 -1
- package/dist/build/index.d.ts +0 -21
- package/dist/build/index.d.ts.map +0 -1
- package/dist/build/index.js +0 -21
- package/dist/build/index.js.map +0 -1
- package/dist/build/route-trie.d.ts +0 -71
- package/dist/build/route-trie.d.ts.map +0 -1
- package/dist/build/route-trie.js +0 -175
- package/dist/build/route-trie.js.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.js +0 -208
- package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
- package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
- package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
- package/dist/cache/__tests__/document-cache.test.js +0 -345
- package/dist/cache/__tests__/document-cache.test.js.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
- package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
- package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-store.test.js +0 -367
- package/dist/cache/__tests__/memory-store.test.js.map +0 -1
- package/dist/cache/cache-scope.d.ts +0 -102
- package/dist/cache/cache-scope.d.ts.map +0 -1
- package/dist/cache/cache-scope.js +0 -440
- package/dist/cache/cache-scope.js.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
- package/dist/cache/cf/cf-cache-store.d.ts +0 -165
- package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
- package/dist/cache/cf/cf-cache-store.js +0 -242
- package/dist/cache/cf/cf-cache-store.js.map +0 -1
- package/dist/cache/cf/index.d.ts +0 -14
- package/dist/cache/cf/index.d.ts.map +0 -1
- package/dist/cache/cf/index.js +0 -17
- package/dist/cache/cf/index.js.map +0 -1
- package/dist/cache/document-cache.d.ts +0 -64
- package/dist/cache/document-cache.d.ts.map +0 -1
- package/dist/cache/document-cache.js +0 -228
- package/dist/cache/document-cache.js.map +0 -1
- package/dist/cache/index.d.ts +0 -19
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/index.js +0 -21
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/memory-segment-store.d.ts +0 -110
- package/dist/cache/memory-segment-store.d.ts.map +0 -1
- package/dist/cache/memory-segment-store.js +0 -117
- package/dist/cache/memory-segment-store.js.map +0 -1
- package/dist/cache/memory-store.d.ts +0 -41
- package/dist/cache/memory-store.d.ts.map +0 -1
- package/dist/cache/memory-store.js +0 -191
- package/dist/cache/memory-store.js.map +0 -1
- package/dist/cache/types.d.ts +0 -317
- package/dist/cache/types.d.ts.map +0 -1
- package/dist/cache/types.js +0 -12
- package/dist/cache/types.js.map +0 -1
- package/dist/client.d.ts +0 -248
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -367
- package/dist/client.js.map +0 -1
- package/dist/client.rsc.d.ts +0 -26
- package/dist/client.rsc.d.ts.map +0 -1
- package/dist/client.rsc.js +0 -46
- package/dist/client.rsc.js.map +0 -1
- package/dist/component-utils.d.ts +0 -36
- package/dist/component-utils.d.ts.map +0 -1
- package/dist/component-utils.js +0 -61
- package/dist/component-utils.js.map +0 -1
- package/dist/components/DefaultDocument.d.ts +0 -13
- package/dist/components/DefaultDocument.d.ts.map +0 -1
- package/dist/components/DefaultDocument.js +0 -15
- package/dist/components/DefaultDocument.js.map +0 -1
- package/dist/debug.d.ts +0 -58
- package/dist/debug.d.ts.map +0 -1
- package/dist/debug.js +0 -157
- package/dist/debug.js.map +0 -1
- package/dist/default-error-boundary.d.ts +0 -11
- package/dist/default-error-boundary.d.ts.map +0 -1
- package/dist/default-error-boundary.js +0 -45
- package/dist/default-error-boundary.js.map +0 -1
- package/dist/deps/browser.d.ts +0 -2
- package/dist/deps/browser.d.ts.map +0 -1
- package/dist/deps/browser.js +0 -3
- package/dist/deps/browser.js.map +0 -1
- package/dist/deps/html-stream-client.d.ts +0 -2
- package/dist/deps/html-stream-client.d.ts.map +0 -1
- package/dist/deps/html-stream-client.js +0 -3
- package/dist/deps/html-stream-client.js.map +0 -1
- package/dist/deps/html-stream-server.d.ts +0 -2
- package/dist/deps/html-stream-server.d.ts.map +0 -1
- package/dist/deps/html-stream-server.js +0 -3
- package/dist/deps/html-stream-server.js.map +0 -1
- package/dist/deps/rsc.d.ts +0 -2
- package/dist/deps/rsc.d.ts.map +0 -1
- package/dist/deps/rsc.js +0 -4
- package/dist/deps/rsc.js.map +0 -1
- package/dist/deps/ssr.d.ts +0 -2
- package/dist/deps/ssr.d.ts.map +0 -1
- package/dist/deps/ssr.js +0 -3
- package/dist/deps/ssr.js.map +0 -1
- package/dist/errors.d.ts +0 -174
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -241
- package/dist/errors.js.map +0 -1
- package/dist/handle.d.ts +0 -78
- package/dist/handle.d.ts.map +0 -1
- package/dist/handle.js +0 -82
- package/dist/handle.js.map +0 -1
- package/dist/handles/MetaTags.d.ts +0 -14
- package/dist/handles/MetaTags.d.ts.map +0 -1
- package/dist/handles/MetaTags.js +0 -136
- package/dist/handles/MetaTags.js.map +0 -1
- package/dist/handles/index.d.ts +0 -6
- package/dist/handles/index.d.ts.map +0 -1
- package/dist/handles/index.js +0 -6
- package/dist/handles/index.js.map +0 -1
- package/dist/handles/meta.d.ts +0 -39
- package/dist/handles/meta.d.ts.map +0 -1
- package/dist/handles/meta.js +0 -202
- package/dist/handles/meta.js.map +0 -1
- package/dist/host/__tests__/errors.test.d.ts +0 -2
- package/dist/host/__tests__/errors.test.d.ts.map +0 -1
- package/dist/host/__tests__/errors.test.js +0 -76
- package/dist/host/__tests__/errors.test.js.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
- package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.js +0 -251
- package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
- package/dist/host/__tests__/router.test.d.ts +0 -2
- package/dist/host/__tests__/router.test.d.ts.map +0 -1
- package/dist/host/__tests__/router.test.js +0 -241
- package/dist/host/__tests__/router.test.js.map +0 -1
- package/dist/host/__tests__/testing.test.d.ts +0 -2
- package/dist/host/__tests__/testing.test.d.ts.map +0 -1
- package/dist/host/__tests__/testing.test.js +0 -64
- package/dist/host/__tests__/testing.test.js.map +0 -1
- package/dist/host/__tests__/utils.test.d.ts +0 -2
- package/dist/host/__tests__/utils.test.d.ts.map +0 -1
- package/dist/host/__tests__/utils.test.js +0 -29
- package/dist/host/__tests__/utils.test.js.map +0 -1
- package/dist/host/cookie-handler.d.ts +0 -34
- package/dist/host/cookie-handler.d.ts.map +0 -1
- package/dist/host/cookie-handler.js +0 -124
- package/dist/host/cookie-handler.js.map +0 -1
- package/dist/host/errors.d.ts +0 -56
- package/dist/host/errors.d.ts.map +0 -1
- package/dist/host/errors.js +0 -79
- package/dist/host/errors.js.map +0 -1
- package/dist/host/index.d.ts +0 -29
- package/dist/host/index.d.ts.map +0 -1
- package/dist/host/index.js +0 -32
- package/dist/host/index.js.map +0 -1
- package/dist/host/pattern-matcher.d.ts +0 -36
- package/dist/host/pattern-matcher.d.ts.map +0 -1
- package/dist/host/pattern-matcher.js +0 -172
- package/dist/host/pattern-matcher.js.map +0 -1
- package/dist/host/router.d.ts +0 -26
- package/dist/host/router.d.ts.map +0 -1
- package/dist/host/router.js +0 -218
- package/dist/host/router.js.map +0 -1
- package/dist/host/testing.d.ts +0 -36
- package/dist/host/testing.d.ts.map +0 -1
- package/dist/host/testing.js +0 -55
- package/dist/host/testing.js.map +0 -1
- package/dist/host/types.d.ts +0 -115
- package/dist/host/types.d.ts.map +0 -1
- package/dist/host/types.js +0 -7
- package/dist/host/types.js.map +0 -1
- package/dist/host/utils.d.ts +0 -21
- package/dist/host/utils.d.ts.map +0 -1
- package/dist/host/utils.js +0 -23
- package/dist/host/utils.js.map +0 -1
- package/dist/href-client.d.ts +0 -131
- package/dist/href-client.d.ts.map +0 -1
- package/dist/href-client.js +0 -64
- package/dist/href-client.js.map +0 -1
- package/dist/href-context.d.ts +0 -29
- package/dist/href-context.d.ts.map +0 -1
- package/dist/href-context.js +0 -21
- package/dist/href-context.js.map +0 -1
- package/dist/index.d.ts +0 -73
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -91
- package/dist/index.js.map +0 -1
- package/dist/index.rsc.d.ts +0 -32
- package/dist/index.rsc.d.ts.map +0 -1
- package/dist/index.rsc.js +0 -40
- package/dist/index.rsc.js.map +0 -1
- package/dist/internal-debug.d.ts +0 -2
- package/dist/internal-debug.d.ts.map +0 -1
- package/dist/internal-debug.js +0 -5
- package/dist/internal-debug.js.map +0 -1
- package/dist/loader.d.ts +0 -14
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -20
- package/dist/loader.js.map +0 -1
- package/dist/loader.rsc.d.ts +0 -19
- package/dist/loader.rsc.d.ts.map +0 -1
- package/dist/loader.rsc.js +0 -99
- package/dist/loader.rsc.js.map +0 -1
- package/dist/network-error-thrower.d.ts +0 -17
- package/dist/network-error-thrower.d.ts.map +0 -1
- package/dist/network-error-thrower.js +0 -14
- package/dist/network-error-thrower.js.map +0 -1
- package/dist/outlet-context.d.ts +0 -13
- package/dist/outlet-context.d.ts.map +0 -1
- package/dist/outlet-context.js +0 -3
- package/dist/outlet-context.js.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
- package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.js +0 -148
- package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
- package/dist/prerender/param-hash.d.ts +0 -16
- package/dist/prerender/param-hash.d.ts.map +0 -1
- package/dist/prerender/param-hash.js +0 -36
- package/dist/prerender/param-hash.js.map +0 -1
- package/dist/prerender/store.d.ts +0 -38
- package/dist/prerender/store.d.ts.map +0 -1
- package/dist/prerender/store.js +0 -61
- package/dist/prerender/store.js.map +0 -1
- package/dist/prerender.d.ts +0 -66
- package/dist/prerender.d.ts.map +0 -1
- package/dist/prerender.js +0 -57
- package/dist/prerender.js.map +0 -1
- package/dist/reverse.d.ts +0 -196
- package/dist/reverse.d.ts.map +0 -1
- package/dist/reverse.js +0 -78
- package/dist/reverse.js.map +0 -1
- package/dist/root-error-boundary.d.ts +0 -33
- package/dist/root-error-boundary.d.ts.map +0 -1
- package/dist/root-error-boundary.js +0 -165
- package/dist/root-error-boundary.js.map +0 -1
- package/dist/route-content-wrapper.d.ts +0 -46
- package/dist/route-content-wrapper.d.ts.map +0 -1
- package/dist/route-content-wrapper.js +0 -77
- package/dist/route-content-wrapper.js.map +0 -1
- package/dist/route-definition.d.ts +0 -421
- package/dist/route-definition.d.ts.map +0 -1
- package/dist/route-definition.js +0 -868
- package/dist/route-definition.js.map +0 -1
- package/dist/route-map-builder.d.ts +0 -155
- package/dist/route-map-builder.d.ts.map +0 -1
- package/dist/route-map-builder.js +0 -237
- package/dist/route-map-builder.js.map +0 -1
- package/dist/route-types.d.ts +0 -165
- package/dist/route-types.d.ts.map +0 -1
- package/dist/route-types.js +0 -7
- package/dist/route-types.js.map +0 -1
- package/dist/router/__tests__/handler-context.test.d.ts +0 -2
- package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/handler-context.test.js +0 -65
- package/dist/router/__tests__/handler-context.test.js.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
- package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
- package/dist/router/__tests__/match-context.test.d.ts +0 -2
- package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-context.test.js +0 -92
- package/dist/router/__tests__/match-context.test.js.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
- package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.js +0 -417
- package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
- package/dist/router/__tests__/match-result.test.d.ts +0 -2
- package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-result.test.js +0 -457
- package/dist/router/__tests__/match-result.test.js.map +0 -1
- package/dist/router/__tests__/on-error.test.d.ts +0 -2
- package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
- package/dist/router/__tests__/on-error.test.js +0 -678
- package/dist/router/__tests__/on-error.test.js.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
- package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.js +0 -629
- package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
- package/dist/router/error-handling.d.ts +0 -77
- package/dist/router/error-handling.d.ts.map +0 -1
- package/dist/router/error-handling.js +0 -202
- package/dist/router/error-handling.js.map +0 -1
- package/dist/router/handler-context.d.ts +0 -20
- package/dist/router/handler-context.d.ts.map +0 -1
- package/dist/router/handler-context.js +0 -198
- package/dist/router/handler-context.js.map +0 -1
- package/dist/router/intercept-resolution.d.ts +0 -66
- package/dist/router/intercept-resolution.d.ts.map +0 -1
- package/dist/router/intercept-resolution.js +0 -246
- package/dist/router/intercept-resolution.js.map +0 -1
- package/dist/router/loader-resolution.d.ts +0 -64
- package/dist/router/loader-resolution.d.ts.map +0 -1
- package/dist/router/loader-resolution.js +0 -284
- package/dist/router/loader-resolution.js.map +0 -1
- package/dist/router/logging.d.ts +0 -15
- package/dist/router/logging.d.ts.map +0 -1
- package/dist/router/logging.js +0 -99
- package/dist/router/logging.js.map +0 -1
- package/dist/router/manifest.d.ts +0 -22
- package/dist/router/manifest.d.ts.map +0 -1
- package/dist/router/manifest.js +0 -181
- package/dist/router/manifest.js.map +0 -1
- package/dist/router/match-api.d.ts +0 -35
- package/dist/router/match-api.d.ts.map +0 -1
- package/dist/router/match-api.js +0 -406
- package/dist/router/match-api.js.map +0 -1
- package/dist/router/match-context.d.ts +0 -206
- package/dist/router/match-context.d.ts.map +0 -1
- package/dist/router/match-context.js +0 -17
- package/dist/router/match-context.js.map +0 -1
- package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
- package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
- package/dist/router/match-middleware/background-revalidation.js +0 -75
- package/dist/router/match-middleware/background-revalidation.js.map +0 -1
- package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
- package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-lookup.js +0 -257
- package/dist/router/match-middleware/cache-lookup.js.map +0 -1
- package/dist/router/match-middleware/cache-store.d.ts +0 -113
- package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-store.js +0 -108
- package/dist/router/match-middleware/cache-store.js.map +0 -1
- package/dist/router/match-middleware/index.d.ts +0 -81
- package/dist/router/match-middleware/index.d.ts.map +0 -1
- package/dist/router/match-middleware/index.js +0 -80
- package/dist/router/match-middleware/index.js.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
- package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.js +0 -134
- package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
- package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
- package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/segment-resolution.js +0 -53
- package/dist/router/match-middleware/segment-resolution.js.map +0 -1
- package/dist/router/match-pipelines.d.ts +0 -147
- package/dist/router/match-pipelines.d.ts.map +0 -1
- package/dist/router/match-pipelines.js +0 -82
- package/dist/router/match-pipelines.js.map +0 -1
- package/dist/router/match-result.d.ts +0 -126
- package/dist/router/match-result.d.ts.map +0 -1
- package/dist/router/match-result.js +0 -93
- package/dist/router/match-result.js.map +0 -1
- package/dist/router/metrics.d.ts +0 -20
- package/dist/router/metrics.d.ts.map +0 -1
- package/dist/router/metrics.js +0 -47
- package/dist/router/metrics.js.map +0 -1
- package/dist/router/middleware.d.ts +0 -249
- package/dist/router/middleware.d.ts.map +0 -1
- package/dist/router/middleware.js +0 -434
- package/dist/router/middleware.js.map +0 -1
- package/dist/router/middleware.test.d.ts +0 -2
- package/dist/router/middleware.test.d.ts.map +0 -1
- package/dist/router/middleware.test.js +0 -816
- package/dist/router/middleware.test.js.map +0 -1
- package/dist/router/pattern-matching.d.ts +0 -149
- package/dist/router/pattern-matching.d.ts.map +0 -1
- package/dist/router/pattern-matching.js +0 -349
- package/dist/router/pattern-matching.js.map +0 -1
- package/dist/router/revalidation.d.ts +0 -44
- package/dist/router/revalidation.d.ts.map +0 -1
- package/dist/router/revalidation.js +0 -147
- package/dist/router/revalidation.js.map +0 -1
- package/dist/router/router-context.d.ts +0 -135
- package/dist/router/router-context.d.ts.map +0 -1
- package/dist/router/router-context.js +0 -36
- package/dist/router/router-context.js.map +0 -1
- package/dist/router/segment-resolution.d.ts +0 -127
- package/dist/router/segment-resolution.d.ts.map +0 -1
- package/dist/router/segment-resolution.js +0 -919
- package/dist/router/segment-resolution.js.map +0 -1
- package/dist/router/trie-matching.d.ts +0 -40
- package/dist/router/trie-matching.d.ts.map +0 -1
- package/dist/router/trie-matching.js +0 -127
- package/dist/router/trie-matching.js.map +0 -1
- package/dist/router/types.d.ts +0 -136
- package/dist/router/types.d.ts.map +0 -1
- package/dist/router/types.js +0 -7
- package/dist/router/types.js.map +0 -1
- package/dist/router.d.ts +0 -753
- package/dist/router.d.ts.map +0 -1
- package/dist/router.gen.d.ts +0 -6
- package/dist/router.gen.d.ts.map +0 -1
- package/dist/router.gen.js +0 -6
- package/dist/router.gen.js.map +0 -1
- package/dist/router.js +0 -1304
- package/dist/router.js.map +0 -1
- package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
- package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
- package/dist/rsc/__tests__/helpers.test.js +0 -140
- package/dist/rsc/__tests__/helpers.test.js.map +0 -1
- package/dist/rsc/handler.d.ts +0 -45
- package/dist/rsc/handler.d.ts.map +0 -1
- package/dist/rsc/handler.js +0 -1172
- package/dist/rsc/handler.js.map +0 -1
- package/dist/rsc/helpers.d.ts +0 -16
- package/dist/rsc/helpers.d.ts.map +0 -1
- package/dist/rsc/helpers.js +0 -55
- package/dist/rsc/helpers.js.map +0 -1
- package/dist/rsc/index.d.ts +0 -22
- package/dist/rsc/index.d.ts.map +0 -1
- package/dist/rsc/index.js +0 -23
- package/dist/rsc/index.js.map +0 -1
- package/dist/rsc/nonce.d.ts +0 -9
- package/dist/rsc/nonce.d.ts.map +0 -1
- package/dist/rsc/nonce.js +0 -18
- package/dist/rsc/nonce.js.map +0 -1
- package/dist/rsc/types.d.ts +0 -206
- package/dist/rsc/types.d.ts.map +0 -1
- package/dist/rsc/types.js +0 -8
- package/dist/rsc/types.js.map +0 -1
- package/dist/search-params.d.ts +0 -103
- package/dist/search-params.d.ts.map +0 -1
- package/dist/search-params.js +0 -74
- package/dist/search-params.js.map +0 -1
- package/dist/segment-system.d.ts +0 -75
- package/dist/segment-system.d.ts.map +0 -1
- package/dist/segment-system.js +0 -336
- package/dist/segment-system.js.map +0 -1
- package/dist/server/context.d.ts +0 -245
- package/dist/server/context.d.ts.map +0 -1
- package/dist/server/context.js +0 -197
- package/dist/server/context.js.map +0 -1
- package/dist/server/fetchable-loader-store.d.ts +0 -18
- package/dist/server/fetchable-loader-store.d.ts.map +0 -1
- package/dist/server/fetchable-loader-store.js +0 -18
- package/dist/server/fetchable-loader-store.js.map +0 -1
- package/dist/server/handle-store.d.ts +0 -85
- package/dist/server/handle-store.d.ts.map +0 -1
- package/dist/server/handle-store.js +0 -142
- package/dist/server/handle-store.js.map +0 -1
- package/dist/server/loader-registry.d.ts +0 -55
- package/dist/server/loader-registry.d.ts.map +0 -1
- package/dist/server/loader-registry.js +0 -132
- package/dist/server/loader-registry.js.map +0 -1
- package/dist/server/request-context.d.ts +0 -226
- package/dist/server/request-context.d.ts.map +0 -1
- package/dist/server/request-context.js +0 -290
- package/dist/server/request-context.js.map +0 -1
- package/dist/server/root-layout.d.ts +0 -4
- package/dist/server/root-layout.d.ts.map +0 -1
- package/dist/server/root-layout.js +0 -5
- package/dist/server/root-layout.js.map +0 -1
- package/dist/server.d.ts +0 -15
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -20
- package/dist/server.js.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
- package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
- package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
- package/dist/ssr/index.d.ts +0 -98
- package/dist/ssr/index.d.ts.map +0 -1
- package/dist/ssr/index.js +0 -158
- package/dist/ssr/index.js.map +0 -1
- package/dist/static-handler.d.ts +0 -50
- package/dist/static-handler.d.ts.map +0 -1
- package/dist/static-handler.gen.d.ts +0 -5
- package/dist/static-handler.gen.d.ts.map +0 -1
- package/dist/static-handler.gen.js +0 -5
- package/dist/static-handler.gen.js.map +0 -1
- package/dist/static-handler.js +0 -29
- package/dist/static-handler.js.map +0 -1
- package/dist/theme/ThemeProvider.d.ts +0 -20
- package/dist/theme/ThemeProvider.d.ts.map +0 -1
- package/dist/theme/ThemeProvider.js +0 -240
- package/dist/theme/ThemeProvider.js.map +0 -1
- package/dist/theme/ThemeScript.d.ts +0 -48
- package/dist/theme/ThemeScript.d.ts.map +0 -1
- package/dist/theme/ThemeScript.js +0 -13
- package/dist/theme/ThemeScript.js.map +0 -1
- package/dist/theme/__tests__/theme.test.d.ts +0 -2
- package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
- package/dist/theme/__tests__/theme.test.js +0 -103
- package/dist/theme/__tests__/theme.test.js.map +0 -1
- package/dist/theme/constants.d.ts +0 -29
- package/dist/theme/constants.d.ts.map +0 -1
- package/dist/theme/constants.js +0 -48
- package/dist/theme/constants.js.map +0 -1
- package/dist/theme/index.d.ts +0 -31
- package/dist/theme/index.d.ts.map +0 -1
- package/dist/theme/index.js +0 -36
- package/dist/theme/index.js.map +0 -1
- package/dist/theme/theme-context.d.ts +0 -40
- package/dist/theme/theme-context.d.ts.map +0 -1
- package/dist/theme/theme-context.js +0 -60
- package/dist/theme/theme-context.js.map +0 -1
- package/dist/theme/theme-script.d.ts +0 -27
- package/dist/theme/theme-script.d.ts.map +0 -1
- package/dist/theme/theme-script.js +0 -147
- package/dist/theme/theme-script.js.map +0 -1
- package/dist/theme/types.d.ts +0 -163
- package/dist/theme/types.d.ts.map +0 -1
- package/dist/theme/types.js +0 -11
- package/dist/theme/types.js.map +0 -1
- package/dist/theme/use-theme.d.ts +0 -12
- package/dist/theme/use-theme.d.ts.map +0 -1
- package/dist/theme/use-theme.js +0 -40
- package/dist/theme/use-theme.js.map +0 -1
- package/dist/types.d.ts +0 -1479
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -10
- package/dist/types.js.map +0 -1
- package/dist/urls.d.ts +0 -441
- package/dist/urls.d.ts.map +0 -1
- package/dist/urls.gen.d.ts +0 -8
- package/dist/urls.gen.d.ts.map +0 -1
- package/dist/urls.gen.js +0 -8
- package/dist/urls.gen.js.map +0 -1
- package/dist/urls.js +0 -443
- package/dist/urls.js.map +0 -1
- package/dist/use-loader.d.ts +0 -127
- package/dist/use-loader.d.ts.map +0 -1
- package/dist/use-loader.js +0 -237
- package/dist/use-loader.js.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
- package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
- package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
- package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.js +0 -39
- package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
- package/dist/vite/ast-handler-extract.d.ts +0 -49
- package/dist/vite/ast-handler-extract.d.ts.map +0 -1
- package/dist/vite/ast-handler-extract.js +0 -249
- package/dist/vite/ast-handler-extract.js.map +0 -1
- package/dist/vite/expose-action-id.d.ts +0 -19
- package/dist/vite/expose-action-id.d.ts.map +0 -1
- package/dist/vite/expose-action-id.js +0 -250
- package/dist/vite/expose-action-id.js.map +0 -1
- package/dist/vite/expose-id-utils.d.ts +0 -69
- package/dist/vite/expose-id-utils.d.ts.map +0 -1
- package/dist/vite/expose-id-utils.js +0 -289
- package/dist/vite/expose-id-utils.js.map +0 -1
- package/dist/vite/expose-internal-ids.d.ts +0 -22
- package/dist/vite/expose-internal-ids.d.ts.map +0 -1
- package/dist/vite/expose-internal-ids.js +0 -886
- package/dist/vite/expose-internal-ids.js.map +0 -1
- package/dist/vite/index.d.ts +0 -149
- package/dist/vite/index.d.ts.map +0 -1
- package/dist/vite/index.js.bak +0 -5448
- package/dist/vite/index.js.map +0 -1
- package/dist/vite/index.named-routes.gen.ts +0 -103
- package/dist/vite/package-resolution.d.ts +0 -43
- package/dist/vite/package-resolution.d.ts.map +0 -1
- package/dist/vite/package-resolution.js +0 -112
- package/dist/vite/package-resolution.js.map +0 -1
- package/dist/vite/virtual-entries.d.ts +0 -25
- package/dist/vite/virtual-entries.d.ts.map +0 -1
- package/dist/vite/virtual-entries.js +0 -110
- package/dist/vite/virtual-entries.js.map +0 -1
- package/src/browser/action-response-classifier.ts +0 -99
- package/src/browser/react/use-client-cache.ts +0 -58
- package/src/browser/shallow.ts +0 -40
- package/src/handles/index.ts +0 -7
- package/src/network-error-thrower.tsx +0 -23
- package/src/router/middleware-cookies.ts +0 -55
|
@@ -8,21 +8,12 @@ export function normalizePath(p: string): string {
|
|
|
8
8
|
return p.split(path.sep).join("/");
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
* Generate a short hash for an ID.
|
|
13
|
-
* Uses first 8 chars of SHA-256 hash for uniqueness while keeping IDs short.
|
|
14
|
-
* Appends export name for easier debugging in production: "abc123#ExportName"
|
|
15
|
-
*/
|
|
16
11
|
export function hashId(filePath: string, exportName: string): string {
|
|
17
12
|
const input = `${filePath}#${exportName}`;
|
|
18
13
|
const hash = crypto.createHash("sha256").update(input).digest("hex");
|
|
19
14
|
return `${hash.slice(0, 8)}#${exportName}`;
|
|
20
15
|
}
|
|
21
16
|
|
|
22
|
-
/**
|
|
23
|
-
* Build a stable ID for an export binding. Uses hashed IDs in production
|
|
24
|
-
* builds (short + opaque) and readable path#name IDs in dev.
|
|
25
|
-
*/
|
|
26
17
|
export function makeStubId(
|
|
27
18
|
filePath: string,
|
|
28
19
|
exportName: string,
|
|
@@ -31,19 +22,12 @@ export function makeStubId(
|
|
|
31
22
|
return isBuild ? hashId(filePath, exportName) : `${filePath}#${exportName}`;
|
|
32
23
|
}
|
|
33
24
|
|
|
34
|
-
/**
|
|
35
|
-
* Generate an 8-char hex hash for an inline static handler call site.
|
|
36
|
-
* Uses file path and line number (plus optional index for same-line collisions).
|
|
37
|
-
*/
|
|
38
25
|
export function hashInlineId(
|
|
39
26
|
filePath: string,
|
|
40
|
-
|
|
41
|
-
index
|
|
27
|
+
fnName: string,
|
|
28
|
+
index: number,
|
|
42
29
|
): string {
|
|
43
|
-
const input =
|
|
44
|
-
index !== undefined && index > 0
|
|
45
|
-
? `${filePath}:${lineNumber}:${index}`
|
|
46
|
-
: `${filePath}:${lineNumber}`;
|
|
30
|
+
const input = `${filePath}:${fnName}:${index}`;
|
|
47
31
|
return crypto.createHash("sha256").update(input).digest("hex").slice(0, 8);
|
|
48
32
|
}
|
|
49
33
|
|
|
@@ -57,11 +41,6 @@ export interface DetectedImports {
|
|
|
57
41
|
any: boolean;
|
|
58
42
|
}
|
|
59
43
|
|
|
60
|
-
/**
|
|
61
|
-
* Build a map from local binding name to exported names by walking
|
|
62
|
-
* ExportNamedDeclaration nodes. Handles `export const X`, `export { X }`,
|
|
63
|
-
* and `export { X as Y }`. Skips re-exports (`export { X } from "..."`).
|
|
64
|
-
*/
|
|
65
44
|
export function buildExportMap(program: any): Map<string, string[]> {
|
|
66
45
|
const exportMap = new Map<string, string[]>();
|
|
67
46
|
|
|
@@ -101,10 +80,6 @@ export function buildExportMap(program: any): Map<string, string[]> {
|
|
|
101
80
|
return exportMap;
|
|
102
81
|
}
|
|
103
82
|
|
|
104
|
-
/**
|
|
105
|
-
* Single-pass detection of all create* imports from @rangojs/router.
|
|
106
|
-
* Returns which create functions are imported so we can skip unnecessary transforms.
|
|
107
|
-
*/
|
|
108
83
|
export function detectImports(code: string): DetectedImports {
|
|
109
84
|
// Extract all import declarations from @rangojs/router in one scan
|
|
110
85
|
const importPattern =
|
|
@@ -131,10 +106,6 @@ export function detectImports(code: string): DetectedImports {
|
|
|
131
106
|
if (/\bcreateRouter\b/.test(imports)) result.router = true;
|
|
132
107
|
}
|
|
133
108
|
|
|
134
|
-
// createRouter has a stricter check: only from "@rangojs/router" (not sub-paths).
|
|
135
|
-
// NOTE: This is intentional — detectImports is used as a fast pre-filter in
|
|
136
|
-
// exposeInternalIds (which does NOT handle router transforms). The separate
|
|
137
|
-
// exposeRouterId plugin handles createRouter and DOES accept the /server subpath.
|
|
138
109
|
if (result.router) {
|
|
139
110
|
result.router =
|
|
140
111
|
/import\s*\{[^}]*\bcreateRouter\b[^}]*\}\s*from\s*["']@rangojs\/router["']/.test(
|
|
@@ -153,11 +124,6 @@ export function detectImports(code: string): DetectedImports {
|
|
|
153
124
|
return result;
|
|
154
125
|
}
|
|
155
126
|
|
|
156
|
-
/**
|
|
157
|
-
* Skip past a string literal, template literal, or comment starting at pos.
|
|
158
|
-
* Returns the index after the closing delimiter, or pos if not at a
|
|
159
|
-
* string/comment start. Handles escape sequences and nested ${} in templates.
|
|
160
|
-
*/
|
|
161
127
|
export function skipStringOrComment(code: string, pos: number): number {
|
|
162
128
|
const ch = code[pos];
|
|
163
129
|
|
|
@@ -215,11 +181,6 @@ export function skipStringOrComment(code: string, pos: number): number {
|
|
|
215
181
|
return pos;
|
|
216
182
|
}
|
|
217
183
|
|
|
218
|
-
/**
|
|
219
|
-
* Find the matching closing paren starting after an already-opened paren.
|
|
220
|
-
* Skips strings, template literals, and comments so parens inside them
|
|
221
|
-
* don't affect depth tracking. Returns the index after the closing paren.
|
|
222
|
-
*/
|
|
223
184
|
export function findMatchingParen(code: string, startPos: number): number {
|
|
224
185
|
let depth = 1;
|
|
225
186
|
let i = startPos;
|
|
@@ -236,10 +197,6 @@ export function findMatchingParen(code: string, startPos: number): number {
|
|
|
236
197
|
return i;
|
|
237
198
|
}
|
|
238
199
|
|
|
239
|
-
/**
|
|
240
|
-
* Count the number of top-level arguments in a function call.
|
|
241
|
-
* Skips nested parens, brackets, braces, strings, and comments.
|
|
242
|
-
*/
|
|
243
200
|
export function countArgs(
|
|
244
201
|
code: string,
|
|
245
202
|
startPos: number,
|
|
@@ -253,7 +210,16 @@ export function countArgs(
|
|
|
253
210
|
while (i < endPos) {
|
|
254
211
|
const skipped = skipStringOrComment(code, i);
|
|
255
212
|
if (skipped > i) {
|
|
256
|
-
|
|
213
|
+
// A comment is transparent: `createHandle(/* meta */)` has ZERO real
|
|
214
|
+
// arguments, so a comment-only region must NOT set hasContent (else the
|
|
215
|
+
// fallback path would count it as 1 arg and inject `, "id"` over an elided
|
|
216
|
+
// first slot — a syntax error). A string/template literal IS content.
|
|
217
|
+
const ch = code[i];
|
|
218
|
+
const isComment =
|
|
219
|
+
ch === "/" &&
|
|
220
|
+
i + 1 < code.length &&
|
|
221
|
+
(code[i + 1] === "/" || code[i + 1] === "*");
|
|
222
|
+
if (!isComment) hasContent = true;
|
|
257
223
|
i = skipped;
|
|
258
224
|
continue;
|
|
259
225
|
}
|
|
@@ -275,10 +241,6 @@ export function countArgs(
|
|
|
275
241
|
return hasContent ? argCount + 1 : 0;
|
|
276
242
|
}
|
|
277
243
|
|
|
278
|
-
/**
|
|
279
|
-
* Find the end of a statement: skip whitespace and optional semicolon after
|
|
280
|
-
* a closing paren position.
|
|
281
|
-
*/
|
|
282
244
|
export function findStatementEnd(code: string, pos: number): number {
|
|
283
245
|
let i = pos;
|
|
284
246
|
while (i < code.length && /\s/.test(code[i])) {
|
|
@@ -290,10 +252,81 @@ export function findStatementEnd(code: string, pos: number): number {
|
|
|
290
252
|
return i;
|
|
291
253
|
}
|
|
292
254
|
|
|
255
|
+
export { escapeRegExp } from "../../regex-escape.js";
|
|
256
|
+
|
|
293
257
|
/**
|
|
294
|
-
*
|
|
295
|
-
*
|
|
258
|
+
* Given an index pointing just past a `create*` callee identifier, return the
|
|
259
|
+
* index of the call's opening `(`, accounting for an optional generic type
|
|
260
|
+
* argument list `<...>` with arbitrarily nested `<>`. Returns -1 when the next
|
|
261
|
+
* non-trivia token is neither `<` nor `(` (i.e. not a call site).
|
|
262
|
+
*
|
|
263
|
+
* Replaces the single-level `<[^>]*>` regex assumption, which stopped at the
|
|
264
|
+
* first `>` and so never reached `(` for `createRouter<Config<Env>>(`.
|
|
265
|
+
*
|
|
266
|
+
* Whitespace, comments, and strings between the callee and `(` are skipped via
|
|
267
|
+
* skipStringOrComment. The `<...>` scan only balances angle brackets; it does
|
|
268
|
+
* not attempt to parse full TS type syntax (sufficient for locating the paren).
|
|
296
269
|
*/
|
|
297
|
-
export function
|
|
298
|
-
|
|
270
|
+
export function findCallParenAfterGenerics(
|
|
271
|
+
code: string,
|
|
272
|
+
afterCalleeIndex: number,
|
|
273
|
+
): number {
|
|
274
|
+
let i = afterCalleeIndex;
|
|
275
|
+
// Skip leading whitespace/comments/strings before `<` or `(`.
|
|
276
|
+
while (i < code.length) {
|
|
277
|
+
const skipped = skipStringOrComment(code, i);
|
|
278
|
+
if (skipped > i) {
|
|
279
|
+
i = skipped;
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
if (/\s/.test(code[i])) {
|
|
283
|
+
i++;
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
if (i >= code.length) return -1;
|
|
290
|
+
|
|
291
|
+
if (code[i] === "(") return i;
|
|
292
|
+
|
|
293
|
+
if (code[i] === "<") {
|
|
294
|
+
let depth = 0;
|
|
295
|
+
while (i < code.length) {
|
|
296
|
+
const skipped = skipStringOrComment(code, i);
|
|
297
|
+
if (skipped > i) {
|
|
298
|
+
i = skipped;
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
const ch = code[i];
|
|
302
|
+
if (ch === "<") {
|
|
303
|
+
depth++;
|
|
304
|
+
} else if (ch === ">") {
|
|
305
|
+
depth--;
|
|
306
|
+
if (depth === 0) {
|
|
307
|
+
i++;
|
|
308
|
+
break;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
i++;
|
|
312
|
+
}
|
|
313
|
+
if (depth !== 0) return -1;
|
|
314
|
+
// After the balanced generic list, skip trivia and expect `(`.
|
|
315
|
+
while (i < code.length) {
|
|
316
|
+
const skipped = skipStringOrComment(code, i);
|
|
317
|
+
if (skipped > i) {
|
|
318
|
+
i = skipped;
|
|
319
|
+
continue;
|
|
320
|
+
}
|
|
321
|
+
if (/\s/.test(code[i])) {
|
|
322
|
+
i++;
|
|
323
|
+
continue;
|
|
324
|
+
}
|
|
325
|
+
break;
|
|
326
|
+
}
|
|
327
|
+
if (i < code.length && code[i] === "(") return i;
|
|
328
|
+
return -1;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
return -1;
|
|
299
332
|
}
|
|
@@ -5,15 +5,11 @@ import {
|
|
|
5
5
|
findStatementEnd,
|
|
6
6
|
buildExportMap,
|
|
7
7
|
escapeRegExp,
|
|
8
|
+
findCallParenAfterGenerics,
|
|
8
9
|
} from "../expose-id-utils.js";
|
|
10
|
+
import { codeMatchIndices } from "../../../build/route-types/source-scan.js";
|
|
9
11
|
import type { CreateExportBinding } from "./types.js";
|
|
10
12
|
|
|
11
|
-
/**
|
|
12
|
-
* Check whether every non-type export in `code` is accounted for by the given
|
|
13
|
-
* bindings. Returns false if any export exists that is not one of the known
|
|
14
|
-
* create* call locals/exports, allowing callers to bail out for mixed-export
|
|
15
|
-
* files.
|
|
16
|
-
*/
|
|
17
13
|
export function isExportOnlyFile(
|
|
18
14
|
code: string,
|
|
19
15
|
bindings: CreateExportBinding[],
|
|
@@ -27,10 +23,8 @@ export function isExportOnlyFile(
|
|
|
27
23
|
for (const e of b.exportNames) knownExports.add(e);
|
|
28
24
|
}
|
|
29
25
|
|
|
30
|
-
// Bail on star re-exports (unknown exports)
|
|
31
26
|
if (/export\s*\*/.test(code)) return false;
|
|
32
27
|
|
|
33
|
-
// Check `export const/let/var/function/class/default X` declarations
|
|
34
28
|
const declExportPattern =
|
|
35
29
|
/export\s+(const|let|var|function|class|default)\s+(\w+)/g;
|
|
36
30
|
let match: RegExpExecArray | null;
|
|
@@ -38,8 +32,6 @@ export function isExportOnlyFile(
|
|
|
38
32
|
if (!knownExports.has(match[2])) return false;
|
|
39
33
|
}
|
|
40
34
|
|
|
41
|
-
// Check `export { X }` and `export { X as Y }` specifiers: the local name
|
|
42
|
-
// must reference a known create* binding.
|
|
43
35
|
const specExportPattern = /export\s*\{([^}]+)\}/g;
|
|
44
36
|
while ((match = specExportPattern.exec(code)) !== null) {
|
|
45
37
|
const specifiers = match[1]
|
|
@@ -59,19 +51,69 @@ export function isExportOnlyFile(
|
|
|
59
51
|
return true;
|
|
60
52
|
}
|
|
61
53
|
|
|
62
|
-
//
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
//
|
|
54
|
+
// Matches the callee identifier only. The optional generic argument list
|
|
55
|
+
// (which may be nested, e.g. createLoader<A<B>>(...)) and the call paren are
|
|
56
|
+
// resolved per match via findCallParenAfterGenerics, so a nested `>` no longer
|
|
57
|
+
// defeats the scan the way `<[^>]*>` did (it stopped at the first `>`).
|
|
58
|
+
function createCallPattern(fnNames: string[]): RegExp {
|
|
59
|
+
return new RegExp(`\\b(?:${fnNames.map(escapeRegExp).join("|")})\\b`, "g");
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Byte offsets of every create*-call site in real code: a callee-identifier
|
|
64
|
+
* match that is actually followed by a call `(` (after an optional nested
|
|
65
|
+
* generic list). Non-call references (type positions, the import specifier
|
|
66
|
+
* itself) yield -1 from findCallParenAfterGenerics and are dropped.
|
|
67
|
+
*/
|
|
68
|
+
function createCallStartIndices(code: string, fnNames: string[]): number[] {
|
|
69
|
+
return codeMatchIndices(code, createCallPattern(fnNames)).filter(
|
|
70
|
+
(index) =>
|
|
71
|
+
findCallParenAfterGenerics(
|
|
72
|
+
code,
|
|
73
|
+
index + matchedNameLength(code, index),
|
|
74
|
+
) !== -1,
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Length of the identifier match at `index` (run of identifier chars).
|
|
79
|
+
function matchedNameLength(code: string, index: number): number {
|
|
80
|
+
let i = index;
|
|
81
|
+
while (i < code.length && /[A-Za-z0-9_$]/.test(code[i])) i++;
|
|
82
|
+
return i - index;
|
|
83
|
+
}
|
|
84
|
+
|
|
66
85
|
export function countCreateCallsForNames(
|
|
67
86
|
code: string,
|
|
68
87
|
fnNames: string[],
|
|
69
88
|
): number {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
89
|
+
return createCallStartIndices(code, fnNames).length;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function offsetToLineColumn(
|
|
93
|
+
code: string,
|
|
94
|
+
index: number,
|
|
95
|
+
): { line: number; column: number } {
|
|
96
|
+
let line = 1;
|
|
97
|
+
let lineStart = 0;
|
|
98
|
+
const end = Math.min(index, code.length);
|
|
99
|
+
for (let i = 0; i < end; i++) {
|
|
100
|
+
if (code[i] === "\n") {
|
|
101
|
+
line++;
|
|
102
|
+
lineStart = i + 1;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return { line, column: index - lineStart + 1 };
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export function findUnsupportedCreateCallSites(
|
|
109
|
+
code: string,
|
|
110
|
+
fnNames: string[],
|
|
111
|
+
supportedBindings: CreateExportBinding[],
|
|
112
|
+
): Array<{ line: number; column: number }> {
|
|
113
|
+
const supported = new Set(supportedBindings.map((b) => b.callExprStart));
|
|
114
|
+
return createCallStartIndices(code, fnNames)
|
|
115
|
+
.filter((index) => !supported.has(index))
|
|
116
|
+
.map((index) => offsetToLineColumn(code, index));
|
|
75
117
|
}
|
|
76
118
|
|
|
77
119
|
export function getImportedFnNames(
|
|
@@ -119,6 +161,18 @@ export function getCalledIdentifierFromCall(callExpr: any): string | null {
|
|
|
119
161
|
return null;
|
|
120
162
|
}
|
|
121
163
|
|
|
164
|
+
function unwrapSignatureWrappedCall(init: any, fnNameSet: Set<string>): any {
|
|
165
|
+
if (init?.type !== "CallExpression") return init;
|
|
166
|
+
const directId = getCalledIdentifierFromCall(init);
|
|
167
|
+
if (directId && fnNameSet.has(directId)) return init;
|
|
168
|
+
const firstArg = init.arguments?.[0];
|
|
169
|
+
if (firstArg?.type === "CallExpression") {
|
|
170
|
+
const innerId = getCalledIdentifierFromCall(firstArg);
|
|
171
|
+
if (innerId && fnNameSet.has(innerId)) return firstArg;
|
|
172
|
+
}
|
|
173
|
+
return init;
|
|
174
|
+
}
|
|
175
|
+
|
|
122
176
|
export function collectCreateExportBindingsFallback(
|
|
123
177
|
code: string,
|
|
124
178
|
fnNames: string[],
|
|
@@ -196,7 +250,7 @@ export function collectCreateExportBindings(
|
|
|
196
250
|
): CreateExportBinding[] {
|
|
197
251
|
if (!program) {
|
|
198
252
|
try {
|
|
199
|
-
program = parseAst(code, {
|
|
253
|
+
program = parseAst(code, { lang: "tsx" });
|
|
200
254
|
} catch {
|
|
201
255
|
return collectCreateExportBindingsFallback(code, fnNames);
|
|
202
256
|
}
|
|
@@ -212,10 +266,13 @@ export function collectCreateExportBindings(
|
|
|
212
266
|
}
|
|
213
267
|
|
|
214
268
|
for (const decl of varDecl.declarations ?? []) {
|
|
215
|
-
|
|
269
|
+
// Unwrap a Fast Refresh signature wrapper (`_s(createLoader(...), ...)`)
|
|
270
|
+
// so injection targets the inner create* call. Falls back to decl.init.
|
|
271
|
+
const callExpr = unwrapSignatureWrappedCall(decl?.init, fnNameSet);
|
|
272
|
+
const calledIdentifier = getCalledIdentifierFromCall(callExpr);
|
|
216
273
|
if (
|
|
217
274
|
decl?.id?.type !== "Identifier" ||
|
|
218
|
-
|
|
275
|
+
callExpr?.type !== "CallExpression" ||
|
|
219
276
|
!calledIdentifier ||
|
|
220
277
|
!fnNameSet.has(calledIdentifier)
|
|
221
278
|
) {
|
|
@@ -226,9 +283,8 @@ export function collectCreateExportBindings(
|
|
|
226
283
|
const exportNames = exportMap.get(localName) ?? [];
|
|
227
284
|
if (exportNames.length === 0) continue;
|
|
228
285
|
|
|
229
|
-
const
|
|
230
|
-
const
|
|
231
|
-
const calleeEnd = decl.init.callee.end as number;
|
|
286
|
+
const callEnd = callExpr.end as number;
|
|
287
|
+
const calleeEnd = callExpr.callee.end as number;
|
|
232
288
|
|
|
233
289
|
let openParenPos = -1;
|
|
234
290
|
for (let i = calleeEnd; i < callEnd; i++) {
|
|
@@ -245,10 +301,10 @@ export function collectCreateExportBindings(
|
|
|
245
301
|
bindings.push({
|
|
246
302
|
localName,
|
|
247
303
|
exportNames,
|
|
248
|
-
callExprStart:
|
|
304
|
+
callExprStart: callExpr.start as number,
|
|
249
305
|
callOpenParenPos: openParenPos,
|
|
250
306
|
callCloseParenPos: closeParenPos,
|
|
251
|
-
argCount:
|
|
307
|
+
argCount: callExpr.arguments?.length ?? 0,
|
|
252
308
|
statementEnd,
|
|
253
309
|
});
|
|
254
310
|
}
|
|
@@ -268,10 +324,6 @@ export function collectCreateExportBindings(
|
|
|
268
324
|
}
|
|
269
325
|
}
|
|
270
326
|
|
|
271
|
-
// When the JS parser misidentifies TypeScript generics (e.g.,
|
|
272
|
-
// createLocationState<{ text: string }>({...})) as binary expressions,
|
|
273
|
-
// the AST path finds 0 bindings even though calls exist. Fall back to
|
|
274
|
-
// regex-based detection which handles generics via <[^>]*> matching.
|
|
275
327
|
if (bindings.length === 0) {
|
|
276
328
|
return collectCreateExportBindingsFallback(code, fnNames);
|
|
277
329
|
}
|
|
@@ -282,9 +334,23 @@ export function collectCreateExportBindings(
|
|
|
282
334
|
export function buildUnsupportedShapeWarning(
|
|
283
335
|
filePath: string,
|
|
284
336
|
fnName: string,
|
|
337
|
+
sites: Array<{ line: number; column: number }> = [],
|
|
285
338
|
): string {
|
|
286
|
-
|
|
287
|
-
|
|
339
|
+
const lines = [`[rango] Unsupported ${fnName} shape in "${filePath}".`];
|
|
340
|
+
|
|
341
|
+
if (sites.length === 1) {
|
|
342
|
+
const s = sites[0];
|
|
343
|
+
lines.push(
|
|
344
|
+
`The ${fnName}(...) call at ${filePath}:${s.line}:${s.column} has no stable $$id injected — it is not in a supported shape.`,
|
|
345
|
+
);
|
|
346
|
+
} else if (sites.length > 1) {
|
|
347
|
+
lines.push(
|
|
348
|
+
`These ${fnName}(...) calls have no stable $$id injected — they are not in a supported shape:`,
|
|
349
|
+
);
|
|
350
|
+
for (const s of sites) lines.push(` - ${filePath}:${s.line}:${s.column}`);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
lines.push(
|
|
288
354
|
`Supported shapes are:`,
|
|
289
355
|
` - export const X = ${fnName}(...)`,
|
|
290
356
|
` - const X = ${fnName}(...); export { X }`,
|
|
@@ -292,5 +358,6 @@ export function buildUnsupportedShapeWarning(
|
|
|
292
358
|
`Potentially unsupported forms include:`,
|
|
293
359
|
` - export let/var X = ${fnName}(...)`,
|
|
294
360
|
` - inline ${fnName}(...) calls`,
|
|
295
|
-
|
|
361
|
+
);
|
|
362
|
+
return lines.join("\n");
|
|
296
363
|
}
|
|
@@ -1,39 +1,26 @@
|
|
|
1
1
|
import MagicString from "magic-string";
|
|
2
|
-
import {
|
|
2
|
+
import { makeStubId } from "../expose-id-utils.js";
|
|
3
3
|
import type { HandlerTransformConfig, CreateExportBinding } from "./types.js";
|
|
4
4
|
import { isExportOnlyFile } from "./export-analysis.js";
|
|
5
5
|
|
|
6
|
-
function analyzeCreateHandleArgs(
|
|
7
|
-
code: string,
|
|
8
|
-
startPos: number,
|
|
9
|
-
endPos: number,
|
|
10
|
-
): { hasArgs: boolean } {
|
|
11
|
-
const content = code.slice(startPos, endPos).trim();
|
|
12
|
-
return { hasArgs: content.length > 0 };
|
|
13
|
-
}
|
|
14
|
-
|
|
15
6
|
export function transformHandles(
|
|
16
7
|
bindings: CreateExportBinding[],
|
|
17
8
|
s: MagicString,
|
|
18
|
-
code: string,
|
|
19
9
|
filePath: string,
|
|
20
10
|
isBuild: boolean,
|
|
21
11
|
): boolean {
|
|
22
12
|
let hasChanges = false;
|
|
23
13
|
for (const binding of bindings) {
|
|
24
14
|
const exportName = binding.exportNames[0];
|
|
25
|
-
const args = analyzeCreateHandleArgs(
|
|
26
|
-
code,
|
|
27
|
-
binding.callOpenParenPos + 1,
|
|
28
|
-
binding.callCloseParenPos,
|
|
29
|
-
);
|
|
30
15
|
|
|
31
|
-
const handleId = isBuild
|
|
32
|
-
? hashId(filePath, exportName)
|
|
33
|
-
: `${filePath}#${exportName}`;
|
|
16
|
+
const handleId = makeStubId(filePath, exportName, isBuild);
|
|
34
17
|
|
|
18
|
+
// Branch on the AST-derived argCount, not a string-trim of the raw arg
|
|
19
|
+
// slice. A comment-only arg list (`createHandle(/* meta */)`) trims to
|
|
20
|
+
// non-empty but is zero real arguments; injecting `, "id"` would emit
|
|
21
|
+
// `createHandle(/* meta */, "id")` — an elided first arg / syntax error.
|
|
35
22
|
let paramInjection: string;
|
|
36
|
-
if (
|
|
23
|
+
if (binding.argCount === 0) {
|
|
37
24
|
paramInjection = `undefined, "${handleId}"`;
|
|
38
25
|
} else {
|
|
39
26
|
paramInjection = `, "${handleId}"`;
|
|
@@ -58,9 +45,7 @@ export function transformLocationState(
|
|
|
58
45
|
for (const binding of bindings) {
|
|
59
46
|
const exportName = binding.exportNames[0];
|
|
60
47
|
|
|
61
|
-
const stateKey = isBuild
|
|
62
|
-
? hashId(filePath, exportName)
|
|
63
|
-
: `${filePath}#${exportName}`;
|
|
48
|
+
const stateKey = makeStubId(filePath, exportName, isBuild);
|
|
64
49
|
|
|
65
50
|
// Key is injected as a property assignment (not as a function argument).
|
|
66
51
|
// This allows createLocationState to accept options like { flash: true }
|
|
@@ -73,10 +58,6 @@ export function transformLocationState(
|
|
|
73
58
|
return hasChanges;
|
|
74
59
|
}
|
|
75
60
|
|
|
76
|
-
/**
|
|
77
|
-
* Replace the entire file with lightweight stubs when ALL non-type exports are
|
|
78
|
-
* handler calls of the given type. Returns null for files with mixed exports.
|
|
79
|
-
*/
|
|
80
61
|
export function generateWholeFileStubs(
|
|
81
62
|
cfg: HandlerTransformConfig,
|
|
82
63
|
bindings: CreateExportBinding[],
|
|
@@ -88,62 +69,13 @@ export function generateWholeFileStubs(
|
|
|
88
69
|
|
|
89
70
|
const exportNames = bindings.flatMap((b) => b.exportNames);
|
|
90
71
|
const stubs = exportNames.map((name) => {
|
|
91
|
-
const handlerId =
|
|
72
|
+
const handlerId = makeStubId(filePath, name, isBuild);
|
|
92
73
|
return `export const ${name} = { __brand: "${cfg.brand}", $$id: "${handlerId}" };`;
|
|
93
74
|
});
|
|
94
75
|
|
|
95
76
|
return { code: stubs.join("\n") + "\n", map: null };
|
|
96
77
|
}
|
|
97
78
|
|
|
98
|
-
/**
|
|
99
|
-
* Replace handler call expressions with lightweight stub objects in non-RSC
|
|
100
|
-
* environments. Other exports, imports, and module-level code remain untouched.
|
|
101
|
-
*/
|
|
102
|
-
export function generateExprStubs(
|
|
103
|
-
cfg: HandlerTransformConfig,
|
|
104
|
-
bindings: CreateExportBinding[],
|
|
105
|
-
code: string,
|
|
106
|
-
filePath: string,
|
|
107
|
-
sourceId: string,
|
|
108
|
-
isBuild: boolean,
|
|
109
|
-
): { code: string; map: ReturnType<MagicString["generateMap"]> } | null {
|
|
110
|
-
if (bindings.length === 0) return null;
|
|
111
|
-
|
|
112
|
-
const s = new MagicString(code);
|
|
113
|
-
let hasChanges = false;
|
|
114
|
-
|
|
115
|
-
for (const binding of bindings) {
|
|
116
|
-
const exportName = binding.exportNames[0];
|
|
117
|
-
const handlerId = isBuild
|
|
118
|
-
? hashId(filePath, exportName)
|
|
119
|
-
: `${filePath}#${exportName}`;
|
|
120
|
-
|
|
121
|
-
s.overwrite(
|
|
122
|
-
binding.callExprStart,
|
|
123
|
-
binding.callCloseParenPos + 1,
|
|
124
|
-
`{ __brand: "${cfg.brand}", $$id: "${handlerId}" }`,
|
|
125
|
-
);
|
|
126
|
-
hasChanges = true;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
if (!hasChanges) return null;
|
|
130
|
-
|
|
131
|
-
return {
|
|
132
|
-
code: s.toString(),
|
|
133
|
-
map: s.generateMap({
|
|
134
|
-
source: sourceId,
|
|
135
|
-
includeContent: true,
|
|
136
|
-
hires: "boundary",
|
|
137
|
-
}),
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Replace handler call expressions with lightweight stub objects on an
|
|
143
|
-
* existing MagicString. Unlike generateExprStubs (which creates its own
|
|
144
|
-
* MagicString and returns the full result), this integrates into the
|
|
145
|
-
* unified transform pipeline so all transforms share one sourcemap.
|
|
146
|
-
*/
|
|
147
79
|
export function stubHandlerExprs(
|
|
148
80
|
cfg: HandlerTransformConfig,
|
|
149
81
|
bindings: CreateExportBinding[],
|
|
@@ -154,9 +86,7 @@ export function stubHandlerExprs(
|
|
|
154
86
|
let hasChanges = false;
|
|
155
87
|
for (const binding of bindings) {
|
|
156
88
|
const exportName = binding.exportNames[0];
|
|
157
|
-
const handlerId = isBuild
|
|
158
|
-
? hashId(filePath, exportName)
|
|
159
|
-
: `${filePath}#${exportName}`;
|
|
89
|
+
const handlerId = makeStubId(filePath, exportName, isBuild);
|
|
160
90
|
|
|
161
91
|
s.overwrite(
|
|
162
92
|
binding.callExprStart,
|
|
@@ -168,9 +98,6 @@ export function stubHandlerExprs(
|
|
|
168
98
|
return hasChanges;
|
|
169
99
|
}
|
|
170
100
|
|
|
171
|
-
/**
|
|
172
|
-
* Inject $$id into export const handler calls in RSC environments.
|
|
173
|
-
*/
|
|
174
101
|
export function transformHandlerIds(
|
|
175
102
|
cfg: HandlerTransformConfig,
|
|
176
103
|
bindings: CreateExportBinding[],
|
|
@@ -182,14 +109,8 @@ export function transformHandlerIds(
|
|
|
182
109
|
for (const binding of bindings) {
|
|
183
110
|
const exportName = binding.exportNames[0];
|
|
184
111
|
|
|
185
|
-
const handlerId = isBuild
|
|
186
|
-
? hashId(filePath, exportName)
|
|
187
|
-
: `${filePath}#${exportName}`;
|
|
112
|
+
const handlerId = makeStubId(filePath, exportName, isBuild);
|
|
188
113
|
|
|
189
|
-
// Injection strategy matches the runtime overload signatures:
|
|
190
|
-
// 0 args -> inject undefined, "id"
|
|
191
|
-
// 1 arg (handler) -> inject , undefined, "id"
|
|
192
|
-
// 2+ args -> inject , "id"
|
|
193
114
|
let paramInjection: string;
|
|
194
115
|
if (binding.argCount === 0) {
|
|
195
116
|
paramInjection = `undefined, "${handlerId}"`;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type MagicString from "magic-string";
|
|
2
|
-
import {
|
|
2
|
+
import { makeStubId } from "../expose-id-utils.js";
|
|
3
3
|
import type { CreateExportBinding } from "./types.js";
|
|
4
4
|
import { isExportOnlyFile } from "./export-analysis.js";
|
|
5
5
|
|
|
@@ -9,18 +9,6 @@ export function hasCreateLoaderImport(code: string): boolean {
|
|
|
9
9
|
);
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
/**
|
|
13
|
-
* Generate lightweight client stubs for loader files.
|
|
14
|
-
*
|
|
15
|
-
* When a loader file is imported from a client component (e.g., for useLoader()),
|
|
16
|
-
* the client only needs { __brand: "loader", $$id: "..." } objects.
|
|
17
|
-
* This function replaces the entire file contents with just those stub exports,
|
|
18
|
-
* preventing server-only data (constants, DB queries, etc.) from leaking into
|
|
19
|
-
* the client bundle.
|
|
20
|
-
*
|
|
21
|
-
* Only applies when ALL named exports are createLoader() calls (plus type exports
|
|
22
|
-
* which are erased at compile time). Files with mixed exports are left untouched.
|
|
23
|
-
*/
|
|
24
12
|
export function generateClientLoaderStubs(
|
|
25
13
|
bindings: CreateExportBinding[],
|
|
26
14
|
code: string,
|
|
@@ -32,11 +20,18 @@ export function generateClientLoaderStubs(
|
|
|
32
20
|
const lines: string[] = [];
|
|
33
21
|
|
|
34
22
|
for (const binding of bindings) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
23
|
+
// Aliases share the primary export's id (matches the server side, which
|
|
24
|
+
// registers only exportNames[0] in the loader registry, and the mixed-type
|
|
25
|
+
// whole-file path). Emitting a distinct makeStubId per alias would make a
|
|
26
|
+
// client component importing the alias fetch an id absent from the server
|
|
27
|
+
// registry, so the fetchable-loader request would 404.
|
|
28
|
+
const primaryName = binding.exportNames[0];
|
|
29
|
+
const loaderId = makeStubId(filePath, primaryName, isBuild);
|
|
30
|
+
lines.push(
|
|
31
|
+
`export const ${primaryName} = { __brand: "loader", $$id: "${loaderId}" };`,
|
|
32
|
+
);
|
|
33
|
+
for (const alias of binding.exportNames.slice(1)) {
|
|
34
|
+
lines.push(`export const ${alias} = ${primaryName};`);
|
|
40
35
|
}
|
|
41
36
|
}
|
|
42
37
|
|
|
@@ -54,13 +49,8 @@ export function transformLoaders(
|
|
|
54
49
|
for (const binding of bindings) {
|
|
55
50
|
const exportName = binding.exportNames[0];
|
|
56
51
|
|
|
57
|
-
const loaderId = isBuild
|
|
58
|
-
? hashId(filePath, exportName)
|
|
59
|
-
: `${filePath}#${exportName}`;
|
|
52
|
+
const loaderId = makeStubId(filePath, exportName, isBuild);
|
|
60
53
|
|
|
61
|
-
// Inject $$id as hidden third parameter.
|
|
62
|
-
// createLoader(fn) -> createLoader(fn, undefined, "id")
|
|
63
|
-
// createLoader(fn, true) -> createLoader(fn, true, "id")
|
|
64
54
|
const paramInjection =
|
|
65
55
|
binding.argCount === 1 ? `, undefined, "${loaderId}"` : `, "${loaderId}"`;
|
|
66
56
|
s.appendLeft(binding.callCloseParenPos, paramInjection);
|