@rangojs/router 0.0.0-experimental.14 → 0.0.0-experimental.140
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 +432 -7
- package/dist/bin/rango.js +2073 -213
- package/dist/testing/vitest.js +82 -0
- package/dist/vite/index.js +7258 -2714
- package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/package.json +140 -67
- package/skills/api-client/SKILL.md +211 -0
- package/skills/breadcrumbs/SKILL.md +329 -0
- package/skills/bundle-analysis/SKILL.md +159 -0
- package/skills/cache-guide/SKILL.md +487 -0
- package/skills/caching/SKILL.md +357 -25
- package/skills/comparison/SKILL.md +50 -0
- package/skills/comparison/agents/openai.yaml +4 -0
- package/skills/comparison/references/framework-comparison.md +837 -0
- package/skills/composability/SKILL.md +246 -0
- package/skills/css/SKILL.md +76 -0
- package/skills/debug-manifest/SKILL.md +16 -10
- package/skills/document-cache/SKILL.md +87 -62
- package/skills/fonts/SKILL.md +6 -4
- package/skills/handler-use/SKILL.md +364 -0
- package/skills/hooks/SKILL.md +557 -79
- package/skills/host-router/SKILL.md +320 -0
- package/skills/i18n/SKILL.md +276 -0
- package/skills/intercept/SKILL.md +207 -15
- package/skills/layout/SKILL.md +146 -6
- package/skills/links/SKILL.md +304 -25
- package/skills/loader/SKILL.md +616 -54
- package/skills/middleware/SKILL.md +217 -37
- package/skills/migrate-nextjs/SKILL.md +611 -0
- package/skills/migrate-react-router/SKILL.md +927 -0
- package/skills/mime-routes/SKILL.md +42 -11
- package/skills/observability/SKILL.md +194 -0
- package/skills/parallel/SKILL.md +284 -3
- package/skills/ppr/SKILL.md +426 -0
- package/skills/prerender/SKILL.md +437 -52
- package/skills/rango/SKILL.md +369 -22
- package/skills/react-compiler/SKILL.md +168 -0
- package/skills/response-routes/SKILL.md +263 -121
- package/skills/route/SKILL.md +350 -21
- package/skills/router-setup/SKILL.md +246 -33
- package/skills/scripts/SKILL.md +179 -0
- package/skills/server-actions/SKILL.md +775 -0
- package/skills/shell-manifest/SKILL.md +185 -0
- package/skills/streams-and-websockets/SKILL.md +283 -0
- package/skills/tailwind/SKILL.md +27 -3
- package/skills/testing/SKILL.md +126 -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 +131 -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 +85 -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/theme/SKILL.md +9 -8
- package/skills/typesafety/SKILL.md +532 -103
- package/skills/use-cache/SKILL.md +367 -0
- package/skills/vercel/SKILL.md +128 -0
- 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 +77 -44
- package/src/bin/rango.ts +312 -15
- package/src/browser/action-coordinator.ts +114 -0
- 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 +293 -202
- package/src/browser/history-state.ts +101 -0
- package/src/browser/index.ts +3 -3
- package/src/browser/intercept-utils.ts +52 -0
- package/src/browser/invalidate-client-cache.ts +52 -0
- package/src/browser/link-interceptor.ts +24 -4
- package/src/browser/logging.ts +11 -0
- package/src/browser/merge-segment-loaders.ts +20 -12
- package/src/browser/navigation-bridge.ts +385 -576
- package/src/browser/navigation-client.ts +245 -75
- package/src/browser/navigation-store-handle.ts +38 -0
- package/src/browser/navigation-store.ts +184 -118
- package/src/browser/navigation-transaction.ts +247 -0
- package/src/browser/network-error-handler.ts +88 -0
- package/src/browser/partial-update.ts +412 -364
- package/src/browser/prefetch/cache.ts +359 -0
- package/src/browser/prefetch/fetch.ts +452 -0
- package/src/browser/prefetch/observer.ts +65 -0
- package/src/browser/prefetch/policy.ts +48 -0
- package/src/browser/prefetch/queue.ts +209 -0
- package/src/browser/prefetch/resource-ready.ts +77 -0
- package/src/browser/rango-state.ts +194 -0
- package/src/browser/react/Link.tsx +275 -68
- package/src/browser/react/NavigationProvider.tsx +265 -109
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/context.ts +11 -0
- package/src/browser/react/filter-segment-order.ts +70 -0
- package/src/browser/react/index.ts +0 -48
- package/src/browser/react/location-state-shared.ts +272 -60
- package/src/browser/react/location-state.ts +90 -20
- package/src/browser/react/mount-context.ts +6 -1
- package/src/browser/react/nonce-context.ts +23 -0
- package/src/browser/react/shallow-equal.ts +27 -0
- package/src/browser/react/use-action.ts +35 -66
- package/src/browser/react/use-handle.ts +39 -126
- package/src/browser/react/use-href.tsx +8 -1
- package/src/browser/react/use-link-status.ts +39 -13
- package/src/browser/react/use-navigation.ts +53 -69
- package/src/browser/react/use-params.ts +75 -0
- package/src/browser/react/use-pathname.ts +47 -0
- package/src/browser/react/use-reverse.ts +106 -0
- package/src/browser/react/use-router.ts +98 -0
- package/src/browser/react/use-search-params.ts +51 -0
- package/src/browser/react/use-segments.ts +72 -99
- package/src/browser/response-adapter.ts +164 -0
- package/src/browser/rsc-router.tsx +300 -72
- package/src/browser/scroll-restoration.ts +138 -50
- package/src/browser/segment-reconciler.ts +243 -0
- package/src/browser/segment-structure-assert.ts +17 -1
- package/src/browser/server-action-bridge.ts +668 -613
- package/src/browser/types.ts +223 -51
- package/src/browser/validate-redirect-origin.ts +56 -0
- package/src/build/collect-fallback-refs.ts +107 -0
- package/src/build/generate-manifest.ts +252 -161
- package/src/build/generate-route-types.ts +41 -1038
- package/src/build/index.ts +12 -7
- package/src/build/prefix-tree-utils.ts +123 -0
- package/src/build/route-trie.ts +225 -42
- package/src/build/route-types/ast-helpers.ts +25 -0
- package/src/build/route-types/ast-route-extraction.ts +105 -0
- package/src/build/route-types/codegen.ts +113 -0
- package/src/build/route-types/include-resolution.ts +812 -0
- package/src/build/route-types/param-extraction.ts +51 -0
- package/src/build/route-types/per-module-writer.ts +144 -0
- package/src/build/route-types/router-processing.ts +695 -0
- package/src/build/route-types/scan-filter.ts +85 -0
- package/src/build/route-types/source-scan.ts +216 -0
- package/src/build/runtime-discovery.ts +223 -0
- package/src/cache/background-task.ts +34 -0
- package/src/cache/cache-error.ts +104 -0
- package/src/cache/cache-key-utils.ts +60 -0
- package/src/cache/cache-policy.ts +199 -0
- package/src/cache/cache-runtime.ts +525 -0
- package/src/cache/cache-scope.ts +298 -332
- 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 +2500 -158
- 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 +17 -17
- package/src/cache/document-cache.ts +199 -92
- package/src/cache/handle-capture.ts +81 -0
- package/src/cache/handle-snapshot.ts +111 -0
- package/src/cache/index.ts +29 -35
- package/src/cache/memory-segment-store.ts +363 -30
- package/src/cache/profile-registry.ts +88 -0
- package/src/cache/read-through-swr.ts +178 -0
- package/src/cache/segment-codec.ts +248 -0
- package/src/cache/shell-cache.ts +386 -0
- package/src/cache/tag-invalidation.ts +230 -0
- package/src/cache/taint.ts +153 -0
- package/src/cache/types.ts +156 -211
- package/src/cache/vercel/index.ts +11 -0
- package/src/cache/vercel/vercel-cache-store.ts +1102 -0
- package/src/client.rsc.tsx +43 -21
- package/src/client.tsx +131 -347
- package/src/cloudflare/index.ts +11 -0
- package/src/cloudflare/tracing.ts +109 -0
- package/src/component-utils.ts +23 -4
- package/src/components/DefaultDocument.tsx +13 -3
- package/src/context-var.ts +168 -0
- package/src/debug.ts +19 -9
- package/src/decode-loader-results.ts +52 -0
- package/src/defer.ts +185 -0
- package/src/deps/ssr.ts +0 -1
- package/src/encode-kv.ts +49 -0
- package/src/errors.ts +106 -10
- package/src/escape-script.ts +52 -0
- package/src/handle.ts +110 -35
- package/src/handles/MetaTags.tsx +83 -59
- package/src/handles/Scripts.tsx +183 -0
- package/src/handles/breadcrumbs.ts +93 -0
- package/src/handles/deferred-resolution.ts +127 -0
- package/src/handles/is-thenable.ts +18 -0
- package/src/handles/meta.ts +44 -53
- package/src/handles/script.ts +244 -0
- package/src/host/cookie-handler.ts +20 -65
- package/src/host/errors.ts +21 -30
- package/src/host/index.ts +13 -9
- package/src/host/pattern-matcher.ts +50 -79
- package/src/host/router.ts +151 -121
- package/src/host/testing.ts +45 -32
- package/src/host/types.ts +52 -11
- package/src/host/utils.ts +2 -2
- package/src/href-client.ts +192 -57
- package/src/index.rsc.ts +177 -35
- package/src/index.ts +255 -71
- package/src/internal-debug.ts +9 -2
- package/src/loader-store.ts +500 -0
- package/src/loader.rsc.ts +31 -99
- package/src/loader.ts +30 -12
- package/src/missing-id-error.ts +68 -0
- package/src/outlet-context.ts +1 -1
- package/src/outlet-provider.tsx +41 -0
- package/src/prerender/param-hash.ts +16 -14
- package/src/prerender/store.ts +121 -21
- package/src/prerender.ts +460 -26
- 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 +198 -128
- package/src/root-error-boundary.tsx +42 -48
- package/src/route-content-wrapper.tsx +22 -77
- package/src/route-definition/dsl-helpers.ts +1116 -0
- package/src/route-definition/helper-factories.ts +88 -0
- package/src/route-definition/helpers-types.ts +505 -0
- package/src/route-definition/index.ts +54 -0
- package/src/route-definition/redirect.ts +134 -0
- package/src/route-definition/resolve-handler-use.ts +160 -0
- package/src/route-definition/use-item-types.ts +29 -0
- package/src/route-definition.ts +1 -1481
- package/src/route-map-builder.ts +82 -144
- package/src/route-name.ts +53 -0
- package/src/route-types.ts +71 -45
- package/src/router/basename.ts +14 -0
- package/src/router/content-negotiation.ts +263 -0
- package/src/router/debug-manifest.ts +72 -0
- package/src/router/error-handling.ts +54 -27
- package/src/router/find-match.ts +245 -0
- package/src/router/handler-context.ts +377 -125
- package/src/router/instrument.ts +350 -0
- package/src/router/intercept-resolution.ts +59 -28
- package/src/router/lazy-includes.ts +254 -0
- package/src/router/loader-resolution.ts +421 -157
- package/src/router/logging.ts +106 -6
- package/src/router/manifest.ts +131 -57
- package/src/router/match-api.ts +167 -246
- package/src/router/match-context.ts +4 -24
- package/src/router/match-handlers.ts +440 -0
- package/src/router/match-middleware/background-revalidation.ts +117 -93
- package/src/router/match-middleware/cache-lookup.ts +297 -150
- package/src/router/match-middleware/cache-store.ts +123 -51
- package/src/router/match-middleware/intercept-resolution.ts +44 -43
- package/src/router/match-middleware/segment-resolution.ts +64 -22
- package/src/router/match-pipelines.ts +11 -87
- package/src/router/match-result.ts +121 -50
- package/src/router/metrics.ts +219 -28
- package/src/router/middleware-types.ts +93 -0
- package/src/router/middleware.ts +505 -441
- package/src/router/navigation-snapshot.ts +133 -0
- package/src/router/params-util.ts +23 -0
- package/src/router/parse-pattern.ts +115 -0
- package/src/router/pattern-matching.ts +311 -142
- package/src/router/prefetch-cache-ttl.ts +51 -0
- package/src/router/prefetch-limits.ts +37 -0
- package/src/router/prerender-match.ts +547 -0
- package/src/router/preview-match.ts +102 -0
- package/src/router/request-classification.ts +278 -0
- package/src/router/revalidation.ts +203 -62
- package/src/router/route-snapshot.ts +246 -0
- package/src/router/router-context.ts +45 -48
- package/src/router/router-interfaces.ts +554 -0
- package/src/router/router-options.ts +779 -0
- package/src/router/router-registry.ts +21 -0
- package/src/router/segment-resolution/fresh.ts +772 -0
- package/src/router/segment-resolution/helpers.ts +348 -0
- package/src/router/segment-resolution/loader-cache.ts +250 -0
- package/src/router/segment-resolution/loader-mask.ts +44 -0
- package/src/router/segment-resolution/revalidation.ts +1331 -0
- package/src/router/segment-resolution/static-store.ts +81 -0
- 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 +25 -1354
- package/src/router/segment-wrappers.ts +292 -0
- package/src/router/state-cookie-name.ts +33 -0
- package/src/router/substitute-pattern-params.ts +75 -0
- package/src/router/telemetry-otel.ts +261 -0
- package/src/router/telemetry.ts +377 -0
- package/src/router/timeout.ts +128 -0
- package/src/router/tracing.ts +206 -0
- package/src/router/trie-matching.ts +240 -61
- package/src/router/types.ts +23 -70
- package/src/router/url-params.ts +57 -0
- package/src/router.ts +781 -2378
- package/src/rsc/full-payload.ts +70 -0
- package/src/rsc/handler-context.ts +46 -0
- package/src/rsc/handler.ts +905 -1142
- package/src/rsc/helpers.ts +275 -19
- package/src/rsc/index.ts +2 -25
- package/src/rsc/json-route-result.ts +38 -0
- package/src/rsc/loader-fetch.ts +305 -0
- package/src/rsc/manifest-init.ts +77 -0
- package/src/rsc/nonce.ts +14 -0
- package/src/rsc/origin-guard.ts +155 -0
- package/src/rsc/progressive-enhancement.ts +502 -0
- package/src/rsc/redirect-guard.ts +99 -0
- package/src/rsc/response-cache-serve.ts +238 -0
- package/src/rsc/response-error.ts +104 -0
- package/src/rsc/response-route-handler.ts +257 -0
- package/src/rsc/rsc-rendering.ts +337 -0
- package/src/rsc/runtime-warnings.ts +55 -0
- package/src/rsc/server-action.ts +522 -0
- package/src/rsc/shell-capture.ts +439 -0
- package/src/rsc/ssr-setup.ts +144 -0
- package/src/rsc/transition-gate.ts +89 -0
- package/src/rsc/types.ts +95 -12
- package/src/runtime-env.ts +18 -0
- package/src/search-params.ts +99 -82
- package/src/segment-content-promise.ts +67 -0
- package/src/segment-loader-promise.ts +149 -0
- package/src/segment-system.tsx +349 -134
- package/src/serialize.ts +243 -0
- package/src/server/context.ts +452 -85
- package/src/server/cookie-parse.ts +32 -0
- package/src/server/cookie-store.ts +310 -0
- package/src/server/fetchable-loader-store.ts +11 -6
- package/src/server/handle-store.ts +123 -42
- package/src/server/live.ts +130 -0
- package/src/server/loader-registry.ts +51 -100
- package/src/server/request-context.ts +842 -157
- package/src/server.ts +15 -8
- package/src/ssr/index.tsx +412 -136
- package/src/ssr/ssr-root.tsx +228 -0
- package/src/static-handler.ts +45 -18
- package/src/testing/cache-status.ts +162 -0
- package/src/testing/collect-handle.ts +46 -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 +199 -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 +584 -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 +40 -72
- package/src/theme/ThemeScript.tsx +12 -14
- package/src/theme/constants.ts +57 -15
- package/src/theme/index.ts +3 -20
- package/src/theme/theme-context.ts +5 -35
- package/src/theme/theme-script.ts +43 -39
- package/src/theme/use-theme.ts +0 -3
- package/src/types/boundaries.ts +123 -0
- package/src/types/cache-types.ts +207 -0
- package/src/types/error-types.ts +132 -0
- package/src/types/global-namespace.ts +113 -0
- package/src/types/handler-context.ts +839 -0
- package/src/types/index.ts +81 -0
- package/src/types/loader-types.ts +212 -0
- package/src/types/request-scope.ts +112 -0
- package/src/types/route-config.ts +138 -0
- package/src/types/route-entry.ts +114 -0
- package/src/types/segments.ts +271 -0
- package/src/types.ts +1 -1795
- package/src/urls/include-helper.ts +162 -0
- package/src/urls/include-provider.ts +71 -0
- package/src/urls/index.ts +43 -0
- package/src/urls/path-helper-types.ts +413 -0
- package/src/urls/path-helper.ts +275 -0
- package/src/urls/pattern-types.ts +124 -0
- package/src/urls/response-types.ts +109 -0
- package/src/urls/type-extraction.ts +316 -0
- package/src/urls/urls-function.ts +80 -0
- package/src/urls.ts +1 -1341
- package/src/use-loader.tsx +406 -141
- package/src/vercel/index.ts +11 -0
- package/src/vercel/tracing.ts +88 -0
- package/src/vite/debug.ts +185 -0
- package/src/vite/discovery/bundle-postprocess.ts +182 -0
- package/src/vite/discovery/discover-routers.ts +389 -0
- package/src/vite/discovery/discovery-errors.ts +255 -0
- package/src/vite/discovery/gate-state.ts +171 -0
- package/src/vite/discovery/prerender-collection.ts +467 -0
- package/src/vite/discovery/route-types-writer.ts +214 -0
- package/src/vite/discovery/self-gen-tracking.ts +73 -0
- package/src/vite/discovery/state.ts +161 -0
- package/src/vite/discovery/virtual-module-codegen.ts +183 -0
- package/src/vite/index.ts +23 -2255
- package/src/vite/inject-client-debug.ts +36 -0
- package/src/vite/plugin-types.ts +303 -0
- package/src/vite/plugins/cjs-to-esm.ts +90 -0
- package/src/vite/plugins/client-ref-dedup.ts +120 -0
- package/src/vite/plugins/client-ref-hashing.ts +118 -0
- 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/{expose-action-id.ts → plugins/expose-action-id.ts} +88 -110
- package/src/vite/{expose-id-utils.ts → plugins/expose-id-utils.ts} +89 -79
- package/src/vite/plugins/expose-ids/export-analysis.ts +363 -0
- package/src/vite/plugins/expose-ids/handler-transform.ts +130 -0
- package/src/vite/plugins/expose-ids/loader-transform.ts +64 -0
- package/src/vite/plugins/expose-ids/router-transform.ts +199 -0
- package/src/vite/plugins/expose-ids/types.ts +45 -0
- package/src/vite/plugins/expose-internal-ids.ts +805 -0
- 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 +313 -0
- package/src/vite/plugins/vercel-output.ts +384 -0
- package/src/vite/plugins/version-injector.ts +94 -0
- package/src/vite/plugins/version-plugin.ts +263 -0
- package/src/vite/plugins/virtual-entries.ts +234 -0
- package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
- package/src/vite/rango.ts +560 -0
- package/src/vite/router-discovery.ts +1638 -0
- package/src/vite/{ast-handler-extract.ts → utils/ast-handler-extract.ts} +200 -37
- package/src/vite/utils/banner.ts +36 -0
- package/src/vite/utils/bundle-analysis.ts +132 -0
- 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 +15 -0
- package/src/vite/utils/package-resolution.ts +89 -0
- package/src/vite/utils/prerender-utils.ts +249 -0
- package/src/vite/utils/shared-utils.ts +269 -0
- package/CLAUDE.md +0 -43
- package/dist/vite/index.named-routes.gen.ts +0 -103
- package/src/browser/lru-cache.ts +0 -69
- package/src/browser/react/use-client-cache.ts +0 -56
- package/src/browser/request-controller.ts +0 -164
- package/src/browser/shallow.ts +0 -35
- package/src/cache/memory-store.ts +0 -253
- package/src/handles/index.ts +0 -6
- package/src/href-context.ts +0 -33
- package/src/network-error-thrower.tsx +0 -21
- package/src/router.gen.ts +0 -6
- package/src/static-handler.gen.ts +0 -5
- package/src/urls.gen.ts +0 -8
- package/src/vite/expose-internal-ids.ts +0 -1167
- package/src/vite/package-resolution.ts +0 -125
- package/src/vite/virtual-entries.ts +0 -114
- /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
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,26 +18,24 @@ export {
|
|
|
21
18
|
MiddlewareError,
|
|
22
19
|
HandlerError,
|
|
23
20
|
BuildError,
|
|
21
|
+
DslContextError,
|
|
24
22
|
InvalidHandlerError,
|
|
25
|
-
NetworkError,
|
|
26
|
-
isNetworkError,
|
|
27
|
-
sanitizeError,
|
|
28
23
|
RouterError,
|
|
24
|
+
Skip,
|
|
25
|
+
isSkip,
|
|
29
26
|
} from "./errors.js";
|
|
30
27
|
|
|
31
28
|
// Types (safe to import anywhere - no runtime code)
|
|
32
29
|
export type {
|
|
33
30
|
// Configuration types
|
|
34
31
|
DocumentProps,
|
|
35
|
-
RouterEnv,
|
|
36
32
|
DefaultEnv,
|
|
37
33
|
RouteDefinition,
|
|
38
34
|
RouteConfig,
|
|
39
35
|
RouteDefinitionOptions,
|
|
40
36
|
TrailingSlashMode,
|
|
41
37
|
// Handler types
|
|
42
|
-
Handler,
|
|
43
|
-
ScopedRouteMap, // Scoped view of GeneratedRouteMap for Handler<"localName", ScopedRouteMap<"prefix">>
|
|
38
|
+
Handler, // Supports params object, path pattern, or route name
|
|
44
39
|
HandlerContext,
|
|
45
40
|
ExtractParams,
|
|
46
41
|
GenericParams,
|
|
@@ -49,6 +44,7 @@ export type {
|
|
|
49
44
|
// Revalidation types
|
|
50
45
|
RevalidateParams,
|
|
51
46
|
Revalidate,
|
|
47
|
+
ActionRef,
|
|
52
48
|
RouteKeys,
|
|
53
49
|
// Loader types
|
|
54
50
|
LoaderDefinition,
|
|
@@ -56,9 +52,6 @@ export type {
|
|
|
56
52
|
LoaderContext,
|
|
57
53
|
FetchableLoaderOptions,
|
|
58
54
|
LoadOptions,
|
|
59
|
-
LoaderActionContext,
|
|
60
|
-
LoaderAction,
|
|
61
|
-
LoaderMiddlewareFn,
|
|
62
55
|
// Error boundary types
|
|
63
56
|
ErrorInfo,
|
|
64
57
|
ErrorBoundaryFallbackProps,
|
|
@@ -75,7 +68,13 @@ export type {
|
|
|
75
68
|
} from "./types.js";
|
|
76
69
|
|
|
77
70
|
// Search params schema types
|
|
78
|
-
export type {
|
|
71
|
+
export type {
|
|
72
|
+
SearchSchema,
|
|
73
|
+
SearchSchemaValue,
|
|
74
|
+
ResolveSearchSchema,
|
|
75
|
+
RouteSearchParams,
|
|
76
|
+
RouteParams,
|
|
77
|
+
} from "./search-params.js";
|
|
79
78
|
|
|
80
79
|
// Client-safe createLoader - only stores the $$id, function is not included
|
|
81
80
|
// Use this when defining loaders that will be imported by client components
|
|
@@ -83,6 +82,21 @@ export { createLoader } from "./loader.js";
|
|
|
83
82
|
|
|
84
83
|
// Route definition types (safe to import anywhere)
|
|
85
84
|
export type { RouteHelpers, RouteHandlers } from "./route-definition.js";
|
|
85
|
+
export type {
|
|
86
|
+
TransitionConfig,
|
|
87
|
+
TransitionWhenFn,
|
|
88
|
+
TransitionWhenContext,
|
|
89
|
+
ViewTransitionClass,
|
|
90
|
+
} from "./types.js";
|
|
91
|
+
|
|
92
|
+
// Composition types for reusable callback factories
|
|
93
|
+
export type {
|
|
94
|
+
RouteUseItem,
|
|
95
|
+
LayoutUseItem,
|
|
96
|
+
AllUseItems,
|
|
97
|
+
UseItems,
|
|
98
|
+
HandlerUseItem,
|
|
99
|
+
} from "./route-types.js";
|
|
86
100
|
|
|
87
101
|
// Response route types (usable in both server and client contexts)
|
|
88
102
|
export type {
|
|
@@ -95,126 +109,242 @@ export type {
|
|
|
95
109
|
JsonResponsePathFn,
|
|
96
110
|
TextResponsePathFn,
|
|
97
111
|
RouteResponse,
|
|
98
|
-
|
|
99
|
-
ResponseEnvelope,
|
|
112
|
+
ProblemDetails,
|
|
100
113
|
} from "./urls.js";
|
|
101
114
|
|
|
102
115
|
// Middleware context types
|
|
103
|
-
export type {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
116
|
+
export type { MiddlewareContext, CookieOptions } from "./router/middleware.js";
|
|
117
|
+
|
|
118
|
+
function serverOnlyStubError(name: string): Error {
|
|
119
|
+
return new Error(
|
|
120
|
+
`${name}() is only available from "@rangojs/router" in a react-server/RSC environment. ` +
|
|
121
|
+
`For client hooks and components, import from "@rangojs/router/client".`,
|
|
122
|
+
);
|
|
123
|
+
}
|
|
107
124
|
|
|
108
125
|
/**
|
|
109
126
|
* Error-throwing stub for server-only `urls` function.
|
|
110
127
|
*/
|
|
111
128
|
export function urls(): never {
|
|
112
|
-
throw
|
|
113
|
-
'urls() is server-only and requires RSC context.'
|
|
114
|
-
);
|
|
129
|
+
throw serverOnlyStubError("urls");
|
|
115
130
|
}
|
|
116
131
|
|
|
117
132
|
/**
|
|
118
133
|
* Error-throwing stub for server-only `createRouter` function.
|
|
119
134
|
*/
|
|
120
135
|
export function createRouter(): never {
|
|
121
|
-
throw
|
|
122
|
-
'createRouter() is server-only and requires RSC context.'
|
|
123
|
-
);
|
|
136
|
+
throw serverOnlyStubError("createRouter");
|
|
124
137
|
}
|
|
125
138
|
|
|
126
139
|
/**
|
|
127
140
|
* Error-throwing stub for server-only `redirect` function.
|
|
128
141
|
*/
|
|
129
142
|
export function redirect(): never {
|
|
130
|
-
throw
|
|
131
|
-
'redirect() is server-only and requires RSC context.'
|
|
132
|
-
);
|
|
143
|
+
throw serverOnlyStubError("redirect");
|
|
133
144
|
}
|
|
134
145
|
|
|
135
146
|
// Handle API (universal - works on both server and client)
|
|
136
147
|
export { createHandle, isHandle, type Handle } from "./handle.js";
|
|
148
|
+
export {
|
|
149
|
+
DEFAULT_DEFER_TIMEOUT_MS,
|
|
150
|
+
type DeferOptions,
|
|
151
|
+
type HandlePush,
|
|
152
|
+
type HandlePushFn,
|
|
153
|
+
} from "./defer.js";
|
|
154
|
+
|
|
155
|
+
// Context variable API (typed ctx.set/ctx.get tokens)
|
|
156
|
+
export { createVar, type ContextVar } from "./context-var.js";
|
|
157
|
+
|
|
158
|
+
// CSP nonce token (use with ctx.get(nonce) in middleware/handlers)
|
|
159
|
+
export { nonce } from "./rsc/nonce.js";
|
|
137
160
|
|
|
138
161
|
/**
|
|
139
|
-
*
|
|
162
|
+
* SSR/client stub for server-only `Prerender` function.
|
|
163
|
+
*
|
|
164
|
+
* Returns a lightweight stub object instead of throwing so that the
|
|
165
|
+
* production SSR build can safely bundle the RSC entry chunk — the SSR
|
|
166
|
+
* bundler resolves `@rangojs/router` to this (SSR) entry, so Prerender
|
|
167
|
+
* calls in RSC code must not crash at module-evaluation time.
|
|
140
168
|
*/
|
|
141
|
-
export function Prerender(
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
169
|
+
export function Prerender(
|
|
170
|
+
_handler?: any,
|
|
171
|
+
_optionsOrId?: any,
|
|
172
|
+
__injectedId?: string,
|
|
173
|
+
): any {
|
|
174
|
+
const id =
|
|
175
|
+
typeof _optionsOrId === "string" ? _optionsOrId : __injectedId || "";
|
|
176
|
+
return { __brand: "prerenderHandler" as const, $$id: id };
|
|
145
177
|
}
|
|
146
178
|
|
|
147
179
|
/**
|
|
148
|
-
*
|
|
180
|
+
* SSR/client stub for server-only `Passthrough` function.
|
|
149
181
|
*/
|
|
150
|
-
export function
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
182
|
+
export function Passthrough(
|
|
183
|
+
_handler?: any,
|
|
184
|
+
_optionsOrId?: any,
|
|
185
|
+
__injectedId?: string,
|
|
186
|
+
): any {
|
|
187
|
+
const id =
|
|
188
|
+
typeof _optionsOrId === "string" ? _optionsOrId : __injectedId || "";
|
|
189
|
+
return { __brand: "passthroughHandler" as const, $$id: id };
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* SSR/client stub for server-only `Static` function.
|
|
194
|
+
*
|
|
195
|
+
* Returns a lightweight stub object instead of throwing so that the
|
|
196
|
+
* production SSR build can safely bundle the RSC entry chunk — the SSR
|
|
197
|
+
* bundler resolves `@rangojs/router` to this (SSR) entry, so Static
|
|
198
|
+
* calls in RSC code must not crash at module-evaluation time.
|
|
199
|
+
*/
|
|
200
|
+
export function Static(
|
|
201
|
+
_handler?: any,
|
|
202
|
+
_optionsOrId?: any,
|
|
203
|
+
__injectedId?: string,
|
|
204
|
+
): any {
|
|
205
|
+
const id =
|
|
206
|
+
typeof _optionsOrId === "string" ? _optionsOrId : __injectedId || "";
|
|
207
|
+
return { __brand: "staticHandler" as const, $$id: id };
|
|
154
208
|
}
|
|
155
209
|
|
|
156
210
|
/**
|
|
157
211
|
* Error-throwing stub for server-only `getRequestContext` function.
|
|
158
212
|
*/
|
|
159
213
|
export function getRequestContext(): never {
|
|
160
|
-
throw
|
|
161
|
-
'getRequestContext() is server-only and requires RSC context.'
|
|
162
|
-
);
|
|
214
|
+
throw serverOnlyStubError("getRequestContext");
|
|
163
215
|
}
|
|
164
216
|
|
|
165
217
|
/**
|
|
166
|
-
* Error-throwing stub for server-only `
|
|
218
|
+
* Error-throwing stub for server-only `cookies` function.
|
|
167
219
|
*/
|
|
168
|
-
export function
|
|
169
|
-
throw
|
|
170
|
-
'requireRequestContext() is server-only and requires RSC context.'
|
|
171
|
-
);
|
|
220
|
+
export function cookies(): never {
|
|
221
|
+
throw serverOnlyStubError("cookies");
|
|
172
222
|
}
|
|
173
223
|
|
|
174
224
|
/**
|
|
175
|
-
* Error-throwing stub for server-only `
|
|
225
|
+
* Error-throwing stub for server-only `headers` function.
|
|
176
226
|
*/
|
|
177
|
-
export function
|
|
178
|
-
throw
|
|
179
|
-
'createReverse() is server-only and requires RSC context.'
|
|
180
|
-
);
|
|
227
|
+
export function headers(): never {
|
|
228
|
+
throw serverOnlyStubError("headers");
|
|
181
229
|
}
|
|
182
230
|
|
|
183
231
|
/**
|
|
184
|
-
*
|
|
232
|
+
* Client/SSR passthrough for `live()` (the PPR hole primitive). Unlike the
|
|
233
|
+
* cookies()/headers() stubs this is a REAL function: there is no shell capture
|
|
234
|
+
* off the react-server condition, so live() simply runs the thunk (or returns
|
|
235
|
+
* the promise). The capture-aware implementation lives in index.rsc.ts
|
|
236
|
+
* (./server/live.js). See docs/design/ppr-shell-resume.md.
|
|
185
237
|
*/
|
|
186
|
-
export function
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
)
|
|
238
|
+
export function live<T>(fn: () => Promise<T> | T): Promise<T>;
|
|
239
|
+
export function live<T>(promise: Promise<T>): Promise<T>;
|
|
240
|
+
export function live<T>(
|
|
241
|
+
input: (() => Promise<T> | T) | Promise<T>,
|
|
242
|
+
): Promise<T> {
|
|
243
|
+
return typeof input === "function"
|
|
244
|
+
? Promise.resolve((input as () => Promise<T> | T)())
|
|
245
|
+
: input;
|
|
190
246
|
}
|
|
191
247
|
|
|
192
248
|
/**
|
|
193
|
-
*
|
|
249
|
+
* Client implementation of `invalidateClientCache()`. Unlike the server-only
|
|
250
|
+
* stubs above this is a REAL function under the `default` condition (it marks
|
|
251
|
+
* the client's caches stale); the `react-server` condition (index.rsc.ts)
|
|
252
|
+
* selects the server implementation that writes a rotated `Set-Cookie`.
|
|
194
253
|
*/
|
|
195
|
-
export
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}
|
|
254
|
+
export {
|
|
255
|
+
invalidateClientCache,
|
|
256
|
+
keepClientCache,
|
|
257
|
+
} from "./browser/invalidate-client-cache.js";
|
|
200
258
|
|
|
201
259
|
/**
|
|
202
|
-
* Error-throwing stub for server-only `
|
|
260
|
+
* Error-throwing stub for server-only `createReverse` function.
|
|
203
261
|
*/
|
|
204
|
-
export function
|
|
205
|
-
throw
|
|
206
|
-
|
|
207
|
-
|
|
262
|
+
export function createReverse(): never {
|
|
263
|
+
throw serverOnlyStubError("createReverse");
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
// Error-throwing stubs for server-only route helpers
|
|
267
|
+
export function layout(): never {
|
|
268
|
+
throw serverOnlyStubError("layout");
|
|
269
|
+
}
|
|
270
|
+
export function cache(): never {
|
|
271
|
+
throw serverOnlyStubError("cache");
|
|
272
|
+
}
|
|
273
|
+
export function middleware(): never {
|
|
274
|
+
throw serverOnlyStubError("middleware");
|
|
275
|
+
}
|
|
276
|
+
export function revalidate(): never {
|
|
277
|
+
throw serverOnlyStubError("revalidate");
|
|
278
|
+
}
|
|
279
|
+
// Cache tag APIs are server-only (real implementations in index.rsc.ts). These
|
|
280
|
+
// stubs keep the named-export shape identical under the default/non-react-server
|
|
281
|
+
// condition so SSR/client/default bundles that encounter the import link cleanly.
|
|
282
|
+
export function cacheTag(): never {
|
|
283
|
+
throw serverOnlyStubError("cacheTag");
|
|
284
|
+
}
|
|
285
|
+
export function updateTag(): never {
|
|
286
|
+
throw serverOnlyStubError("updateTag");
|
|
287
|
+
}
|
|
288
|
+
export function revalidateTag(): never {
|
|
289
|
+
throw serverOnlyStubError("revalidateTag");
|
|
290
|
+
}
|
|
291
|
+
export function loader(): never {
|
|
292
|
+
throw serverOnlyStubError("loader");
|
|
293
|
+
}
|
|
294
|
+
export function loading(): never {
|
|
295
|
+
throw serverOnlyStubError("loading");
|
|
296
|
+
}
|
|
297
|
+
export function parallel(): never {
|
|
298
|
+
throw serverOnlyStubError("parallel");
|
|
299
|
+
}
|
|
300
|
+
export function intercept(): never {
|
|
301
|
+
throw serverOnlyStubError("intercept");
|
|
302
|
+
}
|
|
303
|
+
export function errorBoundary(): never {
|
|
304
|
+
throw serverOnlyStubError("errorBoundary");
|
|
305
|
+
}
|
|
306
|
+
export function notFoundBoundary(): never {
|
|
307
|
+
throw serverOnlyStubError("notFoundBoundary");
|
|
308
|
+
}
|
|
309
|
+
export function transition(): never {
|
|
310
|
+
throw serverOnlyStubError("transition");
|
|
208
311
|
}
|
|
209
312
|
|
|
210
313
|
// Request context type (safe for client)
|
|
211
|
-
export type { RequestContext } from "./server/request-context.js";
|
|
314
|
+
export type { PublicRequestContext as RequestContext } from "./server/request-context.js";
|
|
315
|
+
|
|
316
|
+
// Shared base for every user-facing request context.
|
|
317
|
+
export type { RequestScope, ExecutionContext } from "./types/request-scope.js";
|
|
318
|
+
|
|
319
|
+
// Cookie store types (safe for client)
|
|
320
|
+
export type {
|
|
321
|
+
CookieStore,
|
|
322
|
+
Cookie,
|
|
323
|
+
ReadonlyHeaders,
|
|
324
|
+
} from "./server/cookie-store.js";
|
|
325
|
+
|
|
326
|
+
// Built-in handles (universal — work on both server and client)
|
|
327
|
+
export { Meta } from "./handles/meta.js";
|
|
328
|
+
export {
|
|
329
|
+
Script,
|
|
330
|
+
type ScriptConfig,
|
|
331
|
+
type ScriptAttributes,
|
|
332
|
+
} from "./handles/script.js";
|
|
333
|
+
export { Breadcrumbs } from "./handles/breadcrumbs.js";
|
|
212
334
|
|
|
213
335
|
// Meta types
|
|
214
336
|
export type { MetaDescriptor, MetaDescriptorBase } from "./router/types.js";
|
|
215
337
|
|
|
338
|
+
// Breadcrumb types
|
|
339
|
+
export type { BreadcrumbItem } from "./handles/breadcrumbs.js";
|
|
340
|
+
|
|
216
341
|
// Reverse type utilities for type-safe URL generation (Django-style URL reversal)
|
|
217
|
-
export type {
|
|
342
|
+
export type {
|
|
343
|
+
ScopedReverseFunction,
|
|
344
|
+
ReverseFunction,
|
|
345
|
+
ExtractLocalRoutes,
|
|
346
|
+
ParamsFor,
|
|
347
|
+
} from "./reverse.js";
|
|
218
348
|
// scopedReverse() helper for handlers to get locally-typed reverse
|
|
219
349
|
export { scopedReverse } from "./reverse.js";
|
|
220
350
|
|
|
@@ -223,7 +353,61 @@ export {
|
|
|
223
353
|
createLocationState,
|
|
224
354
|
type LocationStateDefinition,
|
|
225
355
|
type LocationStateEntry,
|
|
356
|
+
type LocationStateOptions,
|
|
226
357
|
} from "./browser/react/location-state-shared.js";
|
|
227
358
|
|
|
228
|
-
// Path
|
|
229
|
-
|
|
359
|
+
// Path and response types are ambient on the `Rango` namespace (`Rango.Path`,
|
|
360
|
+
// `Rango.PathResponse`, declared in href-client.ts) — no import needed.
|
|
361
|
+
|
|
362
|
+
// Telemetry types only — the createConsoleSink/createOTelSink values are
|
|
363
|
+
// server-only and live in index.rsc.ts (the `react-server` condition of the
|
|
364
|
+
// bare `@rangojs/router` import). Re-exporting them as values from this
|
|
365
|
+
// (default/client) entry would pull telemetry.ts and telemetry-otel.ts into
|
|
366
|
+
// the client module graph; both tree-shake to zero bytes but still appear in
|
|
367
|
+
// bundle analysis output and slow build-time module resolution. Consumers
|
|
368
|
+
// who need the values in non-RSC contexts can import from
|
|
369
|
+
// `@rangojs/router/server`.
|
|
370
|
+
export type {
|
|
371
|
+
OTelTracer,
|
|
372
|
+
OTelActiveSpanTracer,
|
|
373
|
+
OTelSpan,
|
|
374
|
+
OTelTracingOptions,
|
|
375
|
+
} from "./router/telemetry-otel.js";
|
|
376
|
+
// The full TelemetryEvent union PLUS its member types, so a consumer writing a
|
|
377
|
+
// TelemetrySink can annotate a per-`type` handler (or construct an event literal
|
|
378
|
+
// in a test) instead of only narrowing the opaque union.
|
|
379
|
+
export type {
|
|
380
|
+
TelemetrySink,
|
|
381
|
+
TelemetryEvent,
|
|
382
|
+
RequestStartEvent,
|
|
383
|
+
RequestEndEvent,
|
|
384
|
+
RequestErrorEvent,
|
|
385
|
+
LoaderStartEvent,
|
|
386
|
+
LoaderEndEvent,
|
|
387
|
+
LoaderErrorEvent,
|
|
388
|
+
HandlerErrorEvent,
|
|
389
|
+
CacheSegmentStatus,
|
|
390
|
+
CacheSegmentSignal,
|
|
391
|
+
CacheDecisionEvent,
|
|
392
|
+
RevalidationDecisionEvent,
|
|
393
|
+
RequestTimeoutEvent,
|
|
394
|
+
OriginCheckRejectedEvent,
|
|
395
|
+
} from "./router/telemetry.js";
|
|
396
|
+
|
|
397
|
+
// Span tracing config types a consumer annotates. SpanRunner/TraceSpan are the
|
|
398
|
+
// internal runner contract (consumers go through createOTelTracing /
|
|
399
|
+
// createCloudflareTracing, which return a ready RouterTracingConfig) and are not
|
|
400
|
+
// exported.
|
|
401
|
+
export type {
|
|
402
|
+
RouterTracingConfig,
|
|
403
|
+
TracePhase,
|
|
404
|
+
TracePhaseToggles,
|
|
405
|
+
} from "./router/tracing.js";
|
|
406
|
+
|
|
407
|
+
// Timeout types and error class
|
|
408
|
+
export { RouterTimeoutError } from "./router/timeout.js";
|
|
409
|
+
export type {
|
|
410
|
+
RouterTimeouts,
|
|
411
|
+
TimeoutPhase,
|
|
412
|
+
TimeoutContext,
|
|
413
|
+
} from "./router/timeout.js";
|
package/src/internal-debug.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
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.
|
|
3
10
|
export const INTERNAL_RANGO_DEBUG: boolean =
|
|
4
11
|
typeof process !== "undefined" &&
|
|
5
12
|
Boolean((process as any).env?.INTERNAL_RANGO_DEBUG);
|