@rangojs/router 0.0.0-experimental.f2d1a2f1 → 0.0.0-experimental.f4a8e8de
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 -4
- package/README.md +318 -821
- package/dist/bin/rango.js +925 -271
- package/dist/testing/vitest.js +82 -0
- package/dist/types/__internal.d.ts +127 -0
- package/dist/types/bin/rango.d.ts +1 -0
- package/dist/types/browser/action-coordinator.d.ts +57 -0
- package/dist/types/browser/action-fence.d.ts +33 -0
- package/dist/types/browser/app-shell.d.ts +34 -0
- package/dist/types/browser/app-version.d.ts +6 -0
- package/dist/types/browser/connection-warmup.d.ts +31 -0
- package/dist/types/browser/cookie-name.d.ts +66 -0
- package/dist/types/browser/dev-discovery.d.ts +11 -0
- package/dist/types/browser/event-controller.d.ts +231 -0
- package/dist/types/browser/history-state.d.ts +26 -0
- package/dist/types/browser/index.d.ts +1 -0
- package/dist/types/browser/intercept-utils.d.ts +30 -0
- package/dist/types/browser/invalidate-client-cache.d.ts +17 -0
- package/dist/types/browser/link-interceptor.d.ts +53 -0
- package/dist/types/browser/logging.d.ts +33 -0
- package/dist/types/browser/merge-segment-loaders.d.ts +38 -0
- package/dist/types/browser/navigation-bridge.d.ts +39 -0
- package/dist/types/browser/navigation-client.d.ts +17 -0
- package/dist/types/browser/navigation-store-handle.d.ts +25 -0
- package/dist/types/browser/navigation-store.d.ts +85 -0
- package/dist/types/browser/navigation-transaction.d.ts +75 -0
- package/dist/types/browser/network-error-handler.d.ts +35 -0
- package/dist/types/browser/notify-listeners.d.ts +2 -0
- package/dist/types/browser/partial-update.d.ts +61 -0
- package/dist/types/browser/prefetch/cache.d.ts +224 -0
- package/dist/types/browser/prefetch/default-strategy.d.ts +31 -0
- package/dist/types/browser/prefetch/fetch.d.ts +52 -0
- package/dist/types/browser/prefetch/invalidation.d.ts +6 -0
- package/dist/types/browser/prefetch/loader.d.ts +12 -0
- package/dist/types/browser/prefetch/observer.d.ts +24 -0
- package/dist/types/browser/prefetch/policy.d.ts +13 -0
- package/dist/types/browser/prefetch/queue.d.ts +48 -0
- package/dist/types/browser/prefetch/resource-ready.d.ts +28 -0
- package/dist/types/browser/prefetch/runtime.d.ts +2 -0
- package/dist/types/browser/rango-state.d.ts +56 -0
- package/dist/types/browser/react/Link.d.ts +132 -0
- package/dist/types/browser/react/NavigationProvider.d.ts +88 -0
- package/dist/types/browser/react/ScrollRestoration.d.ts +78 -0
- package/dist/types/browser/react/context.d.ts +57 -0
- package/dist/types/browser/react/filter-segment-order.d.ts +35 -0
- package/dist/types/browser/react/index.d.ts +1 -0
- package/dist/types/browser/react/location-state-shared.d.ts +162 -0
- package/dist/types/browser/react/location-state.d.ts +29 -0
- package/dist/types/browser/react/mount-context.d.ts +23 -0
- package/dist/types/browser/react/nonce-context.d.ts +14 -0
- package/dist/types/browser/react/shallow-equal.d.ts +5 -0
- package/dist/types/browser/react/use-action.d.ts +61 -0
- package/dist/types/browser/react/use-handle.d.ts +21 -0
- package/dist/types/browser/react/use-href.d.ts +32 -0
- package/dist/types/browser/react/use-link-status.d.ts +36 -0
- package/dist/types/browser/react/use-mount.d.ts +24 -0
- package/dist/types/browser/react/use-navigation.d.ts +15 -0
- package/dist/types/browser/react/use-params.d.ts +21 -0
- package/dist/types/browser/react/use-pathname.d.ts +13 -0
- package/dist/types/browser/react/use-reverse.d.ts +40 -0
- package/dist/types/browser/react/use-router.d.ts +23 -0
- package/dist/types/browser/react/use-search-params.d.ts +19 -0
- package/dist/types/browser/react/use-segments.d.ts +29 -0
- package/dist/types/browser/response-adapter.d.ts +58 -0
- package/dist/types/browser/rsc-router.d.ts +146 -0
- package/dist/types/browser/scroll-restoration.d.ts +103 -0
- package/dist/types/browser/segment-reconciler.d.ts +74 -0
- package/dist/types/browser/segment-structure-assert.d.ts +16 -0
- package/dist/types/browser/server-action-bridge.d.ts +29 -0
- package/dist/types/browser/types.d.ts +546 -0
- package/dist/types/browser/validate-redirect-origin.d.ts +28 -0
- package/dist/types/build/collect-fallback-refs.d.ts +5 -0
- package/dist/types/build/generate-manifest.d.ts +106 -0
- package/dist/types/build/generate-route-types.d.ts +8 -0
- package/dist/types/build/index.d.ts +21 -0
- package/dist/types/build/merge-full-manifests.d.ts +3 -0
- package/dist/types/build/prefix-tree-utils.d.ts +56 -0
- package/dist/types/build/route-trie.d.ts +20 -0
- package/dist/types/build/route-types/ast-helpers.d.ts +3 -0
- package/dist/types/build/route-types/ast-route-extraction.d.ts +13 -0
- package/dist/types/build/route-types/codegen.d.ts +16 -0
- package/dist/types/build/route-types/include-resolution.d.ts +74 -0
- package/dist/types/build/route-types/param-extraction.d.ts +13 -0
- package/dist/types/build/route-types/per-module-writer.d.ts +20 -0
- package/dist/types/build/route-types/router-processing.d.ts +81 -0
- package/dist/types/build/route-types/scan-filter.d.ts +17 -0
- package/dist/types/build/route-types/source-scan.d.ts +13 -0
- package/dist/types/build/runtime-discovery.d.ts +24 -0
- package/dist/types/cache/background-task.d.ts +21 -0
- package/dist/types/cache/cache-error.d.ts +71 -0
- package/dist/types/cache/cache-exec-scope.d.ts +31 -0
- package/dist/types/cache/cache-key-utils.d.ts +43 -0
- package/dist/types/cache/cache-policy.d.ts +59 -0
- package/dist/types/cache/cache-runtime.d.ts +51 -0
- package/dist/types/cache/cache-scope.d.ts +215 -0
- package/dist/types/cache/cache-tag.d.ts +79 -0
- package/dist/types/cache/cf/cf-base64.d.ts +4 -0
- package/dist/types/cache/cf/cf-cache-constants.d.ts +112 -0
- package/dist/types/cache/cf/cf-cache-store.d.ts +616 -0
- package/dist/types/cache/cf/cf-cache-types.d.ts +365 -0
- package/dist/types/cache/cf/cf-kv-utils.d.ts +43 -0
- package/dist/types/cache/cf/cf-tag-marker-memo.d.ts +15 -0
- package/dist/types/cache/cf/cf-zone-purge.d.ts +31 -0
- package/dist/types/cache/cf/index.d.ts +4 -0
- package/dist/types/cache/document-cache.d.ts +71 -0
- package/dist/types/cache/handle-capture.d.ts +23 -0
- package/dist/types/cache/handle-snapshot.d.ts +39 -0
- package/dist/types/cache/index.d.ts +9 -0
- package/dist/types/cache/memory-segment-store.d.ts +163 -0
- package/dist/types/cache/profile-registry.d.ts +40 -0
- package/dist/types/cache/read-through-swr.d.ts +61 -0
- package/dist/types/cache/search-params-filter.d.ts +64 -0
- package/dist/types/cache/segment-codec.d.ts +78 -0
- package/dist/types/cache/shell-snapshot.d.ts +186 -0
- package/dist/types/cache/tag-invalidation.d.ts +74 -0
- package/dist/types/cache/taint.d.ts +77 -0
- package/dist/types/cache/types.d.ts +503 -0
- package/dist/types/cache/vercel/index.d.ts +1 -0
- package/dist/types/cache/vercel/vercel-cache-store.d.ts +268 -0
- package/dist/types/client-urls/client-root.d.ts +38 -0
- package/dist/types/client-urls/client-urls.d.ts +5 -0
- package/dist/types/client-urls/navigation.d.ts +38 -0
- package/dist/types/client-urls/revalidation-protocol.d.ts +25 -0
- package/dist/types/client-urls/server-projection.d.ts +57 -0
- package/dist/types/client-urls/types.d.ts +132 -0
- package/dist/types/client.d.ts +191 -0
- package/dist/types/client.rsc.d.ts +41 -0
- package/dist/types/cloudflare/index.d.ts +7 -0
- package/dist/types/cloudflare/tracing.d.ts +57 -0
- package/dist/types/component-utils.d.ts +46 -0
- package/dist/types/components/DefaultDocument.d.ts +13 -0
- package/dist/types/context-var.d.ts +84 -0
- package/dist/types/debug.d.ts +57 -0
- package/dist/types/decode-loader-results.d.ts +42 -0
- package/dist/types/default-error-boundary.d.ts +10 -0
- package/dist/types/defer.d.ts +89 -0
- package/dist/types/deps/browser.d.ts +1 -0
- package/dist/types/deps/html-stream-client.d.ts +1 -0
- package/dist/types/deps/html-stream-server.d.ts +1 -0
- package/dist/types/deps/rsc.d.ts +1 -0
- package/dist/types/deps/ssr.d.ts +1 -0
- package/dist/types/dev-discovery-protocol.d.ts +5 -0
- package/dist/types/encode-kv.d.ts +35 -0
- package/dist/types/errors.d.ts +227 -0
- package/dist/types/escape-script.d.ts +44 -0
- package/dist/types/handle.d.ts +93 -0
- package/dist/types/handles/MetaTags.d.ts +17 -0
- package/dist/types/handles/Scripts.d.ts +38 -0
- package/dist/types/handles/breadcrumbs.d.ts +43 -0
- package/dist/types/handles/deferred-resolution.d.ts +53 -0
- package/dist/types/handles/is-thenable.d.ts +10 -0
- package/dist/types/handles/meta.d.ts +43 -0
- package/dist/types/handles/script.d.ts +139 -0
- package/dist/types/host/cookie-handler.d.ts +8 -0
- package/dist/types/host/errors.d.ts +40 -0
- package/dist/types/host/index.d.ts +33 -0
- package/dist/types/host/pattern-matcher.d.ts +30 -0
- package/dist/types/host/router.d.ts +12 -0
- package/dist/types/host/testing.d.ts +41 -0
- package/dist/types/host/types.d.ts +148 -0
- package/dist/types/host/utils.d.ts +20 -0
- package/dist/types/href-client.d.ts +214 -0
- package/dist/types/index.d.ts +113 -0
- package/dist/types/index.rsc.d.ts +52 -0
- package/dist/types/internal-debug.d.ts +1 -0
- package/dist/types/loader-redirect.d.ts +18 -0
- package/dist/types/loader-store.d.ts +193 -0
- package/dist/types/loader.d.ts +18 -0
- package/dist/types/loader.rsc.d.ts +18 -0
- package/dist/types/missing-id-error.d.ts +1 -0
- package/dist/types/outlet-context.d.ts +24 -0
- package/dist/types/outlet-provider.d.ts +14 -0
- package/dist/types/prerender/build-shell-capture.d.ts +104 -0
- package/dist/types/prerender/param-hash.d.ts +6 -0
- package/dist/types/prerender/shell-manifest-key.d.ts +18 -0
- package/dist/types/prerender/store.d.ts +63 -0
- package/dist/types/prerender.d.ts +292 -0
- package/dist/types/redirect-origin.d.ts +67 -0
- package/dist/types/regex-escape.d.ts +6 -0
- package/dist/types/render-error-thrower.d.ts +13 -0
- package/dist/types/response-utils.d.ts +35 -0
- package/dist/types/reverse.d.ts +206 -0
- package/dist/types/root-error-boundary.d.ts +32 -0
- package/dist/types/route-content-wrapper.d.ts +81 -0
- package/dist/types/route-definition/dsl-helpers.d.ts +130 -0
- package/dist/types/route-definition/helper-factories.d.ts +22 -0
- package/dist/types/route-definition/helpers-types.d.ts +393 -0
- package/dist/types/route-definition/index.d.ts +7 -0
- package/dist/types/route-definition/redirect.d.ts +48 -0
- package/dist/types/route-definition/resolve-handler-use.d.ts +19 -0
- package/dist/types/route-definition/use-item-types.d.ts +1 -0
- package/dist/types/route-definition.d.ts +1 -0
- package/dist/types/route-map-builder.d.ts +102 -0
- package/dist/types/route-name.d.ts +27 -0
- package/dist/types/route-types.d.ts +172 -0
- package/dist/types/router/basename.d.ts +10 -0
- package/dist/types/router/content-negotiation.d.ts +91 -0
- package/dist/types/router/debug-manifest.d.ts +7 -0
- package/dist/types/router/error-handling.d.ts +110 -0
- package/dist/types/router/find-match.d.ts +19 -0
- package/dist/types/router/handler-context.d.ts +41 -0
- package/dist/types/router/instrument.d.ts +191 -0
- package/dist/types/router/intercept-resolution.d.ts +91 -0
- package/dist/types/router/lazy-includes.d.ts +26 -0
- package/dist/types/router/loader-resolution.d.ts +85 -0
- package/dist/types/router/logging.d.ts +41 -0
- package/dist/types/router/manifest.d.ts +8 -0
- package/dist/types/router/match-api.d.ts +19 -0
- package/dist/types/router/match-context.d.ts +184 -0
- package/dist/types/router/match-handlers.d.ts +48 -0
- package/dist/types/router/match-middleware/background-revalidation.d.ts +113 -0
- package/dist/types/router/match-middleware/cache-lookup.d.ts +126 -0
- package/dist/types/router/match-middleware/cache-store.d.ts +112 -0
- package/dist/types/router/match-middleware/index.d.ts +80 -0
- package/dist/types/router/match-middleware/intercept-resolution.d.ts +116 -0
- package/dist/types/router/match-middleware/segment-resolution.d.ts +94 -0
- package/dist/types/router/match-pipelines.d.ts +103 -0
- package/dist/types/router/match-result.d.ts +114 -0
- package/dist/types/router/metrics.d.ts +6 -0
- package/dist/types/router/middleware-types.d.ts +74 -0
- package/dist/types/router/middleware.d.ts +116 -0
- package/dist/types/router/navigation-snapshot.d.ts +51 -0
- package/dist/types/router/params-util.d.ts +8 -0
- package/dist/types/router/parse-pattern.d.ts +38 -0
- package/dist/types/router/pattern-matching.d.ts +169 -0
- package/dist/types/router/prefetch-cache-ttl.d.ts +27 -0
- package/dist/types/router/prefetch-default.d.ts +28 -0
- package/dist/types/router/prefetch-limits.d.ts +20 -0
- package/dist/types/router/prerender-match.d.ts +53 -0
- package/dist/types/router/preview-match.d.ts +22 -0
- package/dist/types/router/request-classification.d.ts +104 -0
- package/dist/types/router/revalidation.d.ts +64 -0
- package/dist/types/router/route-snapshot.d.ts +112 -0
- package/dist/types/router/route-trie-builder.d.ts +77 -0
- package/dist/types/router/router-context.d.ts +137 -0
- package/dist/types/router/router-interfaces.d.ts +461 -0
- package/dist/types/router/router-options.d.ts +792 -0
- package/dist/types/router/router-registry.d.ts +15 -0
- package/dist/types/router/segment-resolution/fresh.d.ts +55 -0
- package/dist/types/router/segment-resolution/helpers.d.ts +93 -0
- package/dist/types/router/segment-resolution/loader-cache.d.ts +33 -0
- package/dist/types/router/segment-resolution/loader-mask.d.ts +44 -0
- package/dist/types/router/segment-resolution/loader-snapshot.d.ts +90 -0
- package/dist/types/router/segment-resolution/mask-nested.d.ts +53 -0
- package/dist/types/router/segment-resolution/revalidation.d.ts +85 -0
- package/dist/types/router/segment-resolution/static-store.d.ts +17 -0
- package/dist/types/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
- package/dist/types/router/segment-resolution/view-transition-default.d.ts +27 -0
- package/dist/types/router/segment-resolution.d.ts +3 -0
- package/dist/types/router/segment-wrappers.d.ts +53 -0
- package/dist/types/router/state-cookie-name.d.ts +1 -0
- package/dist/types/router/substitute-pattern-params.d.ts +23 -0
- package/dist/types/router/telemetry-otel.d.ts +113 -0
- package/dist/types/router/telemetry.d.ts +216 -0
- package/dist/types/router/timeout.d.ts +107 -0
- package/dist/types/router/tracing.d.ts +139 -0
- package/dist/types/router/transition-when.d.ts +13 -0
- package/dist/types/router/trie-matching.d.ts +32 -0
- package/dist/types/router/types.d.ts +98 -0
- package/dist/types/router/url-params.d.ts +26 -0
- package/dist/types/router.d.ts +7 -0
- package/dist/types/rsc/capture-queue.d.ts +49 -0
- package/dist/types/rsc/full-payload.d.ts +22 -0
- package/dist/types/rsc/handler-context.d.ts +32 -0
- package/dist/types/rsc/handler.d.ts +9 -0
- package/dist/types/rsc/helpers.d.ts +127 -0
- package/dist/types/rsc/index.d.ts +17 -0
- package/dist/types/rsc/json-route-result.d.ts +20 -0
- package/dist/types/rsc/loader-fetch.d.ts +14 -0
- package/dist/types/rsc/manifest-init.d.ts +18 -0
- package/dist/types/rsc/nonce.d.ts +28 -0
- package/dist/types/rsc/origin-guard.d.ts +50 -0
- package/dist/types/rsc/progressive-enhancement.d.ts +19 -0
- package/dist/types/rsc/redirect-guard.d.ts +37 -0
- package/dist/types/rsc/render-pipeline.d.ts +148 -0
- package/dist/types/rsc/response-cache-serve.d.ts +46 -0
- package/dist/types/rsc/response-error.d.ts +19 -0
- package/dist/types/rsc/response-route-handler.d.ts +29 -0
- package/dist/types/rsc/routine-plan.d.ts +124 -0
- package/dist/types/rsc/rsc-rendering.d.ts +18 -0
- package/dist/types/rsc/runtime-warnings.d.ts +22 -0
- package/dist/types/rsc/server-action.d.ts +68 -0
- package/dist/types/rsc/shell-build-manifest.d.ts +90 -0
- package/dist/types/rsc/shell-capture-constants.d.ts +44 -0
- package/dist/types/rsc/shell-capture.d.ts +406 -0
- package/dist/types/rsc/shell-serve.d.ts +189 -0
- package/dist/types/rsc/ssr-setup.d.ts +73 -0
- package/dist/types/rsc/stream-idle.d.ts +60 -0
- package/dist/types/rsc/transition-gate.d.ts +23 -0
- package/dist/types/rsc/types.d.ts +328 -0
- package/dist/types/runtime-env.d.ts +1 -0
- package/dist/types/search-params.d.ts +125 -0
- package/dist/types/segment-content-promise.d.ts +13 -0
- package/dist/types/segment-fragments.d.ts +79 -0
- package/dist/types/segment-loader-promise.d.ts +22 -0
- package/dist/types/segment-system.d.ts +86 -0
- package/dist/types/serialize.d.ts +164 -0
- package/dist/types/server/context.d.ts +510 -0
- package/dist/types/server/cookie-parse.d.ts +10 -0
- package/dist/types/server/cookie-store.d.ts +107 -0
- package/dist/types/server/fetchable-loader-store.d.ts +20 -0
- package/dist/types/server/handle-store.d.ts +131 -0
- package/dist/types/server/loader-registry.d.ts +32 -0
- package/dist/types/server/request-context.d.ts +707 -0
- package/dist/types/server/root-layout.d.ts +3 -0
- package/dist/types/server.d.ts +16 -0
- package/dist/types/ssr/index.d.ts +233 -0
- package/dist/types/ssr/inject-rsc-eager.d.ts +3 -0
- package/dist/types/ssr/preinit-client-references.d.ts +71 -0
- package/dist/types/ssr/ssr-root.d.ts +69 -0
- package/dist/types/static-handler.d.ts +71 -0
- package/dist/types/testing/cache-status.d.ts +63 -0
- package/dist/types/testing/collect-handle.d.ts +20 -0
- package/dist/types/testing/dispatch.d.ts +127 -0
- package/dist/types/testing/dom.entry.d.ts +15 -0
- package/dist/types/testing/e2e/fixture.d.ts +37 -0
- package/dist/types/testing/e2e/index.d.ts +31 -0
- package/dist/types/testing/e2e/matchers.d.ts +17 -0
- package/dist/types/testing/e2e/page-helpers.d.ts +86 -0
- package/dist/types/testing/e2e/parity.d.ts +111 -0
- package/dist/types/testing/e2e/server.d.ts +35 -0
- package/dist/types/testing/flight-matchers.d.ts +55 -0
- package/dist/types/testing/flight-normalize.d.ts +1 -0
- package/dist/types/testing/flight-tree.d.ts +192 -0
- package/dist/types/testing/flight.d.ts +115 -0
- package/dist/types/testing/flight.entry.d.ts +27 -0
- package/dist/types/testing/generated-routes.d.ts +66 -0
- package/dist/types/testing/index.d.ts +54 -0
- package/dist/types/testing/internal/context.d.ts +225 -0
- package/dist/types/testing/internal/flight-client-globals.d.ts +1 -0
- package/dist/types/testing/internal/seed-vars.d.ts +30 -0
- package/dist/types/testing/render-handler.d.ts +160 -0
- package/dist/types/testing/render-route.d.ts +265 -0
- package/dist/types/testing/run-loader.d.ts +195 -0
- package/dist/types/testing/run-middleware.d.ts +132 -0
- package/dist/types/testing/run-transition-when.d.ts +78 -0
- package/dist/types/testing/shell-status.d.ts +81 -0
- package/dist/types/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
- package/dist/types/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
- package/dist/types/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
- package/dist/types/testing/vitest-stubs/version.d.ts +1 -0
- package/dist/types/testing/vitest.d.ts +205 -0
- package/dist/types/theme/ThemeProvider.d.ts +13 -0
- package/dist/types/theme/ThemeScript.d.ts +45 -0
- package/dist/types/theme/constants.d.ts +39 -0
- package/dist/types/theme/index.d.ts +29 -0
- package/dist/types/theme/theme-context.d.ts +21 -0
- package/dist/types/theme/theme-script.d.ts +26 -0
- package/dist/types/theme/types.d.ts +162 -0
- package/dist/types/theme/use-theme.d.ts +8 -0
- package/dist/types/types/boundaries.d.ts +110 -0
- package/dist/types/types/cache-types.d.ts +191 -0
- package/dist/types/types/error-types.d.ts +114 -0
- package/dist/types/types/global-namespace.d.ts +90 -0
- package/dist/types/types/handler-context.d.ts +658 -0
- package/dist/types/types/index.d.ts +11 -0
- package/dist/types/types/loader-types.d.ts +208 -0
- package/dist/types/types/request-scope.d.ts +93 -0
- package/dist/types/types/route-config.d.ts +105 -0
- package/dist/types/types/route-entry.d.ts +98 -0
- package/dist/types/types/segments.d.ts +246 -0
- package/dist/types/types.d.ts +1 -0
- package/dist/types/urls/include-helper.d.ts +17 -0
- package/dist/types/urls/include-provider.d.ts +27 -0
- package/dist/types/urls/index.d.ts +6 -0
- package/dist/types/urls/path-helper-types.d.ts +198 -0
- package/dist/types/urls/path-helper.d.ts +12 -0
- package/dist/types/urls/pattern-types.d.ts +166 -0
- package/dist/types/urls/response-types.d.ts +67 -0
- package/dist/types/urls/type-extraction.d.ts +157 -0
- package/dist/types/urls/urls-function.d.ts +24 -0
- package/dist/types/urls.d.ts +1 -0
- package/dist/types/use-loader.d.ts +150 -0
- package/dist/types/vercel/index.d.ts +10 -0
- package/dist/types/vercel/tracing.d.ts +71 -0
- package/dist/types/vite/debug.d.ts +80 -0
- package/dist/types/vite/discovery/bundle-postprocess.d.ts +12 -0
- package/dist/types/vite/discovery/client-urls-projection.d.ts +53 -0
- package/dist/types/vite/discovery/dev-prerender-cache.d.ts +65 -0
- package/dist/types/vite/discovery/discover-routers.d.ts +17 -0
- package/dist/types/vite/discovery/discovery-errors.d.ts +113 -0
- package/dist/types/vite/discovery/gate-state.d.ts +79 -0
- package/dist/types/vite/discovery/prerender-collection.d.ts +24 -0
- package/dist/types/vite/discovery/route-types-writer.d.ts +32 -0
- package/dist/types/vite/discovery/self-gen-tracking.d.ts +22 -0
- package/dist/types/vite/discovery/shell-prerender-phase.d.ts +40 -0
- package/dist/types/vite/discovery/state.d.ts +170 -0
- package/dist/types/vite/discovery/virtual-module-codegen.d.ts +15 -0
- package/dist/types/vite/encryption-key.d.ts +2 -0
- package/dist/types/vite/index.d.ts +11 -0
- package/dist/types/vite/inject-client-debug.d.ts +56 -0
- package/dist/types/vite/plugin-types.d.ts +298 -0
- package/dist/types/vite/plugins/cjs-to-esm.d.ts +6 -0
- package/dist/types/vite/plugins/client-ref-dedup.d.ts +40 -0
- package/dist/types/vite/plugins/client-ref-hashing.d.ts +35 -0
- package/dist/types/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
- package/dist/types/vite/plugins/expose-action-id.d.ts +18 -0
- package/dist/types/vite/plugins/expose-id-utils.d.ts +37 -0
- package/dist/types/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
- package/dist/types/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
- package/dist/types/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
- package/dist/types/vite/plugins/expose-ids/router-transform.d.ts +13 -0
- package/dist/types/vite/plugins/expose-ids/types.d.ts +29 -0
- package/dist/types/vite/plugins/expose-internal-ids.d.ts +16 -0
- package/dist/types/vite/plugins/performance-tracks.d.ts +25 -0
- package/dist/types/vite/plugins/refresh-cmd.d.ts +20 -0
- package/dist/types/vite/plugins/server-ref-hashing.d.ts +24 -0
- package/dist/types/vite/plugins/server-reference-pattern.d.ts +1 -0
- package/dist/types/vite/plugins/use-cache-transform.d.ts +20 -0
- package/dist/types/vite/plugins/vercel-output.d.ts +85 -0
- package/dist/types/vite/plugins/version-injector.d.ts +21 -0
- package/dist/types/vite/plugins/version-plugin.d.ts +19 -0
- package/dist/types/vite/plugins/virtual-entries.d.ts +36 -0
- package/dist/types/vite/plugins/virtual-stub-plugin.d.ts +7 -0
- package/dist/types/vite/rango.d.ts +29 -0
- package/dist/types/vite/router-discovery.d.ts +23 -0
- package/dist/types/vite/utils/ast-handler-extract.d.ts +64 -0
- package/dist/types/vite/utils/banner.d.ts +2 -0
- package/dist/types/vite/utils/bundle-analysis.d.ts +28 -0
- package/dist/types/vite/utils/client-chunks.d.ts +55 -0
- package/dist/types/vite/utils/directive-prologue.d.ts +16 -0
- package/dist/types/vite/utils/forward-user-plugins.d.ts +37 -0
- package/dist/types/vite/utils/manifest-utils.d.ts +7 -0
- package/dist/types/vite/utils/package-resolution.d.ts +6 -0
- package/dist/types/vite/utils/prerender-utils.d.ts +32 -0
- package/dist/types/vite/utils/shared-utils.d.ts +67 -0
- package/dist/types.backup/__internal.d.ts +127 -0
- package/dist/types.backup/bin/rango.d.ts +1 -0
- package/dist/types.backup/browser/action-coordinator.d.ts +57 -0
- package/dist/types.backup/browser/action-fence.d.ts +33 -0
- package/dist/types.backup/browser/app-shell.d.ts +34 -0
- package/dist/types.backup/browser/app-version.d.ts +6 -0
- package/dist/types.backup/browser/connection-warmup.d.ts +31 -0
- package/dist/types.backup/browser/cookie-name.d.ts +66 -0
- package/dist/types.backup/browser/event-controller.d.ts +221 -0
- package/dist/types.backup/browser/history-state.d.ts +26 -0
- package/dist/types.backup/browser/index.d.ts +1 -0
- package/dist/types.backup/browser/intercept-utils.d.ts +30 -0
- package/dist/types.backup/browser/invalidate-client-cache.d.ts +17 -0
- package/dist/types.backup/browser/link-interceptor.d.ts +43 -0
- package/dist/types.backup/browser/logging.d.ts +33 -0
- package/dist/types.backup/browser/merge-segment-loaders.d.ts +38 -0
- package/dist/types.backup/browser/navigation-bridge.d.ts +27 -0
- package/dist/types.backup/browser/navigation-client.d.ts +17 -0
- package/dist/types.backup/browser/navigation-store-handle.d.ts +25 -0
- package/dist/types.backup/browser/navigation-store.d.ts +95 -0
- package/dist/types.backup/browser/navigation-transaction.d.ts +75 -0
- package/dist/types.backup/browser/network-error-handler.d.ts +35 -0
- package/dist/types.backup/browser/partial-update.d.ts +61 -0
- package/dist/types.backup/browser/prefetch/cache.d.ts +183 -0
- package/dist/types.backup/browser/prefetch/fetch.d.ts +52 -0
- package/dist/types.backup/browser/prefetch/observer.d.ts +27 -0
- package/dist/types.backup/browser/prefetch/policy.d.ts +13 -0
- package/dist/types.backup/browser/prefetch/queue.d.ts +48 -0
- package/dist/types.backup/browser/prefetch/resource-ready.d.ts +28 -0
- package/dist/types.backup/browser/rango-state.d.ts +52 -0
- package/dist/types.backup/browser/react/Link.d.ts +140 -0
- package/dist/types.backup/browser/react/NavigationProvider.d.ts +88 -0
- package/dist/types.backup/browser/react/ScrollRestoration.d.ts +78 -0
- package/dist/types.backup/browser/react/context.d.ts +54 -0
- package/dist/types.backup/browser/react/filter-segment-order.d.ts +35 -0
- package/dist/types.backup/browser/react/index.d.ts +1 -0
- package/dist/types.backup/browser/react/location-state-shared.d.ts +162 -0
- package/dist/types.backup/browser/react/location-state.d.ts +29 -0
- package/dist/types.backup/browser/react/mount-context.d.ts +23 -0
- package/dist/types.backup/browser/react/nonce-context.d.ts +14 -0
- package/dist/types.backup/browser/react/shallow-equal.d.ts +5 -0
- package/dist/types.backup/browser/react/use-action.d.ts +61 -0
- package/dist/types.backup/browser/react/use-handle.d.ts +21 -0
- package/dist/types.backup/browser/react/use-href.d.ts +32 -0
- package/dist/types.backup/browser/react/use-link-status.d.ts +36 -0
- package/dist/types.backup/browser/react/use-mount.d.ts +24 -0
- package/dist/types.backup/browser/react/use-navigation.d.ts +15 -0
- package/dist/types.backup/browser/react/use-params.d.ts +21 -0
- package/dist/types.backup/browser/react/use-pathname.d.ts +13 -0
- package/dist/types.backup/browser/react/use-reverse.d.ts +40 -0
- package/dist/types.backup/browser/react/use-router.d.ts +23 -0
- package/dist/types.backup/browser/react/use-search-params.d.ts +19 -0
- package/dist/types.backup/browser/react/use-segments.d.ts +29 -0
- package/dist/types.backup/browser/response-adapter.d.ts +58 -0
- package/dist/types.backup/browser/rsc-router.d.ts +141 -0
- package/dist/types.backup/browser/scroll-restoration.d.ts +103 -0
- package/dist/types.backup/browser/segment-reconciler.d.ts +74 -0
- package/dist/types.backup/browser/segment-structure-assert.d.ts +16 -0
- package/dist/types.backup/browser/server-action-bridge.d.ts +29 -0
- package/dist/types.backup/browser/types.d.ts +530 -0
- package/dist/types.backup/browser/validate-redirect-origin.d.ts +28 -0
- package/dist/types.backup/build/collect-fallback-refs.d.ts +5 -0
- package/dist/types.backup/build/generate-manifest.d.ts +100 -0
- package/dist/types.backup/build/generate-route-types.d.ts +8 -0
- package/dist/types.backup/build/index.d.ts +21 -0
- package/dist/types.backup/build/prefix-tree-utils.d.ts +56 -0
- package/dist/types.backup/build/route-trie.d.ts +89 -0
- package/dist/types.backup/build/route-types/ast-helpers.d.ts +3 -0
- package/dist/types.backup/build/route-types/ast-route-extraction.d.ts +13 -0
- package/dist/types.backup/build/route-types/codegen.d.ts +16 -0
- package/dist/types.backup/build/route-types/include-resolution.d.ts +74 -0
- package/dist/types.backup/build/route-types/param-extraction.d.ts +13 -0
- package/dist/types.backup/build/route-types/per-module-writer.d.ts +18 -0
- package/dist/types.backup/build/route-types/router-processing.d.ts +82 -0
- package/dist/types.backup/build/route-types/scan-filter.d.ts +17 -0
- package/dist/types.backup/build/route-types/source-scan.d.ts +13 -0
- package/dist/types.backup/build/runtime-discovery.d.ts +24 -0
- package/dist/types.backup/cache/background-task.d.ts +21 -0
- package/dist/types.backup/cache/cache-error.d.ts +71 -0
- package/dist/types.backup/cache/cache-key-utils.d.ts +35 -0
- package/dist/types.backup/cache/cache-policy.d.ts +59 -0
- package/dist/types.backup/cache/cache-runtime.d.ts +51 -0
- package/dist/types.backup/cache/cache-scope.d.ts +134 -0
- package/dist/types.backup/cache/cache-tag.d.ts +79 -0
- package/dist/types.backup/cache/cf/cf-base64.d.ts +4 -0
- package/dist/types.backup/cache/cf/cf-cache-constants.d.ts +105 -0
- package/dist/types.backup/cache/cf/cf-cache-store.d.ts +481 -0
- package/dist/types.backup/cache/cf/cf-cache-types.d.ts +300 -0
- package/dist/types.backup/cache/cf/cf-kv-utils.d.ts +22 -0
- package/dist/types.backup/cache/cf/cf-tag-marker-memo.d.ts +15 -0
- package/dist/types.backup/cache/cf/index.d.ts +3 -0
- package/dist/types.backup/cache/document-cache.d.ts +69 -0
- package/dist/types.backup/cache/handle-capture.d.ts +23 -0
- package/dist/types.backup/cache/handle-snapshot.d.ts +39 -0
- package/dist/types.backup/cache/index.d.ts +7 -0
- package/dist/types.backup/cache/memory-segment-store.d.ts +163 -0
- package/dist/types.backup/cache/profile-registry.d.ts +40 -0
- package/dist/types.backup/cache/read-through-swr.d.ts +60 -0
- package/dist/types.backup/cache/segment-codec.d.ts +78 -0
- package/dist/types.backup/cache/shell-snapshot.d.ts +162 -0
- package/dist/types.backup/cache/tag-invalidation.d.ts +74 -0
- package/dist/types.backup/cache/taint.d.ts +71 -0
- package/dist/types.backup/cache/types.d.ts +407 -0
- package/dist/types.backup/cache/vercel/index.d.ts +1 -0
- package/dist/types.backup/cache/vercel/vercel-cache-store.d.ts +267 -0
- package/dist/types.backup/client.d.ts +184 -0
- package/dist/types.backup/client.rsc.d.ts +39 -0
- package/dist/types.backup/cloudflare/index.d.ts +7 -0
- package/dist/types.backup/cloudflare/tracing.d.ts +53 -0
- package/dist/types.backup/component-utils.d.ts +46 -0
- package/dist/types.backup/components/DefaultDocument.d.ts +13 -0
- package/dist/types.backup/context-var.d.ts +84 -0
- package/dist/types.backup/debug.d.ts +57 -0
- package/dist/types.backup/decode-loader-results.d.ts +5 -0
- package/dist/types.backup/default-error-boundary.d.ts +10 -0
- package/dist/types.backup/defer.d.ts +89 -0
- package/dist/types.backup/deps/browser.d.ts +1 -0
- package/dist/types.backup/deps/html-stream-client.d.ts +1 -0
- package/dist/types.backup/deps/html-stream-server.d.ts +1 -0
- package/dist/types.backup/deps/rsc.d.ts +1 -0
- package/dist/types.backup/deps/ssr.d.ts +1 -0
- package/dist/types.backup/encode-kv.d.ts +35 -0
- package/dist/types.backup/errors.d.ts +226 -0
- package/dist/types.backup/escape-script.d.ts +44 -0
- package/dist/types.backup/handle.d.ts +93 -0
- package/dist/types.backup/handles/MetaTags.d.ts +17 -0
- package/dist/types.backup/handles/Scripts.d.ts +38 -0
- package/dist/types.backup/handles/breadcrumbs.d.ts +43 -0
- package/dist/types.backup/handles/deferred-resolution.d.ts +53 -0
- package/dist/types.backup/handles/is-thenable.d.ts +12 -0
- package/dist/types.backup/handles/meta.d.ts +43 -0
- package/dist/types.backup/handles/script.d.ts +139 -0
- package/dist/types.backup/host/cookie-handler.d.ts +8 -0
- package/dist/types.backup/host/errors.d.ts +40 -0
- package/dist/types.backup/host/index.d.ts +33 -0
- package/dist/types.backup/host/pattern-matcher.d.ts +30 -0
- package/dist/types.backup/host/router.d.ts +12 -0
- package/dist/types.backup/host/testing.d.ts +41 -0
- package/dist/types.backup/host/types.d.ts +148 -0
- package/dist/types.backup/host/utils.d.ts +20 -0
- package/dist/types.backup/href-client.d.ts +214 -0
- package/dist/types.backup/index.d.ts +112 -0
- package/dist/types.backup/index.rsc.d.ts +51 -0
- package/dist/types.backup/internal-debug.d.ts +1 -0
- package/dist/types.backup/loader-store.d.ts +193 -0
- package/dist/types.backup/loader.d.ts +18 -0
- package/dist/types.backup/loader.rsc.d.ts +18 -0
- package/dist/types.backup/missing-id-error.d.ts +1 -0
- package/dist/types.backup/outlet-context.d.ts +12 -0
- package/dist/types.backup/outlet-provider.d.ts +12 -0
- package/dist/types.backup/prerender/build-shell-capture.d.ts +104 -0
- package/dist/types.backup/prerender/param-hash.d.ts +6 -0
- package/dist/types.backup/prerender/shell-manifest-key.d.ts +18 -0
- package/dist/types.backup/prerender/store.d.ts +62 -0
- package/dist/types.backup/prerender.d.ts +292 -0
- package/dist/types.backup/redirect-origin.d.ts +55 -0
- package/dist/types.backup/regex-escape.d.ts +6 -0
- package/dist/types.backup/render-error-thrower.d.ts +13 -0
- package/dist/types.backup/response-utils.d.ts +35 -0
- package/dist/types.backup/reverse.d.ts +206 -0
- package/dist/types.backup/root-error-boundary.d.ts +32 -0
- package/dist/types.backup/route-content-wrapper.d.ts +40 -0
- package/dist/types.backup/route-definition/dsl-helpers.d.ts +130 -0
- package/dist/types.backup/route-definition/helper-factories.d.ts +22 -0
- package/dist/types.backup/route-definition/helpers-types.d.ts +392 -0
- package/dist/types.backup/route-definition/index.d.ts +7 -0
- package/dist/types.backup/route-definition/redirect.d.ts +48 -0
- package/dist/types.backup/route-definition/resolve-handler-use.d.ts +19 -0
- package/dist/types.backup/route-definition/use-item-types.d.ts +1 -0
- package/dist/types.backup/route-definition.d.ts +1 -0
- package/dist/types.backup/route-map-builder.d.ts +127 -0
- package/dist/types.backup/route-name.d.ts +27 -0
- package/dist/types.backup/route-types.d.ts +172 -0
- package/dist/types.backup/router/basename.d.ts +10 -0
- package/dist/types.backup/router/content-negotiation.d.ts +91 -0
- package/dist/types.backup/router/debug-manifest.d.ts +7 -0
- package/dist/types.backup/router/error-handling.d.ts +76 -0
- package/dist/types.backup/router/find-match.d.ts +19 -0
- package/dist/types.backup/router/handler-context.d.ts +41 -0
- package/dist/types.backup/router/instrument.d.ts +161 -0
- package/dist/types.backup/router/intercept-resolution.d.ts +79 -0
- package/dist/types.backup/router/lazy-includes.d.ts +26 -0
- package/dist/types.backup/router/loader-resolution.d.ts +63 -0
- package/dist/types.backup/router/logging.d.ts +41 -0
- package/dist/types.backup/router/manifest.d.ts +8 -0
- package/dist/types.backup/router/match-api.d.ts +19 -0
- package/dist/types.backup/router/match-context.d.ts +184 -0
- package/dist/types.backup/router/match-handlers.d.ts +49 -0
- package/dist/types.backup/router/match-middleware/background-revalidation.d.ts +113 -0
- package/dist/types.backup/router/match-middleware/cache-lookup.d.ts +113 -0
- package/dist/types.backup/router/match-middleware/cache-store.d.ts +112 -0
- package/dist/types.backup/router/match-middleware/index.d.ts +80 -0
- package/dist/types.backup/router/match-middleware/intercept-resolution.d.ts +116 -0
- package/dist/types.backup/router/match-middleware/segment-resolution.d.ts +94 -0
- package/dist/types.backup/router/match-pipelines.d.ts +103 -0
- package/dist/types.backup/router/match-result.d.ts +114 -0
- package/dist/types.backup/router/metrics.d.ts +6 -0
- package/dist/types.backup/router/middleware-types.d.ts +74 -0
- package/dist/types.backup/router/middleware.d.ts +116 -0
- package/dist/types.backup/router/navigation-snapshot.d.ts +22 -0
- package/dist/types.backup/router/params-util.d.ts +8 -0
- package/dist/types.backup/router/parse-pattern.d.ts +38 -0
- package/dist/types.backup/router/pattern-matching.d.ts +169 -0
- package/dist/types.backup/router/prefetch-cache-ttl.d.ts +27 -0
- package/dist/types.backup/router/prefetch-limits.d.ts +20 -0
- package/dist/types.backup/router/prerender-match.d.ts +50 -0
- package/dist/types.backup/router/preview-match.d.ts +22 -0
- package/dist/types.backup/router/request-classification.d.ts +104 -0
- package/dist/types.backup/router/revalidation.d.ts +57 -0
- package/dist/types.backup/router/route-snapshot.d.ts +112 -0
- package/dist/types.backup/router/router-context.d.ts +137 -0
- package/dist/types.backup/router/router-interfaces.d.ts +432 -0
- package/dist/types.backup/router/router-options.d.ts +738 -0
- package/dist/types.backup/router/router-registry.d.ts +15 -0
- package/dist/types.backup/router/segment-resolution/fresh.d.ts +55 -0
- package/dist/types.backup/router/segment-resolution/helpers.d.ts +93 -0
- package/dist/types.backup/router/segment-resolution/loader-cache.d.ts +33 -0
- package/dist/types.backup/router/segment-resolution/loader-mask.d.ts +44 -0
- package/dist/types.backup/router/segment-resolution/loader-snapshot.d.ts +90 -0
- package/dist/types.backup/router/segment-resolution/mask-nested.d.ts +53 -0
- package/dist/types.backup/router/segment-resolution/revalidation.d.ts +85 -0
- package/dist/types.backup/router/segment-resolution/static-store.d.ts +17 -0
- package/dist/types.backup/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
- package/dist/types.backup/router/segment-resolution/view-transition-default.d.ts +28 -0
- package/dist/types.backup/router/segment-resolution.d.ts +3 -0
- package/dist/types.backup/router/segment-wrappers.d.ts +53 -0
- package/dist/types.backup/router/state-cookie-name.d.ts +1 -0
- package/dist/types.backup/router/substitute-pattern-params.d.ts +23 -0
- package/dist/types.backup/router/telemetry-otel.d.ts +113 -0
- package/dist/types.backup/router/telemetry.d.ts +215 -0
- package/dist/types.backup/router/timeout.d.ts +68 -0
- package/dist/types.backup/router/tracing.d.ts +125 -0
- package/dist/types.backup/router/trie-matching.d.ts +32 -0
- package/dist/types.backup/router/types.d.ts +98 -0
- package/dist/types.backup/router/url-params.d.ts +26 -0
- package/dist/types.backup/router.d.ts +7 -0
- package/dist/types.backup/rsc/capture-queue.d.ts +6 -0
- package/dist/types.backup/rsc/full-payload.d.ts +22 -0
- package/dist/types.backup/rsc/handler-context.d.ts +31 -0
- package/dist/types.backup/rsc/handler.d.ts +9 -0
- package/dist/types.backup/rsc/helpers.d.ts +213 -0
- package/dist/types.backup/rsc/index.d.ts +17 -0
- package/dist/types.backup/rsc/json-route-result.d.ts +20 -0
- package/dist/types.backup/rsc/loader-fetch.d.ts +14 -0
- package/dist/types.backup/rsc/manifest-init.d.ts +18 -0
- package/dist/types.backup/rsc/nonce.d.ts +28 -0
- package/dist/types.backup/rsc/origin-guard.d.ts +50 -0
- package/dist/types.backup/rsc/progressive-enhancement.d.ts +19 -0
- package/dist/types.backup/rsc/redirect-guard.d.ts +35 -0
- package/dist/types.backup/rsc/response-cache-serve.d.ts +46 -0
- package/dist/types.backup/rsc/response-error.d.ts +19 -0
- package/dist/types.backup/rsc/response-route-handler.d.ts +29 -0
- package/dist/types.backup/rsc/rsc-rendering.d.ts +23 -0
- package/dist/types.backup/rsc/runtime-warnings.d.ts +22 -0
- package/dist/types.backup/rsc/server-action.d.ts +68 -0
- package/dist/types.backup/rsc/shell-build-manifest.d.ts +84 -0
- package/dist/types.backup/rsc/shell-capture-constants.d.ts +27 -0
- package/dist/types.backup/rsc/shell-capture.d.ts +374 -0
- package/dist/types.backup/rsc/shell-serve.d.ts +136 -0
- package/dist/types.backup/rsc/ssr-setup.d.ts +48 -0
- package/dist/types.backup/rsc/transition-gate.d.ts +27 -0
- package/dist/types.backup/rsc/types.d.ts +290 -0
- package/dist/types.backup/runtime-env.d.ts +1 -0
- package/dist/types.backup/search-params.d.ts +125 -0
- package/dist/types.backup/segment-content-promise.d.ts +13 -0
- package/dist/types.backup/segment-fragments.d.ts +56 -0
- package/dist/types.backup/segment-loader-promise.d.ts +22 -0
- package/dist/types.backup/segment-system.d.ts +84 -0
- package/dist/types.backup/serialize.d.ts +164 -0
- package/dist/types.backup/server/context.d.ts +494 -0
- package/dist/types.backup/server/cookie-parse.d.ts +10 -0
- package/dist/types.backup/server/cookie-store.d.ts +107 -0
- package/dist/types.backup/server/fetchable-loader-store.d.ts +20 -0
- package/dist/types.backup/server/handle-store.d.ts +100 -0
- package/dist/types.backup/server/loader-registry.d.ts +32 -0
- package/dist/types.backup/server/request-context.d.ts +596 -0
- package/dist/types.backup/server/root-layout.d.ts +3 -0
- package/dist/types.backup/server.d.ts +15 -0
- package/dist/types.backup/ssr/index.d.ts +233 -0
- package/dist/types.backup/ssr/inject-rsc-eager.d.ts +3 -0
- package/dist/types.backup/ssr/preinit-client-references.d.ts +71 -0
- package/dist/types.backup/ssr/ssr-root.d.ts +69 -0
- package/dist/types.backup/static-handler.d.ts +57 -0
- package/dist/types.backup/testing/cache-status.d.ts +63 -0
- package/dist/types.backup/testing/collect-handle.d.ts +20 -0
- package/dist/types.backup/testing/dispatch.d.ts +123 -0
- package/dist/types.backup/testing/dom.entry.d.ts +15 -0
- package/dist/types.backup/testing/e2e/fixture.d.ts +37 -0
- package/dist/types.backup/testing/e2e/index.d.ts +30 -0
- package/dist/types.backup/testing/e2e/matchers.d.ts +17 -0
- package/dist/types.backup/testing/e2e/page-helpers.d.ts +62 -0
- package/dist/types.backup/testing/e2e/parity.d.ts +111 -0
- package/dist/types.backup/testing/e2e/server.d.ts +35 -0
- package/dist/types.backup/testing/flight-matchers.d.ts +55 -0
- package/dist/types.backup/testing/flight-normalize.d.ts +1 -0
- package/dist/types.backup/testing/flight-tree.d.ts +192 -0
- package/dist/types.backup/testing/flight.d.ts +115 -0
- package/dist/types.backup/testing/flight.entry.d.ts +27 -0
- package/dist/types.backup/testing/generated-routes.d.ts +66 -0
- package/dist/types.backup/testing/index.d.ts +52 -0
- package/dist/types.backup/testing/internal/context.d.ts +225 -0
- package/dist/types.backup/testing/internal/flight-client-globals.d.ts +1 -0
- package/dist/types.backup/testing/internal/seed-vars.d.ts +30 -0
- package/dist/types.backup/testing/render-handler.d.ts +160 -0
- package/dist/types.backup/testing/render-route.d.ts +246 -0
- package/dist/types.backup/testing/run-loader.d.ts +186 -0
- package/dist/types.backup/testing/run-middleware.d.ts +132 -0
- package/dist/types.backup/testing/run-transition-when.d.ts +77 -0
- package/dist/types.backup/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
- package/dist/types.backup/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
- package/dist/types.backup/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
- package/dist/types.backup/testing/vitest-stubs/version.d.ts +1 -0
- package/dist/types.backup/testing/vitest.d.ts +205 -0
- package/dist/types.backup/theme/ThemeProvider.d.ts +13 -0
- package/dist/types.backup/theme/ThemeScript.d.ts +45 -0
- package/dist/types.backup/theme/constants.d.ts +39 -0
- package/dist/types.backup/theme/index.d.ts +29 -0
- package/dist/types.backup/theme/theme-context.d.ts +21 -0
- package/dist/types.backup/theme/theme-script.d.ts +26 -0
- package/dist/types.backup/theme/types.d.ts +162 -0
- package/dist/types.backup/theme/use-theme.d.ts +8 -0
- package/dist/types.backup/types/boundaries.d.ts +93 -0
- package/dist/types.backup/types/cache-types.d.ts +191 -0
- package/dist/types.backup/types/error-types.d.ts +114 -0
- package/dist/types.backup/types/global-namespace.d.ts +90 -0
- package/dist/types.backup/types/handler-context.d.ts +658 -0
- package/dist/types.backup/types/index.d.ts +11 -0
- package/dist/types.backup/types/loader-types.d.ts +182 -0
- package/dist/types.backup/types/request-scope.d.ts +93 -0
- package/dist/types.backup/types/route-config.d.ts +105 -0
- package/dist/types.backup/types/route-entry.d.ts +95 -0
- package/dist/types.backup/types/segments.d.ts +234 -0
- package/dist/types.backup/types.d.ts +1 -0
- package/dist/types.backup/urls/include-helper.d.ts +17 -0
- package/dist/types.backup/urls/include-provider.d.ts +27 -0
- package/dist/types.backup/urls/index.d.ts +6 -0
- package/dist/types.backup/urls/path-helper-types.d.ts +197 -0
- package/dist/types.backup/urls/path-helper.d.ts +12 -0
- package/dist/types.backup/urls/pattern-types.d.ts +166 -0
- package/dist/types.backup/urls/response-types.d.ts +67 -0
- package/dist/types.backup/urls/type-extraction.d.ts +157 -0
- package/dist/types.backup/urls/urls-function.d.ts +24 -0
- package/dist/types.backup/urls.d.ts +1 -0
- package/dist/types.backup/use-loader.d.ts +150 -0
- package/dist/types.backup/vercel/index.d.ts +10 -0
- package/dist/types.backup/vercel/tracing.d.ts +70 -0
- package/dist/types.backup/vite/debug.d.ts +80 -0
- package/dist/types.backup/vite/discovery/bundle-postprocess.d.ts +12 -0
- package/dist/types.backup/vite/discovery/dev-prerender-cache.d.ts +65 -0
- package/dist/types.backup/vite/discovery/discover-routers.d.ts +17 -0
- package/dist/types.backup/vite/discovery/discovery-errors.d.ts +113 -0
- package/dist/types.backup/vite/discovery/gate-state.d.ts +79 -0
- package/dist/types.backup/vite/discovery/prerender-collection.d.ts +24 -0
- package/dist/types.backup/vite/discovery/route-types-writer.d.ts +32 -0
- package/dist/types.backup/vite/discovery/self-gen-tracking.d.ts +22 -0
- package/dist/types.backup/vite/discovery/shell-prerender-phase.d.ts +40 -0
- package/dist/types.backup/vite/discovery/state.d.ts +162 -0
- package/dist/types.backup/vite/discovery/virtual-module-codegen.d.ts +15 -0
- package/dist/types.backup/vite/index.d.ts +11 -0
- package/dist/types.backup/vite/inject-client-debug.d.ts +56 -0
- package/dist/types.backup/vite/plugin-types.d.ts +298 -0
- package/dist/types.backup/vite/plugins/cjs-to-esm.d.ts +6 -0
- package/dist/types.backup/vite/plugins/client-ref-dedup.d.ts +40 -0
- package/dist/types.backup/vite/plugins/client-ref-hashing.d.ts +35 -0
- package/dist/types.backup/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
- package/dist/types.backup/vite/plugins/expose-action-id.d.ts +18 -0
- package/dist/types.backup/vite/plugins/expose-id-utils.d.ts +37 -0
- package/dist/types.backup/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
- package/dist/types.backup/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
- package/dist/types.backup/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
- package/dist/types.backup/vite/plugins/expose-ids/router-transform.d.ts +13 -0
- package/dist/types.backup/vite/plugins/expose-ids/types.d.ts +29 -0
- package/dist/types.backup/vite/plugins/expose-internal-ids.d.ts +6 -0
- package/dist/types.backup/vite/plugins/performance-tracks.d.ts +25 -0
- package/dist/types.backup/vite/plugins/refresh-cmd.d.ts +20 -0
- package/dist/types.backup/vite/plugins/use-cache-transform.d.ts +20 -0
- package/dist/types.backup/vite/plugins/vercel-output.d.ts +85 -0
- package/dist/types.backup/vite/plugins/version-injector.d.ts +21 -0
- package/dist/types.backup/vite/plugins/version-plugin.d.ts +19 -0
- package/dist/types.backup/vite/plugins/virtual-entries.d.ts +36 -0
- package/dist/types.backup/vite/plugins/virtual-stub-plugin.d.ts +7 -0
- package/dist/types.backup/vite/rango.d.ts +29 -0
- package/dist/types.backup/vite/router-discovery.d.ts +23 -0
- package/dist/types.backup/vite/utils/ast-handler-extract.d.ts +64 -0
- package/dist/types.backup/vite/utils/banner.d.ts +2 -0
- package/dist/types.backup/vite/utils/bundle-analysis.d.ts +28 -0
- package/dist/types.backup/vite/utils/client-chunks.d.ts +55 -0
- package/dist/types.backup/vite/utils/directive-prologue.d.ts +16 -0
- package/dist/types.backup/vite/utils/forward-user-plugins.d.ts +37 -0
- package/dist/types.backup/vite/utils/manifest-utils.d.ts +7 -0
- package/dist/types.backup/vite/utils/package-resolution.d.ts +6 -0
- package/dist/types.backup/vite/utils/prerender-utils.d.ts +32 -0
- package/dist/types.backup/vite/utils/shared-utils.d.ts +55 -0
- package/dist/vite/index.js +9695 -3592
- package/package.json +119 -39
- package/skills/api-client/SKILL.md +211 -0
- package/skills/breadcrumbs/SKILL.md +82 -5
- package/skills/bundle-analysis/SKILL.md +159 -0
- package/skills/cache-guide/SKILL.md +232 -34
- package/skills/caching/SKILL.md +375 -19
- package/skills/catalog.json +283 -0
- package/skills/cloudflare/SKILL.md +151 -0
- package/skills/cloudflare/agents/openai.yaml +4 -0
- package/skills/cloudflare/references/d1-and-local-dev.md +131 -0
- package/skills/cloudflare/references/streaming-and-deploy.md +107 -0
- package/skills/cloudflare/references/webhooks-and-crypto.md +147 -0
- package/skills/comparison/SKILL.md +50 -0
- package/skills/comparison/agents/openai.yaml +4 -0
- package/skills/comparison/references/framework-comparison.md +844 -0
- package/skills/composability/SKILL.md +124 -4
- package/skills/css/SKILL.md +76 -0
- package/skills/debug-manifest/SKILL.md +5 -11
- package/skills/defer-hydration/SKILL.md +235 -0
- package/skills/deployment-caching/SKILL.md +176 -0
- package/skills/document-cache/SKILL.md +116 -58
- package/skills/fonts/SKILL.md +1 -1
- package/skills/handler-use/SKILL.md +12 -10
- package/skills/hooks/SKILL.md +73 -699
- package/skills/hooks/data.md +273 -0
- package/skills/hooks/handle-and-actions.md +103 -0
- package/skills/hooks/navigation.md +110 -0
- package/skills/hooks/outlets.md +62 -0
- package/skills/hooks/state.md +228 -0
- package/skills/hooks/urls.md +135 -0
- package/skills/host-router/SKILL.md +129 -27
- package/skills/i18n/SKILL.md +276 -0
- package/skills/intercept/SKILL.md +75 -19
- package/skills/layout/SKILL.md +40 -19
- package/skills/links/SKILL.md +211 -17
- package/skills/loader/SKILL.md +230 -25
- package/skills/middleware/SKILL.md +58 -13
- package/skills/migrate-nextjs/SKILL.md +267 -33
- package/skills/migrate-nextjs/backend-host-swap.md +120 -0
- package/skills/migrate-react-router/SKILL.md +59 -671
- package/skills/migrate-react-router/component-migration.md +196 -0
- package/skills/migrate-react-router/data-and-actions.md +225 -0
- package/skills/migrate-react-router/route-mapping.md +271 -0
- package/skills/mime-routes/SKILL.md +55 -18
- package/skills/observability/SKILL.md +231 -0
- package/skills/parallel/SKILL.md +50 -10
- package/skills/ppr/SKILL.md +904 -0
- package/skills/prerender/SKILL.md +130 -68
- package/skills/rango/SKILL.md +321 -26
- package/skills/react-compiler/SKILL.md +168 -0
- package/skills/response-routes/SKILL.md +172 -52
- package/skills/route/SKILL.md +123 -9
- package/skills/router-setup/SKILL.md +53 -9
- package/skills/scripts/SKILL.md +179 -0
- package/skills/server-actions/SKILL.md +776 -0
- package/skills/shell-manifest/SKILL.md +185 -0
- package/skills/streams-and-websockets/SKILL.md +1 -1
- package/skills/tailwind/SKILL.md +28 -4
- package/skills/testing/SKILL.md +131 -0
- package/skills/testing/bindings.md +103 -0
- package/skills/testing/cache-prerender.md +172 -0
- package/skills/testing/client-components.md +131 -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 +1 -1
- package/skills/typesafety/SKILL.md +45 -628
- package/skills/typesafety/env-and-bindings.md +254 -0
- package/skills/typesafety/generated-files-and-cli.md +342 -0
- package/skills/typesafety/params-and-search.md +153 -0
- package/skills/typesafety/route-types.md +213 -0
- package/skills/use-cache/SKILL.md +121 -15
- package/skills/vercel/SKILL.md +149 -0
- package/skills/view-transitions/SKILL.md +341 -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 +14 -27
- package/src/browser/connection-warmup.ts +134 -0
- package/src/browser/cookie-name.ts +140 -0
- package/src/browser/dev-discovery.ts +66 -0
- package/src/browser/event-controller.ts +400 -168
- 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 +469 -20
- package/src/browser/logging.ts +28 -0
- package/src/browser/merge-segment-loaders.ts +6 -4
- package/src/browser/navigation-bridge.ts +164 -69
- package/src/browser/navigation-client.ts +199 -96
- package/src/browser/navigation-store-handle.ts +38 -0
- package/src/browser/navigation-store.ts +165 -345
- package/src/browser/navigation-transaction.ts +9 -59
- package/src/browser/network-error-handler.ts +34 -7
- package/src/browser/notify-listeners.ts +22 -0
- package/src/browser/partial-update.ts +219 -163
- package/src/browser/prefetch/cache.ts +240 -97
- package/src/browser/prefetch/default-strategy.ts +74 -0
- package/src/browser/prefetch/fetch.ts +317 -51
- package/src/browser/prefetch/invalidation.ts +30 -0
- package/src/browser/prefetch/loader.ts +111 -0
- package/src/browser/prefetch/observer.ts +50 -22
- package/src/browser/prefetch/queue.ts +25 -7
- package/src/browser/prefetch/runtime.ts +6 -0
- package/src/browser/rango-state.ts +177 -114
- package/src/browser/react/Link.tsx +115 -75
- package/src/browser/react/NavigationProvider.tsx +194 -143
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/context.ts +4 -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 +21 -6
- 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 +230 -42
- package/src/browser/scroll-restoration.ts +37 -22
- package/src/browser/segment-reconciler.ts +31 -21
- package/src/browser/segment-structure-assert.ts +2 -2
- package/src/browser/server-action-bridge.ts +262 -65
- package/src/browser/types.ts +132 -47
- package/src/browser/validate-redirect-origin.ts +43 -16
- package/src/build/collect-fallback-refs.ts +107 -0
- package/src/build/generate-manifest.ts +213 -184
- package/src/build/generate-route-types.ts +3 -1
- package/src/build/index.ts +11 -3
- package/src/build/merge-full-manifests.ts +161 -0
- package/src/build/prefix-tree-utils.ts +123 -0
- package/src/build/route-trie.ts +43 -280
- 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 +513 -64
- package/src/build/route-types/param-extraction.ts +6 -3
- package/src/build/route-types/per-module-writer.ts +33 -12
- package/src/build/route-types/router-processing.ts +312 -204
- 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 +32 -29
- package/src/cache/cache-error.ts +104 -0
- package/src/cache/cache-exec-scope.ts +47 -0
- package/src/cache/cache-key-utils.ts +73 -15
- package/src/cache/cache-policy.ts +108 -34
- package/src/cache/cache-runtime.ts +566 -121
- package/src/cache/cache-scope.ts +383 -105
- package/src/cache/cache-tag.ts +149 -0
- package/src/cache/cf/cf-base64.ts +33 -0
- package/src/cache/cf/cf-cache-constants.ts +134 -0
- package/src/cache/cf/cf-cache-store.ts +3028 -391
- package/src/cache/cf/cf-cache-types.ts +417 -0
- package/src/cache/cf/cf-kv-utils.ts +84 -0
- package/src/cache/cf/cf-tag-marker-memo.ts +108 -0
- package/src/cache/cf/cf-zone-purge.ts +101 -0
- package/src/cache/cf/index.ts +11 -16
- package/src/cache/document-cache.ts +184 -53
- package/src/cache/handle-snapshot.ts +92 -1
- package/src/cache/index.ts +32 -20
- package/src/cache/memory-segment-store.ts +286 -37
- package/src/cache/profile-registry.ts +46 -31
- package/src/cache/read-through-swr.ts +66 -16
- package/src/cache/search-params-filter.ts +118 -0
- package/src/cache/segment-codec.ts +80 -25
- package/src/cache/shell-snapshot.ts +516 -0
- package/src/cache/tag-invalidation.ts +230 -0
- package/src/cache/taint.ts +28 -9
- package/src/cache/types.ts +323 -100
- package/src/cache/vercel/index.ts +11 -0
- package/src/cache/vercel/vercel-cache-store.ts +1264 -0
- package/src/client-urls/client-root.tsx +161 -0
- package/src/client-urls/client-urls.ts +665 -0
- package/src/client-urls/navigation.ts +237 -0
- package/src/client-urls/revalidation-protocol.ts +56 -0
- package/src/client-urls/server-projection.ts +563 -0
- package/src/client-urls/types.ts +178 -0
- package/src/client.rsc.tsx +48 -21
- package/src/client.tsx +77 -67
- package/src/cloudflare/index.ts +11 -0
- package/src/cloudflare/tracing.ts +112 -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 +160 -0
- package/src/defer.ts +185 -0
- package/src/deps/ssr.ts +4 -2
- package/src/dev-discovery-protocol.ts +11 -0
- package/src/encode-kv.ts +49 -0
- package/src/errors.ts +44 -4
- package/src/escape-script.ts +52 -0
- package/src/handle.ts +67 -37
- package/src/handles/MetaTags.tsx +24 -53
- package/src/handles/Scripts.tsx +183 -0
- package/src/handles/breadcrumbs.ts +35 -8
- package/src/handles/deferred-resolution.ts +134 -0
- package/src/handles/is-thenable.ts +16 -0
- package/src/handles/meta.ts +14 -40
- package/src/handles/script.ts +244 -0
- package/src/host/cookie-handler.ts +9 -60
- package/src/host/errors.ts +13 -22
- package/src/host/index.ts +9 -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 +105 -12
- package/src/index.ts +102 -14
- package/src/internal-debug.ts +11 -10
- package/src/loader-redirect.tsx +47 -0
- 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 +12 -0
- package/src/outlet-provider.tsx +16 -6
- package/src/prerender/build-shell-capture.ts +453 -0
- package/src/prerender/param-hash.ts +16 -16
- package/src/prerender/shell-manifest-key.ts +20 -0
- package/src/prerender/store.ts +47 -38
- package/src/prerender.ts +81 -13
- package/src/redirect-origin.ts +143 -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 +112 -78
- package/src/route-definition/dsl-helpers.ts +300 -313
- package/src/route-definition/helper-factories.ts +28 -140
- package/src/route-definition/helpers-types.ts +92 -62
- package/src/route-definition/index.ts +1 -2
- package/src/route-definition/redirect.ts +44 -11
- package/src/route-definition/resolve-handler-use.ts +6 -1
- package/src/route-definition/use-item-types.ts +29 -0
- package/src/route-map-builder.ts +102 -74
- package/src/route-types.ts +19 -46
- package/src/router/basename.ts +14 -0
- package/src/router/content-negotiation.ts +120 -30
- package/src/router/error-handling.ts +110 -29
- package/src/router/find-match.ts +129 -30
- package/src/router/handler-context.ts +41 -57
- package/src/router/instrument.ts +401 -0
- package/src/router/intercept-resolution.ts +98 -21
- package/src/router/lazy-includes.ts +82 -58
- package/src/router/loader-resolution.ts +401 -85
- package/src/router/logging.ts +0 -6
- package/src/router/manifest.ts +74 -40
- package/src/router/match-api.ts +91 -55
- package/src/router/match-context.ts +0 -22
- package/src/router/match-handlers.ts +268 -171
- package/src/router/match-middleware/background-revalidation.ts +40 -24
- package/src/router/match-middleware/cache-lookup.ts +316 -302
- package/src/router/match-middleware/cache-store.ts +134 -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 +76 -79
- package/src/router/metrics.ts +17 -36
- package/src/router/middleware-types.ts +20 -110
- package/src/router/middleware.ts +275 -173
- package/src/router/navigation-snapshot.ts +51 -60
- package/src/router/params-util.ts +23 -0
- package/src/router/parse-pattern.ts +115 -0
- package/src/router/pattern-matching.ts +134 -154
- package/src/router/prefetch-cache-ttl.ts +51 -0
- package/src/router/prefetch-default.ts +59 -0
- package/src/router/prefetch-limits.ts +37 -0
- package/src/router/prerender-match.ts +159 -69
- package/src/router/preview-match.ts +6 -2
- package/src/router/request-classification.ts +50 -69
- package/src/router/revalidation.ts +146 -83
- package/src/router/route-snapshot.ts +14 -3
- package/src/router/route-trie-builder.ts +334 -0
- package/src/router/router-context.ts +6 -29
- package/src/router/router-interfaces.ts +168 -38
- package/src/router/router-options.ts +235 -11
- package/src/router/router-registry.ts +2 -5
- package/src/router/segment-resolution/fresh.ts +163 -88
- package/src/router/segment-resolution/helpers.ts +96 -18
- package/src/router/segment-resolution/loader-cache.ts +187 -39
- package/src/router/segment-resolution/loader-mask.ts +60 -0
- package/src/router/segment-resolution/loader-snapshot.ts +259 -0
- package/src/router/segment-resolution/mask-nested.ts +99 -0
- package/src/router/segment-resolution/revalidation.ts +316 -321
- package/src/router/segment-resolution/static-store.ts +55 -15
- package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
- package/src/router/segment-resolution/view-transition-default.ts +60 -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 +75 -0
- package/src/router/telemetry-otel.ts +171 -200
- package/src/router/telemetry.ts +106 -20
- package/src/router/timeout.ts +53 -22
- package/src/router/tracing.ts +235 -0
- package/src/router/transition-when.ts +76 -0
- package/src/router/trie-matching.ts +170 -64
- package/src/router/types.ts +9 -63
- package/src/router/url-params.ts +13 -5
- package/src/router.ts +248 -77
- package/src/rsc/capture-queue.ts +218 -0
- package/src/rsc/full-payload.ts +77 -0
- package/src/rsc/handler-context.ts +4 -2
- package/src/rsc/handler.ts +562 -284
- package/src/rsc/helpers.ts +179 -9
- package/src/rsc/index.ts +2 -5
- package/src/rsc/json-route-result.ts +38 -0
- package/src/rsc/loader-fetch.ts +116 -40
- package/src/rsc/manifest-init.ts +55 -56
- package/src/rsc/nonce.ts +10 -1
- package/src/rsc/origin-guard.ts +39 -25
- package/src/rsc/progressive-enhancement.ts +377 -84
- package/src/rsc/redirect-guard.ts +102 -0
- package/src/rsc/render-pipeline.ts +611 -0
- package/src/rsc/response-cache-serve.ts +259 -0
- package/src/rsc/response-error.ts +79 -12
- package/src/rsc/response-route-handler.ts +73 -212
- package/src/rsc/routine-plan.ts +359 -0
- package/src/rsc/rsc-rendering.ts +1624 -171
- package/src/rsc/runtime-warnings.ts +23 -10
- package/src/rsc/server-action.ts +420 -139
- package/src/rsc/shell-build-manifest.ts +336 -0
- package/src/rsc/shell-capture-constants.ts +45 -0
- package/src/rsc/shell-capture.ts +2063 -0
- package/src/rsc/shell-serve.ts +337 -0
- package/src/rsc/ssr-setup.ts +111 -16
- package/src/rsc/stream-idle.ts +137 -0
- package/src/rsc/transition-gate.ts +86 -0
- package/src/rsc/types.ts +91 -5
- package/src/runtime-env.ts +18 -0
- package/src/search-params.ts +35 -30
- package/src/segment-fragments.ts +165 -0
- package/src/segment-loader-promise.ts +49 -4
- package/src/segment-system.tsx +441 -153
- package/src/serialize.ts +243 -0
- package/src/server/context.ts +416 -55
- package/src/server/cookie-parse.ts +32 -0
- package/src/server/cookie-store.ts +162 -15
- package/src/server/handle-store.ts +190 -70
- package/src/server/loader-registry.ts +33 -42
- package/src/server/request-context.ts +805 -177
- package/src/server.ts +7 -2
- package/src/ssr/index.tsx +631 -183
- package/src/ssr/inject-rsc-eager.ts +167 -0
- package/src/ssr/preinit-client-references.ts +106 -0
- package/src/ssr/ssr-root.tsx +262 -0
- package/src/static-handler.ts +28 -15
- package/src/testing/cache-status.ts +162 -0
- package/src/testing/collect-handle.ts +46 -0
- package/src/testing/dispatch.ts +951 -0
- package/src/testing/dom.entry.ts +22 -0
- package/src/testing/e2e/fixture.ts +188 -0
- package/src/testing/e2e/index.ts +147 -0
- package/src/testing/e2e/matchers.ts +35 -0
- package/src/testing/e2e/page-helpers.ts +319 -0
- package/src/testing/e2e/parity.ts +400 -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 +121 -0
- package/src/testing/internal/context.ts +380 -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 +371 -0
- package/src/testing/render-route.tsx +667 -0
- package/src/testing/run-loader.ts +423 -0
- package/src/testing/run-middleware.ts +219 -0
- package/src/testing/run-transition-when.ts +197 -0
- package/src/testing/shell-status.ts +206 -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 +56 -84
- 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 +15 -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 +121 -30
- package/src/types/index.ts +3 -10
- package/src/types/loader-types.ts +38 -7
- package/src/types/request-scope.ts +8 -22
- package/src/types/route-config.ts +20 -52
- package/src/types/route-entry.ts +3 -6
- package/src/types/segments.ts +147 -14
- package/src/urls/include-helper.ts +38 -64
- package/src/urls/include-provider.ts +71 -0
- package/src/urls/index.ts +2 -11
- package/src/urls/path-helper-types.ts +76 -24
- package/src/urls/path-helper.ts +30 -110
- package/src/urls/pattern-types.ts +101 -19
- package/src/urls/response-types.ts +20 -19
- package/src/urls/type-extraction.ts +98 -154
- package/src/urls/urls-function.ts +1 -19
- package/src/use-loader.tsx +355 -109
- package/src/vercel/index.ts +11 -0
- package/src/vercel/tracing.ts +89 -0
- package/src/vite/debug.ts +102 -3
- package/src/vite/discovery/bundle-postprocess.ts +18 -14
- package/src/vite/discovery/client-urls-projection.ts +322 -0
- package/src/vite/discovery/dev-prerender-cache.ts +117 -0
- package/src/vite/discovery/discover-routers.ts +178 -151
- 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 +125 -70
- package/src/vite/discovery/route-types-writer.ts +40 -84
- package/src/vite/discovery/self-gen-tracking.ts +27 -1
- package/src/vite/discovery/shell-prerender-phase.ts +397 -0
- package/src/vite/discovery/state.ts +104 -6
- package/src/vite/discovery/virtual-module-codegen.ts +226 -87
- package/src/vite/encryption-key.ts +29 -0
- package/src/vite/index.ts +12 -0
- package/src/vite/inject-client-debug.ts +88 -0
- package/src/vite/plugin-types.ts +243 -10
- 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 +50 -97
- 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 +551 -486
- package/src/vite/plugins/performance-tracks.ts +25 -22
- package/src/vite/plugins/refresh-cmd.ts +1 -1
- package/src/vite/plugins/server-ref-hashing.ts +74 -0
- package/src/vite/plugins/server-reference-pattern.ts +10 -0
- package/src/vite/plugins/use-cache-transform.ts +73 -83
- package/src/vite/plugins/vercel-output.ts +384 -0
- package/src/vite/plugins/version-injector.ts +39 -29
- package/src/vite/plugins/version-plugin.ts +45 -40
- package/src/vite/plugins/virtual-entries.ts +193 -30
- package/src/vite/rango.ts +240 -128
- package/src/vite/router-discovery.ts +1518 -174
- package/src/vite/utils/ast-handler-extract.ts +26 -35
- package/src/vite/utils/bundle-analysis.ts +10 -15
- package/src/vite/utils/client-chunks.ts +184 -0
- package/src/vite/utils/directive-prologue.ts +40 -0
- package/src/vite/utils/forward-user-plugins.ts +171 -0
- package/src/vite/utils/manifest-utils.ts +1 -59
- package/src/vite/utils/package-resolution.ts +2 -73
- package/src/vite/utils/prerender-utils.ts +96 -49
- package/src/vite/utils/shared-utils.ts +156 -43
- 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
|
@@ -11,12 +11,19 @@ import {
|
|
|
11
11
|
getContext,
|
|
12
12
|
getNamePrefix,
|
|
13
13
|
getUrlPrefix,
|
|
14
|
+
requireDslContext,
|
|
15
|
+
stampStaticDefScope,
|
|
14
16
|
type EntryData,
|
|
17
|
+
type EntryPropDatas,
|
|
18
|
+
type EntryPropSegments,
|
|
19
|
+
type HelperContext,
|
|
15
20
|
type InterceptEntry,
|
|
21
|
+
type InterceptConfig,
|
|
16
22
|
} from "../server/context";
|
|
17
23
|
import { invariant } from "../errors";
|
|
24
|
+
import { validateUserRouteName } from "../route-name.js";
|
|
18
25
|
import { isCachedFunction } from "../cache/taint.js";
|
|
19
|
-
import {
|
|
26
|
+
import { RangoContext } from "../server/context";
|
|
20
27
|
import { isStaticHandler } from "../static-handler.js";
|
|
21
28
|
import RootLayout from "../server/root-layout";
|
|
22
29
|
import type {
|
|
@@ -31,13 +38,13 @@ import type {
|
|
|
31
38
|
ErrorBoundaryItem,
|
|
32
39
|
NotFoundBoundaryItem,
|
|
33
40
|
LayoutItem,
|
|
34
|
-
WhenItem,
|
|
35
41
|
CacheItem,
|
|
36
42
|
TransitionItem,
|
|
37
43
|
UseItems,
|
|
38
44
|
} from "../route-types.js";
|
|
39
45
|
import type { RouteHelpers } from "./helpers-types.js";
|
|
40
46
|
import { resolveHandlerUse, mergeHandlerUse } from "./resolve-handler-use.js";
|
|
47
|
+
import { ALL_USE_ITEM_TYPES } from "./use-item-types.js";
|
|
41
48
|
|
|
42
49
|
/**
|
|
43
50
|
* Check if an item contains routes (directly or inside nested structures like cache).
|
|
@@ -61,16 +68,105 @@ const hasRoutesInItem = (item: AllUseItems): boolean => {
|
|
|
61
68
|
return false;
|
|
62
69
|
};
|
|
63
70
|
|
|
71
|
+
/**
|
|
72
|
+
* Fresh empty collections shared by every from-scratch segment entry. Returns
|
|
73
|
+
* new arrays/objects per call so no two entries share mutable references.
|
|
74
|
+
* mountPath is intentionally NOT included here — each call site adds it from
|
|
75
|
+
* getUrlPrefix() where applicable: the route() and transition() helpers add
|
|
76
|
+
* none, while path() (which also builds a `type: "route"` entry) and the
|
|
77
|
+
* structural helpers (layout/cache/middleware/parallel) do.
|
|
78
|
+
*/
|
|
79
|
+
const emptySegmentBase = (): EntryPropDatas &
|
|
80
|
+
EntryPropSegments & { loading: undefined } => ({
|
|
81
|
+
loading: undefined,
|
|
82
|
+
middleware: [],
|
|
83
|
+
revalidate: [],
|
|
84
|
+
errorBoundary: [],
|
|
85
|
+
notFoundBoundary: [],
|
|
86
|
+
layout: [],
|
|
87
|
+
parallel: {},
|
|
88
|
+
intercept: [],
|
|
89
|
+
loader: [],
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Run a children/use callback as a nested scope, flatten the result, and assert
|
|
94
|
+
* every item is a valid use item. `kind` preserves the existing error wording
|
|
95
|
+
* ("use()" vs "children" callback).
|
|
96
|
+
*/
|
|
97
|
+
function runAndValidateUseItems(
|
|
98
|
+
store: ReturnType<typeof getContext>,
|
|
99
|
+
namespace: string,
|
|
100
|
+
entry: EntryData,
|
|
101
|
+
cb: () => any,
|
|
102
|
+
label: string,
|
|
103
|
+
kind: "use" | "children",
|
|
104
|
+
): AllUseItems[] {
|
|
105
|
+
const result = store.run(namespace, entry, cb)?.flat(3);
|
|
106
|
+
return validateUseItems(result, namespace, label, kind);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** Assert an already-invoked, flattened callback result is a use-item array. */
|
|
110
|
+
function validateUseItems(
|
|
111
|
+
result: any,
|
|
112
|
+
namespace: string,
|
|
113
|
+
label: string,
|
|
114
|
+
kind: "use" | "children",
|
|
115
|
+
): AllUseItems[] {
|
|
116
|
+
invariant(
|
|
117
|
+
Array.isArray(result) && result.every((item) => isValidUseItem(item)),
|
|
118
|
+
`${label}() ${kind === "use" ? "use()" : "children"} callback must return an array of use items [${namespace}]`,
|
|
119
|
+
);
|
|
120
|
+
return result as AllUseItems[];
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/** True when a children/use result contains no routes (directly or nested). */
|
|
124
|
+
const isOrphan = (result: AllUseItems[]): boolean =>
|
|
125
|
+
!result.some((item) => item != null && hasRoutesInItem(item));
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Register a routeless structural entry as an orphan sibling: clear its parent
|
|
129
|
+
* pointer so it leaves the middleware/parent-pointer chain (LOAD-BEARING — see
|
|
130
|
+
* docs/tree-structure.md) and push it onto the parent's layout[] so it renders
|
|
131
|
+
* as a wrapper. Used by cache()/middleware()/transition(); layout() runs extra
|
|
132
|
+
* validation and registers inline.
|
|
133
|
+
*/
|
|
134
|
+
const attachOrphanSibling = (
|
|
135
|
+
parent: EntryData | null,
|
|
136
|
+
entry: EntryData,
|
|
137
|
+
): void => {
|
|
138
|
+
entry.parent = null;
|
|
139
|
+
if (parent && "layout" in parent) parent.layout.push(entry);
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Run `fn` with `ctx.parent` temporarily redirected to `temp` — a satellite
|
|
144
|
+
* entry that captures the attachments declared by a use() callback — restoring
|
|
145
|
+
* the original parent afterward, including on throw. loader()/intercept() each
|
|
146
|
+
* build their own tempParent shape (intercept keeps a loading get/set accessor
|
|
147
|
+
* and a captured-layouts array); this only centralizes the save/restore.
|
|
148
|
+
*/
|
|
149
|
+
function withParent<T>(ctx: HelperContext, temp: EntryData, fn: () => T): T {
|
|
150
|
+
const original = ctx.parent;
|
|
151
|
+
ctx.parent = temp;
|
|
152
|
+
try {
|
|
153
|
+
return fn();
|
|
154
|
+
} finally {
|
|
155
|
+
ctx.parent = original;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
64
159
|
const revalidate: RouteHelpers<any, any>["revalidate"] = (fn) => {
|
|
65
|
-
const ctx =
|
|
66
|
-
|
|
160
|
+
const { store, ctx } = requireDslContext(
|
|
161
|
+
"revalidate() must be called inside urls()",
|
|
162
|
+
);
|
|
67
163
|
|
|
68
164
|
// Attach to last entry in stack
|
|
69
165
|
const parent = ctx.parent;
|
|
70
166
|
if (!parent || !("revalidate" in parent)) {
|
|
71
167
|
invariant(false, "No parent entry available for revalidate()");
|
|
72
168
|
}
|
|
73
|
-
const name = `$${
|
|
169
|
+
const name = `$${store.getNextIndex("revalidate")}`;
|
|
74
170
|
parent.revalidate.push(fn);
|
|
75
171
|
return { name, type: "revalidate" } as RevalidateItem;
|
|
76
172
|
};
|
|
@@ -108,15 +204,16 @@ const revalidate: RouteHelpers<any, any>["revalidate"] = (fn) => {
|
|
|
108
204
|
* ```
|
|
109
205
|
*/
|
|
110
206
|
const errorBoundary: RouteHelpers<any, any>["errorBoundary"] = (fallback) => {
|
|
111
|
-
const ctx =
|
|
112
|
-
|
|
207
|
+
const { store, ctx } = requireDslContext(
|
|
208
|
+
"errorBoundary() must be called inside urls()",
|
|
209
|
+
);
|
|
113
210
|
|
|
114
211
|
// Attach to parent entry in stack
|
|
115
212
|
const parent = ctx.parent;
|
|
116
213
|
if (!parent || !("errorBoundary" in parent)) {
|
|
117
214
|
invariant(false, "No parent entry available for errorBoundary()");
|
|
118
215
|
}
|
|
119
|
-
const name = `$${
|
|
216
|
+
const name = `$${store.getNextIndex("errorBoundary")}`;
|
|
120
217
|
parent.errorBoundary.push(fallback);
|
|
121
218
|
return { name, type: "errorBoundary" } as ErrorBoundaryItem;
|
|
122
219
|
};
|
|
@@ -155,46 +252,20 @@ const errorBoundary: RouteHelpers<any, any>["errorBoundary"] = (fallback) => {
|
|
|
155
252
|
const notFoundBoundary: RouteHelpers<any, any>["notFoundBoundary"] = (
|
|
156
253
|
fallback,
|
|
157
254
|
) => {
|
|
158
|
-
const ctx =
|
|
159
|
-
|
|
255
|
+
const { store, ctx } = requireDslContext(
|
|
256
|
+
"notFoundBoundary() must be called inside urls()",
|
|
257
|
+
);
|
|
160
258
|
|
|
161
259
|
// Attach to parent entry in stack
|
|
162
260
|
const parent = ctx.parent;
|
|
163
261
|
if (!parent || !("notFoundBoundary" in parent)) {
|
|
164
262
|
invariant(false, "No parent entry available for notFoundBoundary()");
|
|
165
263
|
}
|
|
166
|
-
const name = `$${
|
|
264
|
+
const name = `$${store.getNextIndex("notFoundBoundary")}`;
|
|
167
265
|
parent.notFoundBoundary.push(fallback);
|
|
168
266
|
return { name, type: "notFoundBoundary" } as NotFoundBoundaryItem;
|
|
169
267
|
};
|
|
170
268
|
|
|
171
|
-
/**
|
|
172
|
-
* When helper - defines a condition for intercept activation
|
|
173
|
-
*
|
|
174
|
-
* Only valid inside intercept() use() callback. The when() function
|
|
175
|
-
* is captured by the intercept and stored in its `when` array.
|
|
176
|
-
* During soft navigation, all when() conditions must return true
|
|
177
|
-
* for the intercept to activate.
|
|
178
|
-
*/
|
|
179
|
-
const when: RouteHelpers<any, any>["when"] = (fn) => {
|
|
180
|
-
const ctx = getContext().getStore();
|
|
181
|
-
if (!ctx) throw new Error("when() must be called inside intercept()");
|
|
182
|
-
|
|
183
|
-
// The when() function needs to be captured by the intercept's tempParent
|
|
184
|
-
// which should have a `when` array. If not present, we're not inside intercept()
|
|
185
|
-
const parent = ctx.parent as any;
|
|
186
|
-
if (!parent || !("when" in parent)) {
|
|
187
|
-
invariant(
|
|
188
|
-
false,
|
|
189
|
-
"when() can only be used inside intercept() use() callback",
|
|
190
|
-
);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
const name = `$${getContext().getNextIndex("when")}`;
|
|
194
|
-
parent.when.push(fn);
|
|
195
|
-
return { name, type: "when" } as WhenItem;
|
|
196
|
-
};
|
|
197
|
-
|
|
198
269
|
/**
|
|
199
270
|
* Cache helper - defines caching configuration for segments
|
|
200
271
|
*
|
|
@@ -205,21 +276,21 @@ const when: RouteHelpers<any, any>["when"] = (fn) => {
|
|
|
205
276
|
* Supports these call signatures:
|
|
206
277
|
* - cache() - no args, uses app-level defaults (for loader caching)
|
|
207
278
|
* - cache(() => [...]) - wraps children with app-level defaults
|
|
208
|
-
* - cache('profileName') - uses a named cache profile
|
|
209
|
-
* - cache('profileName', () => [...]) - named profile with children
|
|
210
279
|
* - cache({ ttl: 60 }, () => [...]) - with explicit options
|
|
280
|
+
*
|
|
281
|
+
* Named cache profiles are applied via the `"use cache: <profile>"` directive,
|
|
282
|
+
* not a `cache("profileName")` form in the route tree.
|
|
211
283
|
*/
|
|
212
284
|
const cache: RouteHelpers<any, any>["cache"] = (
|
|
213
285
|
optionsOrChildren?:
|
|
214
286
|
| PartialCacheOptions
|
|
215
287
|
| false
|
|
216
|
-
| string
|
|
217
288
|
| (() => UseItems<AllUseItems>),
|
|
218
289
|
maybeChildren?: () => UseItems<AllUseItems>,
|
|
219
290
|
) => {
|
|
220
|
-
const store =
|
|
221
|
-
|
|
222
|
-
|
|
291
|
+
const { store, ctx } = requireDslContext(
|
|
292
|
+
"cache() must be called inside urls()",
|
|
293
|
+
);
|
|
223
294
|
|
|
224
295
|
// Handle overloaded signature
|
|
225
296
|
let options: PartialCacheOptions | false;
|
|
@@ -229,18 +300,6 @@ const cache: RouteHelpers<any, any>["cache"] = (
|
|
|
229
300
|
// cache() - no args, use defaults
|
|
230
301
|
options = {};
|
|
231
302
|
children = undefined;
|
|
232
|
-
} else if (typeof optionsOrChildren === "string") {
|
|
233
|
-
// cache('profileName') or cache('profileName', () => [...])
|
|
234
|
-
// Resolve from context-scoped profiles (set per-router via HelperContext).
|
|
235
|
-
const ctxStore = RSCRouterContext.getStore();
|
|
236
|
-
const profile = ctxStore?.cacheProfiles?.[optionsOrChildren];
|
|
237
|
-
invariant(
|
|
238
|
-
profile,
|
|
239
|
-
`cache("${optionsOrChildren}"): unknown cache profile. ` +
|
|
240
|
-
`Define it in createRouter({ cacheProfiles: { "${optionsOrChildren}": { ttl: ... } } }).`,
|
|
241
|
-
);
|
|
242
|
-
options = { ttl: profile.ttl, swr: profile.swr, tags: profile.tags };
|
|
243
|
-
children = maybeChildren;
|
|
244
303
|
} else if (typeof optionsOrChildren === "function") {
|
|
245
304
|
// cache(() => [...]) - use empty options (will use defaults)
|
|
246
305
|
options = {};
|
|
@@ -271,26 +330,18 @@ const cache: RouteHelpers<any, any>["cache"] = (
|
|
|
271
330
|
// Create orphan cache entry (like orphan layout)
|
|
272
331
|
// Subsequent siblings in the same array will attach to this entry
|
|
273
332
|
const namespace = `${ctx.namespace}.${cacheIndex}`;
|
|
274
|
-
const
|
|
333
|
+
const urlPrefix = getUrlPrefix();
|
|
275
334
|
|
|
276
335
|
const entry = {
|
|
336
|
+
...emptySegmentBase(),
|
|
277
337
|
id: namespace,
|
|
278
338
|
shortCode: store.getShortCode("cache"),
|
|
279
339
|
type: "cache",
|
|
280
340
|
parent: parent, // link to current parent for hierarchy
|
|
281
341
|
cache: cacheConfig,
|
|
282
342
|
handler: RootLayout,
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
revalidate: [],
|
|
286
|
-
errorBoundary: [],
|
|
287
|
-
notFoundBoundary: [],
|
|
288
|
-
layout: [],
|
|
289
|
-
parallel: {},
|
|
290
|
-
intercept: [],
|
|
291
|
-
loader: [],
|
|
292
|
-
...(cacheUrlPrefix ? { mountPath: cacheUrlPrefix } : {}),
|
|
293
|
-
} as EntryData;
|
|
343
|
+
...(urlPrefix ? { mountPath: urlPrefix } : {}),
|
|
344
|
+
} satisfies EntryData;
|
|
294
345
|
|
|
295
346
|
// Attach to parent's layout array (cache entries are structural like layouts)
|
|
296
347
|
if (parent && "layout" in parent) {
|
|
@@ -304,10 +355,10 @@ const cache: RouteHelpers<any, any>["cache"] = (
|
|
|
304
355
|
return { name: namespace, type: "cache" } as CacheItem;
|
|
305
356
|
}
|
|
306
357
|
|
|
307
|
-
// Inside a loader() use() callback, only the direct form — cache()/cache(opts)
|
|
308
|
-
//
|
|
309
|
-
//
|
|
310
|
-
//
|
|
358
|
+
// Inside a loader() use() callback, only the direct form — cache()/cache(opts)
|
|
359
|
+
// — writes cache config to the loader entry. The wrapper form creates a
|
|
360
|
+
// structural cache boundary with its own children scope, which has no effect
|
|
361
|
+
// on the loader and would silently no-op.
|
|
311
362
|
invariant(
|
|
312
363
|
!(ctx.parent && (ctx.parent as any).type === "loader"),
|
|
313
364
|
"cache() wrapper form is not valid inside loader() use(). Use cache({...}) without children to configure the loader's cache.",
|
|
@@ -317,9 +368,10 @@ const cache: RouteHelpers<any, any>["cache"] = (
|
|
|
317
368
|
const namespace = `${ctx.namespace}.${cacheIndex}`;
|
|
318
369
|
const cacheShortCode = store.getShortCode("cache");
|
|
319
370
|
|
|
320
|
-
const
|
|
371
|
+
const urlPrefix = getUrlPrefix();
|
|
321
372
|
|
|
322
373
|
const entry = {
|
|
374
|
+
...emptySegmentBase(),
|
|
323
375
|
id: namespace,
|
|
324
376
|
shortCode: cacheShortCode,
|
|
325
377
|
type: "cache",
|
|
@@ -327,40 +379,22 @@ const cache: RouteHelpers<any, any>["cache"] = (
|
|
|
327
379
|
cache: cacheConfig,
|
|
328
380
|
// Cache entries render like layouts (with Outlet as default handler)
|
|
329
381
|
handler: RootLayout, // RootLayout just renders <Outlet />
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
revalidate: [],
|
|
333
|
-
errorBoundary: [],
|
|
334
|
-
notFoundBoundary: [],
|
|
335
|
-
layout: [],
|
|
336
|
-
parallel: {},
|
|
337
|
-
intercept: [],
|
|
338
|
-
loader: [],
|
|
339
|
-
...(cacheUrlPrefix2 ? { mountPath: cacheUrlPrefix2 } : {}),
|
|
340
|
-
} as EntryData;
|
|
382
|
+
...(urlPrefix ? { mountPath: urlPrefix } : {}),
|
|
383
|
+
} satisfies EntryData;
|
|
341
384
|
|
|
342
385
|
// Run children with cache entry as parent
|
|
343
|
-
const result =
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
386
|
+
const result = runAndValidateUseItems(
|
|
387
|
+
store,
|
|
388
|
+
namespace,
|
|
389
|
+
entry,
|
|
390
|
+
children,
|
|
391
|
+
"cache",
|
|
392
|
+
"children",
|
|
348
393
|
);
|
|
349
394
|
|
|
350
|
-
//
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
Array.isArray(result) &&
|
|
354
|
-
result.some((item) => hasRoutesInItem(item));
|
|
355
|
-
|
|
356
|
-
if (!hasRoutes) {
|
|
357
|
-
const parent = ctx.parent;
|
|
358
|
-
if (parent && "layout" in parent) {
|
|
359
|
-
// Attach to parent's layout array (cache entries are structural like layouts)
|
|
360
|
-
entry.parent = null;
|
|
361
|
-
parent.layout.push(entry);
|
|
362
|
-
}
|
|
363
|
-
}
|
|
395
|
+
// Cache entries are structural like layouts: with no routes inside, register
|
|
396
|
+
// as an orphan sibling.
|
|
397
|
+
if (isOrphan(result)) attachOrphanSibling(ctx.parent, entry);
|
|
364
398
|
|
|
365
399
|
return { name: namespace, type: "cache", uses: result } as CacheItem;
|
|
366
400
|
};
|
|
@@ -406,9 +440,9 @@ const middleware: RouteHelpers<any, any>["middleware"] = (...args: any[]) => {
|
|
|
406
440
|
}
|
|
407
441
|
}
|
|
408
442
|
|
|
409
|
-
const store =
|
|
410
|
-
|
|
411
|
-
|
|
443
|
+
const { store, ctx } = requireDslContext(
|
|
444
|
+
"middleware() must be called inside urls()",
|
|
445
|
+
);
|
|
412
446
|
|
|
413
447
|
if (!children) {
|
|
414
448
|
// Sibling mode: attach to parent entry
|
|
@@ -427,22 +461,15 @@ const middleware: RouteHelpers<any, any>["middleware"] = (...args: any[]) => {
|
|
|
427
461
|
|
|
428
462
|
const urlPrefix = getUrlPrefix();
|
|
429
463
|
const entry = {
|
|
464
|
+
...emptySegmentBase(),
|
|
430
465
|
id: namespace,
|
|
431
466
|
shortCode: store.getShortCode("layout"),
|
|
432
467
|
type: "layout",
|
|
433
468
|
parent: ctx.parent,
|
|
434
469
|
handler: RootLayout,
|
|
435
|
-
loading: undefined,
|
|
436
470
|
middleware: [...fns],
|
|
437
|
-
revalidate: [],
|
|
438
|
-
errorBoundary: [],
|
|
439
|
-
notFoundBoundary: [],
|
|
440
|
-
layout: [],
|
|
441
|
-
parallel: {},
|
|
442
|
-
intercept: [],
|
|
443
|
-
loader: [],
|
|
444
471
|
...(urlPrefix ? { mountPath: urlPrefix } : {}),
|
|
445
|
-
}
|
|
472
|
+
} satisfies EntryData;
|
|
446
473
|
|
|
447
474
|
// Run children callback. If the second arg was actually a middleware fn
|
|
448
475
|
// (old variadic form: middleware(mw1, mw2)), this will return a non-array
|
|
@@ -455,25 +482,14 @@ const middleware: RouteHelpers<any, any>["middleware"] = (...args: any[]) => {
|
|
|
455
482
|
"To pass multiple middleware, use middleware([fn1, fn2]).",
|
|
456
483
|
);
|
|
457
484
|
|
|
458
|
-
const result =
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
485
|
+
const result = validateUseItems(
|
|
486
|
+
rawResult.flat(3),
|
|
487
|
+
namespace,
|
|
488
|
+
"middleware",
|
|
489
|
+
"children",
|
|
463
490
|
);
|
|
464
491
|
|
|
465
|
-
|
|
466
|
-
result &&
|
|
467
|
-
Array.isArray(result) &&
|
|
468
|
-
result.some((item) => item != null && hasRoutesInItem(item));
|
|
469
|
-
|
|
470
|
-
if (!hasRoutes) {
|
|
471
|
-
const parent = ctx.parent;
|
|
472
|
-
if (parent && "layout" in parent) {
|
|
473
|
-
entry.parent = null;
|
|
474
|
-
parent.layout.push(entry);
|
|
475
|
-
}
|
|
476
|
-
}
|
|
492
|
+
if (isOrphan(result)) attachOrphanSibling(ctx.parent, entry);
|
|
477
493
|
|
|
478
494
|
return {
|
|
479
495
|
name: namespace,
|
|
@@ -482,10 +498,26 @@ const middleware: RouteHelpers<any, any>["middleware"] = (...args: any[]) => {
|
|
|
482
498
|
} as MiddlewareItem;
|
|
483
499
|
};
|
|
484
500
|
|
|
501
|
+
// Slot names become part of segment ids: a parallel/intercept slot is encoded
|
|
502
|
+
// as `${shortCode}.${slotName}`, and loader segments append `D${index}.${loaderId}`.
|
|
503
|
+
// A "." in the slot name collides with that separator -- loaderParentId
|
|
504
|
+
// (segment-system.tsx) strips from the FIRST `D<index>.`, so a name like
|
|
505
|
+
// "@D3.foo" is mis-cut to "@" and the loader's data is silently dropped. Reject
|
|
506
|
+
// the dot at definition time so the failure is loud, not a corrupted tree at
|
|
507
|
+
// runtime. (A bare "D" without a trailing dot -- e.g. "@Detail" -- is fine.)
|
|
508
|
+
function assertValidSlotName(slotName: string): void {
|
|
509
|
+
invariant(
|
|
510
|
+
!slotName.includes("."),
|
|
511
|
+
`Slot name "${slotName}" must not contain ".". The dot is a reserved ` +
|
|
512
|
+
`segment-id separator; a name like "@D3.foo" corrupts loader segment-id ` +
|
|
513
|
+
`parsing and silently drops the loader's data. Rename the slot.`,
|
|
514
|
+
);
|
|
515
|
+
}
|
|
516
|
+
|
|
485
517
|
const parallel: RouteHelpers<any, any>["parallel"] = (slots, use) => {
|
|
486
|
-
const store =
|
|
487
|
-
|
|
488
|
-
|
|
518
|
+
const { store, ctx } = requireDslContext(
|
|
519
|
+
"parallel() must be called inside urls()",
|
|
520
|
+
);
|
|
489
521
|
|
|
490
522
|
if (!ctx.parent || !ctx.parent?.parallel) {
|
|
491
523
|
invariant(false, "No parent entry available for parallel()");
|
|
@@ -497,6 +529,7 @@ const parallel: RouteHelpers<any, any>["parallel"] = (slots, use) => {
|
|
|
497
529
|
);
|
|
498
530
|
|
|
499
531
|
const slotNames = Object.keys(slots as Record<string, any>) as `@${string}`[];
|
|
532
|
+
for (const slotName of slotNames) assertValidSlotName(slotName);
|
|
500
533
|
|
|
501
534
|
const namespace = `${ctx.namespace}.$${store.getNextIndex("parallel")}`;
|
|
502
535
|
|
|
@@ -528,6 +561,7 @@ const parallel: RouteHelpers<any, any>["parallel"] = (slots, use) => {
|
|
|
528
561
|
if (ctx.namePrefix) {
|
|
529
562
|
(slotHandler as any).$$routePrefix = ctx.namePrefix;
|
|
530
563
|
}
|
|
564
|
+
stampStaticDefScope(slotHandler);
|
|
531
565
|
}
|
|
532
566
|
} else {
|
|
533
567
|
unwrappedSlots[slotName] = slotHandler;
|
|
@@ -537,20 +571,12 @@ const parallel: RouteHelpers<any, any>["parallel"] = (slots, use) => {
|
|
|
537
571
|
// Create full EntryData for parallel with its own loaders/revalidate/loading
|
|
538
572
|
const parallelUrlPrefix = getUrlPrefix();
|
|
539
573
|
const entry = {
|
|
574
|
+
...emptySegmentBase(),
|
|
540
575
|
id: namespace,
|
|
541
576
|
shortCode: store.getShortCode("parallel"),
|
|
542
577
|
type: "parallel",
|
|
543
578
|
parent: null, // Parallels don't participate in parent chain traversal
|
|
544
579
|
handler: unwrappedSlots,
|
|
545
|
-
loading: undefined, // Allow loading() to attach loading state
|
|
546
|
-
middleware: [],
|
|
547
|
-
revalidate: [],
|
|
548
|
-
errorBoundary: [],
|
|
549
|
-
notFoundBoundary: [],
|
|
550
|
-
layout: [],
|
|
551
|
-
parallel: {},
|
|
552
|
-
intercept: [],
|
|
553
|
-
loader: [],
|
|
554
580
|
...(parallelUrlPrefix ? { mountPath: parallelUrlPrefix } : {}),
|
|
555
581
|
...(hasStaticSlot
|
|
556
582
|
? {
|
|
@@ -605,10 +631,13 @@ const parallel: RouteHelpers<any, any>["parallel"] = (slots, use) => {
|
|
|
605
631
|
"parallel",
|
|
606
632
|
);
|
|
607
633
|
if (slotMergedUse) {
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
634
|
+
runAndValidateUseItems(
|
|
635
|
+
store,
|
|
636
|
+
namespace,
|
|
637
|
+
slotEntry,
|
|
638
|
+
slotMergedUse,
|
|
639
|
+
"parallel",
|
|
640
|
+
"use",
|
|
612
641
|
);
|
|
613
642
|
}
|
|
614
643
|
|
|
@@ -646,11 +675,22 @@ const intercept = (
|
|
|
646
675
|
slotName: `@${string}`,
|
|
647
676
|
routeName: string,
|
|
648
677
|
handler: any,
|
|
678
|
+
configOrUse?: InterceptConfig | (() => any[]),
|
|
649
679
|
use?: () => any[],
|
|
650
680
|
) => {
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
681
|
+
// arg4 discrimination: a function is the use() callback (no config); an object
|
|
682
|
+
// is the config carrying `when`. With config given, the use() callback is
|
|
683
|
+
// arg5. Keeps the no-config form intercept(slot, route, handler, () => [...])
|
|
684
|
+
// working unchanged.
|
|
685
|
+
const config: InterceptConfig | undefined =
|
|
686
|
+
typeof configOrUse === "function" || configOrUse == null
|
|
687
|
+
? undefined
|
|
688
|
+
: configOrUse;
|
|
689
|
+
const useFn = typeof configOrUse === "function" ? configOrUse : use;
|
|
690
|
+
|
|
691
|
+
const { store, ctx } = requireDslContext(
|
|
692
|
+
"intercept() must be called inside urls()",
|
|
693
|
+
);
|
|
654
694
|
|
|
655
695
|
if (!ctx.parent || !ctx.parent?.intercept) {
|
|
656
696
|
invariant(false, "No parent entry available for intercept()");
|
|
@@ -661,6 +701,8 @@ const intercept = (
|
|
|
661
701
|
"intercept() cannot be used inside parallel()",
|
|
662
702
|
);
|
|
663
703
|
|
|
704
|
+
assertValidSlotName(slotName);
|
|
705
|
+
|
|
664
706
|
const namespace = `${ctx.namespace}.$${store.getNextIndex("intercept")}.${slotName}`;
|
|
665
707
|
|
|
666
708
|
// Dot-prefixed = local (add include prefix), unprefixed = global (use as-is)
|
|
@@ -683,29 +725,33 @@ const intercept = (
|
|
|
683
725
|
when: [], // Selector conditions for conditional interception
|
|
684
726
|
};
|
|
685
727
|
|
|
728
|
+
// Conditional interception: `when` from the config object — a single selector
|
|
729
|
+
// or an array (ALL must return true to activate). Replaces the former when()
|
|
730
|
+
// use-item captured inside the callback.
|
|
731
|
+
if (config?.when) {
|
|
732
|
+
const selectors = Array.isArray(config.when) ? config.when : [config.when];
|
|
733
|
+
entry.when.push(...selectors);
|
|
734
|
+
}
|
|
735
|
+
|
|
686
736
|
// Merge handler.use defaults with explicit use
|
|
687
737
|
const handlerUseFn = resolveHandlerUse(handler);
|
|
688
|
-
const mergedUse = mergeHandlerUse(handlerUseFn,
|
|
738
|
+
const mergedUse = mergeHandlerUse(handlerUseFn, useFn, "intercept");
|
|
689
739
|
|
|
690
740
|
// Run merged use callback to collect loaders, revalidate, middleware, etc.
|
|
691
741
|
if (mergedUse) {
|
|
692
|
-
//
|
|
693
|
-
// so that middleware, loader, revalidate attach to the intercept entry
|
|
694
|
-
const originalParent = ctx.parent;
|
|
695
|
-
|
|
696
|
-
// Capture layouts in a temporary array
|
|
742
|
+
// Capture layout() calls into a temporary array
|
|
697
743
|
const capturedLayouts: EntryData[] = [];
|
|
698
744
|
|
|
745
|
+
// Temporary parent so middleware/loader/revalidate/when attach to the
|
|
746
|
+
// intercept entry; the loading get/set accessor mirrors writes onto `entry`.
|
|
699
747
|
const tempParent = {
|
|
700
|
-
...
|
|
748
|
+
...ctx.parent,
|
|
701
749
|
middleware: entry.middleware,
|
|
702
750
|
revalidate: entry.revalidate,
|
|
703
751
|
errorBoundary: entry.errorBoundary,
|
|
704
752
|
notFoundBoundary: entry.notFoundBoundary,
|
|
705
753
|
loader: entry.loader,
|
|
706
754
|
layout: capturedLayouts, // Capture layout() calls
|
|
707
|
-
when: entry.when, // Capture when() conditions
|
|
708
|
-
// Use getter/setter to capture loading on the entry
|
|
709
755
|
get loading() {
|
|
710
756
|
return entry.loading;
|
|
711
757
|
},
|
|
@@ -713,12 +759,10 @@ const intercept = (
|
|
|
713
759
|
entry.loading = value;
|
|
714
760
|
},
|
|
715
761
|
};
|
|
716
|
-
ctx.parent = tempParent as EntryData;
|
|
717
762
|
|
|
718
|
-
const result =
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
ctx.parent = originalParent;
|
|
763
|
+
const result = withParent(ctx, tempParent as EntryData, () =>
|
|
764
|
+
mergedUse()?.flat(3),
|
|
765
|
+
);
|
|
722
766
|
|
|
723
767
|
// Extract layout from captured layouts (use first one if multiple)
|
|
724
768
|
// Layout inside intercept should always be ReactNode or Handler, not Record slots
|
|
@@ -728,10 +772,7 @@ const intercept = (
|
|
|
728
772
|
| Handler<any, any, any>;
|
|
729
773
|
}
|
|
730
774
|
|
|
731
|
-
|
|
732
|
-
Array.isArray(result) && result.every((item) => isValidUseItem(item)),
|
|
733
|
-
`intercept() use() callback must return an array of use items [${namespace}]`,
|
|
734
|
-
);
|
|
775
|
+
validateUseItems(result, namespace, "intercept", "use");
|
|
735
776
|
}
|
|
736
777
|
|
|
737
778
|
ctx.parent.intercept.push(entry);
|
|
@@ -741,10 +782,10 @@ const intercept = (
|
|
|
741
782
|
/**
|
|
742
783
|
* Loader helper - attaches a loader to the current entry
|
|
743
784
|
*/
|
|
744
|
-
const
|
|
745
|
-
const store =
|
|
746
|
-
|
|
747
|
-
|
|
785
|
+
const loader: RouteHelpers<any, any>["loader"] = (loaderDef, use) => {
|
|
786
|
+
const { store, ctx } = requireDslContext(
|
|
787
|
+
"loader() must be called inside urls()",
|
|
788
|
+
);
|
|
748
789
|
|
|
749
790
|
// Attach to last entry in stack
|
|
750
791
|
if (!ctx.parent || !ctx.parent?.loader) {
|
|
@@ -765,23 +806,22 @@ const loaderFn: RouteHelpers<any, any>["loader"] = (loaderDef, use) => {
|
|
|
765
806
|
|
|
766
807
|
// If any use callback is in effect, run it to collect revalidation rules and cache config
|
|
767
808
|
if (mergedUse) {
|
|
768
|
-
// Temporarily set context for revalidate()/cache() calls to target this loader
|
|
769
|
-
const originalParent = ctx.parent;
|
|
770
809
|
// Create a temporary "parent" with type "loader" so cache() can detect it.
|
|
771
810
|
// Save existing .cache to distinguish inherited config from newly set config.
|
|
772
|
-
const parentCache = (
|
|
811
|
+
const parentCache = (ctx.parent as any).cache;
|
|
773
812
|
const tempParent = {
|
|
774
|
-
...
|
|
813
|
+
...ctx.parent,
|
|
775
814
|
type: "loader",
|
|
776
815
|
revalidate: loaderEntry.revalidate,
|
|
777
816
|
};
|
|
778
|
-
ctx.parent = tempParent as EntryData;
|
|
779
817
|
|
|
780
|
-
const result =
|
|
818
|
+
const result = withParent(ctx, tempParent as EntryData, () =>
|
|
819
|
+
mergedUse()?.flat(3),
|
|
820
|
+
);
|
|
781
821
|
|
|
782
822
|
// Copy cache config only if cache() was called during the use() callback.
|
|
783
|
-
// The spread
|
|
784
|
-
//
|
|
823
|
+
// The spread may carry an inherited .cache from a parent cache() boundary —
|
|
824
|
+
// only copy if it was newly set.
|
|
785
825
|
if (
|
|
786
826
|
(tempParent as any).cache &&
|
|
787
827
|
(tempParent as any).cache !== parentCache
|
|
@@ -789,13 +829,7 @@ const loaderFn: RouteHelpers<any, any>["loader"] = (loaderDef, use) => {
|
|
|
789
829
|
(loaderEntry as any).cache = (tempParent as any).cache;
|
|
790
830
|
}
|
|
791
831
|
|
|
792
|
-
|
|
793
|
-
ctx.parent = originalParent;
|
|
794
|
-
|
|
795
|
-
invariant(
|
|
796
|
-
Array.isArray(result) && result.every((item) => isValidUseItem(item)),
|
|
797
|
-
`loader() use() callback must return an array of use items [${name}]`,
|
|
798
|
-
);
|
|
832
|
+
validateUseItems(result, name, "loader", "use");
|
|
799
833
|
}
|
|
800
834
|
|
|
801
835
|
ctx.parent.loader.push(loaderEntry);
|
|
@@ -806,10 +840,10 @@ const loaderFn: RouteHelpers<any, any>["loader"] = (loaderDef, use) => {
|
|
|
806
840
|
* Loading helper - attaches a loading component to the current entry
|
|
807
841
|
* Loading components are static (no context) and shown during navigation
|
|
808
842
|
*/
|
|
809
|
-
const
|
|
810
|
-
const store =
|
|
811
|
-
|
|
812
|
-
|
|
843
|
+
const loading: RouteHelpers<any, any>["loading"] = (component, options) => {
|
|
844
|
+
const { store, ctx } = requireDslContext(
|
|
845
|
+
"loading() must be called inside urls()",
|
|
846
|
+
);
|
|
813
847
|
|
|
814
848
|
const parent = ctx.parent;
|
|
815
849
|
if (!parent || !("loading" in parent)) {
|
|
@@ -832,10 +866,13 @@ const loadingFn: RouteHelpers<any, any>["loading"] = (component, options) => {
|
|
|
832
866
|
};
|
|
833
867
|
|
|
834
868
|
/**
|
|
835
|
-
* Transition helper -
|
|
836
|
-
*
|
|
869
|
+
* Transition helper - opts the entry (or a wrapped group of routes) into
|
|
870
|
+
* transition-driven navigation by attaching a TransitionConfig. This drives the
|
|
871
|
+
* commit through startTransition (content hold on all React versions) and, on
|
|
872
|
+
* experimental React, places a `<ViewTransition>` boundary unless
|
|
873
|
+
* `viewTransition: false`. See skills/view-transitions for the matrix.
|
|
837
874
|
*/
|
|
838
|
-
const
|
|
875
|
+
const transition = (
|
|
839
876
|
configOrChildren?: TransitionConfig | (() => UseItems<AllUseItems>),
|
|
840
877
|
maybeChildren?: () => UseItems<AllUseItems>,
|
|
841
878
|
): TransitionItem => {
|
|
@@ -849,11 +886,15 @@ const transitionFn = (
|
|
|
849
886
|
const children: (() => UseItems<AllUseItems>) | undefined =
|
|
850
887
|
typeof configOrChildren === "function" ? configOrChildren : maybeChildren;
|
|
851
888
|
|
|
852
|
-
const store =
|
|
853
|
-
|
|
854
|
-
|
|
889
|
+
const { store, ctx } = requireDslContext(
|
|
890
|
+
"transition() must be called inside urls()",
|
|
891
|
+
);
|
|
855
892
|
|
|
856
|
-
|
|
893
|
+
// Allocate a single index for this transition() call (used in all paths),
|
|
894
|
+
// mirroring cache() — the child form uses it for the name, the wrapper form
|
|
895
|
+
// reuses it for the namespace, so no index is burned.
|
|
896
|
+
const transitionIndex = store.getNextIndex("transition");
|
|
897
|
+
const name = `$${transitionIndex}`;
|
|
857
898
|
|
|
858
899
|
if (!children) {
|
|
859
900
|
// Position 1: child of path() — attach to parent entry
|
|
@@ -866,70 +907,51 @@ const transitionFn = (
|
|
|
866
907
|
}
|
|
867
908
|
|
|
868
909
|
// Position 2: wrapper — create a transparent layout with transition config
|
|
869
|
-
const namespace = `${ctx.namespace}.${
|
|
910
|
+
const namespace = `${ctx.namespace}.${transitionIndex}`;
|
|
870
911
|
const entry = {
|
|
912
|
+
...emptySegmentBase(),
|
|
871
913
|
id: namespace,
|
|
872
914
|
shortCode: store.getShortCode("layout"),
|
|
873
915
|
type: "layout",
|
|
874
916
|
parent: ctx.parent,
|
|
875
917
|
handler: RootLayout,
|
|
876
|
-
loading: undefined,
|
|
877
918
|
transition: config,
|
|
878
|
-
|
|
879
|
-
revalidate: [],
|
|
880
|
-
errorBoundary: [],
|
|
881
|
-
notFoundBoundary: [],
|
|
882
|
-
layout: [],
|
|
883
|
-
parallel: {},
|
|
884
|
-
intercept: [],
|
|
885
|
-
loader: [],
|
|
886
|
-
} as EntryData;
|
|
887
|
-
|
|
888
|
-
const result = store.run(namespace, entry, children)?.flat(3);
|
|
919
|
+
} satisfies EntryData;
|
|
889
920
|
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
921
|
+
const result = runAndValidateUseItems(
|
|
922
|
+
store,
|
|
923
|
+
namespace,
|
|
924
|
+
entry,
|
|
925
|
+
children,
|
|
926
|
+
"transition",
|
|
927
|
+
"children",
|
|
893
928
|
);
|
|
894
929
|
|
|
895
|
-
|
|
896
|
-
result &&
|
|
897
|
-
Array.isArray(result) &&
|
|
898
|
-
result.some((item) => hasRoutesInItem(item));
|
|
899
|
-
|
|
900
|
-
if (!hasRoutes) {
|
|
901
|
-
const parent = ctx.parent;
|
|
902
|
-
if (parent && "layout" in parent) {
|
|
903
|
-
entry.parent = null;
|
|
904
|
-
parent.layout.push(entry);
|
|
905
|
-
}
|
|
906
|
-
}
|
|
930
|
+
if (isOrphan(result)) attachOrphanSibling(ctx.parent, entry);
|
|
907
931
|
|
|
908
932
|
return { name: namespace, type: "transition" } as TransitionItem;
|
|
909
933
|
};
|
|
910
934
|
|
|
911
|
-
const
|
|
912
|
-
const store =
|
|
913
|
-
|
|
914
|
-
|
|
935
|
+
const route: RouteHelpers<any, any>["route"] = (name, handler, use) => {
|
|
936
|
+
const { store, ctx } = requireDslContext(
|
|
937
|
+
"route() must be called inside urls()",
|
|
938
|
+
);
|
|
939
|
+
|
|
940
|
+
// Reject names colliding with reserved internal prefixes ($path_, $prefix_),
|
|
941
|
+
// the same guard path() and include() enforce. Without it such a name
|
|
942
|
+
// type-checks on an untyped router, then silently vanishes from generated
|
|
943
|
+
// route-types and public reverse() (isAutoGeneratedRouteName filters it out).
|
|
944
|
+
validateUserRouteName(name);
|
|
915
945
|
|
|
916
946
|
const namespace = `${ctx.namespace}.${store.getNextIndex("route")}.${name}`;
|
|
917
947
|
|
|
918
948
|
const entry = {
|
|
949
|
+
...emptySegmentBase(),
|
|
919
950
|
id: namespace,
|
|
920
951
|
shortCode: store.getShortCode("route"),
|
|
921
952
|
type: "route",
|
|
922
953
|
parent: ctx.parent,
|
|
923
954
|
handler: handler as unknown as Handler<any, any, any>,
|
|
924
|
-
loading: undefined, // Allow loading() to attach loading state
|
|
925
|
-
middleware: [],
|
|
926
|
-
revalidate: [],
|
|
927
|
-
errorBoundary: [],
|
|
928
|
-
notFoundBoundary: [],
|
|
929
|
-
layout: [],
|
|
930
|
-
parallel: {},
|
|
931
|
-
intercept: [],
|
|
932
|
-
loader: [],
|
|
933
955
|
} satisfies EntryData;
|
|
934
956
|
|
|
935
957
|
/* We will throw if user is registring same route name twice */
|
|
@@ -944,10 +966,13 @@ const routeFn: RouteHelpers<any, any>["route"] = (name, handler, use) => {
|
|
|
944
966
|
const mergedUse = mergeHandlerUse(handlerUseFn, use, "route");
|
|
945
967
|
/* Run use and attach handlers */
|
|
946
968
|
if (mergedUse) {
|
|
947
|
-
const result =
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
969
|
+
const result = runAndValidateUseItems(
|
|
970
|
+
store,
|
|
971
|
+
namespace,
|
|
972
|
+
entry,
|
|
973
|
+
mergedUse,
|
|
974
|
+
"route",
|
|
975
|
+
"use",
|
|
951
976
|
);
|
|
952
977
|
return { name: namespace, type: "route", uses: result } as RouteItem;
|
|
953
978
|
}
|
|
@@ -957,9 +982,9 @@ const routeFn: RouteHelpers<any, any>["route"] = (name, handler, use) => {
|
|
|
957
982
|
};
|
|
958
983
|
|
|
959
984
|
const layout: RouteHelpers<any, any>["layout"] = (handler, use) => {
|
|
960
|
-
const store =
|
|
961
|
-
|
|
962
|
-
|
|
985
|
+
const { store, ctx } = requireDslContext(
|
|
986
|
+
"layout() must be called inside urls()",
|
|
987
|
+
);
|
|
963
988
|
|
|
964
989
|
invariant(
|
|
965
990
|
!ctx.parent || ctx.parent.type !== "parallel",
|
|
@@ -977,20 +1002,12 @@ const layout: RouteHelpers<any, any>["layout"] = (handler, use) => {
|
|
|
977
1002
|
|
|
978
1003
|
const urlPrefix = getUrlPrefix();
|
|
979
1004
|
const entry = {
|
|
1005
|
+
...emptySegmentBase(),
|
|
980
1006
|
id: namespace,
|
|
981
1007
|
shortCode,
|
|
982
1008
|
type: "layout",
|
|
983
1009
|
parent: ctx.parent,
|
|
984
1010
|
handler: unwrappedHandler,
|
|
985
|
-
loading: undefined, // Allow loading() to attach loading state
|
|
986
|
-
middleware: [],
|
|
987
|
-
revalidate: [],
|
|
988
|
-
errorBoundary: [],
|
|
989
|
-
notFoundBoundary: [],
|
|
990
|
-
parallel: {},
|
|
991
|
-
intercept: [],
|
|
992
|
-
layout: [],
|
|
993
|
-
loader: [],
|
|
994
1011
|
...(urlPrefix ? { mountPath: urlPrefix } : {}),
|
|
995
1012
|
...(isStatic
|
|
996
1013
|
? {
|
|
@@ -1001,8 +1018,11 @@ const layout: RouteHelpers<any, any>["layout"] = (handler, use) => {
|
|
|
1001
1018
|
} satisfies EntryData;
|
|
1002
1019
|
|
|
1003
1020
|
// Capture namespace prefix on static handler for build-time reverse() resolution
|
|
1004
|
-
if (isStatic && handler.$$id
|
|
1005
|
-
(
|
|
1021
|
+
if (isStatic && handler.$$id) {
|
|
1022
|
+
if (ctx.namePrefix) {
|
|
1023
|
+
(handler as any).$$routePrefix = ctx.namePrefix;
|
|
1024
|
+
}
|
|
1025
|
+
stampStaticDefScope(handler);
|
|
1006
1026
|
}
|
|
1007
1027
|
|
|
1008
1028
|
// Merge handler.use defaults with explicit use
|
|
@@ -1012,11 +1032,13 @@ const layout: RouteHelpers<any, any>["layout"] = (handler, use) => {
|
|
|
1012
1032
|
// Run merged use callback if present
|
|
1013
1033
|
let result: AllUseItems[] | undefined;
|
|
1014
1034
|
if (mergedUse) {
|
|
1015
|
-
result =
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1035
|
+
result = runAndValidateUseItems(
|
|
1036
|
+
store,
|
|
1037
|
+
namespace,
|
|
1038
|
+
entry,
|
|
1039
|
+
mergedUse,
|
|
1040
|
+
"layout",
|
|
1041
|
+
"use",
|
|
1020
1042
|
);
|
|
1021
1043
|
}
|
|
1022
1044
|
|
|
@@ -1058,9 +1080,7 @@ const layout: RouteHelpers<any, any>["layout"] = (handler, use) => {
|
|
|
1058
1080
|
`Orphan layouts can only be defined inside route or layout > check [${namespace}]`,
|
|
1059
1081
|
);
|
|
1060
1082
|
|
|
1061
|
-
|
|
1062
|
-
entry.parent = null;
|
|
1063
|
-
parent.layout.push(entry);
|
|
1083
|
+
attachOrphanSibling(parent, entry);
|
|
1064
1084
|
}
|
|
1065
1085
|
}
|
|
1066
1086
|
|
|
@@ -1073,33 +1093,15 @@ const layout: RouteHelpers<any, any>["layout"] = (handler, use) => {
|
|
|
1073
1093
|
} as LayoutItem;
|
|
1074
1094
|
};
|
|
1075
1095
|
|
|
1076
|
-
const isValidUseItem = (item: any): item is AllUseItems | undefined | null =>
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
(item
|
|
1081
|
-
typeof item === "object" &&
|
|
1082
|
-
"type" in item &&
|
|
1083
|
-
[
|
|
1084
|
-
"layout",
|
|
1085
|
-
"route",
|
|
1086
|
-
"middleware",
|
|
1087
|
-
"revalidate",
|
|
1088
|
-
"parallel",
|
|
1089
|
-
"intercept",
|
|
1090
|
-
"loader",
|
|
1091
|
-
"loading",
|
|
1092
|
-
"errorBoundary",
|
|
1093
|
-
"notFoundBoundary",
|
|
1094
|
-
"when",
|
|
1095
|
-
"cache",
|
|
1096
|
-
"transition",
|
|
1097
|
-
"include", // For urls() include() helper
|
|
1098
|
-
].includes(item.type))
|
|
1099
|
-
);
|
|
1100
|
-
};
|
|
1096
|
+
const isValidUseItem = (item: any): item is AllUseItems | undefined | null =>
|
|
1097
|
+
item == null ||
|
|
1098
|
+
(typeof item === "object" &&
|
|
1099
|
+
"type" in item &&
|
|
1100
|
+
ALL_USE_ITEM_TYPES.has(item.type));
|
|
1101
1101
|
|
|
1102
|
-
//
|
|
1102
|
+
// DSL helpers exported for direct import from @rangojs/router and for
|
|
1103
|
+
// assembly into the RouteHelpers object in helper-factories.ts. The route-item
|
|
1104
|
+
// types are discriminated by their `type` literal, so the helpers carry no brand.
|
|
1103
1105
|
export {
|
|
1104
1106
|
layout,
|
|
1105
1107
|
cache,
|
|
@@ -1107,28 +1109,13 @@ export {
|
|
|
1107
1109
|
revalidate,
|
|
1108
1110
|
parallel,
|
|
1109
1111
|
intercept,
|
|
1110
|
-
when,
|
|
1111
1112
|
errorBoundary,
|
|
1112
1113
|
notFoundBoundary,
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
const isOrphanLayout = (item: AllUseItems): boolean => {
|
|
1119
|
-
return (
|
|
1120
|
-
item.type === "layout" &&
|
|
1121
|
-
!item.uses?.some((child) => hasRoutesInItem(child))
|
|
1122
|
-
);
|
|
1123
|
-
};
|
|
1124
|
-
|
|
1125
|
-
// Internal exports used by helper-factories.ts
|
|
1126
|
-
export {
|
|
1127
|
-
routeFn,
|
|
1128
|
-
loaderFn,
|
|
1129
|
-
loadingFn,
|
|
1130
|
-
transitionFn,
|
|
1131
|
-
hasRoutesInItem,
|
|
1114
|
+
route,
|
|
1115
|
+
loader,
|
|
1116
|
+
loading,
|
|
1117
|
+
transition,
|
|
1132
1118
|
isValidUseItem,
|
|
1133
|
-
|
|
1119
|
+
emptySegmentBase,
|
|
1120
|
+
runAndValidateUseItems,
|
|
1134
1121
|
};
|