@rangojs/router 0.0.0-experimental.35 → 0.0.0-experimental.358c376d
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 +11 -3
- package/README.md +320 -735
- package/dist/bin/rango.js +983 -241
- 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 +62 -0
- package/dist/types/client-urls/types.d.ts +144 -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 +404 -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 +520 -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 +717 -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 +234 -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 +203 -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 +10725 -3898
- package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/package.json +129 -46
- package/skills/api-client/SKILL.md +211 -0
- package/skills/breadcrumbs/SKILL.md +117 -8
- package/skills/bundle-analysis/SKILL.md +159 -0
- package/skills/cache-guide/SKILL.md +255 -25
- package/skills/caching/SKILL.md +414 -17
- package/skills/catalog.json +289 -0
- package/skills/client-urls/SKILL.md +307 -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 +858 -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 +364 -0
- package/skills/hooks/SKILL.md +73 -691
- package/skills/hooks/data.md +282 -0
- package/skills/hooks/handle-and-actions.md +110 -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 +94 -18
- package/skills/layout/SKILL.md +62 -19
- package/skills/links/SKILL.md +285 -17
- package/skills/loader/SKILL.md +415 -55
- package/skills/middleware/SKILL.md +92 -16
- package/skills/migrate-nextjs/SKILL.md +852 -0
- package/skills/migrate-nextjs/backend-host-swap.md +120 -0
- package/skills/migrate-react-router/SKILL.md +189 -0
- package/skills/migrate-react-router/component-migration.md +201 -0
- package/skills/migrate-react-router/data-and-actions.md +236 -0
- package/skills/migrate-react-router/route-mapping.md +284 -0
- package/skills/mime-routes/SKILL.md +55 -18
- package/skills/observability/SKILL.md +231 -0
- package/skills/parallel/SKILL.md +245 -10
- package/skills/ppr/SKILL.md +914 -0
- package/skills/prerender/SKILL.md +243 -135
- package/skills/rango/SKILL.md +325 -24
- package/skills/react-compiler/SKILL.md +168 -0
- package/skills/response-routes/SKILL.md +180 -52
- package/skills/route/SKILL.md +181 -9
- package/skills/router-setup/SKILL.md +154 -11
- package/skills/scripts/SKILL.md +189 -0
- package/skills/server-actions/SKILL.md +776 -0
- package/skills/shell-manifest/SKILL.md +194 -0
- package/skills/streams-and-websockets/SKILL.md +283 -0
- 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 +153 -0
- package/skills/testing/loader.md +130 -0
- package/skills/testing/middleware.md +99 -0
- package/skills/testing/render-handler.md +122 -0
- package/skills/testing/response-routes.md +95 -0
- package/skills/testing/reverse-and-types.md +85 -0
- package/skills/testing/server-actions.md +107 -0
- package/skills/testing/server-tree.md +128 -0
- package/skills/testing/setup.md +123 -0
- package/skills/theme/SKILL.md +9 -6
- package/skills/typesafety/SKILL.md +45 -616
- 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 +1 -66
- package/src/browser/action-coordinator.ts +53 -36
- package/src/browser/action-fence.ts +47 -0
- package/src/browser/app-shell.ts +39 -0
- package/src/browser/app-version.ts +14 -0
- package/src/browser/connection-warmup.ts +134 -0
- package/src/browser/cookie-name.ts +140 -0
- package/src/browser/dev-discovery.ts +66 -0
- package/src/browser/event-controller.ts +405 -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 +209 -40
- package/src/browser/navigation-client.ts +284 -73
- package/src/browser/navigation-store-handle.ts +38 -0
- package/src/browser/navigation-store.ts +208 -329
- package/src/browser/navigation-transaction.ts +18 -66
- package/src/browser/network-error-handler.ts +34 -7
- package/src/browser/notify-listeners.ts +22 -0
- package/src/browser/partial-update.ts +278 -126
- package/src/browser/prefetch/cache.ts +362 -51
- package/src/browser/prefetch/default-strategy.ts +74 -0
- package/src/browser/prefetch/fetch.ts +453 -40
- 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/policy.ts +6 -0
- package/src/browser/prefetch/queue.ts +144 -23
- package/src/browser/prefetch/resource-ready.ts +77 -0
- package/src/browser/prefetch/runtime.ts +6 -0
- package/src/browser/rango-state.ts +178 -75
- package/src/browser/react/Link.tsx +187 -75
- package/src/browser/react/NavigationProvider.tsx +249 -123
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/context.ts +11 -2
- package/src/browser/react/filter-segment-order.ts +66 -7
- package/src/browser/react/index.ts +0 -48
- package/src/browser/react/location-state-shared.ts +178 -8
- package/src/browser/react/location-state.ts +39 -14
- package/src/browser/react/use-action.ts +6 -15
- package/src/browser/react/use-handle.ts +23 -69
- package/src/browser/react/use-href.tsx +8 -1
- package/src/browser/react/use-link-status.ts +33 -8
- package/src/browser/react/use-navigation.ts +32 -7
- package/src/browser/react/use-params.ts +20 -10
- package/src/browser/react/use-reverse.ts +106 -0
- package/src/browser/react/use-router.ts +47 -12
- 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 +375 -84
- package/src/browser/scroll-restoration.ts +61 -47
- package/src/browser/segment-reconciler.ts +44 -7
- package/src/browser/segment-structure-assert.ts +2 -2
- package/src/browser/server-action-bridge.ts +270 -71
- package/src/browser/types.ts +166 -37
- package/src/browser/validate-redirect-origin.ts +43 -16
- package/src/build/collect-fallback-refs.ts +107 -0
- package/src/build/generate-manifest.ts +217 -188
- package/src/build/generate-route-types.ts +6 -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 -254
- 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 +521 -65
- 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 +411 -154
- package/src/build/route-types/scan-filter.ts +9 -2
- package/src/build/route-types/source-scan.ts +216 -0
- package/src/build/runtime-discovery.ts +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 -117
- package/src/cache/cache-scope.ts +431 -112
- 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 +3250 -173
- 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 +16 -17
- package/src/cache/document-cache.ts +202 -61
- package/src/cache/handle-snapshot.ts +92 -1
- package/src/cache/index.ts +33 -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 +83 -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 +698 -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 +579 -0
- package/src/client-urls/types.ts +195 -0
- package/src/client.rsc.tsx +48 -21
- package/src/client.tsx +158 -294
- 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 +84 -2
- package/src/debug.ts +2 -2
- 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 +104 -34
- 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 +111 -13
- package/src/index.ts +151 -19
- 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 +13 -1
- 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 +52 -42
- package/src/prerender.ts +215 -86
- 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 +62 -0
- package/src/reverse.ts +65 -15
- package/src/root-error-boundary.tsx +1 -19
- package/src/route-content-wrapper.tsx +112 -78
- package/src/route-definition/dsl-helpers.ts +519 -307
- package/src/route-definition/helper-factories.ts +28 -140
- package/src/route-definition/helpers-types.ts +169 -78
- package/src/route-definition/index.ts +4 -2
- package/src/route-definition/redirect.ts +53 -12
- package/src/route-definition/resolve-handler-use.ts +160 -0
- package/src/route-definition/use-item-types.ts +29 -0
- package/src/route-map-builder.ts +102 -68
- package/src/route-types.ts +37 -46
- package/src/router/basename.ts +14 -0
- package/src/router/content-negotiation.ts +211 -22
- package/src/router/error-handling.ts +110 -29
- package/src/router/find-match.ts +130 -29
- package/src/router/handler-context.ts +105 -45
- package/src/router/instrument.ts +401 -0
- package/src/router/intercept-resolution.ts +108 -24
- package/src/router/lazy-includes.ts +90 -63
- package/src/router/loader-resolution.ts +529 -57
- package/src/router/logging.ts +5 -8
- package/src/router/manifest.ts +105 -56
- package/src/router/match-api.ts +190 -219
- package/src/router/match-context.ts +0 -22
- package/src/router/match-handlers.ts +268 -171
- package/src/router/match-middleware/background-revalidation.ts +66 -22
- package/src/router/match-middleware/cache-lookup.ts +368 -277
- package/src/router/match-middleware/cache-store.ts +175 -50
- package/src/router/match-middleware/intercept-resolution.ts +8 -28
- package/src/router/match-middleware/segment-resolution.ts +52 -18
- package/src/router/match-pipelines.ts +1 -42
- package/src/router/match-result.ts +135 -44
- package/src/router/metrics.ts +22 -36
- package/src/router/middleware-types.ts +26 -138
- package/src/router/middleware.ts +305 -177
- package/src/router/navigation-snapshot.ts +173 -0
- package/src/router/params-util.ts +23 -0
- package/src/router/parse-pattern.ts +115 -0
- package/src/router/pattern-matching.ts +181 -150
- 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 +250 -60
- package/src/router/preview-match.ts +35 -103
- package/src/router/request-classification.ts +291 -0
- package/src/router/revalidation.ts +146 -83
- package/src/router/route-snapshot.ts +256 -0
- package/src/router/route-trie-builder.ts +334 -0
- package/src/router/router-context.ts +11 -29
- package/src/router/router-interfaces.ts +199 -37
- package/src/router/router-options.ts +271 -21
- package/src/router/router-registry.ts +2 -5
- package/src/router/segment-resolution/fresh.ts +367 -78
- package/src/router/segment-resolution/helpers.ts +116 -33
- package/src/router/segment-resolution/loader-cache.ts +188 -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 +520 -385
- 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 +8 -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 +171 -59
- package/src/router/types.ts +10 -63
- package/src/router/url-params.ts +57 -0
- package/src/router.ts +301 -78
- 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 +901 -519
- package/src/rsc/helpers.ts +245 -47
- package/src/rsc/index.ts +2 -5
- package/src/rsc/json-route-result.ts +38 -0
- package/src/rsc/loader-fetch.ts +129 -33
- package/src/rsc/manifest-init.ts +55 -52
- package/src/rsc/nonce.ts +10 -1
- package/src/rsc/origin-guard.ts +39 -25
- package/src/rsc/progressive-enhancement.ts +381 -74
- 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 +80 -206
- package/src/rsc/routine-plan.ts +359 -0
- package/src/rsc/rsc-rendering.ts +1625 -156
- package/src/rsc/runtime-warnings.ts +23 -10
- package/src/rsc/server-action.ts +424 -133
- 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 +113 -18
- package/src/rsc/stream-idle.ts +137 -0
- package/src/rsc/transition-gate.ts +86 -0
- package/src/rsc/types.ts +100 -6
- package/src/runtime-env.ts +18 -0
- package/src/search-params.ts +35 -30
- package/src/segment-content-promise.ts +67 -0
- package/src/segment-fragments.ts +165 -0
- package/src/segment-loader-promise.ts +167 -0
- package/src/segment-system.tsx +507 -133
- package/src/serialize.ts +243 -0
- package/src/server/context.ts +581 -61
- package/src/server/cookie-parse.ts +32 -0
- package/src/server/cookie-store.ts +162 -15
- package/src/server/handle-store.ts +209 -70
- package/src/server/loader-registry.ts +38 -46
- package/src/server/request-context.ts +961 -186
- package/src/server.ts +7 -2
- package/src/ssr/index.tsx +631 -179
- 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 +45 -20
- 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 +17 -8
- package/src/types/error-types.ts +30 -90
- package/src/types/global-namespace.ts +54 -41
- package/src/types/handler-context.ts +244 -81
- package/src/types/index.ts +4 -10
- package/src/types/loader-types.ts +99 -15
- package/src/types/request-scope.ts +112 -0
- package/src/types/route-config.ts +20 -52
- package/src/types/route-entry.ts +22 -7
- package/src/types/segments.ts +149 -14
- package/src/urls/include-helper.ts +59 -75
- package/src/urls/include-provider.ts +71 -0
- package/src/urls/index.ts +2 -11
- package/src/urls/path-helper-types.ts +118 -26
- package/src/urls/path-helper.ts +70 -115
- package/src/urls/pattern-types.ts +113 -19
- package/src/urls/response-types.ts +25 -22
- package/src/urls/type-extraction.ts +98 -154
- package/src/urls/urls-function.ts +1 -19
- package/src/use-loader.tsx +404 -86
- package/src/vercel/index.ts +11 -0
- package/src/vercel/tracing.ts +89 -0
- package/src/vite/debug.ts +185 -0
- package/src/vite/discovery/bundle-postprocess.ts +46 -45
- 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 -147
- 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 +243 -134
- 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 +116 -11
- package/src/vite/discovery/virtual-module-codegen.ts +226 -87
- package/src/vite/encryption-key.ts +29 -0
- package/src/vite/index.ts +16 -0
- package/src/vite/inject-client-debug.ts +88 -0
- package/src/vite/plugin-types.ts +267 -62
- 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-loader-hook.d.mts +23 -0
- package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
- package/src/vite/plugins/expose-action-id.ts +51 -100
- package/src/vite/plugins/expose-id-utils.ts +96 -51
- package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
- package/src/vite/plugins/expose-ids/handler-transform.ts +15 -64
- package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
- package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
- package/src/vite/plugins/expose-internal-ids.ts +599 -317
- package/src/vite/plugins/performance-tracks.ts +89 -0
- package/src/vite/plugins/refresh-cmd.ts +89 -27
- 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 +54 -37
- package/src/vite/plugins/virtual-entries.ts +193 -30
- package/src/vite/rango.ts +403 -304
- package/src/vite/router-discovery.ts +1802 -187
- package/src/vite/utils/ast-handler-extract.ts +26 -35
- package/src/vite/utils/banner.ts +4 -4
- package/src/vite/utils/bundle-analysis.ts +10 -15
- package/src/vite/utils/client-chunks.ts +184 -0
- package/src/vite/utils/directive-prologue.ts +40 -0
- package/src/vite/utils/forward-user-plugins.ts +171 -0
- package/src/vite/utils/manifest-utils.ts +1 -59
- package/src/vite/utils/package-resolution.ts +21 -52
- package/src/vite/utils/prerender-utils.ts +123 -44
- package/src/vite/utils/shared-utils.ts +158 -44
- 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,20 @@ 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,
|
|
22
|
+
type LoaderEntry,
|
|
16
23
|
} from "../server/context";
|
|
17
24
|
import { invariant } from "../errors";
|
|
25
|
+
import { validateUserRouteName } from "../route-name.js";
|
|
18
26
|
import { isCachedFunction } from "../cache/taint.js";
|
|
19
|
-
import {
|
|
27
|
+
import { RangoContext } from "../server/context";
|
|
20
28
|
import { isStaticHandler } from "../static-handler.js";
|
|
21
29
|
import RootLayout from "../server/root-layout";
|
|
22
30
|
import type {
|
|
@@ -31,12 +39,13 @@ import type {
|
|
|
31
39
|
ErrorBoundaryItem,
|
|
32
40
|
NotFoundBoundaryItem,
|
|
33
41
|
LayoutItem,
|
|
34
|
-
WhenItem,
|
|
35
42
|
CacheItem,
|
|
36
43
|
TransitionItem,
|
|
37
44
|
UseItems,
|
|
38
45
|
} from "../route-types.js";
|
|
39
46
|
import type { RouteHelpers } from "./helpers-types.js";
|
|
47
|
+
import { resolveHandlerUse, mergeHandlerUse } from "./resolve-handler-use.js";
|
|
48
|
+
import { ALL_USE_ITEM_TYPES } from "./use-item-types.js";
|
|
40
49
|
|
|
41
50
|
/**
|
|
42
51
|
* Check if an item contains routes (directly or inside nested structures like cache).
|
|
@@ -54,19 +63,111 @@ const hasRoutesInItem = (item: AllUseItems): boolean => {
|
|
|
54
63
|
if (item.type === "layout" && item.uses) {
|
|
55
64
|
return item.uses.some((child) => hasRoutesInItem(child));
|
|
56
65
|
}
|
|
66
|
+
if (item.type === "middleware" && item.uses) {
|
|
67
|
+
return item.uses.some((child) => hasRoutesInItem(child));
|
|
68
|
+
}
|
|
57
69
|
return false;
|
|
58
70
|
};
|
|
59
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Fresh empty collections shared by every from-scratch segment entry. Returns
|
|
74
|
+
* new arrays/objects per call so no two entries share mutable references.
|
|
75
|
+
* mountPath is intentionally NOT included here — each call site adds it from
|
|
76
|
+
* getUrlPrefix() where applicable: the route() and transition() helpers add
|
|
77
|
+
* none, while path() (which also builds a `type: "route"` entry) and the
|
|
78
|
+
* structural helpers (layout/cache/middleware/parallel) do.
|
|
79
|
+
*/
|
|
80
|
+
const emptySegmentBase = (): EntryPropDatas &
|
|
81
|
+
EntryPropSegments & { loading: undefined } => ({
|
|
82
|
+
loading: undefined,
|
|
83
|
+
middleware: [],
|
|
84
|
+
revalidate: [],
|
|
85
|
+
errorBoundary: [],
|
|
86
|
+
notFoundBoundary: [],
|
|
87
|
+
layout: [],
|
|
88
|
+
parallel: {},
|
|
89
|
+
intercept: [],
|
|
90
|
+
loader: [],
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Run a children/use callback as a nested scope, flatten the result, and assert
|
|
95
|
+
* every item is a valid use item. `kind` preserves the existing error wording
|
|
96
|
+
* ("use()" vs "children" callback).
|
|
97
|
+
*/
|
|
98
|
+
function runAndValidateUseItems(
|
|
99
|
+
store: ReturnType<typeof getContext>,
|
|
100
|
+
namespace: string,
|
|
101
|
+
entry: EntryData,
|
|
102
|
+
cb: () => any,
|
|
103
|
+
label: string,
|
|
104
|
+
kind: "use" | "children",
|
|
105
|
+
): AllUseItems[] {
|
|
106
|
+
const result = store.run(namespace, entry, cb)?.flat(3);
|
|
107
|
+
return validateUseItems(result, namespace, label, kind);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** Assert an already-invoked, flattened callback result is a use-item array. */
|
|
111
|
+
function validateUseItems(
|
|
112
|
+
result: any,
|
|
113
|
+
namespace: string,
|
|
114
|
+
label: string,
|
|
115
|
+
kind: "use" | "children",
|
|
116
|
+
): AllUseItems[] {
|
|
117
|
+
invariant(
|
|
118
|
+
Array.isArray(result) && result.every((item) => isValidUseItem(item)),
|
|
119
|
+
`${label}() ${kind === "use" ? "use()" : "children"} callback must return an array of use items [${namespace}]`,
|
|
120
|
+
);
|
|
121
|
+
return result as AllUseItems[];
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/** True when a children/use result contains no routes (directly or nested). */
|
|
125
|
+
const isOrphan = (result: AllUseItems[]): boolean =>
|
|
126
|
+
!result.some((item) => item != null && hasRoutesInItem(item));
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Register a routeless structural entry as an orphan sibling: clear its parent
|
|
130
|
+
* pointer so it leaves the middleware/parent-pointer chain (LOAD-BEARING — see
|
|
131
|
+
* docs/tree-structure.md) and push it onto the parent's layout[] so it renders
|
|
132
|
+
* as a wrapper. Used by cache()/middleware()/transition(); layout() runs extra
|
|
133
|
+
* validation and registers inline.
|
|
134
|
+
*/
|
|
135
|
+
const attachOrphanSibling = (
|
|
136
|
+
parent: EntryData | null,
|
|
137
|
+
entry: EntryData,
|
|
138
|
+
): void => {
|
|
139
|
+
entry.parent = null;
|
|
140
|
+
if (parent && "layout" in parent) parent.layout.push(entry);
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Run `fn` with `ctx.parent` temporarily redirected to `temp` — a satellite
|
|
145
|
+
* entry that captures the attachments declared by a use() callback — restoring
|
|
146
|
+
* the original parent afterward, including on throw. loader()/intercept() each
|
|
147
|
+
* build their own tempParent shape (intercept keeps a loading get/set accessor
|
|
148
|
+
* and a captured-layouts array); this only centralizes the save/restore.
|
|
149
|
+
*/
|
|
150
|
+
function withParent<T>(ctx: HelperContext, temp: EntryData, fn: () => T): T {
|
|
151
|
+
const original = ctx.parent;
|
|
152
|
+
ctx.parent = temp;
|
|
153
|
+
try {
|
|
154
|
+
return fn();
|
|
155
|
+
} finally {
|
|
156
|
+
ctx.parent = original;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
60
160
|
const revalidate: RouteHelpers<any, any>["revalidate"] = (fn) => {
|
|
61
|
-
const ctx =
|
|
62
|
-
|
|
161
|
+
const { store, ctx } = requireDslContext(
|
|
162
|
+
"revalidate() must be called inside urls()",
|
|
163
|
+
);
|
|
63
164
|
|
|
64
165
|
// Attach to last entry in stack
|
|
65
166
|
const parent = ctx.parent;
|
|
66
167
|
if (!parent || !("revalidate" in parent)) {
|
|
67
168
|
invariant(false, "No parent entry available for revalidate()");
|
|
68
169
|
}
|
|
69
|
-
const name = `$${
|
|
170
|
+
const name = `$${store.getNextIndex("revalidate")}`;
|
|
70
171
|
parent.revalidate.push(fn);
|
|
71
172
|
return { name, type: "revalidate" } as RevalidateItem;
|
|
72
173
|
};
|
|
@@ -104,15 +205,16 @@ const revalidate: RouteHelpers<any, any>["revalidate"] = (fn) => {
|
|
|
104
205
|
* ```
|
|
105
206
|
*/
|
|
106
207
|
const errorBoundary: RouteHelpers<any, any>["errorBoundary"] = (fallback) => {
|
|
107
|
-
const ctx =
|
|
108
|
-
|
|
208
|
+
const { store, ctx } = requireDslContext(
|
|
209
|
+
"errorBoundary() must be called inside urls()",
|
|
210
|
+
);
|
|
109
211
|
|
|
110
212
|
// Attach to parent entry in stack
|
|
111
213
|
const parent = ctx.parent;
|
|
112
214
|
if (!parent || !("errorBoundary" in parent)) {
|
|
113
215
|
invariant(false, "No parent entry available for errorBoundary()");
|
|
114
216
|
}
|
|
115
|
-
const name = `$${
|
|
217
|
+
const name = `$${store.getNextIndex("errorBoundary")}`;
|
|
116
218
|
parent.errorBoundary.push(fallback);
|
|
117
219
|
return { name, type: "errorBoundary" } as ErrorBoundaryItem;
|
|
118
220
|
};
|
|
@@ -151,46 +253,20 @@ const errorBoundary: RouteHelpers<any, any>["errorBoundary"] = (fallback) => {
|
|
|
151
253
|
const notFoundBoundary: RouteHelpers<any, any>["notFoundBoundary"] = (
|
|
152
254
|
fallback,
|
|
153
255
|
) => {
|
|
154
|
-
const ctx =
|
|
155
|
-
|
|
256
|
+
const { store, ctx } = requireDslContext(
|
|
257
|
+
"notFoundBoundary() must be called inside urls()",
|
|
258
|
+
);
|
|
156
259
|
|
|
157
260
|
// Attach to parent entry in stack
|
|
158
261
|
const parent = ctx.parent;
|
|
159
262
|
if (!parent || !("notFoundBoundary" in parent)) {
|
|
160
263
|
invariant(false, "No parent entry available for notFoundBoundary()");
|
|
161
264
|
}
|
|
162
|
-
const name = `$${
|
|
265
|
+
const name = `$${store.getNextIndex("notFoundBoundary")}`;
|
|
163
266
|
parent.notFoundBoundary.push(fallback);
|
|
164
267
|
return { name, type: "notFoundBoundary" } as NotFoundBoundaryItem;
|
|
165
268
|
};
|
|
166
269
|
|
|
167
|
-
/**
|
|
168
|
-
* When helper - defines a condition for intercept activation
|
|
169
|
-
*
|
|
170
|
-
* Only valid inside intercept() use() callback. The when() function
|
|
171
|
-
* is captured by the intercept and stored in its `when` array.
|
|
172
|
-
* During soft navigation, all when() conditions must return true
|
|
173
|
-
* for the intercept to activate.
|
|
174
|
-
*/
|
|
175
|
-
const when: RouteHelpers<any, any>["when"] = (fn) => {
|
|
176
|
-
const ctx = getContext().getStore();
|
|
177
|
-
if (!ctx) throw new Error("when() must be called inside intercept()");
|
|
178
|
-
|
|
179
|
-
// The when() function needs to be captured by the intercept's tempParent
|
|
180
|
-
// which should have a `when` array. If not present, we're not inside intercept()
|
|
181
|
-
const parent = ctx.parent as any;
|
|
182
|
-
if (!parent || !("when" in parent)) {
|
|
183
|
-
invariant(
|
|
184
|
-
false,
|
|
185
|
-
"when() can only be used inside intercept() use() callback",
|
|
186
|
-
);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
const name = `$${getContext().getNextIndex("when")}`;
|
|
190
|
-
parent.when.push(fn);
|
|
191
|
-
return { name, type: "when" } as WhenItem;
|
|
192
|
-
};
|
|
193
|
-
|
|
194
270
|
/**
|
|
195
271
|
* Cache helper - defines caching configuration for segments
|
|
196
272
|
*
|
|
@@ -201,21 +277,21 @@ const when: RouteHelpers<any, any>["when"] = (fn) => {
|
|
|
201
277
|
* Supports these call signatures:
|
|
202
278
|
* - cache() - no args, uses app-level defaults (for loader caching)
|
|
203
279
|
* - cache(() => [...]) - wraps children with app-level defaults
|
|
204
|
-
* - cache('profileName') - uses a named cache profile
|
|
205
|
-
* - cache('profileName', () => [...]) - named profile with children
|
|
206
280
|
* - cache({ ttl: 60 }, () => [...]) - with explicit options
|
|
281
|
+
*
|
|
282
|
+
* Named cache profiles are applied via the `"use cache: <profile>"` directive,
|
|
283
|
+
* not a `cache("profileName")` form in the route tree.
|
|
207
284
|
*/
|
|
208
285
|
const cache: RouteHelpers<any, any>["cache"] = (
|
|
209
286
|
optionsOrChildren?:
|
|
210
287
|
| PartialCacheOptions
|
|
211
288
|
| false
|
|
212
|
-
| string
|
|
213
289
|
| (() => UseItems<AllUseItems>),
|
|
214
290
|
maybeChildren?: () => UseItems<AllUseItems>,
|
|
215
291
|
) => {
|
|
216
|
-
const store =
|
|
217
|
-
|
|
218
|
-
|
|
292
|
+
const { store, ctx } = requireDslContext(
|
|
293
|
+
"cache() must be called inside urls()",
|
|
294
|
+
);
|
|
219
295
|
|
|
220
296
|
// Handle overloaded signature
|
|
221
297
|
let options: PartialCacheOptions | false;
|
|
@@ -225,18 +301,6 @@ const cache: RouteHelpers<any, any>["cache"] = (
|
|
|
225
301
|
// cache() - no args, use defaults
|
|
226
302
|
options = {};
|
|
227
303
|
children = undefined;
|
|
228
|
-
} else if (typeof optionsOrChildren === "string") {
|
|
229
|
-
// cache('profileName') or cache('profileName', () => [...])
|
|
230
|
-
// Resolve from context-scoped profiles (set per-router via HelperContext).
|
|
231
|
-
const ctxStore = RSCRouterContext.getStore();
|
|
232
|
-
const profile = ctxStore?.cacheProfiles?.[optionsOrChildren];
|
|
233
|
-
invariant(
|
|
234
|
-
profile,
|
|
235
|
-
`cache("${optionsOrChildren}"): unknown cache profile. ` +
|
|
236
|
-
`Define it in createRouter({ cacheProfiles: { "${optionsOrChildren}": { ttl: ... } } }).`,
|
|
237
|
-
);
|
|
238
|
-
options = { ttl: profile.ttl, swr: profile.swr, tags: profile.tags };
|
|
239
|
-
children = maybeChildren;
|
|
240
304
|
} else if (typeof optionsOrChildren === "function") {
|
|
241
305
|
// cache(() => [...]) - use empty options (will use defaults)
|
|
242
306
|
options = {};
|
|
@@ -267,26 +331,18 @@ const cache: RouteHelpers<any, any>["cache"] = (
|
|
|
267
331
|
// Create orphan cache entry (like orphan layout)
|
|
268
332
|
// Subsequent siblings in the same array will attach to this entry
|
|
269
333
|
const namespace = `${ctx.namespace}.${cacheIndex}`;
|
|
270
|
-
const
|
|
334
|
+
const urlPrefix = getUrlPrefix();
|
|
271
335
|
|
|
272
336
|
const entry = {
|
|
337
|
+
...emptySegmentBase(),
|
|
273
338
|
id: namespace,
|
|
274
339
|
shortCode: store.getShortCode("cache"),
|
|
275
340
|
type: "cache",
|
|
276
341
|
parent: parent, // link to current parent for hierarchy
|
|
277
342
|
cache: cacheConfig,
|
|
278
343
|
handler: RootLayout,
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
revalidate: [],
|
|
282
|
-
errorBoundary: [],
|
|
283
|
-
notFoundBoundary: [],
|
|
284
|
-
layout: [],
|
|
285
|
-
parallel: [],
|
|
286
|
-
intercept: [],
|
|
287
|
-
loader: [],
|
|
288
|
-
...(cacheUrlPrefix ? { mountPath: cacheUrlPrefix } : {}),
|
|
289
|
-
} as EntryData;
|
|
344
|
+
...(urlPrefix ? { mountPath: urlPrefix } : {}),
|
|
345
|
+
} satisfies EntryData;
|
|
290
346
|
|
|
291
347
|
// Attach to parent's layout array (cache entries are structural like layouts)
|
|
292
348
|
if (parent && "layout" in parent) {
|
|
@@ -300,13 +356,23 @@ const cache: RouteHelpers<any, any>["cache"] = (
|
|
|
300
356
|
return { name: namespace, type: "cache" } as CacheItem;
|
|
301
357
|
}
|
|
302
358
|
|
|
359
|
+
// Inside a loader() use() callback, only the direct form — cache()/cache(opts)
|
|
360
|
+
// — writes cache config to the loader entry. The wrapper form creates a
|
|
361
|
+
// structural cache boundary with its own children scope, which has no effect
|
|
362
|
+
// on the loader and would silently no-op.
|
|
363
|
+
invariant(
|
|
364
|
+
!(ctx.parent && (ctx.parent as any).type === "loader"),
|
|
365
|
+
"cache() wrapper form is not valid inside loader() use(). Use cache({...}) without children to configure the loader's cache.",
|
|
366
|
+
);
|
|
367
|
+
|
|
303
368
|
// With children: create a cache entry (like layout with caching semantics)
|
|
304
369
|
const namespace = `${ctx.namespace}.${cacheIndex}`;
|
|
305
370
|
const cacheShortCode = store.getShortCode("cache");
|
|
306
371
|
|
|
307
|
-
const
|
|
372
|
+
const urlPrefix = getUrlPrefix();
|
|
308
373
|
|
|
309
374
|
const entry = {
|
|
375
|
+
...emptySegmentBase(),
|
|
310
376
|
id: namespace,
|
|
311
377
|
shortCode: cacheShortCode,
|
|
312
378
|
type: "cache",
|
|
@@ -314,48 +380,57 @@ const cache: RouteHelpers<any, any>["cache"] = (
|
|
|
314
380
|
cache: cacheConfig,
|
|
315
381
|
// Cache entries render like layouts (with Outlet as default handler)
|
|
316
382
|
handler: RootLayout, // RootLayout just renders <Outlet />
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
revalidate: [],
|
|
320
|
-
errorBoundary: [],
|
|
321
|
-
notFoundBoundary: [],
|
|
322
|
-
layout: [],
|
|
323
|
-
parallel: [],
|
|
324
|
-
intercept: [],
|
|
325
|
-
loader: [],
|
|
326
|
-
...(cacheUrlPrefix2 ? { mountPath: cacheUrlPrefix2 } : {}),
|
|
327
|
-
} as EntryData;
|
|
383
|
+
...(urlPrefix ? { mountPath: urlPrefix } : {}),
|
|
384
|
+
} satisfies EntryData;
|
|
328
385
|
|
|
329
386
|
// Run children with cache entry as parent
|
|
330
|
-
const result =
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
387
|
+
const result = runAndValidateUseItems(
|
|
388
|
+
store,
|
|
389
|
+
namespace,
|
|
390
|
+
entry,
|
|
391
|
+
children,
|
|
392
|
+
"cache",
|
|
393
|
+
"children",
|
|
335
394
|
);
|
|
336
395
|
|
|
337
|
-
//
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
Array.isArray(result) &&
|
|
341
|
-
result.some((item) => hasRoutesInItem(item));
|
|
342
|
-
|
|
343
|
-
if (!hasRoutes) {
|
|
344
|
-
const parent = ctx.parent;
|
|
345
|
-
if (parent && "layout" in parent) {
|
|
346
|
-
// Attach to parent's layout array (cache entries are structural like layouts)
|
|
347
|
-
entry.parent = null;
|
|
348
|
-
parent.layout.push(entry);
|
|
349
|
-
}
|
|
350
|
-
}
|
|
396
|
+
// Cache entries are structural like layouts: with no routes inside, register
|
|
397
|
+
// as an orphan sibling.
|
|
398
|
+
if (isOrphan(result)) attachOrphanSibling(ctx.parent, entry);
|
|
351
399
|
|
|
352
400
|
return { name: namespace, type: "cache", uses: result } as CacheItem;
|
|
353
401
|
};
|
|
354
402
|
|
|
355
|
-
const middleware: RouteHelpers<any, any>["middleware"] = (...
|
|
403
|
+
const middleware: RouteHelpers<any, any>["middleware"] = (...args: any[]) => {
|
|
404
|
+
// Four call forms:
|
|
405
|
+
// middleware(fn) — single fn, sibling
|
|
406
|
+
// middleware(fn, () => [...]) — single fn, wrapping
|
|
407
|
+
// middleware([fn1, fn2]) — array, sibling
|
|
408
|
+
// middleware([fn1, fn2], () => [...]) — array, wrapping
|
|
409
|
+
const isArray = Array.isArray(args[0]);
|
|
410
|
+
|
|
411
|
+
// Reject the removed variadic form before executing anything.
|
|
412
|
+
// middleware(fn1, fn2, fn3) — 3+ args, always wrong.
|
|
413
|
+
// middleware(fn1, fn2) where fn2 is a middleware fn (length >= 1), not a
|
|
414
|
+
// children callback (length === 0) — legacy two-fn form, reject early.
|
|
415
|
+
if (
|
|
416
|
+
args.length > 2 ||
|
|
417
|
+
(!isArray &&
|
|
418
|
+
args.length === 2 &&
|
|
419
|
+
typeof args[1] === "function" &&
|
|
420
|
+
args[1].length > 0)
|
|
421
|
+
) {
|
|
422
|
+
throw new Error(
|
|
423
|
+
"middleware() no longer accepts variadic arguments. " +
|
|
424
|
+
"Use middleware([fn1, fn2, ...]) instead of middleware(fn1, fn2, ...).",
|
|
425
|
+
);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
const fns: MiddlewareFn<any>[] = isArray ? args[0] : [args[0]];
|
|
429
|
+
const children: (() => any[]) | undefined =
|
|
430
|
+
typeof args[1] === "function" ? args[1] : undefined;
|
|
431
|
+
|
|
356
432
|
// Prevent "use cache" functions from being used as middleware.
|
|
357
|
-
|
|
358
|
-
for (const f of fn) {
|
|
433
|
+
for (const f of fns) {
|
|
359
434
|
if (isCachedFunction(f)) {
|
|
360
435
|
throw new Error(
|
|
361
436
|
`A "use cache" function cannot be used as middleware. ` +
|
|
@@ -366,23 +441,84 @@ const middleware: RouteHelpers<any, any>["middleware"] = (...fn) => {
|
|
|
366
441
|
}
|
|
367
442
|
}
|
|
368
443
|
|
|
369
|
-
const ctx =
|
|
370
|
-
|
|
444
|
+
const { store, ctx } = requireDslContext(
|
|
445
|
+
"middleware() must be called inside urls()",
|
|
446
|
+
);
|
|
371
447
|
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
448
|
+
if (!children) {
|
|
449
|
+
// Sibling mode: attach to parent entry
|
|
450
|
+
const parent = ctx.parent;
|
|
451
|
+
if (!parent || !("middleware" in parent)) {
|
|
452
|
+
invariant(false, "No parent entry available for middleware()");
|
|
453
|
+
}
|
|
454
|
+
const name = `$${store.getNextIndex("middleware")}`;
|
|
455
|
+
parent.middleware.push(...fns);
|
|
456
|
+
return { name, type: "middleware" } as MiddlewareItem;
|
|
376
457
|
}
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
458
|
+
|
|
459
|
+
// Wrapping mode: create a transparent layout that carries the middleware
|
|
460
|
+
const mwIndex = store.getNextIndex("middleware");
|
|
461
|
+
const namespace = `${ctx.namespace}.${mwIndex}`;
|
|
462
|
+
|
|
463
|
+
const urlPrefix = getUrlPrefix();
|
|
464
|
+
const entry = {
|
|
465
|
+
...emptySegmentBase(),
|
|
466
|
+
id: namespace,
|
|
467
|
+
shortCode: store.getShortCode("layout"),
|
|
468
|
+
type: "layout",
|
|
469
|
+
parent: ctx.parent,
|
|
470
|
+
handler: RootLayout,
|
|
471
|
+
middleware: [...fns],
|
|
472
|
+
...(urlPrefix ? { mountPath: urlPrefix } : {}),
|
|
473
|
+
} satisfies EntryData;
|
|
474
|
+
|
|
475
|
+
// Run children callback. If the second arg was actually a middleware fn
|
|
476
|
+
// (old variadic form: middleware(mw1, mw2)), this will return a non-array
|
|
477
|
+
// and the invariant below gives a clear migration error.
|
|
478
|
+
const rawResult = store.run(namespace, entry, children);
|
|
479
|
+
|
|
480
|
+
invariant(
|
|
481
|
+
Array.isArray(rawResult),
|
|
482
|
+
"middleware(fn, children) expects the second argument to return an array of use items. " +
|
|
483
|
+
"To pass multiple middleware, use middleware([fn1, fn2]).",
|
|
484
|
+
);
|
|
485
|
+
|
|
486
|
+
const result = validateUseItems(
|
|
487
|
+
rawResult.flat(3),
|
|
488
|
+
namespace,
|
|
489
|
+
"middleware",
|
|
490
|
+
"children",
|
|
491
|
+
);
|
|
492
|
+
|
|
493
|
+
if (isOrphan(result)) attachOrphanSibling(ctx.parent, entry);
|
|
494
|
+
|
|
495
|
+
return {
|
|
496
|
+
name: namespace,
|
|
497
|
+
type: "middleware",
|
|
498
|
+
uses: result,
|
|
499
|
+
} as MiddlewareItem;
|
|
380
500
|
};
|
|
381
501
|
|
|
502
|
+
// Slot names become part of segment ids: a parallel/intercept slot is encoded
|
|
503
|
+
// as `${shortCode}.${slotName}`, and loader segments append `D${index}.${loaderId}`.
|
|
504
|
+
// A "." in the slot name collides with that separator -- loaderParentId
|
|
505
|
+
// (segment-system.tsx) strips from the FIRST `D<index>.`, so a name like
|
|
506
|
+
// "@D3.foo" is mis-cut to "@" and the loader's data is silently dropped. Reject
|
|
507
|
+
// the dot at definition time so the failure is loud, not a corrupted tree at
|
|
508
|
+
// runtime. (A bare "D" without a trailing dot -- e.g. "@Detail" -- is fine.)
|
|
509
|
+
function assertValidSlotName(slotName: string): void {
|
|
510
|
+
invariant(
|
|
511
|
+
!slotName.includes("."),
|
|
512
|
+
`Slot name "${slotName}" must not contain ".". The dot is a reserved ` +
|
|
513
|
+
`segment-id separator; a name like "@D3.foo" corrupts loader segment-id ` +
|
|
514
|
+
`parsing and silently drops the loader's data. Rename the slot.`,
|
|
515
|
+
);
|
|
516
|
+
}
|
|
517
|
+
|
|
382
518
|
const parallel: RouteHelpers<any, any>["parallel"] = (slots, use) => {
|
|
383
|
-
const store =
|
|
384
|
-
|
|
385
|
-
|
|
519
|
+
const { store, ctx } = requireDslContext(
|
|
520
|
+
"parallel() must be called inside urls()",
|
|
521
|
+
);
|
|
386
522
|
|
|
387
523
|
if (!ctx.parent || !ctx.parent?.parallel) {
|
|
388
524
|
invariant(false, "No parent entry available for parallel()");
|
|
@@ -393,15 +529,30 @@ const parallel: RouteHelpers<any, any>["parallel"] = (slots, use) => {
|
|
|
393
529
|
"parallel() cannot be nested inside another parallel()",
|
|
394
530
|
);
|
|
395
531
|
|
|
532
|
+
const slotNames = Object.keys(slots as Record<string, any>) as `@${string}`[];
|
|
533
|
+
for (const slotName of slotNames) assertValidSlotName(slotName);
|
|
534
|
+
|
|
396
535
|
const namespace = `${ctx.namespace}.$${store.getNextIndex("parallel")}`;
|
|
397
536
|
|
|
398
|
-
// Unwrap
|
|
537
|
+
// Unwrap slot values. A slot value can be:
|
|
538
|
+
// - a Handler / ReactNode (legacy form)
|
|
539
|
+
// - a Static() definition (build-time only)
|
|
540
|
+
// - a slot descriptor `{ handler, use? }` for slot-local overrides
|
|
541
|
+
// The descriptor's `use` runs after the broadcast `use` for that slot,
|
|
542
|
+
// so single-assignment items like `loading()` placed there win without
|
|
543
|
+
// affecting siblings.
|
|
399
544
|
const unwrappedSlots: Record<string, any> = {};
|
|
545
|
+
const slotLocalUses: Record<string, (() => any[]) | undefined> = {};
|
|
400
546
|
let hasStaticSlot = false;
|
|
401
547
|
const staticSlotIds: Record<string, string> = {};
|
|
402
|
-
for (const [slotName,
|
|
548
|
+
for (const [slotName, rawSlot] of Object.entries(
|
|
403
549
|
slots as Record<string, any>,
|
|
404
550
|
)) {
|
|
551
|
+
let slotHandler: any = rawSlot;
|
|
552
|
+
if (isSlotDescriptor(rawSlot)) {
|
|
553
|
+
slotHandler = rawSlot.handler;
|
|
554
|
+
slotLocalUses[slotName] = rawSlot.use;
|
|
555
|
+
}
|
|
405
556
|
if (isStaticHandler(slotHandler)) {
|
|
406
557
|
hasStaticSlot = true;
|
|
407
558
|
unwrappedSlots[slotName] = slotHandler.handler;
|
|
@@ -411,6 +562,7 @@ const parallel: RouteHelpers<any, any>["parallel"] = (slots, use) => {
|
|
|
411
562
|
if (ctx.namePrefix) {
|
|
412
563
|
(slotHandler as any).$$routePrefix = ctx.namePrefix;
|
|
413
564
|
}
|
|
565
|
+
stampStaticDefScope(slotHandler);
|
|
414
566
|
}
|
|
415
567
|
} else {
|
|
416
568
|
unwrappedSlots[slotName] = slotHandler;
|
|
@@ -420,20 +572,12 @@ const parallel: RouteHelpers<any, any>["parallel"] = (slots, use) => {
|
|
|
420
572
|
// Create full EntryData for parallel with its own loaders/revalidate/loading
|
|
421
573
|
const parallelUrlPrefix = getUrlPrefix();
|
|
422
574
|
const entry = {
|
|
575
|
+
...emptySegmentBase(),
|
|
423
576
|
id: namespace,
|
|
424
577
|
shortCode: store.getShortCode("parallel"),
|
|
425
578
|
type: "parallel",
|
|
426
579
|
parent: null, // Parallels don't participate in parent chain traversal
|
|
427
580
|
handler: unwrappedSlots,
|
|
428
|
-
loading: undefined, // Allow loading() to attach loading state
|
|
429
|
-
middleware: [],
|
|
430
|
-
revalidate: [],
|
|
431
|
-
errorBoundary: [],
|
|
432
|
-
notFoundBoundary: [],
|
|
433
|
-
layout: [],
|
|
434
|
-
parallel: [],
|
|
435
|
-
intercept: [],
|
|
436
|
-
loader: [],
|
|
437
581
|
...(parallelUrlPrefix ? { mountPath: parallelUrlPrefix } : {}),
|
|
438
582
|
...(hasStaticSlot
|
|
439
583
|
? {
|
|
@@ -445,19 +589,86 @@ const parallel: RouteHelpers<any, any>["parallel"] = (slots, use) => {
|
|
|
445
589
|
: {}),
|
|
446
590
|
} satisfies EntryData;
|
|
447
591
|
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
592
|
+
for (const slotName of slotNames) {
|
|
593
|
+
const slotEntry = {
|
|
594
|
+
...entry,
|
|
595
|
+
handler: { [slotName]: unwrappedSlots[slotName]! },
|
|
596
|
+
middleware: [...entry.middleware],
|
|
597
|
+
revalidate: [...entry.revalidate],
|
|
598
|
+
errorBoundary: [...entry.errorBoundary],
|
|
599
|
+
notFoundBoundary: [...entry.notFoundBoundary],
|
|
600
|
+
layout: [...entry.layout],
|
|
601
|
+
parallel: { ...entry.parallel },
|
|
602
|
+
intercept: [...entry.intercept],
|
|
603
|
+
loader: [...entry.loader],
|
|
604
|
+
...(entry.staticHandlerIds?.[slotName]
|
|
605
|
+
? {
|
|
606
|
+
isStaticPrerender: true as const,
|
|
607
|
+
staticHandlerIds: { [slotName]: entry.staticHandlerIds[slotName]! },
|
|
608
|
+
}
|
|
609
|
+
: {
|
|
610
|
+
isStaticPrerender: undefined,
|
|
611
|
+
staticHandlerIds: undefined,
|
|
612
|
+
}),
|
|
613
|
+
} satisfies EntryData;
|
|
614
|
+
|
|
615
|
+
// Per-slot merge order (narrowest-scope-wins for single-assignment items
|
|
616
|
+
// like loading()):
|
|
617
|
+
// 1. handler.use — defaults baked into the handler
|
|
618
|
+
// 2. shared `use` — broadcast at the parallel() call site
|
|
619
|
+
// 3. slot-local `use` — per-slot override via `{ handler, use }` descriptor
|
|
620
|
+
// Items that accumulate (loader, middleware, revalidate, …) compose
|
|
621
|
+
// across all three layers regardless of order.
|
|
622
|
+
const rawSlot = (slots as Record<string, any>)[slotName];
|
|
623
|
+
const slotHandlerForUse = isSlotDescriptor(rawSlot)
|
|
624
|
+
? rawSlot.handler
|
|
625
|
+
: rawSlot;
|
|
626
|
+
const slotHandlerUse = resolveHandlerUse(slotHandlerForUse);
|
|
627
|
+
const slotLocalUse = slotLocalUses[slotName];
|
|
628
|
+
const explicitUse = combineExplicitUses(use, slotLocalUse);
|
|
629
|
+
const slotMergedUse = mergeHandlerUse(
|
|
630
|
+
slotHandlerUse,
|
|
631
|
+
explicitUse,
|
|
632
|
+
"parallel",
|
|
454
633
|
);
|
|
455
|
-
|
|
634
|
+
if (slotMergedUse) {
|
|
635
|
+
runAndValidateUseItems(
|
|
636
|
+
store,
|
|
637
|
+
namespace,
|
|
638
|
+
slotEntry,
|
|
639
|
+
slotMergedUse,
|
|
640
|
+
"parallel",
|
|
641
|
+
"use",
|
|
642
|
+
);
|
|
643
|
+
}
|
|
456
644
|
|
|
457
|
-
|
|
645
|
+
ctx.parent.parallel[slotName] = slotEntry;
|
|
646
|
+
}
|
|
458
647
|
return { name: namespace, type: "parallel" } as ParallelItem;
|
|
459
648
|
};
|
|
460
649
|
|
|
650
|
+
function isSlotDescriptor(
|
|
651
|
+
value: unknown,
|
|
652
|
+
): value is { handler: unknown; use?: () => any[] } {
|
|
653
|
+
return (
|
|
654
|
+
typeof value === "object" &&
|
|
655
|
+
value !== null &&
|
|
656
|
+
!("__brand" in value) &&
|
|
657
|
+
"handler" in value &&
|
|
658
|
+
typeof (value as any).handler !== "undefined"
|
|
659
|
+
);
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
function combineExplicitUses(
|
|
663
|
+
sharedUse: (() => any[]) | undefined,
|
|
664
|
+
slotLocalUse: (() => any[]) | undefined,
|
|
665
|
+
): (() => any[]) | undefined {
|
|
666
|
+
if (!sharedUse && !slotLocalUse) return undefined;
|
|
667
|
+
if (!slotLocalUse) return sharedUse;
|
|
668
|
+
if (!sharedUse) return slotLocalUse;
|
|
669
|
+
return () => [...sharedUse(), ...slotLocalUse()];
|
|
670
|
+
}
|
|
671
|
+
|
|
461
672
|
/**
|
|
462
673
|
* Intercept helper - defines an intercepting route for soft navigation
|
|
463
674
|
*/
|
|
@@ -465,11 +676,22 @@ const intercept = (
|
|
|
465
676
|
slotName: `@${string}`,
|
|
466
677
|
routeName: string,
|
|
467
678
|
handler: any,
|
|
679
|
+
configOrUse?: InterceptConfig | (() => any[]),
|
|
468
680
|
use?: () => any[],
|
|
469
681
|
) => {
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
682
|
+
// arg4 discrimination: a function is the use() callback (no config); an object
|
|
683
|
+
// is the config carrying `when`. With config given, the use() callback is
|
|
684
|
+
// arg5. Keeps the no-config form intercept(slot, route, handler, () => [...])
|
|
685
|
+
// working unchanged.
|
|
686
|
+
const config: InterceptConfig | undefined =
|
|
687
|
+
typeof configOrUse === "function" || configOrUse == null
|
|
688
|
+
? undefined
|
|
689
|
+
: configOrUse;
|
|
690
|
+
const useFn = typeof configOrUse === "function" ? configOrUse : use;
|
|
691
|
+
|
|
692
|
+
const { store, ctx } = requireDslContext(
|
|
693
|
+
"intercept() must be called inside urls()",
|
|
694
|
+
);
|
|
473
695
|
|
|
474
696
|
if (!ctx.parent || !ctx.parent?.intercept) {
|
|
475
697
|
invariant(false, "No parent entry available for intercept()");
|
|
@@ -480,6 +702,8 @@ const intercept = (
|
|
|
480
702
|
"intercept() cannot be used inside parallel()",
|
|
481
703
|
);
|
|
482
704
|
|
|
705
|
+
assertValidSlotName(slotName);
|
|
706
|
+
|
|
483
707
|
const namespace = `${ctx.namespace}.$${store.getNextIndex("intercept")}.${slotName}`;
|
|
484
708
|
|
|
485
709
|
// Dot-prefixed = local (add include prefix), unprefixed = global (use as-is)
|
|
@@ -502,25 +726,33 @@ const intercept = (
|
|
|
502
726
|
when: [], // Selector conditions for conditional interception
|
|
503
727
|
};
|
|
504
728
|
|
|
505
|
-
//
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
const
|
|
729
|
+
// Conditional interception: `when` from the config object — a single selector
|
|
730
|
+
// or an array (ALL must return true to activate). Replaces the former when()
|
|
731
|
+
// use-item captured inside the callback.
|
|
732
|
+
if (config?.when) {
|
|
733
|
+
const selectors = Array.isArray(config.when) ? config.when : [config.when];
|
|
734
|
+
entry.when.push(...selectors);
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
// Merge handler.use defaults with explicit use
|
|
738
|
+
const handlerUseFn = resolveHandlerUse(handler);
|
|
739
|
+
const mergedUse = mergeHandlerUse(handlerUseFn, useFn, "intercept");
|
|
510
740
|
|
|
511
|
-
|
|
741
|
+
// Run merged use callback to collect loaders, revalidate, middleware, etc.
|
|
742
|
+
if (mergedUse) {
|
|
743
|
+
// Capture layout() calls into a temporary array
|
|
512
744
|
const capturedLayouts: EntryData[] = [];
|
|
513
745
|
|
|
746
|
+
// Temporary parent so middleware/loader/revalidate/when attach to the
|
|
747
|
+
// intercept entry; the loading get/set accessor mirrors writes onto `entry`.
|
|
514
748
|
const tempParent = {
|
|
515
|
-
...
|
|
749
|
+
...ctx.parent,
|
|
516
750
|
middleware: entry.middleware,
|
|
517
751
|
revalidate: entry.revalidate,
|
|
518
752
|
errorBoundary: entry.errorBoundary,
|
|
519
753
|
notFoundBoundary: entry.notFoundBoundary,
|
|
520
754
|
loader: entry.loader,
|
|
521
755
|
layout: capturedLayouts, // Capture layout() calls
|
|
522
|
-
when: entry.when, // Capture when() conditions
|
|
523
|
-
// Use getter/setter to capture loading on the entry
|
|
524
756
|
get loading() {
|
|
525
757
|
return entry.loading;
|
|
526
758
|
},
|
|
@@ -528,12 +760,10 @@ const intercept = (
|
|
|
528
760
|
entry.loading = value;
|
|
529
761
|
},
|
|
530
762
|
};
|
|
531
|
-
ctx.parent = tempParent as EntryData;
|
|
532
763
|
|
|
533
|
-
const result =
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
ctx.parent = originalParent;
|
|
764
|
+
const result = withParent(ctx, tempParent as EntryData, () =>
|
|
765
|
+
mergedUse()?.flat(3),
|
|
766
|
+
);
|
|
537
767
|
|
|
538
768
|
// Extract layout from captured layouts (use first one if multiple)
|
|
539
769
|
// Layout inside intercept should always be ReactNode or Handler, not Record slots
|
|
@@ -543,10 +773,7 @@ const intercept = (
|
|
|
543
773
|
| Handler<any, any, any>;
|
|
544
774
|
}
|
|
545
775
|
|
|
546
|
-
|
|
547
|
-
Array.isArray(result) && result.every((item) => isValidUseItem(item)),
|
|
548
|
-
`intercept() use() callback must return an array of use items [${namespace}]`,
|
|
549
|
-
);
|
|
776
|
+
validateUseItems(result, namespace, "intercept", "use");
|
|
550
777
|
}
|
|
551
778
|
|
|
552
779
|
ctx.parent.intercept.push(entry);
|
|
@@ -556,43 +783,70 @@ const intercept = (
|
|
|
556
783
|
/**
|
|
557
784
|
* Loader helper - attaches a loader to the current entry
|
|
558
785
|
*/
|
|
559
|
-
const
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
786
|
+
const loader: RouteHelpers<any, any>["loader"] = (
|
|
787
|
+
loaderDef,
|
|
788
|
+
optionsOrUse,
|
|
789
|
+
maybeUse,
|
|
790
|
+
) => {
|
|
791
|
+
const { store, ctx } = requireDslContext(
|
|
792
|
+
"loader() must be called inside urls()",
|
|
793
|
+
);
|
|
563
794
|
|
|
564
795
|
// Attach to last entry in stack
|
|
565
796
|
if (!ctx.parent || !ctx.parent?.loader) {
|
|
566
797
|
invariant(false, "No parent entry available for loader()");
|
|
567
798
|
}
|
|
568
799
|
|
|
800
|
+
// loader(Def, use) and loader(Def, options, use) — same options-or-use
|
|
801
|
+
// disambiguation path() uses, so the long-standing 2-arg form is untouched.
|
|
802
|
+
const optionsGiven =
|
|
803
|
+
typeof optionsOrUse === "function" ? undefined : optionsOrUse;
|
|
804
|
+
const use = typeof optionsOrUse === "function" ? optionsOrUse : maybeUse;
|
|
805
|
+
invariant(
|
|
806
|
+
!(typeof optionsOrUse === "function" && maybeUse !== undefined),
|
|
807
|
+
"loader() received two use() callbacks. Pass loader(Def, options, use) or loader(Def, use).",
|
|
808
|
+
);
|
|
809
|
+
invariant(
|
|
810
|
+
optionsGiven?.stream === undefined || optionsGiven.stream === "navigation",
|
|
811
|
+
`loader() stream must be "navigation" (got ${JSON.stringify(optionsGiven?.stream)}). Omit it to stream on every render.`,
|
|
812
|
+
);
|
|
813
|
+
|
|
569
814
|
const name = `${ctx.namespace}.$${store.getNextIndex("loader")}`;
|
|
570
815
|
|
|
571
|
-
// Create loader entry with empty revalidate array
|
|
572
|
-
|
|
816
|
+
// Create loader entry with empty revalidate array. awaitBeforeFlush is
|
|
817
|
+
// resolved here, at DSL-evaluation time, for the same reason
|
|
818
|
+
// loading({ ssr: false }) is (below) — per-isSSR entry caching makes the
|
|
819
|
+
// flag request-mode-correct with no isSSR threading; see LoaderEntry.
|
|
820
|
+
const loaderEntry: LoaderEntry = {
|
|
573
821
|
loader: loaderDef,
|
|
574
822
|
revalidate: [] as ShouldRevalidateFn<any, any>[],
|
|
823
|
+
...(optionsGiven?.stream === "navigation" && ctx.isSSR
|
|
824
|
+
? { awaitBeforeFlush: true as const }
|
|
825
|
+
: {}),
|
|
575
826
|
};
|
|
576
827
|
|
|
577
|
-
//
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
828
|
+
// Merge handler.use defaults (attached to the loader definition) with explicit use
|
|
829
|
+
const handlerUseFn = resolveHandlerUse(loaderDef);
|
|
830
|
+
const mergedUse = mergeHandlerUse(handlerUseFn, use, "loader");
|
|
831
|
+
|
|
832
|
+
// If any use callback is in effect, run it to collect revalidation rules and cache config
|
|
833
|
+
if (mergedUse) {
|
|
581
834
|
// Create a temporary "parent" with type "loader" so cache() can detect it.
|
|
582
835
|
// Save existing .cache to distinguish inherited config from newly set config.
|
|
583
|
-
const parentCache = (
|
|
836
|
+
const parentCache = (ctx.parent as any).cache;
|
|
584
837
|
const tempParent = {
|
|
585
|
-
...
|
|
838
|
+
...ctx.parent,
|
|
586
839
|
type: "loader",
|
|
587
840
|
revalidate: loaderEntry.revalidate,
|
|
588
841
|
};
|
|
589
|
-
ctx.parent = tempParent as EntryData;
|
|
590
842
|
|
|
591
|
-
const result =
|
|
843
|
+
const result = withParent(ctx, tempParent as EntryData, () =>
|
|
844
|
+
mergedUse()?.flat(3),
|
|
845
|
+
);
|
|
592
846
|
|
|
593
847
|
// Copy cache config only if cache() was called during the use() callback.
|
|
594
|
-
// The spread
|
|
595
|
-
//
|
|
848
|
+
// The spread may carry an inherited .cache from a parent cache() boundary —
|
|
849
|
+
// only copy if it was newly set.
|
|
596
850
|
if (
|
|
597
851
|
(tempParent as any).cache &&
|
|
598
852
|
(tempParent as any).cache !== parentCache
|
|
@@ -600,13 +854,7 @@ const loaderFn: RouteHelpers<any, any>["loader"] = (loaderDef, use) => {
|
|
|
600
854
|
(loaderEntry as any).cache = (tempParent as any).cache;
|
|
601
855
|
}
|
|
602
856
|
|
|
603
|
-
|
|
604
|
-
ctx.parent = originalParent;
|
|
605
|
-
|
|
606
|
-
invariant(
|
|
607
|
-
Array.isArray(result) && result.every((item) => isValidUseItem(item)),
|
|
608
|
-
`loader() use() callback must return an array of use items [${name}]`,
|
|
609
|
-
);
|
|
857
|
+
validateUseItems(result, name, "loader", "use");
|
|
610
858
|
}
|
|
611
859
|
|
|
612
860
|
ctx.parent.loader.push(loaderEntry);
|
|
@@ -617,21 +865,25 @@ const loaderFn: RouteHelpers<any, any>["loader"] = (loaderDef, use) => {
|
|
|
617
865
|
* Loading helper - attaches a loading component to the current entry
|
|
618
866
|
* Loading components are static (no context) and shown during navigation
|
|
619
867
|
*/
|
|
620
|
-
const
|
|
621
|
-
const store =
|
|
622
|
-
|
|
623
|
-
|
|
868
|
+
const loading: RouteHelpers<any, any>["loading"] = (component, options) => {
|
|
869
|
+
const { store, ctx } = requireDslContext(
|
|
870
|
+
"loading() must be called inside urls()",
|
|
871
|
+
);
|
|
624
872
|
|
|
625
873
|
const parent = ctx.parent;
|
|
626
874
|
if (!parent || !("loading" in parent)) {
|
|
627
875
|
invariant(false, "No parent entry available for loading()");
|
|
628
876
|
}
|
|
629
877
|
|
|
878
|
+
// Unwrap function form: loading(() => <Skeleton />) → loading(<Skeleton />)
|
|
879
|
+
const resolved =
|
|
880
|
+
typeof component === "function" ? (component as () => any)() : component;
|
|
881
|
+
|
|
630
882
|
// If ssr: false and we're in SSR, set loading to false
|
|
631
883
|
if (options?.ssr === false && ctx.isSSR) {
|
|
632
884
|
parent.loading = false;
|
|
633
885
|
} else {
|
|
634
|
-
parent.loading =
|
|
886
|
+
parent.loading = resolved;
|
|
635
887
|
}
|
|
636
888
|
|
|
637
889
|
const name = `$${store.getNextIndex("loading")}`;
|
|
@@ -639,10 +891,13 @@ const loadingFn: RouteHelpers<any, any>["loading"] = (component, options) => {
|
|
|
639
891
|
};
|
|
640
892
|
|
|
641
893
|
/**
|
|
642
|
-
* Transition helper -
|
|
643
|
-
*
|
|
894
|
+
* Transition helper - opts the entry (or a wrapped group of routes) into
|
|
895
|
+
* transition-driven navigation by attaching a TransitionConfig. This drives the
|
|
896
|
+
* commit through startTransition (content hold on all React versions) and, on
|
|
897
|
+
* experimental React, places a `<ViewTransition>` boundary unless
|
|
898
|
+
* `viewTransition: false`. See skills/view-transitions for the matrix.
|
|
644
899
|
*/
|
|
645
|
-
const
|
|
900
|
+
const transition = (
|
|
646
901
|
configOrChildren?: TransitionConfig | (() => UseItems<AllUseItems>),
|
|
647
902
|
maybeChildren?: () => UseItems<AllUseItems>,
|
|
648
903
|
): TransitionItem => {
|
|
@@ -656,11 +911,15 @@ const transitionFn = (
|
|
|
656
911
|
const children: (() => UseItems<AllUseItems>) | undefined =
|
|
657
912
|
typeof configOrChildren === "function" ? configOrChildren : maybeChildren;
|
|
658
913
|
|
|
659
|
-
const store =
|
|
660
|
-
|
|
661
|
-
|
|
914
|
+
const { store, ctx } = requireDslContext(
|
|
915
|
+
"transition() must be called inside urls()",
|
|
916
|
+
);
|
|
662
917
|
|
|
663
|
-
|
|
918
|
+
// Allocate a single index for this transition() call (used in all paths),
|
|
919
|
+
// mirroring cache() — the child form uses it for the name, the wrapper form
|
|
920
|
+
// reuses it for the namespace, so no index is burned.
|
|
921
|
+
const transitionIndex = store.getNextIndex("transition");
|
|
922
|
+
const name = `$${transitionIndex}`;
|
|
664
923
|
|
|
665
924
|
if (!children) {
|
|
666
925
|
// Position 1: child of path() — attach to parent entry
|
|
@@ -673,70 +932,51 @@ const transitionFn = (
|
|
|
673
932
|
}
|
|
674
933
|
|
|
675
934
|
// Position 2: wrapper — create a transparent layout with transition config
|
|
676
|
-
const namespace = `${ctx.namespace}.${
|
|
935
|
+
const namespace = `${ctx.namespace}.${transitionIndex}`;
|
|
677
936
|
const entry = {
|
|
937
|
+
...emptySegmentBase(),
|
|
678
938
|
id: namespace,
|
|
679
939
|
shortCode: store.getShortCode("layout"),
|
|
680
940
|
type: "layout",
|
|
681
941
|
parent: ctx.parent,
|
|
682
942
|
handler: RootLayout,
|
|
683
|
-
loading: undefined,
|
|
684
943
|
transition: config,
|
|
685
|
-
|
|
686
|
-
revalidate: [],
|
|
687
|
-
errorBoundary: [],
|
|
688
|
-
notFoundBoundary: [],
|
|
689
|
-
layout: [],
|
|
690
|
-
parallel: [],
|
|
691
|
-
intercept: [],
|
|
692
|
-
loader: [],
|
|
693
|
-
} as EntryData;
|
|
694
|
-
|
|
695
|
-
const result = store.run(namespace, entry, children)?.flat(3);
|
|
944
|
+
} satisfies EntryData;
|
|
696
945
|
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
946
|
+
const result = runAndValidateUseItems(
|
|
947
|
+
store,
|
|
948
|
+
namespace,
|
|
949
|
+
entry,
|
|
950
|
+
children,
|
|
951
|
+
"transition",
|
|
952
|
+
"children",
|
|
700
953
|
);
|
|
701
954
|
|
|
702
|
-
|
|
703
|
-
result &&
|
|
704
|
-
Array.isArray(result) &&
|
|
705
|
-
result.some((item) => hasRoutesInItem(item));
|
|
706
|
-
|
|
707
|
-
if (!hasRoutes) {
|
|
708
|
-
const parent = ctx.parent;
|
|
709
|
-
if (parent && "layout" in parent) {
|
|
710
|
-
entry.parent = null;
|
|
711
|
-
parent.layout.push(entry);
|
|
712
|
-
}
|
|
713
|
-
}
|
|
955
|
+
if (isOrphan(result)) attachOrphanSibling(ctx.parent, entry);
|
|
714
956
|
|
|
715
957
|
return { name: namespace, type: "transition" } as TransitionItem;
|
|
716
958
|
};
|
|
717
959
|
|
|
718
|
-
const
|
|
719
|
-
const store =
|
|
720
|
-
|
|
721
|
-
|
|
960
|
+
const route: RouteHelpers<any, any>["route"] = (name, handler, use) => {
|
|
961
|
+
const { store, ctx } = requireDslContext(
|
|
962
|
+
"route() must be called inside urls()",
|
|
963
|
+
);
|
|
964
|
+
|
|
965
|
+
// Reject names colliding with reserved internal prefixes ($path_, $prefix_),
|
|
966
|
+
// the same guard path() and include() enforce. Without it such a name
|
|
967
|
+
// type-checks on an untyped router, then silently vanishes from generated
|
|
968
|
+
// route-types and public reverse() (isAutoGeneratedRouteName filters it out).
|
|
969
|
+
validateUserRouteName(name);
|
|
722
970
|
|
|
723
971
|
const namespace = `${ctx.namespace}.${store.getNextIndex("route")}.${name}`;
|
|
724
972
|
|
|
725
973
|
const entry = {
|
|
974
|
+
...emptySegmentBase(),
|
|
726
975
|
id: namespace,
|
|
727
976
|
shortCode: store.getShortCode("route"),
|
|
728
977
|
type: "route",
|
|
729
978
|
parent: ctx.parent,
|
|
730
|
-
handler,
|
|
731
|
-
loading: undefined, // Allow loading() to attach loading state
|
|
732
|
-
middleware: [],
|
|
733
|
-
revalidate: [],
|
|
734
|
-
errorBoundary: [],
|
|
735
|
-
notFoundBoundary: [],
|
|
736
|
-
layout: [],
|
|
737
|
-
parallel: [],
|
|
738
|
-
intercept: [],
|
|
739
|
-
loader: [],
|
|
979
|
+
handler: handler as unknown as Handler<any, any, any>,
|
|
740
980
|
} satisfies EntryData;
|
|
741
981
|
|
|
742
982
|
/* We will throw if user is registring same route name twice */
|
|
@@ -746,12 +986,18 @@ const routeFn: RouteHelpers<any, any>["route"] = (name, handler, use) => {
|
|
|
746
986
|
);
|
|
747
987
|
/* Register route entry */
|
|
748
988
|
ctx.manifest.set(name, entry);
|
|
989
|
+
/* Merge handler.use defaults with explicit use */
|
|
990
|
+
const handlerUseFn = resolveHandlerUse(handler);
|
|
991
|
+
const mergedUse = mergeHandlerUse(handlerUseFn, use, "route");
|
|
749
992
|
/* Run use and attach handlers */
|
|
750
|
-
if (
|
|
751
|
-
const result =
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
993
|
+
if (mergedUse) {
|
|
994
|
+
const result = runAndValidateUseItems(
|
|
995
|
+
store,
|
|
996
|
+
namespace,
|
|
997
|
+
entry,
|
|
998
|
+
mergedUse,
|
|
999
|
+
"route",
|
|
1000
|
+
"use",
|
|
755
1001
|
);
|
|
756
1002
|
return { name: namespace, type: "route", uses: result } as RouteItem;
|
|
757
1003
|
}
|
|
@@ -761,9 +1007,9 @@ const routeFn: RouteHelpers<any, any>["route"] = (name, handler, use) => {
|
|
|
761
1007
|
};
|
|
762
1008
|
|
|
763
1009
|
const layout: RouteHelpers<any, any>["layout"] = (handler, use) => {
|
|
764
|
-
const store =
|
|
765
|
-
|
|
766
|
-
|
|
1010
|
+
const { store, ctx } = requireDslContext(
|
|
1011
|
+
"layout() must be called inside urls()",
|
|
1012
|
+
);
|
|
767
1013
|
|
|
768
1014
|
invariant(
|
|
769
1015
|
!ctx.parent || ctx.parent.type !== "parallel",
|
|
@@ -781,20 +1027,12 @@ const layout: RouteHelpers<any, any>["layout"] = (handler, use) => {
|
|
|
781
1027
|
|
|
782
1028
|
const urlPrefix = getUrlPrefix();
|
|
783
1029
|
const entry = {
|
|
1030
|
+
...emptySegmentBase(),
|
|
784
1031
|
id: namespace,
|
|
785
1032
|
shortCode,
|
|
786
1033
|
type: "layout",
|
|
787
1034
|
parent: ctx.parent,
|
|
788
1035
|
handler: unwrappedHandler,
|
|
789
|
-
loading: undefined, // Allow loading() to attach loading state
|
|
790
|
-
middleware: [],
|
|
791
|
-
revalidate: [],
|
|
792
|
-
errorBoundary: [],
|
|
793
|
-
notFoundBoundary: [],
|
|
794
|
-
parallel: [],
|
|
795
|
-
intercept: [],
|
|
796
|
-
layout: [],
|
|
797
|
-
loader: [],
|
|
798
1036
|
...(urlPrefix ? { mountPath: urlPrefix } : {}),
|
|
799
1037
|
...(isStatic
|
|
800
1038
|
? {
|
|
@@ -805,18 +1043,27 @@ const layout: RouteHelpers<any, any>["layout"] = (handler, use) => {
|
|
|
805
1043
|
} satisfies EntryData;
|
|
806
1044
|
|
|
807
1045
|
// Capture namespace prefix on static handler for build-time reverse() resolution
|
|
808
|
-
if (isStatic && handler.$$id
|
|
809
|
-
(
|
|
1046
|
+
if (isStatic && handler.$$id) {
|
|
1047
|
+
if (ctx.namePrefix) {
|
|
1048
|
+
(handler as any).$$routePrefix = ctx.namePrefix;
|
|
1049
|
+
}
|
|
1050
|
+
stampStaticDefScope(handler);
|
|
810
1051
|
}
|
|
811
1052
|
|
|
812
|
-
//
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
result = store.run(namespace, entry, use)?.flat(3);
|
|
1053
|
+
// Merge handler.use defaults with explicit use
|
|
1054
|
+
const handlerUseFn = resolveHandlerUse(handler);
|
|
1055
|
+
const mergedUse = mergeHandlerUse(handlerUseFn, use, "layout");
|
|
816
1056
|
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
1057
|
+
// Run merged use callback if present
|
|
1058
|
+
let result: AllUseItems[] | undefined;
|
|
1059
|
+
if (mergedUse) {
|
|
1060
|
+
result = runAndValidateUseItems(
|
|
1061
|
+
store,
|
|
1062
|
+
namespace,
|
|
1063
|
+
entry,
|
|
1064
|
+
mergedUse,
|
|
1065
|
+
"layout",
|
|
1066
|
+
"use",
|
|
820
1067
|
);
|
|
821
1068
|
}
|
|
822
1069
|
|
|
@@ -858,9 +1105,7 @@ const layout: RouteHelpers<any, any>["layout"] = (handler, use) => {
|
|
|
858
1105
|
`Orphan layouts can only be defined inside route or layout > check [${namespace}]`,
|
|
859
1106
|
);
|
|
860
1107
|
|
|
861
|
-
|
|
862
|
-
entry.parent = null;
|
|
863
|
-
parent.layout.push(entry);
|
|
1108
|
+
attachOrphanSibling(parent, entry);
|
|
864
1109
|
}
|
|
865
1110
|
}
|
|
866
1111
|
|
|
@@ -873,33 +1118,15 @@ const layout: RouteHelpers<any, any>["layout"] = (handler, use) => {
|
|
|
873
1118
|
} as LayoutItem;
|
|
874
1119
|
};
|
|
875
1120
|
|
|
876
|
-
const isValidUseItem = (item: any): item is AllUseItems | undefined | null =>
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
(item
|
|
881
|
-
typeof item === "object" &&
|
|
882
|
-
"type" in item &&
|
|
883
|
-
[
|
|
884
|
-
"layout",
|
|
885
|
-
"route",
|
|
886
|
-
"middleware",
|
|
887
|
-
"revalidate",
|
|
888
|
-
"parallel",
|
|
889
|
-
"intercept",
|
|
890
|
-
"loader",
|
|
891
|
-
"loading",
|
|
892
|
-
"errorBoundary",
|
|
893
|
-
"notFoundBoundary",
|
|
894
|
-
"when",
|
|
895
|
-
"cache",
|
|
896
|
-
"transition",
|
|
897
|
-
"include", // For urls() include() helper
|
|
898
|
-
].includes(item.type))
|
|
899
|
-
);
|
|
900
|
-
};
|
|
1121
|
+
const isValidUseItem = (item: any): item is AllUseItems | undefined | null =>
|
|
1122
|
+
item == null ||
|
|
1123
|
+
(typeof item === "object" &&
|
|
1124
|
+
"type" in item &&
|
|
1125
|
+
ALL_USE_ITEM_TYPES.has(item.type));
|
|
901
1126
|
|
|
902
|
-
//
|
|
1127
|
+
// DSL helpers exported for direct import from @rangojs/router and for
|
|
1128
|
+
// assembly into the RouteHelpers object in helper-factories.ts. The route-item
|
|
1129
|
+
// types are discriminated by their `type` literal, so the helpers carry no brand.
|
|
903
1130
|
export {
|
|
904
1131
|
layout,
|
|
905
1132
|
cache,
|
|
@@ -907,28 +1134,13 @@ export {
|
|
|
907
1134
|
revalidate,
|
|
908
1135
|
parallel,
|
|
909
1136
|
intercept,
|
|
910
|
-
when,
|
|
911
1137
|
errorBoundary,
|
|
912
1138
|
notFoundBoundary,
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
const isOrphanLayout = (item: AllUseItems): boolean => {
|
|
919
|
-
return (
|
|
920
|
-
item.type === "layout" &&
|
|
921
|
-
!item.uses?.some((child) => hasRoutesInItem(child))
|
|
922
|
-
);
|
|
923
|
-
};
|
|
924
|
-
|
|
925
|
-
// Internal exports used by helper-factories.ts
|
|
926
|
-
export {
|
|
927
|
-
routeFn,
|
|
928
|
-
loaderFn,
|
|
929
|
-
loadingFn,
|
|
930
|
-
transitionFn,
|
|
931
|
-
hasRoutesInItem,
|
|
1139
|
+
route,
|
|
1140
|
+
loader,
|
|
1141
|
+
loading,
|
|
1142
|
+
transition,
|
|
932
1143
|
isValidUseItem,
|
|
933
|
-
|
|
1144
|
+
emptySegmentBase,
|
|
1145
|
+
runAndValidateUseItems,
|
|
934
1146
|
};
|