@rangojs/router 0.0.0-experimental.19 → 0.0.0-experimental.1c0bdfad
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 +17 -0
- package/README.md +291 -61
- package/dist/bin/rango.js +544 -143
- package/dist/testing/vitest.js +82 -0
- package/dist/vite/index.js +3744 -1329
- package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/package.json +67 -13
- package/skills/api-client/SKILL.md +211 -0
- package/skills/breadcrumbs/SKILL.md +312 -0
- package/skills/bundle-analysis/SKILL.md +159 -0
- package/skills/cache-guide/SKILL.md +247 -23
- package/skills/caching/SKILL.md +322 -19
- 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 +364 -0
- package/skills/hooks/SKILL.md +282 -60
- package/skills/host-router/SKILL.md +278 -0
- package/skills/i18n/SKILL.md +276 -0
- package/skills/intercept/SKILL.md +50 -6
- package/skills/layout/SKILL.md +35 -9
- package/skills/links/SKILL.md +249 -17
- package/skills/loader/SKILL.md +297 -31
- package/skills/middleware/SKILL.md +52 -13
- package/skills/migrate-nextjs/SKILL.md +584 -0
- package/skills/migrate-react-router/SKILL.md +771 -0
- package/skills/mime-routes/SKILL.md +28 -1
- package/skills/observability/SKILL.md +172 -0
- package/skills/parallel/SKILL.md +203 -7
- package/skills/prerender/SKILL.md +155 -111
- package/skills/rango/SKILL.md +251 -23
- package/skills/react-compiler/SKILL.md +168 -0
- package/skills/response-routes/SKILL.md +123 -48
- package/skills/route/SKILL.md +104 -9
- package/skills/router-setup/SKILL.md +124 -11
- package/skills/scripts/SKILL.md +179 -0
- package/skills/server-actions/SKILL.md +775 -0
- package/skills/streams-and-websockets/SKILL.md +283 -0
- package/skills/tailwind/SKILL.md +27 -3
- package/skills/testing/SKILL.md +125 -222
- 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 +357 -52
- package/skills/use-cache/SKILL.md +46 -14
- package/skills/view-transitions/SKILL.md +294 -0
- package/src/__augment-tests__/augment.ts +81 -0
- package/src/__augment-tests__/augmented.check.ts +116 -0
- package/src/__internal.ts +67 -40
- package/src/bin/rango.ts +18 -0
- package/src/browser/action-coordinator.ts +53 -36
- package/src/browser/action-fence.ts +47 -0
- package/src/browser/app-shell.ts +39 -0
- package/src/browser/app-version.ts +14 -0
- package/src/browser/connection-warmup.ts +134 -0
- package/src/browser/cookie-name.ts +140 -0
- package/src/browser/event-controller.ts +197 -150
- 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/link-interceptor.ts +4 -0
- package/src/browser/navigation-bridge.ts +200 -30
- package/src/browser/navigation-client.ts +217 -58
- package/src/browser/navigation-store-handle.ts +38 -0
- package/src/browser/navigation-store.ts +76 -67
- package/src/browser/navigation-transaction.ts +18 -66
- package/src/browser/network-error-handler.ts +34 -7
- package/src/browser/partial-update.ts +187 -112
- package/src/browser/prefetch/cache.ts +312 -30
- package/src/browser/prefetch/fetch.ts +344 -47
- package/src/browser/prefetch/policy.ts +6 -0
- package/src/browser/prefetch/queue.ts +126 -20
- package/src/browser/prefetch/resource-ready.ts +77 -0
- package/src/browser/rango-state.ts +158 -76
- package/src/browser/react/Link.tsx +125 -18
- package/src/browser/react/NavigationProvider.tsx +135 -120
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/context.ts +7 -2
- package/src/browser/react/filter-segment-order.ts +66 -7
- package/src/browser/react/index.ts +0 -48
- 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 +23 -69
- 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 +32 -7
- package/src/browser/react/use-params.ts +20 -10
- package/src/browser/react/use-reverse.ts +106 -0
- package/src/browser/react/use-router.ts +46 -11
- package/src/browser/react/use-search-params.ts +0 -5
- package/src/browser/react/use-segments.ts +11 -21
- package/src/browser/response-adapter.ts +80 -5
- package/src/browser/rsc-router.tsx +226 -75
- package/src/browser/scroll-restoration.ts +54 -42
- package/src/browser/segment-reconciler.ts +36 -9
- package/src/browser/segment-structure-assert.ts +2 -2
- package/src/browser/server-action-bridge.ts +619 -442
- package/src/browser/types.ts +115 -11
- package/src/browser/validate-redirect-origin.ts +43 -16
- package/src/build/collect-fallback-refs.ts +107 -0
- package/src/build/generate-manifest.ts +65 -40
- package/src/build/generate-route-types.ts +7 -1
- package/src/build/index.ts +8 -2
- package/src/build/prefix-tree-utils.ts +123 -0
- package/src/build/route-trie.ts +182 -37
- 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 +125 -24
- 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 +392 -106
- package/src/build/route-types/scan-filter.ts +9 -2
- 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 +214 -48
- package/src/cache/cache-scope.ts +236 -89
- 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 +2224 -171
- 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 +11 -17
- package/src/cache/document-cache.ts +89 -27
- package/src/cache/handle-snapshot.ts +70 -0
- package/src/cache/index.ts +11 -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/taint.ts +55 -0
- package/src/cache/types.ts +37 -100
- package/src/client.rsc.tsx +45 -21
- package/src/client.tsx +120 -336
- 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 +84 -2
- package/src/debug.ts +2 -2
- 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 +70 -22
- package/src/handles/MetaTags.tsx +56 -19
- package/src/handles/Scripts.tsx +183 -0
- package/src/handles/breadcrumbs.ts +95 -0
- 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 -5
- 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 +137 -22
- package/src/index.rsc.ts +79 -29
- package/src/index.ts +149 -65
- 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-context.ts +1 -1
- package/src/outlet-provider.tsx +1 -5
- package/src/prerender/param-hash.ts +16 -16
- package/src/prerender/store.ts +63 -26
- package/src/prerender.ts +198 -82
- 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 +62 -0
- package/src/reverse.ts +65 -15
- package/src/root-error-boundary.tsx +1 -19
- package/src/route-content-wrapper.tsx +7 -72
- package/src/route-definition/dsl-helpers.ts +469 -276
- package/src/route-definition/helper-factories.ts +29 -139
- package/src/route-definition/helpers-types.ts +113 -37
- package/src/route-definition/index.ts +3 -3
- package/src/route-definition/redirect.ts +53 -12
- package/src/route-definition/resolve-handler-use.ts +161 -0
- package/src/route-definition/use-item-types.ts +32 -0
- package/src/route-map-builder.ts +7 -17
- package/src/route-types.ts +37 -41
- package/src/router/basename.ts +14 -0
- package/src/router/content-negotiation.ts +164 -17
- package/src/router/error-handling.ts +45 -18
- package/src/router/find-match.ts +45 -22
- package/src/router/handler-context.ts +110 -39
- package/src/router/instrument.ts +350 -0
- package/src/router/intercept-resolution.ts +50 -24
- package/src/router/lazy-includes.ts +19 -53
- package/src/router/loader-resolution.ts +274 -56
- package/src/router/logging.ts +5 -8
- package/src/router/manifest.ts +49 -45
- package/src/router/match-api.ts +121 -205
- package/src/router/match-context.ts +0 -22
- package/src/router/match-handlers.ts +58 -58
- package/src/router/match-middleware/background-revalidation.ts +33 -6
- package/src/router/match-middleware/cache-lookup.ts +214 -263
- package/src/router/match-middleware/cache-store.ts +73 -33
- package/src/router/match-middleware/intercept-resolution.ts +8 -28
- package/src/router/match-middleware/segment-resolution.ts +52 -18
- package/src/router/match-pipelines.ts +1 -42
- package/src/router/match-result.ts +104 -49
- package/src/router/metrics.ts +217 -26
- package/src/router/middleware-types.ts +24 -110
- package/src/router/middleware.ts +384 -197
- package/src/router/navigation-snapshot.ts +131 -0
- package/src/router/params-util.ts +23 -0
- package/src/router/pattern-matching.ts +148 -91
- package/src/router/prefetch-cache-ttl.ts +51 -0
- package/src/router/prerender-match.ts +199 -56
- package/src/router/preview-match.ts +32 -102
- package/src/router/request-classification.ts +276 -0
- package/src/router/revalidation.ts +144 -74
- package/src/router/route-snapshot.ts +244 -0
- package/src/router/router-context.ts +8 -28
- package/src/router/router-interfaces.ts +129 -36
- package/src/router/router-options.ts +185 -23
- package/src/router/router-registry.ts +2 -5
- package/src/router/segment-resolution/fresh.ts +281 -76
- package/src/router/segment-resolution/helpers.ts +116 -31
- package/src/router/segment-resolution/loader-cache.ts +63 -37
- package/src/router/segment-resolution/revalidation.ts +493 -391
- 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 +8 -5
- package/src/router/state-cookie-name.ts +33 -0
- package/src/router/substitute-pattern-params.ts +56 -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 +180 -58
- package/src/router/types.ts +10 -63
- package/src/router/url-params.ts +44 -0
- package/src/router.ts +182 -54
- package/src/rsc/handler-context.ts +3 -2
- package/src/rsc/handler.ts +702 -460
- package/src/rsc/helpers.ts +168 -46
- package/src/rsc/index.ts +2 -25
- package/src/rsc/json-route-result.ts +38 -0
- package/src/rsc/loader-fetch.ts +127 -31
- package/src/rsc/manifest-init.ts +33 -42
- package/src/rsc/origin-guard.ts +39 -25
- package/src/rsc/progressive-enhancement.ts +98 -19
- 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 +99 -189
- package/src/rsc/rsc-rendering.ts +126 -106
- package/src/rsc/runtime-warnings.ts +23 -10
- package/src/rsc/server-action.ts +269 -114
- package/src/rsc/ssr-setup.ts +144 -0
- package/src/rsc/types.ts +34 -6
- package/src/runtime-env.ts +18 -0
- package/src/search-params.ts +49 -41
- package/src/segment-content-promise.ts +67 -0
- package/src/segment-loader-promise.ts +149 -0
- package/src/segment-system.tsx +281 -129
- package/src/serialize.ts +243 -0
- package/src/server/context.ts +317 -63
- package/src/server/cookie-parse.ts +32 -0
- package/src/server/cookie-store.ts +80 -5
- package/src/server/handle-store.ts +40 -38
- package/src/server/loader-registry.ts +26 -46
- package/src/server/request-context.ts +425 -177
- package/src/server.ts +6 -0
- package/src/ssr/index.tsx +25 -16
- package/src/static-handler.ts +27 -18
- 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 +3 -19
- 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 +17 -8
- package/src/types/error-types.ts +30 -90
- package/src/types/global-namespace.ts +54 -41
- package/src/types/handler-context.ts +236 -88
- package/src/types/index.ts +1 -10
- package/src/types/loader-types.ts +44 -15
- package/src/types/request-scope.ts +112 -0
- package/src/types/route-config.ts +10 -45
- package/src/types/route-entry.ts +19 -7
- package/src/types/segments.ts +37 -19
- package/src/urls/include-helper.ts +33 -70
- package/src/urls/index.ts +1 -11
- package/src/urls/path-helper-types.ts +58 -11
- package/src/urls/path-helper.ts +57 -111
- package/src/urls/pattern-types.ts +48 -19
- package/src/urls/response-types.ts +25 -22
- package/src/urls/type-extraction.ts +58 -139
- package/src/urls/urls-function.ts +1 -18
- package/src/use-loader.tsx +346 -89
- package/src/vite/debug.ts +185 -0
- package/src/vite/discovery/bundle-postprocess.ts +64 -91
- package/src/vite/discovery/discover-routers.ts +147 -88
- package/src/vite/discovery/discovery-errors.ts +194 -0
- package/src/vite/discovery/gate-state.ts +171 -0
- package/src/vite/discovery/prerender-collection.ts +247 -145
- package/src/vite/discovery/route-types-writer.ts +40 -84
- package/src/vite/discovery/self-gen-tracking.ts +27 -1
- package/src/vite/discovery/state.ts +61 -13
- package/src/vite/discovery/virtual-module-codegen.ts +14 -34
- package/src/vite/index.ts +10 -3
- package/src/vite/inject-client-debug.ts +36 -0
- package/src/vite/plugin-types.ts +155 -65
- package/src/vite/plugins/cjs-to-esm.ts +16 -19
- package/src/vite/plugins/client-ref-dedup.ts +120 -0
- package/src/vite/plugins/client-ref-hashing.ts +28 -15
- package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
- package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
- package/src/vite/plugins/expose-action-id.ts +49 -98
- package/src/vite/plugins/expose-id-utils.ts +96 -51
- package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
- package/src/vite/plugins/expose-ids/handler-transform.ts +15 -64
- package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
- package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
- package/src/vite/plugins/expose-internal-ids.ts +553 -317
- package/src/vite/plugins/performance-tracks.ts +89 -0
- package/src/vite/plugins/refresh-cmd.ts +127 -0
- package/src/vite/plugins/use-cache-transform.ts +73 -83
- package/src/vite/plugins/version-injector.ts +21 -25
- package/src/vite/plugins/version-plugin.ts +46 -37
- package/src/vite/plugins/virtual-entries.ts +13 -18
- package/src/vite/rango.ts +241 -287
- package/src/vite/router-discovery.ts +956 -149
- package/src/vite/utils/ast-handler-extract.ts +26 -35
- package/src/vite/utils/banner.ts +4 -4
- 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 +20 -52
- package/src/vite/utils/prerender-utils.ts +141 -34
- package/src/vite/utils/shared-utils.ts +92 -42
- package/CLAUDE.md +0 -5
- 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 -6
- package/src/network-error-thrower.tsx +0 -23
- package/src/route-definition/route-function.ts +0 -119
- package/src/router/middleware-cookies.ts +0 -55
package/src/index.ts
CHANGED
|
@@ -10,9 +10,6 @@
|
|
|
10
10
|
* import from "@rangojs/router/client"
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
// Universal rendering utilities (work on both server and client)
|
|
14
|
-
export { renderSegments } from "./segment-system.js";
|
|
15
|
-
|
|
16
13
|
// Error classes (can be used on both server and client)
|
|
17
14
|
export {
|
|
18
15
|
RouteNotFoundError,
|
|
@@ -21,10 +18,8 @@ export {
|
|
|
21
18
|
MiddlewareError,
|
|
22
19
|
HandlerError,
|
|
23
20
|
BuildError,
|
|
21
|
+
DslContextError,
|
|
24
22
|
InvalidHandlerError,
|
|
25
|
-
NetworkError,
|
|
26
|
-
isNetworkError,
|
|
27
|
-
sanitizeError,
|
|
28
23
|
RouterError,
|
|
29
24
|
Skip,
|
|
30
25
|
isSkip,
|
|
@@ -41,7 +36,6 @@ export type {
|
|
|
41
36
|
TrailingSlashMode,
|
|
42
37
|
// Handler types
|
|
43
38
|
Handler, // Supports params object, path pattern, or route name
|
|
44
|
-
ScopedRouteMap, // Scoped view of GeneratedRouteMap for Handler<"localName", ScopedRouteMap<"prefix">>
|
|
45
39
|
HandlerContext,
|
|
46
40
|
ExtractParams,
|
|
47
41
|
GenericParams,
|
|
@@ -50,6 +44,7 @@ export type {
|
|
|
50
44
|
// Revalidation types
|
|
51
45
|
RevalidateParams,
|
|
52
46
|
Revalidate,
|
|
47
|
+
ActionRef,
|
|
53
48
|
RouteKeys,
|
|
54
49
|
// Loader types
|
|
55
50
|
LoaderDefinition,
|
|
@@ -95,6 +90,7 @@ export type {
|
|
|
95
90
|
LayoutUseItem,
|
|
96
91
|
AllUseItems,
|
|
97
92
|
UseItems,
|
|
93
|
+
HandlerUseItem,
|
|
98
94
|
} from "./route-types.js";
|
|
99
95
|
|
|
100
96
|
// Response route types (usable in both server and client contexts)
|
|
@@ -108,36 +104,49 @@ export type {
|
|
|
108
104
|
JsonResponsePathFn,
|
|
109
105
|
TextResponsePathFn,
|
|
110
106
|
RouteResponse,
|
|
111
|
-
|
|
112
|
-
ResponseEnvelope,
|
|
107
|
+
ProblemDetails,
|
|
113
108
|
} from "./urls.js";
|
|
114
109
|
|
|
115
110
|
// Middleware context types
|
|
116
111
|
export type { MiddlewareContext, CookieOptions } from "./router/middleware.js";
|
|
117
112
|
|
|
113
|
+
function serverOnlyStubError(name: string): Error {
|
|
114
|
+
return new Error(
|
|
115
|
+
`${name}() is only available from "@rangojs/router" in a react-server/RSC environment. ` +
|
|
116
|
+
`For client hooks and components, import from "@rangojs/router/client".`,
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
|
|
118
120
|
/**
|
|
119
121
|
* Error-throwing stub for server-only `urls` function.
|
|
120
122
|
*/
|
|
121
123
|
export function urls(): never {
|
|
122
|
-
throw
|
|
124
|
+
throw serverOnlyStubError("urls");
|
|
123
125
|
}
|
|
124
126
|
|
|
125
127
|
/**
|
|
126
128
|
* Error-throwing stub for server-only `createRouter` function.
|
|
127
129
|
*/
|
|
128
130
|
export function createRouter(): never {
|
|
129
|
-
throw
|
|
131
|
+
throw serverOnlyStubError("createRouter");
|
|
130
132
|
}
|
|
131
133
|
|
|
132
134
|
/**
|
|
133
135
|
* Error-throwing stub for server-only `redirect` function.
|
|
134
136
|
*/
|
|
135
137
|
export function redirect(): never {
|
|
136
|
-
throw
|
|
138
|
+
throw serverOnlyStubError("redirect");
|
|
137
139
|
}
|
|
138
140
|
|
|
139
141
|
// Handle API (universal - works on both server and client)
|
|
140
142
|
export { createHandle, isHandle, type Handle } from "./handle.js";
|
|
143
|
+
export {
|
|
144
|
+
DEFAULT_DEFER_TIMEOUT_MS,
|
|
145
|
+
type DeferOptions,
|
|
146
|
+
type DeferredHandleEntry,
|
|
147
|
+
type HandlePush,
|
|
148
|
+
type HandlePushFn,
|
|
149
|
+
} from "./defer.js";
|
|
141
150
|
|
|
142
151
|
// Context variable API (typed ctx.set/ctx.get tokens)
|
|
143
152
|
export { createVar, type ContextVar } from "./context-var.js";
|
|
@@ -146,110 +155,149 @@ export { createVar, type ContextVar } from "./context-var.js";
|
|
|
146
155
|
export { nonce } from "./rsc/nonce.js";
|
|
147
156
|
|
|
148
157
|
/**
|
|
149
|
-
*
|
|
158
|
+
* SSR/client stub for server-only `Prerender` function.
|
|
159
|
+
*
|
|
160
|
+
* Returns a lightweight stub object instead of throwing so that the
|
|
161
|
+
* production SSR build can safely bundle the RSC entry chunk — the SSR
|
|
162
|
+
* bundler resolves `@rangojs/router` to this (SSR) entry, so Prerender
|
|
163
|
+
* calls in RSC code must not crash at module-evaluation time.
|
|
150
164
|
*/
|
|
151
|
-
export function Prerender(
|
|
152
|
-
|
|
165
|
+
export function Prerender(
|
|
166
|
+
_handler?: any,
|
|
167
|
+
_optionsOrId?: any,
|
|
168
|
+
__injectedId?: string,
|
|
169
|
+
): any {
|
|
170
|
+
const id =
|
|
171
|
+
typeof _optionsOrId === "string" ? _optionsOrId : __injectedId || "";
|
|
172
|
+
return { __brand: "prerenderHandler" as const, $$id: id };
|
|
153
173
|
}
|
|
154
174
|
|
|
155
175
|
/**
|
|
156
|
-
*
|
|
176
|
+
* SSR/client stub for server-only `Passthrough` function.
|
|
157
177
|
*/
|
|
158
|
-
export function
|
|
159
|
-
|
|
178
|
+
export function Passthrough(
|
|
179
|
+
_handler?: any,
|
|
180
|
+
_optionsOrId?: any,
|
|
181
|
+
__injectedId?: string,
|
|
182
|
+
): any {
|
|
183
|
+
const id =
|
|
184
|
+
typeof _optionsOrId === "string" ? _optionsOrId : __injectedId || "";
|
|
185
|
+
return { __brand: "passthroughHandler" as const, $$id: id };
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* SSR/client stub for server-only `Static` function.
|
|
190
|
+
*
|
|
191
|
+
* Returns a lightweight stub object instead of throwing so that the
|
|
192
|
+
* production SSR build can safely bundle the RSC entry chunk — the SSR
|
|
193
|
+
* bundler resolves `@rangojs/router` to this (SSR) entry, so Static
|
|
194
|
+
* calls in RSC code must not crash at module-evaluation time.
|
|
195
|
+
*/
|
|
196
|
+
export function Static(
|
|
197
|
+
_handler?: any,
|
|
198
|
+
_optionsOrId?: any,
|
|
199
|
+
__injectedId?: string,
|
|
200
|
+
): any {
|
|
201
|
+
const id =
|
|
202
|
+
typeof _optionsOrId === "string" ? _optionsOrId : __injectedId || "";
|
|
203
|
+
return { __brand: "staticHandler" as const, $$id: id };
|
|
160
204
|
}
|
|
161
205
|
|
|
162
206
|
/**
|
|
163
207
|
* Error-throwing stub for server-only `getRequestContext` function.
|
|
164
208
|
*/
|
|
165
209
|
export function getRequestContext(): never {
|
|
166
|
-
throw
|
|
167
|
-
"getRequestContext() is server-only and requires RSC context.",
|
|
168
|
-
);
|
|
210
|
+
throw serverOnlyStubError("getRequestContext");
|
|
169
211
|
}
|
|
170
212
|
|
|
171
213
|
/**
|
|
172
214
|
* Error-throwing stub for server-only `cookies` function.
|
|
173
215
|
*/
|
|
174
216
|
export function cookies(): never {
|
|
175
|
-
throw
|
|
217
|
+
throw serverOnlyStubError("cookies");
|
|
176
218
|
}
|
|
177
219
|
|
|
178
220
|
/**
|
|
179
221
|
* Error-throwing stub for server-only `headers` function.
|
|
180
222
|
*/
|
|
181
223
|
export function headers(): never {
|
|
182
|
-
throw
|
|
224
|
+
throw serverOnlyStubError("headers");
|
|
183
225
|
}
|
|
184
226
|
|
|
185
227
|
/**
|
|
186
|
-
*
|
|
228
|
+
* Client implementation of `invalidateClientCache()`. Unlike the server-only
|
|
229
|
+
* stubs above this is a REAL function under the `default` condition (it marks
|
|
230
|
+
* the client's caches stale); the `react-server` condition (index.rsc.ts)
|
|
231
|
+
* selects the server implementation that writes a rotated `Set-Cookie`.
|
|
187
232
|
*/
|
|
188
|
-
export
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Error-throwing stub for server-only `enableMatchDebug` function.
|
|
194
|
-
*/
|
|
195
|
-
export function enableMatchDebug(): never {
|
|
196
|
-
throw new Error(
|
|
197
|
-
"enableMatchDebug() is server-only and requires RSC context.",
|
|
198
|
-
);
|
|
199
|
-
}
|
|
233
|
+
export {
|
|
234
|
+
invalidateClientCache,
|
|
235
|
+
keepClientCache,
|
|
236
|
+
} from "./browser/invalidate-client-cache.js";
|
|
200
237
|
|
|
201
238
|
/**
|
|
202
|
-
* Error-throwing stub for server-only `
|
|
239
|
+
* Error-throwing stub for server-only `createReverse` function.
|
|
203
240
|
*/
|
|
204
|
-
export function
|
|
205
|
-
throw
|
|
206
|
-
"getMatchDebugStats() is server-only and requires RSC context.",
|
|
207
|
-
);
|
|
241
|
+
export function createReverse(): never {
|
|
242
|
+
throw serverOnlyStubError("createReverse");
|
|
208
243
|
}
|
|
209
244
|
|
|
210
245
|
// Error-throwing stubs for server-only route helpers
|
|
211
246
|
export function layout(): never {
|
|
212
|
-
throw
|
|
247
|
+
throw serverOnlyStubError("layout");
|
|
213
248
|
}
|
|
214
249
|
export function cache(): never {
|
|
215
|
-
throw
|
|
250
|
+
throw serverOnlyStubError("cache");
|
|
216
251
|
}
|
|
217
252
|
export function middleware(): never {
|
|
218
|
-
throw
|
|
253
|
+
throw serverOnlyStubError("middleware");
|
|
219
254
|
}
|
|
220
255
|
export function revalidate(): never {
|
|
221
|
-
throw
|
|
256
|
+
throw serverOnlyStubError("revalidate");
|
|
257
|
+
}
|
|
258
|
+
// Cache tag APIs are server-only (real implementations in index.rsc.ts). These
|
|
259
|
+
// stubs keep the named-export shape identical under the default/non-react-server
|
|
260
|
+
// condition so SSR/client/default bundles that encounter the import link cleanly.
|
|
261
|
+
export function cacheTag(): never {
|
|
262
|
+
throw serverOnlyStubError("cacheTag");
|
|
263
|
+
}
|
|
264
|
+
export function updateTag(): never {
|
|
265
|
+
throw serverOnlyStubError("updateTag");
|
|
266
|
+
}
|
|
267
|
+
export function revalidateTag(): never {
|
|
268
|
+
throw serverOnlyStubError("revalidateTag");
|
|
222
269
|
}
|
|
223
270
|
export function loader(): never {
|
|
224
|
-
throw
|
|
271
|
+
throw serverOnlyStubError("loader");
|
|
225
272
|
}
|
|
226
273
|
export function loading(): never {
|
|
227
|
-
throw
|
|
274
|
+
throw serverOnlyStubError("loading");
|
|
228
275
|
}
|
|
229
276
|
export function parallel(): never {
|
|
230
|
-
throw
|
|
277
|
+
throw serverOnlyStubError("parallel");
|
|
231
278
|
}
|
|
232
279
|
export function intercept(): never {
|
|
233
|
-
throw
|
|
280
|
+
throw serverOnlyStubError("intercept");
|
|
234
281
|
}
|
|
235
282
|
export function when(): never {
|
|
236
|
-
throw
|
|
283
|
+
throw serverOnlyStubError("when");
|
|
237
284
|
}
|
|
238
285
|
export function errorBoundary(): never {
|
|
239
|
-
throw
|
|
286
|
+
throw serverOnlyStubError("errorBoundary");
|
|
240
287
|
}
|
|
241
288
|
export function notFoundBoundary(): never {
|
|
242
|
-
throw
|
|
243
|
-
"notFoundBoundary() is server-only and requires RSC context.",
|
|
244
|
-
);
|
|
289
|
+
throw serverOnlyStubError("notFoundBoundary");
|
|
245
290
|
}
|
|
246
291
|
export function transition(): never {
|
|
247
|
-
throw
|
|
292
|
+
throw serverOnlyStubError("transition");
|
|
248
293
|
}
|
|
249
294
|
|
|
250
295
|
// Request context type (safe for client)
|
|
251
296
|
export type { PublicRequestContext as RequestContext } from "./server/request-context.js";
|
|
252
297
|
|
|
298
|
+
// Shared base for every user-facing request context.
|
|
299
|
+
export type { RequestScope, ExecutionContext } from "./types/request-scope.js";
|
|
300
|
+
|
|
253
301
|
// Cookie store types (safe for client)
|
|
254
302
|
export type {
|
|
255
303
|
CookieStore,
|
|
@@ -257,17 +305,27 @@ export type {
|
|
|
257
305
|
ReadonlyHeaders,
|
|
258
306
|
} from "./server/cookie-store.js";
|
|
259
307
|
|
|
308
|
+
// Built-in handles (universal — work on both server and client)
|
|
309
|
+
export { Meta } from "./handles/meta.js";
|
|
310
|
+
export {
|
|
311
|
+
Script,
|
|
312
|
+
type ScriptConfig,
|
|
313
|
+
type ScriptAttributes,
|
|
314
|
+
} from "./handles/script.js";
|
|
315
|
+
export { Breadcrumbs } from "./handles/breadcrumbs.js";
|
|
316
|
+
|
|
260
317
|
// Meta types
|
|
261
318
|
export type { MetaDescriptor, MetaDescriptorBase } from "./router/types.js";
|
|
262
319
|
|
|
320
|
+
// Breadcrumb types
|
|
321
|
+
export type { BreadcrumbItem } from "./handles/breadcrumbs.js";
|
|
322
|
+
|
|
263
323
|
// Reverse type utilities for type-safe URL generation (Django-style URL reversal)
|
|
264
324
|
export type {
|
|
265
325
|
ScopedReverseFunction,
|
|
266
326
|
ReverseFunction,
|
|
267
327
|
ExtractLocalRoutes,
|
|
268
328
|
ParamsFor,
|
|
269
|
-
SanitizePrefix,
|
|
270
|
-
MergeRoutes,
|
|
271
329
|
} from "./reverse.js";
|
|
272
330
|
// scopedReverse() helper for handlers to get locally-typed reverse
|
|
273
331
|
export { scopedReverse } from "./reverse.js";
|
|
@@ -280,28 +338,54 @@ export {
|
|
|
280
338
|
type LocationStateOptions,
|
|
281
339
|
} from "./browser/react/location-state-shared.js";
|
|
282
340
|
|
|
283
|
-
// Path
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
// Telemetry
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
341
|
+
// Path and response types are ambient on the `Rango` namespace (`Rango.Path`,
|
|
342
|
+
// `Rango.PathResponse`, declared in href-client.ts) — no import needed.
|
|
343
|
+
|
|
344
|
+
// Telemetry types only — the createConsoleSink/createOTelSink values are
|
|
345
|
+
// server-only and live in index.rsc.ts (the `react-server` condition of the
|
|
346
|
+
// bare `@rangojs/router` import). Re-exporting them as values from this
|
|
347
|
+
// (default/client) entry would pull telemetry.ts and telemetry-otel.ts into
|
|
348
|
+
// the client module graph; both tree-shake to zero bytes but still appear in
|
|
349
|
+
// bundle analysis output and slow build-time module resolution. Consumers
|
|
350
|
+
// who need the values in non-RSC contexts can import from
|
|
351
|
+
// `@rangojs/router/server`.
|
|
352
|
+
export type {
|
|
353
|
+
OTelTracer,
|
|
354
|
+
OTelActiveSpanTracer,
|
|
355
|
+
OTelSpan,
|
|
356
|
+
OTelTracingOptions,
|
|
357
|
+
} from "./router/telemetry-otel.js";
|
|
358
|
+
// The full TelemetryEvent union PLUS its member types, so a consumer writing a
|
|
359
|
+
// TelemetrySink can annotate a per-`type` handler (or construct an event literal
|
|
360
|
+
// in a test) instead of only narrowing the opaque union.
|
|
290
361
|
export type {
|
|
291
362
|
TelemetrySink,
|
|
292
363
|
TelemetryEvent,
|
|
293
364
|
RequestStartEvent,
|
|
294
365
|
RequestEndEvent,
|
|
295
366
|
RequestErrorEvent,
|
|
296
|
-
RequestTimeoutEvent,
|
|
297
367
|
LoaderStartEvent,
|
|
298
368
|
LoaderEndEvent,
|
|
299
369
|
LoaderErrorEvent,
|
|
300
370
|
HandlerErrorEvent,
|
|
371
|
+
CacheSegmentStatus,
|
|
372
|
+
CacheSegmentSignal,
|
|
301
373
|
CacheDecisionEvent,
|
|
302
374
|
RevalidationDecisionEvent,
|
|
375
|
+
RequestTimeoutEvent,
|
|
376
|
+
OriginCheckRejectedEvent,
|
|
303
377
|
} from "./router/telemetry.js";
|
|
304
378
|
|
|
379
|
+
// Span tracing config types a consumer annotates. SpanRunner/TraceSpan are the
|
|
380
|
+
// internal runner contract (consumers go through createOTelTracing /
|
|
381
|
+
// createCloudflareTracing, which return a ready RouterTracingConfig) and are not
|
|
382
|
+
// exported.
|
|
383
|
+
export type {
|
|
384
|
+
RouterTracingConfig,
|
|
385
|
+
TracePhase,
|
|
386
|
+
TracePhaseToggles,
|
|
387
|
+
} from "./router/tracing.js";
|
|
388
|
+
|
|
305
389
|
// Timeout types and error class
|
|
306
390
|
export { RouterTimeoutError } from "./router/timeout.js";
|
|
307
391
|
export type {
|
package/src/internal-debug.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
1
|
+
// Runtime fallback for non-Vite contexts (Node, tests, raw imports). In the Vite
|
|
2
|
+
// pipeline -- dev and build, every environment -- the router discovery plugin's
|
|
3
|
+
// transform replaces this module with the build-time-resolved flag (see
|
|
4
|
+
// vite/inject-client-debug.ts), so the CLIENT debug flag no longer depends on a
|
|
5
|
+
// `__RANGO_DEBUG__` define being delivered to the browser (which dev did only as
|
|
6
|
+
// an injected global whose presence varied across consumer setups).
|
|
7
|
+
//
|
|
8
|
+
// Keep this module to the single INTERNAL_RANGO_DEBUG export: the transform
|
|
9
|
+
// replaces the whole file, so a second export would be dropped from the bundle.
|
|
5
10
|
export const INTERNAL_RANGO_DEBUG: boolean =
|
|
6
|
-
typeof
|
|
7
|
-
|
|
8
|
-
: typeof process !== "undefined" &&
|
|
9
|
-
Boolean((process as any).env?.INTERNAL_RANGO_DEBUG);
|
|
10
|
-
|
|
11
|
-
declare const __RANGO_DEBUG__: boolean;
|
|
11
|
+
typeof process !== "undefined" &&
|
|
12
|
+
Boolean((process as any).env?.INTERNAL_RANGO_DEBUG);
|