@rangojs/router 0.0.0-experimental.eb0645d3 → 0.0.0-experimental.f1468e3c
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 +126 -16
- package/dist/bin/rango.js +319 -95
- package/dist/testing/vitest.js +82 -0
- package/dist/vite/index.js +2724 -1053
- package/package.json +68 -14
- package/skills/api-client/SKILL.md +211 -0
- package/skills/breadcrumbs/SKILL.md +64 -2
- 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 -3
- 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 +11 -9
- package/skills/hooks/SKILL.md +243 -29
- package/skills/host-router/SKILL.md +83 -23
- package/skills/i18n/SKILL.md +276 -0
- package/skills/intercept/SKILL.md +68 -19
- package/skills/layout/SKILL.md +13 -9
- package/skills/links/SKILL.md +190 -23
- package/skills/loader/SKILL.md +235 -9
- package/skills/middleware/SKILL.md +18 -10
- package/skills/migrate-nextjs/SKILL.md +43 -19
- package/skills/migrate-react-router/SKILL.md +8 -2
- package/skills/mime-routes/SKILL.md +28 -1
- package/skills/observability/SKILL.md +172 -0
- package/skills/parallel/SKILL.md +18 -7
- package/skills/prerender/SKILL.md +65 -60
- package/skills/rango/SKILL.md +251 -24
- package/skills/react-compiler/SKILL.md +168 -0
- package/skills/response-routes/SKILL.md +115 -48
- package/skills/route/SKILL.md +46 -5
- package/skills/router-setup/SKILL.md +30 -8
- package/skills/scripts/SKILL.md +179 -0
- package/skills/server-actions/SKILL.md +775 -0
- package/skills/tailwind/SKILL.md +27 -3
- package/skills/testing/SKILL.md +130 -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 +122 -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 +322 -29
- package/skills/use-cache/SKILL.md +57 -14
- package/skills/view-transitions/SKILL.md +337 -0
- 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 +39 -0
- package/src/browser/connection-warmup.ts +134 -0
- package/src/browser/cookie-name.ts +140 -0
- package/src/browser/event-controller.ts +192 -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/navigation-bridge.ts +94 -25
- package/src/browser/navigation-client.ts +121 -84
- package/src/browser/navigation-store-handle.ts +38 -0
- package/src/browser/navigation-store.ts +115 -67
- package/src/browser/navigation-transaction.ts +9 -59
- package/src/browser/network-error-handler.ts +34 -7
- package/src/browser/partial-update.ts +147 -128
- package/src/browser/prefetch/cache.ts +107 -56
- package/src/browser/prefetch/fetch.ts +204 -34
- package/src/browser/prefetch/queue.ts +6 -3
- package/src/browser/rango-state.ts +158 -76
- package/src/browser/react/Link.tsx +30 -7
- package/src/browser/react/NavigationProvider.tsx +283 -118
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/deferred-handle-resolution.ts +75 -0
- 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 +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 +11 -11
- package/src/browser/react/use-reverse.ts +106 -0
- package/src/browser/react/use-router.ts +25 -3
- 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 +99 -8
- package/src/browser/rsc-router.tsx +91 -24
- package/src/browser/scroll-restoration.ts +30 -17
- package/src/browser/segment-structure-assert.ts +2 -2
- package/src/browser/server-action-bridge.ts +214 -55
- package/src/browser/types.ts +80 -9
- 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 -14
- 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 +224 -41
- 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 +1989 -378
- 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 +89 -21
- 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 +46 -31
- package/src/cache/read-through-swr.ts +56 -12
- 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 +44 -21
- package/src/client.tsx +36 -61
- 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 +137 -22
- package/src/index.rsc.ts +96 -12
- package/src/index.ts +94 -14
- 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 +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 +65 -40
- package/src/root-error-boundary.tsx +1 -19
- package/src/route-content-wrapper.tsx +19 -77
- package/src/route-definition/dsl-helpers.ts +304 -309
- package/src/route-definition/helper-factories.ts +28 -140
- package/src/route-definition/helpers-types.ts +82 -55
- package/src/route-definition/index.ts +1 -2
- package/src/route-definition/redirect.ts +44 -11
- package/src/route-definition/resolve-handler-use.ts +12 -1
- package/src/route-definition/use-item-types.ts +29 -0
- package/src/route-map-builder.ts +0 -16
- package/src/route-types.ts +19 -46
- 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 +27 -43
- package/src/router/instrument.ts +350 -0
- package/src/router/intercept-resolution.ts +39 -20
- package/src/router/lazy-includes.ts +10 -47
- package/src/router/loader-resolution.ts +155 -72
- package/src/router/logging.ts +0 -6
- package/src/router/manifest.ts +18 -29
- package/src/router/match-api.ts +9 -24
- package/src/router/match-context.ts +0 -22
- package/src/router/match-handlers.ts +58 -58
- package/src/router/match-middleware/background-revalidation.ts +40 -24
- package/src/router/match-middleware/cache-lookup.ts +159 -285
- package/src/router/match-middleware/cache-store.ts +64 -52
- 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 +44 -74
- package/src/router/metrics.ts +0 -34
- package/src/router/middleware-types.ts +7 -134
- package/src/router/middleware.ts +247 -166
- package/src/router/navigation-snapshot.ts +0 -51
- package/src/router/params-util.ts +23 -0
- package/src/router/pattern-matching.ts +85 -94
- 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 +123 -73
- 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 +97 -84
- package/src/router/segment-resolution/helpers.ts +86 -6
- package/src/router/segment-resolution/loader-cache.ts +76 -39
- package/src/router/segment-resolution/revalidation.ts +272 -320
- 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 +56 -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/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 +162 -64
- package/src/router/types.ts +9 -63
- package/src/router/url-params.ts +0 -5
- package/src/router.ts +110 -55
- package/src/rsc/handler-context.ts +3 -2
- package/src/rsc/handler.ts +264 -220
- 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 +117 -11
- 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 +88 -188
- package/src/rsc/rsc-rendering.ts +98 -76
- package/src/rsc/runtime-warnings.ts +23 -10
- package/src/rsc/server-action.ts +281 -117
- package/src/rsc/ssr-setup.ts +16 -0
- package/src/rsc/transition-gate.ts +89 -0
- package/src/rsc/types.ts +23 -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 +254 -143
- package/src/serialize.ts +243 -0
- package/src/server/context.ts +163 -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 +33 -42
- package/src/server/request-context.ts +287 -178
- package/src/ssr/index.tsx +21 -16
- 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 +105 -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 +357 -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/run-transition-when.ts +164 -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 +110 -62
- package/src/types/index.ts +3 -10
- package/src/types/loader-types.ts +11 -9
- package/src/types/request-scope.ts +112 -0
- package/src/types/route-config.ts +6 -50
- package/src/types/route-entry.ts +0 -6
- package/src/types/segments.ts +135 -14
- package/src/urls/include-helper.ts +9 -56
- package/src/urls/index.ts +1 -11
- package/src/urls/path-helper-types.ts +29 -12
- package/src/urls/path-helper.ts +17 -106
- package/src/urls/pattern-types.ts +36 -19
- package/src/urls/response-types.ts +22 -29
- package/src/urls/type-extraction.ts +58 -139
- package/src/urls/urls-function.ts +1 -19
- package/src/use-loader.tsx +292 -107
- package/src/vite/debug.ts +185 -0
- package/src/vite/discovery/bundle-postprocess.ts +8 -7
- package/src/vite/discovery/discover-routers.ts +126 -85
- 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 +96 -68
- 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 +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 +16 -19
- package/src/vite/plugins/client-ref-dedup.ts +16 -11
- package/src/vite/plugins/client-ref-hashing.ts +28 -15
- package/src/vite/plugins/cloudflare-protocol-stub.ts +1 -21
- package/src/vite/plugins/expose-action-id.ts +48 -95
- 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 +118 -29
- package/src/vite/plugins/expose-internal-ids.ts +505 -486
- package/src/vite/plugins/performance-tracks.ts +26 -25
- package/src/vite/plugins/refresh-cmd.ts +1 -1
- package/src/vite/plugins/use-cache-transform.ts +73 -83
- package/src/vite/plugins/version-injector.ts +40 -29
- package/src/vite/plugins/version-plugin.ts +37 -40
- package/src/vite/plugins/virtual-entries.ts +39 -25
- package/src/vite/rango.ts +109 -118
- package/src/vite/router-discovery.ts +718 -119
- package/src/vite/utils/ast-handler-extract.ts +26 -35
- package/src/vite/utils/banner.ts +1 -1
- 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 +54 -39
- package/src/vite/utils/shared-utils.ts +90 -41
- 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
|
@@ -2,20 +2,19 @@ import type { ComponentType, ReactNode } from "react";
|
|
|
2
2
|
import type { SerializedManifest } from "../debug.js";
|
|
3
3
|
import type { ReverseFunction } from "../reverse.js";
|
|
4
4
|
import type { UrlPatterns } from "../urls.js";
|
|
5
|
-
import type { UrlBuilder } from "../urls/pattern-types.js";
|
|
5
|
+
import type { UrlBuilder, EnvCompatible } from "../urls/pattern-types.js";
|
|
6
6
|
import type { EntryData } from "../server/context";
|
|
7
7
|
import type { ErrorInfo, MatchResult } from "../types";
|
|
8
8
|
import type { NonceProvider } from "../rsc/types.js";
|
|
9
9
|
import type { ExecutionContext } from "../server/request-context.js";
|
|
10
|
-
import type {
|
|
11
|
-
SerializedSegmentData,
|
|
12
|
-
SegmentHandleData,
|
|
13
|
-
} from "../cache/types.js";
|
|
10
|
+
import type { SerializedSegmentData } from "../cache/types.js";
|
|
14
11
|
import type { MiddlewareEntry, MiddlewareFn } from "./middleware.js";
|
|
12
|
+
import type { ExtractParams } from "../types/route-config.js";
|
|
15
13
|
import { RSC_ROUTER_BRAND } from "./router-registry.js";
|
|
16
|
-
import type {
|
|
14
|
+
import type { RangoOptions, RootLayoutProps } from "./router-options.js";
|
|
17
15
|
import type { DefaultVars } from "../types/global-namespace.js";
|
|
18
16
|
import type { ResolvedTimeouts, OnTimeoutCallback } from "./timeout.js";
|
|
17
|
+
import type { ResolvedTracing } from "./tracing.js";
|
|
19
18
|
|
|
20
19
|
/**
|
|
21
20
|
* Options passed to router.fetch(), router.match(), and other request entrypoints.
|
|
@@ -49,16 +48,16 @@ type MergeRoutesWithResponses<
|
|
|
49
48
|
};
|
|
50
49
|
|
|
51
50
|
/**
|
|
52
|
-
* Public
|
|
51
|
+
* Public Rango router interface — the user-facing API surface.
|
|
53
52
|
*
|
|
54
53
|
* Users interact with this type when building and using routers.
|
|
55
|
-
* Internal framework code uses
|
|
54
|
+
* Internal framework code uses RangoInternal (via toInternal()) to access
|
|
56
55
|
* matching, build-time, and configuration members that are not part of the
|
|
57
56
|
* public contract.
|
|
58
57
|
*
|
|
59
58
|
* TRoutes accumulates all registered route types through the builder chain.
|
|
60
59
|
*/
|
|
61
|
-
export interface
|
|
60
|
+
export interface Rango<
|
|
62
61
|
TEnv = any,
|
|
63
62
|
TRoutes extends Record<string, unknown> = Record<string, string>,
|
|
64
63
|
> {
|
|
@@ -89,16 +88,16 @@ export interface RSCRouter<
|
|
|
89
88
|
* ])
|
|
90
89
|
* ```
|
|
91
90
|
*/
|
|
92
|
-
routes<T extends UrlPatterns<
|
|
93
|
-
patterns: T,
|
|
94
|
-
):
|
|
91
|
+
routes<T extends UrlPatterns<any, any, any>>(
|
|
92
|
+
patterns: T & EnvCompatible<T, TEnv>,
|
|
93
|
+
): Rango<
|
|
95
94
|
TEnv,
|
|
96
95
|
TRoutes &
|
|
97
96
|
(NonNullable<T["_routes"]> extends Record<string, unknown>
|
|
98
97
|
? MergeRoutesWithResponses<NonNullable<T["_routes"]>, T["_responses"]>
|
|
99
98
|
: Record<string, string>)
|
|
100
99
|
>;
|
|
101
|
-
routes(builder: UrlBuilder<TEnv>):
|
|
100
|
+
routes(builder: UrlBuilder<TEnv>): Rango<TEnv, TRoutes>;
|
|
102
101
|
|
|
103
102
|
/**
|
|
104
103
|
* Add global middleware that runs on all routes
|
|
@@ -108,13 +107,18 @@ export interface RSCRouter<
|
|
|
108
107
|
* createRouter({ document: RootLayout })
|
|
109
108
|
* .use(loggerMiddleware) // All routes
|
|
110
109
|
* .use("/api/*", rateLimiter) // Pattern match
|
|
110
|
+
* .use("/users/:id", (ctx) => {}) // ctx.params.id is typed
|
|
111
111
|
* .routes(urlpatterns)
|
|
112
112
|
* ```
|
|
113
113
|
*/
|
|
114
|
+
use<Pattern extends string>(
|
|
115
|
+
pattern: Pattern,
|
|
116
|
+
middleware: MiddlewareFn<TEnv, ExtractParams<Pattern>>,
|
|
117
|
+
): Rango<TEnv, TRoutes>;
|
|
114
118
|
use(
|
|
115
119
|
patternOrMiddleware: string | MiddlewareFn<TEnv>,
|
|
116
120
|
middleware?: MiddlewareFn<TEnv>,
|
|
117
|
-
):
|
|
121
|
+
): Rango<TEnv, TRoutes>;
|
|
118
122
|
|
|
119
123
|
/**
|
|
120
124
|
* Type-safe URL builder for registered routes
|
|
@@ -141,7 +145,7 @@ export interface RSCRouter<
|
|
|
141
145
|
* type AppRoutes = typeof _router.routeMap;
|
|
142
146
|
*
|
|
143
147
|
* declare global {
|
|
144
|
-
* namespace
|
|
148
|
+
* namespace Rango {
|
|
145
149
|
* interface RegisteredRoutes extends AppRoutes {}
|
|
146
150
|
* }
|
|
147
151
|
* }
|
|
@@ -177,16 +181,16 @@ export interface RSCRouter<
|
|
|
177
181
|
}
|
|
178
182
|
|
|
179
183
|
/**
|
|
180
|
-
* Internal
|
|
184
|
+
* Internal Rango router interface — the full framework-facing API.
|
|
181
185
|
*
|
|
182
186
|
* This type includes all members used by the Vite plugin, RSC handler,
|
|
183
187
|
* pre-rendering pipeline, and other framework internals. It is NOT exported
|
|
184
188
|
* from the public package API.
|
|
185
189
|
*
|
|
186
|
-
* Use toInternal(router) to assert a public
|
|
190
|
+
* Use toInternal(router) to assert a public Rango into this type
|
|
187
191
|
* at the boundary where framework code receives a user-provided router.
|
|
188
192
|
*/
|
|
189
|
-
export interface
|
|
193
|
+
export interface RangoInternal<
|
|
190
194
|
TEnv = any,
|
|
191
195
|
TRoutes extends Record<string, unknown> = Record<string, string>,
|
|
192
196
|
> {
|
|
@@ -206,26 +210,36 @@ export interface RSCRouterInternal<
|
|
|
206
210
|
readonly basename: string | undefined;
|
|
207
211
|
|
|
208
212
|
/**
|
|
209
|
-
* Register routes using URL patterns from urls() or a builder function
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
213
|
+
* Register routes using URL patterns from urls() or a builder function.
|
|
214
|
+
*
|
|
215
|
+
* Env compatibility is checked by EnvCompatible: an env-agnostic urls() block
|
|
216
|
+
* (its env is `unknown` — e.g. a shared module, or an app that does not augment
|
|
217
|
+
* `Rango.Env`) attaches to any router, while a urls<TEnv>() block carrying a
|
|
218
|
+
* concrete env is accepted only when this router's `TEnv` satisfies it. So a
|
|
219
|
+
* `urls<{ DB }>()` cannot be mounted on a `createRouter<{}>()`.
|
|
220
|
+
*/
|
|
221
|
+
routes<T extends UrlPatterns<any, any, any>>(
|
|
222
|
+
patterns: T & EnvCompatible<T, TEnv>,
|
|
223
|
+
): Rango<
|
|
214
224
|
TEnv,
|
|
215
225
|
TRoutes &
|
|
216
226
|
(NonNullable<T["_routes"]> extends Record<string, unknown>
|
|
217
227
|
? MergeRoutesWithResponses<NonNullable<T["_routes"]>, T["_responses"]>
|
|
218
228
|
: Record<string, string>)
|
|
219
229
|
>;
|
|
220
|
-
routes(builder: UrlBuilder<TEnv>):
|
|
230
|
+
routes(builder: UrlBuilder<TEnv>): Rango<TEnv, TRoutes>;
|
|
221
231
|
|
|
222
232
|
/**
|
|
223
233
|
* Add global middleware that runs on all routes
|
|
224
234
|
*/
|
|
235
|
+
use<Pattern extends string>(
|
|
236
|
+
pattern: Pattern,
|
|
237
|
+
middleware: MiddlewareFn<TEnv, ExtractParams<Pattern>>,
|
|
238
|
+
): Rango<TEnv, TRoutes>;
|
|
225
239
|
use(
|
|
226
240
|
patternOrMiddleware: string | MiddlewareFn<TEnv>,
|
|
227
241
|
middleware?: MiddlewareFn<TEnv>,
|
|
228
|
-
):
|
|
242
|
+
): Rango<TEnv, TRoutes>;
|
|
229
243
|
|
|
230
244
|
/**
|
|
231
245
|
* Type-safe URL builder for registered routes
|
|
@@ -247,17 +261,17 @@ export interface RSCRouterInternal<
|
|
|
247
261
|
* Error callback for monitoring/alerting
|
|
248
262
|
* Called when errors occur in loaders, actions, or routes
|
|
249
263
|
*/
|
|
250
|
-
readonly onError?:
|
|
264
|
+
readonly onError?: RangoOptions<TEnv>["onError"];
|
|
251
265
|
|
|
252
266
|
/**
|
|
253
267
|
* Cache configuration
|
|
254
268
|
*/
|
|
255
|
-
readonly cache?:
|
|
269
|
+
readonly cache?: RangoOptions<TEnv>["cache"];
|
|
256
270
|
|
|
257
271
|
/**
|
|
258
272
|
* Not found component to render when no route matches
|
|
259
273
|
*/
|
|
260
|
-
readonly notFound?:
|
|
274
|
+
readonly notFound?: RangoOptions<TEnv>["notFound"];
|
|
261
275
|
|
|
262
276
|
/**
|
|
263
277
|
* Resolved theme configuration (null if theme not enabled)
|
|
@@ -287,6 +301,13 @@ export interface RSCRouterInternal<
|
|
|
287
301
|
*/
|
|
288
302
|
readonly prefetchCacheTTL: number;
|
|
289
303
|
|
|
304
|
+
/**
|
|
305
|
+
* Resolved rango state cookie name (`{prefix}_{routerId}`), composed once at
|
|
306
|
+
* router init and shipped to the client in payload metadata. The server-side
|
|
307
|
+
* cookie writer reads it from here; the client reads it from metadata.
|
|
308
|
+
*/
|
|
309
|
+
readonly resolvedStateCookieName: string;
|
|
310
|
+
|
|
290
311
|
/**
|
|
291
312
|
* Whether connection warmup is enabled.
|
|
292
313
|
* When true, the client sends HEAD /?_rsc_warmup after idle periods
|
|
@@ -294,12 +315,26 @@ export interface RSCRouterInternal<
|
|
|
294
315
|
*/
|
|
295
316
|
readonly warmupEnabled: boolean;
|
|
296
317
|
|
|
318
|
+
/**
|
|
319
|
+
* Whether the client hydrates inside React.StrictMode. Resolved from
|
|
320
|
+
* createRouter({ strictMode }) (default true) and shipped to the client in
|
|
321
|
+
* the initial payload metadata.
|
|
322
|
+
*/
|
|
323
|
+
readonly strictMode: boolean;
|
|
324
|
+
|
|
297
325
|
/**
|
|
298
326
|
* Whether router-wide performance debugging is enabled.
|
|
299
327
|
* Used by the request handler to create metrics before middleware runs.
|
|
300
328
|
*/
|
|
301
329
|
readonly debugPerformance?: boolean;
|
|
302
330
|
|
|
331
|
+
/**
|
|
332
|
+
* Resolved platform phase-span tracing (Cloudflare custom spans or OTel), or
|
|
333
|
+
* undefined when off. Threaded onto the request context and read at each
|
|
334
|
+
* traced phase.
|
|
335
|
+
*/
|
|
336
|
+
readonly tracing?: ResolvedTracing;
|
|
337
|
+
|
|
303
338
|
/**
|
|
304
339
|
* Whether ?__debug_manifest is allowed in production.
|
|
305
340
|
* Always enabled in development.
|
|
@@ -359,6 +394,17 @@ export interface RSCRouterInternal<
|
|
|
359
394
|
/** @internal basename for runtime manifest generation */
|
|
360
395
|
readonly __basename?: string;
|
|
361
396
|
|
|
397
|
+
/**
|
|
398
|
+
* @internal Router-level error/notFound fallbacks (`createRouter` options),
|
|
399
|
+
* exposed for the build-time clientChunks discovery so a `"use client"`
|
|
400
|
+
* default boundary is routed into the dedicated `app-fallback` chunk. Unlike
|
|
401
|
+
* the route-tree `errorBoundary()`/`notFoundBoundary()` helpers these never
|
|
402
|
+
* land in `EntryData`, so they are read directly off the router instance.
|
|
403
|
+
*/
|
|
404
|
+
readonly __defaultErrorBoundary?: RangoOptions<TEnv>["defaultErrorBoundary"];
|
|
405
|
+
readonly __defaultNotFoundBoundary?: RangoOptions<TEnv>["defaultNotFoundBoundary"];
|
|
406
|
+
readonly __notFound?: RangoOptions<TEnv>["notFound"];
|
|
407
|
+
|
|
362
408
|
match(
|
|
363
409
|
request: Request,
|
|
364
410
|
input?: RouterRequestInput<TEnv>,
|
|
@@ -378,11 +424,13 @@ export interface RSCRouterInternal<
|
|
|
378
424
|
devMode?: boolean,
|
|
379
425
|
): Promise<{
|
|
380
426
|
segments: SerializedSegmentData[];
|
|
381
|
-
|
|
427
|
+
/** RSC-encoded handle map ("" when none) — see handle-snapshot.ts. */
|
|
428
|
+
handles: string;
|
|
382
429
|
routeName: string;
|
|
383
430
|
params: Record<string, string>;
|
|
384
431
|
interceptSegments?: SerializedSegmentData[];
|
|
385
|
-
|
|
432
|
+
/** RSC-encoded MERGED (main + intercept) handle map for the intercept artifact. */
|
|
433
|
+
interceptHandles?: string;
|
|
386
434
|
passthrough?: true;
|
|
387
435
|
} | null>;
|
|
388
436
|
|
|
@@ -396,7 +444,7 @@ export interface RSCRouterInternal<
|
|
|
396
444
|
routeName?: string,
|
|
397
445
|
buildEnv?: any,
|
|
398
446
|
devMode?: boolean,
|
|
399
|
-
): Promise<{ encoded: string; handles:
|
|
447
|
+
): Promise<{ encoded: string; handles: string } | null>;
|
|
400
448
|
|
|
401
449
|
/**
|
|
402
450
|
* Preview match - returns route middleware without segment resolution.
|
|
@@ -469,16 +517,16 @@ export interface RSCRouterInternal<
|
|
|
469
517
|
}
|
|
470
518
|
|
|
471
519
|
/**
|
|
472
|
-
* Assert a public
|
|
520
|
+
* Assert a public Rango into the internal type.
|
|
473
521
|
*
|
|
474
522
|
* Use this at the boundary where framework code receives a user-provided
|
|
475
523
|
* router and needs access to internal members (match, config, build-time).
|
|
476
524
|
* The cast is safe because createRouter() always produces an object that
|
|
477
|
-
* satisfies
|
|
525
|
+
* satisfies RangoInternal; the public type is just a narrower view.
|
|
478
526
|
*/
|
|
479
527
|
export function toInternal<
|
|
480
528
|
TEnv = any,
|
|
481
529
|
TRoutes extends Record<string, unknown> = Record<string, string>,
|
|
482
|
-
>(router:
|
|
483
|
-
return router as
|
|
530
|
+
>(router: Rango<TEnv, TRoutes>): RangoInternal<TEnv, TRoutes> {
|
|
531
|
+
return router as RangoInternal<TEnv, TRoutes>;
|
|
484
532
|
}
|
|
@@ -11,6 +11,7 @@ import type { UrlPatterns } from "../urls.js";
|
|
|
11
11
|
import type { UrlBuilder } from "../urls/pattern-types.js";
|
|
12
12
|
import type { NamedRouteEntry } from "./content-negotiation.js";
|
|
13
13
|
import type { TelemetrySink } from "./telemetry.js";
|
|
14
|
+
import type { RouterTracingConfig } from "./tracing.js";
|
|
14
15
|
import type { RouterTimeouts, OnTimeoutCallback } from "./timeout.js";
|
|
15
16
|
|
|
16
17
|
/**
|
|
@@ -73,7 +74,7 @@ export interface RootLayoutProps {
|
|
|
73
74
|
/**
|
|
74
75
|
* Router configuration options
|
|
75
76
|
*/
|
|
76
|
-
export interface
|
|
77
|
+
export interface RangoOptions<TEnv = any> {
|
|
77
78
|
/**
|
|
78
79
|
* Unique identifier for this router instance.
|
|
79
80
|
* Used to namespace static output files and route maps.
|
|
@@ -132,6 +133,21 @@ export interface RSCRouterOptions<TEnv = any> {
|
|
|
132
133
|
*/
|
|
133
134
|
allowDebugManifest?: boolean;
|
|
134
135
|
|
|
136
|
+
/**
|
|
137
|
+
* DEVELOPMENT/TEST ONLY. Emit an `X-Rango-Cache` response header describing
|
|
138
|
+
* the cache status of the matched route, for use by testing primitives such
|
|
139
|
+
* as `assertCacheStatus`.
|
|
140
|
+
*
|
|
141
|
+
* Defaults to `false`. When neither this option nor the
|
|
142
|
+
* `RANGO_TEST_SIGNALS=1` environment flag is set, NO header is emitted and
|
|
143
|
+
* router output is byte-identical to the default.
|
|
144
|
+
*
|
|
145
|
+
* The header encodes per-segment (v1: coarse route-level) status keyed by the
|
|
146
|
+
* route NAME, e.g. `X-Rango-Cache: product.detail=hit`. Do NOT enable in
|
|
147
|
+
* production — it exposes internal cache decisions.
|
|
148
|
+
*/
|
|
149
|
+
debugCacheSignal?: boolean;
|
|
150
|
+
|
|
135
151
|
/**
|
|
136
152
|
* Document component that wraps the entire application.
|
|
137
153
|
*
|
|
@@ -357,6 +373,30 @@ export interface RSCRouterOptions<TEnv = any> {
|
|
|
357
373
|
*/
|
|
358
374
|
theme?: import("../theme/types.js").ThemeConfig | true;
|
|
359
375
|
|
|
376
|
+
/**
|
|
377
|
+
* Default for whether the router wraps `transition()` segments in its own
|
|
378
|
+
* React `<ViewTransition>` boundary (experimental React only).
|
|
379
|
+
*
|
|
380
|
+
* - "auto" (default): every route/layout that opts in via `transition()`
|
|
381
|
+
* gets a router-owned cross-fade.
|
|
382
|
+
* - false: the router never places its own boundary. Routes that use
|
|
383
|
+
* `transition()` still drive navigation through startTransition (so loaders
|
|
384
|
+
* hold instead of flashing a skeleton) and still let consumer-placed
|
|
385
|
+
* `<ViewTransition>` elements animate — the router just contributes no
|
|
386
|
+
* cross-fade of its own. This is the "router triggers, you place the
|
|
387
|
+
* transitions" model.
|
|
388
|
+
*
|
|
389
|
+
* A per-segment `transition({ viewTransition })` overrides this default.
|
|
390
|
+
*
|
|
391
|
+
* @example
|
|
392
|
+
* ```typescript
|
|
393
|
+
* // App-wide: drive + hold, but never auto-wrap. Place <ViewTransition>
|
|
394
|
+
* // yourself in components where you want a morph.
|
|
395
|
+
* const router = createRouter<AppEnv>({ viewTransition: false });
|
|
396
|
+
* ```
|
|
397
|
+
*/
|
|
398
|
+
viewTransition?: "auto" | false;
|
|
399
|
+
|
|
360
400
|
/**
|
|
361
401
|
* URL patterns to register with the router.
|
|
362
402
|
*
|
|
@@ -457,6 +497,21 @@ export interface RSCRouterOptions<TEnv = any> {
|
|
|
457
497
|
*/
|
|
458
498
|
prefetchCacheTTL?: number | false;
|
|
459
499
|
|
|
500
|
+
/**
|
|
501
|
+
* Prefix for the rango state cookie name. The resolved name is
|
|
502
|
+
* `{prefix}_{routerId}`; the prefix is sanitized to cookie-name-safe
|
|
503
|
+
* characters (`[A-Za-z0-9-]`) and an empty result falls back to the default.
|
|
504
|
+
*
|
|
505
|
+
* The rango state cookie keys the client's prefetch / HTTP caches. Overriding
|
|
506
|
+
* the prefix lets you align it with cookie-naming policies or consent-manager
|
|
507
|
+
* classification lists, or avoid colliding with an existing `rango-state`
|
|
508
|
+
* cookie. It is not a full-name override: the `_{routerId}` suffix is what
|
|
509
|
+
* keeps sibling apps on one origin from clobbering each other's state.
|
|
510
|
+
*
|
|
511
|
+
* @default "rango-state"
|
|
512
|
+
*/
|
|
513
|
+
stateCookiePrefix?: string;
|
|
514
|
+
|
|
460
515
|
/**
|
|
461
516
|
* Enable connection warmup to keep TCP+TLS alive after idle periods.
|
|
462
517
|
*
|
|
@@ -468,6 +523,29 @@ export interface RSCRouterOptions<TEnv = any> {
|
|
|
468
523
|
*/
|
|
469
524
|
warmup?: boolean;
|
|
470
525
|
|
|
526
|
+
/**
|
|
527
|
+
* Wrap the hydrated client tree in `React.StrictMode`.
|
|
528
|
+
*
|
|
529
|
+
* The Rango browser entry hydrates the app inside `<React.StrictMode>` by
|
|
530
|
+
* default. StrictMode double-invokes render and (in development) mounts,
|
|
531
|
+
* unmounts, then remounts every effect to surface impure renders and missing
|
|
532
|
+
* effect cleanup. Production builds treat StrictMode as a no-op, so this flag
|
|
533
|
+
* only changes development behavior in a normal app.
|
|
534
|
+
*
|
|
535
|
+
* Set to `false` to hydrate without the StrictMode wrapper. The main reason to
|
|
536
|
+
* opt out is to isolate StrictMode's intentional double-render/double-effect
|
|
537
|
+
* from genuine re-renders when measuring client-hook stability — with
|
|
538
|
+
* StrictMode off, render counts are exact in development too.
|
|
539
|
+
*
|
|
540
|
+
* The value is resolved server-side at router creation and shipped to the
|
|
541
|
+
* client in the initial payload metadata; the browser entry reads it once at
|
|
542
|
+
* hydration. Changing it does not affect the SSR HTML (StrictMode emits no
|
|
543
|
+
* DOM), so toggling it never causes a hydration mismatch.
|
|
544
|
+
*
|
|
545
|
+
* @default true
|
|
546
|
+
*/
|
|
547
|
+
strictMode?: boolean;
|
|
548
|
+
|
|
471
549
|
/**
|
|
472
550
|
* Shorthand timeout (ms) applied to both action execution and render start.
|
|
473
551
|
* Does NOT apply to streamIdleMs.
|
|
@@ -520,11 +598,14 @@ export interface RSCRouterOptions<TEnv = any> {
|
|
|
520
598
|
onTimeout?: OnTimeoutCallback<TEnv>;
|
|
521
599
|
|
|
522
600
|
/**
|
|
523
|
-
* Telemetry sink for structured lifecycle
|
|
601
|
+
* Telemetry sink for structured, discrete lifecycle EVENTS: request
|
|
602
|
+
* start/end/error, loader start/end/error, handler errors, cache decisions,
|
|
603
|
+
* revalidation decisions, timeouts, origin rejections.
|
|
524
604
|
*
|
|
525
|
-
*
|
|
526
|
-
* loader
|
|
527
|
-
*
|
|
605
|
+
* This is the EVENT surface. Phase-duration SPANS (request/middleware/action/
|
|
606
|
+
* handler/loader/render/ssr timing wired into a tracing backend) come from the
|
|
607
|
+
* separate `tracing` option below — a sink does not emit them, because async-context nesting
|
|
608
|
+
* cannot be faithfully reconstructed from after-the-fact start/end events.
|
|
528
609
|
*
|
|
529
610
|
* No-op when not configured (zero overhead).
|
|
530
611
|
*
|
|
@@ -537,6 +618,18 @@ export interface RSCRouterOptions<TEnv = any> {
|
|
|
537
618
|
* });
|
|
538
619
|
* ```
|
|
539
620
|
*
|
|
621
|
+
* @example OpenTelemetry — pair the event sink with the tracing slot
|
|
622
|
+
* ```typescript
|
|
623
|
+
* import { createOTelTracing, createOTelSink } from "@rangojs/router";
|
|
624
|
+
* import { trace } from "@opentelemetry/api";
|
|
625
|
+
*
|
|
626
|
+
* const tracer = trace.getTracer("my-app");
|
|
627
|
+
* const router = createRouter({
|
|
628
|
+
* tracing: createOTelTracing(tracer), // phase spans
|
|
629
|
+
* telemetry: createOTelSink(tracer), // discrete-fact events
|
|
630
|
+
* });
|
|
631
|
+
* ```
|
|
632
|
+
*
|
|
540
633
|
* @example Custom sink
|
|
541
634
|
* ```typescript
|
|
542
635
|
* const router = createRouter({
|
|
@@ -550,6 +643,44 @@ export interface RSCRouterOptions<TEnv = any> {
|
|
|
550
643
|
*/
|
|
551
644
|
telemetry?: TelemetrySink;
|
|
552
645
|
|
|
646
|
+
/**
|
|
647
|
+
* Span tracing for the router's performance phases (request, middleware, action,
|
|
648
|
+
* loaders, render, ssr). Connects the same phases shown in the
|
|
649
|
+
* `debugPerformance` timeline to the host platform's tracing system. This is
|
|
650
|
+
* the SPAN surface (the `telemetry` option above is the event surface).
|
|
651
|
+
*
|
|
652
|
+
* Two factories produce a config, both for this slot:
|
|
653
|
+
* - `createOTelTracing(tracer)` from `@rangojs/router` — any platform with an
|
|
654
|
+
* OpenTelemetry SDK (including Node). Bridges the phases onto
|
|
655
|
+
* `tracer.startActiveSpan`.
|
|
656
|
+
* - `createCloudflareTracing()` from `@rangojs/router/cloudflare` — Cloudflare
|
|
657
|
+
* Workers native custom spans, alongside the automatic KV/D1/fetch spans.
|
|
658
|
+
*
|
|
659
|
+
* When tracing is unset — or off-platform (no OTel SDK / no Cloudflare tracing
|
|
660
|
+
* destination) — every span call falls through to the work directly, so the
|
|
661
|
+
* request behaves exactly as if tracing were off.
|
|
662
|
+
*
|
|
663
|
+
* @example OpenTelemetry
|
|
664
|
+
* ```typescript
|
|
665
|
+
* import { createOTelTracing } from "@rangojs/router";
|
|
666
|
+
* import { trace } from "@opentelemetry/api";
|
|
667
|
+
*
|
|
668
|
+
* const router = createRouter({
|
|
669
|
+
* tracing: createOTelTracing(trace.getTracer("my-app")),
|
|
670
|
+
* });
|
|
671
|
+
* ```
|
|
672
|
+
*
|
|
673
|
+
* @example Cloudflare
|
|
674
|
+
* ```typescript
|
|
675
|
+
* import { createCloudflareTracing } from "@rangojs/router/cloudflare";
|
|
676
|
+
*
|
|
677
|
+
* const router = createRouter({
|
|
678
|
+
* tracing: createCloudflareTracing({ spans: { ssr: false } }),
|
|
679
|
+
* });
|
|
680
|
+
* ```
|
|
681
|
+
*/
|
|
682
|
+
tracing?: RouterTracingConfig;
|
|
683
|
+
|
|
553
684
|
/**
|
|
554
685
|
* SSR configuration options.
|
|
555
686
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { RangoInternal } from "./router-interfaces.js";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Brand marker for identifying router instances at build time.
|
|
@@ -12,10 +12,7 @@ export const RSC_ROUTER_BRAND = "__rsc_router__" as const;
|
|
|
12
12
|
* Used by the Vite plugin at build time to discover routers and extract
|
|
13
13
|
* manifests, prefix trees, and pre-render candidates.
|
|
14
14
|
*/
|
|
15
|
-
export const RouterRegistry: Map<
|
|
16
|
-
string,
|
|
17
|
-
RSCRouterInternal<any, any>
|
|
18
|
-
> = new Map();
|
|
15
|
+
export const RouterRegistry: Map<string, RangoInternal<any, any>> = new Map();
|
|
19
16
|
|
|
20
17
|
export let routerAutoId = 0;
|
|
21
18
|
|