@timber-js/app 0.2.0-alpha.2 → 0.2.0-alpha.200
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/LICENSE +8 -0
- package/agent-skill.md +346 -0
- package/dist/_chunks/actions-d1hCqnU3.js +345 -0
- package/dist/_chunks/actions-d1hCqnU3.js.map +1 -0
- package/dist/_chunks/als-registry-C6kcfprT.js +41 -0
- package/dist/_chunks/als-registry-C6kcfprT.js.map +1 -0
- package/dist/_chunks/als-slots-BEEIPKYm.js +26 -0
- package/dist/_chunks/als-slots-BEEIPKYm.js.map +1 -0
- package/dist/_chunks/base-path-DaQrzbez.js +80 -0
- package/dist/_chunks/base-path-DaQrzbez.js.map +1 -0
- package/dist/_chunks/build-manifest-DTmSGLRz.js +135 -0
- package/dist/_chunks/build-manifest-DTmSGLRz.js.map +1 -0
- package/dist/_chunks/build-output-helper-9dqCv1pZ.js +370 -0
- package/dist/_chunks/build-output-helper-9dqCv1pZ.js.map +1 -0
- package/dist/_chunks/cache-api-ByagcC-J.js +1149 -0
- package/dist/_chunks/cache-api-ByagcC-J.js.map +1 -0
- package/dist/_chunks/canonicalize-CgHoscYO.js +66 -0
- package/dist/_chunks/canonicalize-CgHoscYO.js.map +1 -0
- package/dist/_chunks/chains-Bpb0W4ax.js +412 -0
- package/dist/_chunks/chains-Bpb0W4ax.js.map +1 -0
- package/dist/_chunks/cli-check-D6VolrDV.js +293 -0
- package/dist/_chunks/cli-check-D6VolrDV.js.map +1 -0
- package/dist/_chunks/cli-schema-sync-D6rO-VcS.js +299 -0
- package/dist/_chunks/cli-schema-sync-D6rO-VcS.js.map +1 -0
- package/dist/_chunks/cloudflare-BFb__LYG.js +1290 -0
- package/dist/_chunks/cloudflare-BFb__LYG.js.map +1 -0
- package/dist/_chunks/codec-registry-oOUxugz3.js +21 -0
- package/dist/_chunks/codec-registry-oOUxugz3.js.map +1 -0
- package/dist/_chunks/convention-lint-fRkwVwEH.js +893 -0
- package/dist/_chunks/convention-lint-fRkwVwEH.js.map +1 -0
- package/dist/_chunks/dist-DtrJyBbw.js +386 -0
- package/dist/_chunks/dist-DtrJyBbw.js.map +1 -0
- package/dist/_chunks/error-boundary-BfPHZjm0.js +1050 -0
- package/dist/_chunks/error-boundary-BfPHZjm0.js.map +1 -0
- package/dist/_chunks/fast-hash-C-tVYrLb.js +41 -0
- package/dist/_chunks/fast-hash-C-tVYrLb.js.map +1 -0
- package/dist/_chunks/file-cache-Dw6BJPG7.js +458 -0
- package/dist/_chunks/file-cache-Dw6BJPG7.js.map +1 -0
- package/dist/_chunks/format-BKclgVbk.js +14 -0
- package/dist/_chunks/format-BKclgVbk.js.map +1 -0
- package/dist/_chunks/fs-identity-D7vb6GdI.js +208 -0
- package/dist/_chunks/fs-identity-D7vb6GdI.js.map +1 -0
- package/dist/_chunks/graph-cache-CP4GEmf9.js +304 -0
- package/dist/_chunks/graph-cache-CP4GEmf9.js.map +1 -0
- package/dist/_chunks/href-validation-BIrxavIy.js +213 -0
- package/dist/_chunks/href-validation-BIrxavIy.js.map +1 -0
- package/dist/_chunks/json-lossy-check-ClNvBM_3.js +63 -0
- package/dist/_chunks/json-lossy-check-ClNvBM_3.js.map +1 -0
- package/dist/_chunks/live-graph-D_2D32Ad.js +150 -0
- package/dist/_chunks/live-graph-D_2D32Ad.js.map +1 -0
- package/dist/_chunks/logger-uLBuGKDI.js +1484 -0
- package/dist/_chunks/logger-uLBuGKDI.js.map +1 -0
- package/dist/_chunks/navigation-context-D0TU0Jog.js +135 -0
- package/dist/_chunks/navigation-context-D0TU0Jog.js.map +1 -0
- package/dist/_chunks/navigation-root-mHSK9psY.js +126 -0
- package/dist/_chunks/navigation-root-mHSK9psY.js.map +1 -0
- package/dist/_chunks/param-value-C8TNYchQ.js +66 -0
- package/dist/_chunks/param-value-C8TNYchQ.js.map +1 -0
- package/dist/_chunks/plugin-context-8idfR3UZ.js +321 -0
- package/dist/_chunks/plugin-context-8idfR3UZ.js.map +1 -0
- package/dist/_chunks/poison-rules-DoEhbqaY.js +110 -0
- package/dist/_chunks/poison-rules-DoEhbqaY.js.map +1 -0
- package/dist/_chunks/poison-scan-Bm9Yyqk9.js +101 -0
- package/dist/_chunks/poison-scan-Bm9Yyqk9.js.map +1 -0
- package/dist/_chunks/purge-store-Byr8XOjU.js +14 -0
- package/dist/_chunks/purge-store-Byr8XOjU.js.map +1 -0
- package/dist/_chunks/resolve-schema-CBR6Lm4i.js +50 -0
- package/dist/_chunks/resolve-schema-CBR6Lm4i.js.map +1 -0
- package/dist/_chunks/rolldown-runtime-D7D4PA-g.js +13 -0
- package/dist/_chunks/rsc-cache-key-ClUiXQnK.js +243 -0
- package/dist/_chunks/rsc-cache-key-ClUiXQnK.js.map +1 -0
- package/dist/_chunks/rsc-media-type-DDc7duTD.js +61 -0
- package/dist/_chunks/rsc-media-type-DDc7duTD.js.map +1 -0
- package/dist/_chunks/rsc-payload-path-B_LBodc2.js +48 -0
- package/dist/_chunks/rsc-payload-path-B_LBodc2.js.map +1 -0
- package/dist/_chunks/scan-BoP17W3w.js +140 -0
- package/dist/_chunks/scan-BoP17W3w.js.map +1 -0
- package/dist/_chunks/scanner-AiazgH_f.js +1771 -0
- package/dist/_chunks/scanner-AiazgH_f.js.map +1 -0
- package/dist/_chunks/schema-bridge-C83xa9lT.js +199 -0
- package/dist/_chunks/schema-bridge-C83xa9lT.js.map +1 -0
- package/dist/_chunks/segment-classify-C539Pa2O.js +197 -0
- package/dist/_chunks/segment-classify-C539Pa2O.js.map +1 -0
- package/dist/_chunks/segment-context-D9_89u34.js +34 -0
- package/dist/_chunks/segment-context-D9_89u34.js.map +1 -0
- package/dist/_chunks/segment-keys-lqtdookO.js +256 -0
- package/dist/_chunks/segment-keys-lqtdookO.js.map +1 -0
- package/dist/_chunks/singleflight-2lUWfcAk.js +54 -0
- package/dist/_chunks/singleflight-2lUWfcAk.js.map +1 -0
- package/dist/_chunks/sizeof-lXffQ1Vr.js +35 -0
- package/dist/_chunks/sizeof-lXffQ1Vr.js.map +1 -0
- package/dist/_chunks/{ssr-data-DLnbYpj1.js → ssr-data-D6T6Y3ef.js} +3 -31
- package/dist/_chunks/ssr-data-D6T6Y3ef.js.map +1 -0
- package/dist/_chunks/state-FippDgxN.js +52 -0
- package/dist/_chunks/state-FippDgxN.js.map +1 -0
- package/dist/_chunks/status-page-marker-DwQBrLBz.js +496 -0
- package/dist/_chunks/status-page-marker-DwQBrLBz.js.map +1 -0
- package/dist/_chunks/use-query-states-I3JMng6J.js +226 -0
- package/dist/_chunks/use-query-states-I3JMng6J.js.map +1 -0
- package/dist/_chunks/walkers-B6XUtmqK.js +144 -0
- package/dist/_chunks/walkers-B6XUtmqK.js.map +1 -0
- package/dist/adapters/build-output-helper.d.ts +72 -0
- package/dist/adapters/build-output-helper.d.ts.map +1 -0
- package/dist/adapters/cloudflare-dev.d.ts +109 -0
- package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
- package/dist/adapters/cloudflare-dev.js +74 -0
- package/dist/adapters/cloudflare-dev.js.map +1 -0
- package/dist/adapters/cloudflare-kv-cache.d.ts +65 -0
- package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
- package/dist/adapters/cloudflare-kv-cache.js +123 -0
- package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
- package/dist/adapters/cloudflare.d.ts +200 -22
- package/dist/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +2 -188
- package/dist/adapters/compress-module.d.ts +17 -4
- package/dist/adapters/compress-module.d.ts.map +1 -1
- package/dist/adapters/fs-identity.d.ts +64 -0
- package/dist/adapters/fs-identity.d.ts.map +1 -0
- package/dist/adapters/nitro-presets.d.ts +37 -0
- package/dist/adapters/nitro-presets.d.ts.map +1 -0
- package/dist/adapters/nitro-preview.d.ts +32 -0
- package/dist/adapters/nitro-preview.d.ts.map +1 -0
- package/dist/adapters/nitro.d.ts +82 -37
- package/dist/adapters/nitro.d.ts.map +1 -1
- package/dist/adapters/nitro.js +457 -288
- package/dist/adapters/nitro.js.map +1 -1
- package/dist/adapters/shared.d.ts +62 -0
- package/dist/adapters/shared.d.ts.map +1 -0
- package/dist/adapters/types.d.ts +28 -6
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/analyze/chains.d.ts +124 -0
- package/dist/analyze/chains.d.ts.map +1 -0
- package/dist/analyze/classify.d.ts +150 -0
- package/dist/analyze/classify.d.ts.map +1 -0
- package/dist/analyze/crawl-entry.d.ts +17 -0
- package/dist/analyze/crawl-entry.d.ts.map +1 -0
- package/dist/analyze/crawl-entry.js +313 -0
- package/dist/analyze/crawl-entry.js.map +1 -0
- package/dist/analyze/crawl.d.ts +134 -0
- package/dist/analyze/crawl.d.ts.map +1 -0
- package/dist/analyze/graph-cache.d.ts +104 -0
- package/dist/analyze/graph-cache.d.ts.map +1 -0
- package/dist/analyze/graph-command.d.ts +43 -0
- package/dist/analyze/graph-command.d.ts.map +1 -0
- package/dist/analyze/graph-command.js +472 -0
- package/dist/analyze/graph-command.js.map +1 -0
- package/dist/analyze/live-graph.d.ts +81 -0
- package/dist/analyze/live-graph.d.ts.map +1 -0
- package/dist/analyze/poison-rules.d.ts +72 -0
- package/dist/analyze/poison-rules.d.ts.map +1 -0
- package/dist/analyze/poison-scan.d.ts +48 -0
- package/dist/analyze/poison-scan.d.ts.map +1 -0
- package/dist/analyze/scan.d.ts +73 -0
- package/dist/analyze/scan.d.ts.map +1 -0
- package/dist/cache/cache-api.d.ts +48 -0
- package/dist/cache/cache-api.d.ts.map +1 -0
- package/dist/cache/fast-hash.d.ts +27 -0
- package/dist/cache/fast-hash.d.ts.map +1 -0
- package/dist/cache/handler-store.d.ts +33 -0
- package/dist/cache/handler-store.d.ts.map +1 -0
- package/dist/cache/index.d.ts +32 -9
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +3 -284
- package/dist/cache/invalidation-epoch.d.ts +43 -0
- package/dist/cache/invalidation-epoch.d.ts.map +1 -0
- package/dist/cache/json-lossy-check.d.ts +11 -0
- package/dist/cache/json-lossy-check.d.ts.map +1 -0
- package/dist/cache/redis-handler.d.ts +141 -9
- package/dist/cache/redis-handler.d.ts.map +1 -1
- package/dist/cache/singleflight.d.ts +21 -2
- package/dist/cache/singleflight.d.ts.map +1 -1
- package/dist/cache/sizeof.d.ts +22 -0
- package/dist/cache/sizeof.d.ts.map +1 -0
- package/dist/cache/stable-stringify.d.ts +9 -0
- package/dist/cache/stable-stringify.d.ts.map +1 -1
- package/dist/cache/store.d.ts +53 -0
- package/dist/cache/store.d.ts.map +1 -0
- package/dist/cache/stores/cloudflare-kv.d.ts +38 -0
- package/dist/cache/stores/cloudflare-kv.d.ts.map +1 -0
- package/dist/cache/stores/cloudflare-kv.js +29 -0
- package/dist/cache/stores/cloudflare-kv.js.map +1 -0
- package/dist/cache/stores/memory.d.ts +42 -0
- package/dist/cache/stores/memory.d.ts.map +1 -0
- package/dist/cache/stores/memory.js +90 -0
- package/dist/cache/stores/memory.js.map +1 -0
- package/dist/cache/stores/redis.d.ts +69 -0
- package/dist/cache/stores/redis.d.ts.map +1 -0
- package/dist/cache/stores/redis.js +35 -0
- package/dist/cache/stores/redis.js.map +1 -0
- package/dist/cache/stores/vercel.d.ts +36 -0
- package/dist/cache/stores/vercel.d.ts.map +1 -0
- package/dist/cache/stores/vercel.js +33 -0
- package/dist/cache/stores/vercel.js.map +1 -0
- package/dist/cache/tag-aware-handler.d.ts +52 -0
- package/dist/cache/tag-aware-handler.d.ts.map +1 -0
- package/dist/cache/timber-cache.d.ts +21 -11
- package/dist/cache/timber-cache.d.ts.map +1 -1
- package/dist/cdn/cloudflare-purge.d.ts +23 -0
- package/dist/cdn/cloudflare-purge.d.ts.map +1 -0
- package/dist/cdn/cloudflare-purge.js +30 -0
- package/dist/cdn/cloudflare-purge.js.map +1 -0
- package/dist/cdn/fastly-purge.d.ts +25 -0
- package/dist/cdn/fastly-purge.d.ts.map +1 -0
- package/dist/cdn/fastly-purge.js +33 -0
- package/dist/cdn/fastly-purge.js.map +1 -0
- package/dist/cdn/headers.d.ts +97 -0
- package/dist/cdn/headers.d.ts.map +1 -0
- package/dist/cdn/index.d.ts +5 -0
- package/dist/cdn/index.d.ts.map +1 -0
- package/dist/cdn/index.js +94 -0
- package/dist/cdn/index.js.map +1 -0
- package/dist/cdn/purge-store.d.ts +23 -0
- package/dist/cdn/purge-store.d.ts.map +1 -0
- package/dist/cdn/workers-cache-purge.d.ts +20 -0
- package/dist/cdn/workers-cache-purge.d.ts.map +1 -0
- package/dist/cdn/workers-cache-purge.js +35 -0
- package/dist/cdn/workers-cache-purge.js.map +1 -0
- package/dist/cli-check.d.ts +163 -0
- package/dist/cli-check.d.ts.map +1 -0
- package/dist/cli-schema-sync.d.ts +59 -0
- package/dist/cli-schema-sync.d.ts.map +1 -0
- package/dist/cli.d.ts +75 -8
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +175 -47
- package/dist/cli.js.map +1 -1
- package/dist/client/browser-dev.d.ts +37 -1
- package/dist/client/browser-dev.d.ts.map +1 -1
- package/dist/client/browser-entry/action-dispatch.d.ts +19 -0
- package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
- package/dist/client/browser-entry/action-queue.d.ts +44 -0
- package/dist/client/browser-entry/action-queue.d.ts.map +1 -0
- package/dist/client/browser-entry/hmr.d.ts +21 -0
- package/dist/client/browser-entry/hmr.d.ts.map +1 -0
- package/dist/client/browser-entry/hydrate.d.ts +63 -0
- package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
- package/dist/client/browser-entry/index.d.ts +30 -0
- package/dist/client/browser-entry/index.d.ts.map +1 -0
- package/dist/client/browser-entry/post-hydration.d.ts +29 -0
- package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
- package/dist/client/browser-entry/router-init.d.ts +46 -0
- package/dist/client/browser-entry/router-init.d.ts.map +1 -0
- package/dist/client/browser-entry/rsc-stream.d.ts +32 -0
- package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
- package/dist/client/browser-entry/scroll.d.ts +28 -0
- package/dist/client/browser-entry/scroll.d.ts.map +1 -0
- package/dist/client/deny-last-resort.d.ts +29 -0
- package/dist/client/deny-last-resort.d.ts.map +1 -0
- package/dist/client/error-boundary.d.ts +66 -6
- package/dist/client/error-boundary.d.ts.map +1 -1
- package/dist/client/error-boundary.js +2 -126
- package/dist/client/error-reconstituter.d.ts +61 -0
- package/dist/client/error-reconstituter.d.ts.map +1 -0
- package/dist/client/form.d.ts +16 -27
- package/dist/client/form.d.ts.map +1 -1
- package/dist/client/global-context.d.ts +15 -0
- package/dist/client/global-context.d.ts.map +1 -0
- package/dist/client/history.d.ts +50 -9
- package/dist/client/history.d.ts.map +1 -1
- package/dist/client/index.d.ts +20 -33
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +323 -1148
- package/dist/client/index.js.map +1 -1
- package/dist/client/internal.d.ts +20 -0
- package/dist/client/internal.d.ts.map +1 -0
- package/dist/client/internal.js +818 -0
- package/dist/client/internal.js.map +1 -0
- package/dist/client/link.d.ts +63 -60
- package/dist/client/link.d.ts.map +1 -1
- package/dist/client/location-search.d.ts +12 -0
- package/dist/client/location-search.d.ts.map +1 -0
- package/dist/client/navigation-api.d.ts +121 -0
- package/dist/client/navigation-api.d.ts.map +1 -0
- package/dist/client/navigation-commit.d.ts +98 -0
- package/dist/client/navigation-commit.d.ts.map +1 -0
- package/dist/client/navigation-context.d.ts +51 -31
- package/dist/client/navigation-context.d.ts.map +1 -1
- package/dist/client/navigation-root.d.ts +98 -0
- package/dist/client/navigation-root.d.ts.map +1 -0
- package/dist/client/navigation-transition.d.ts +187 -0
- package/dist/client/navigation-transition.d.ts.map +1 -0
- package/dist/client/nuqs-adapter.d.ts +1 -1
- package/dist/client/nuqs-adapter.d.ts.map +1 -1
- package/dist/client/params-context.d.ts +81 -0
- package/dist/client/params-context.d.ts.map +1 -0
- package/dist/client/react-root.d.ts +44 -0
- package/dist/client/react-root.d.ts.map +1 -0
- package/dist/client/router-effects.d.ts +130 -0
- package/dist/client/router-effects.d.ts.map +1 -0
- package/dist/client/router-lifecycle.d.ts +98 -0
- package/dist/client/router-lifecycle.d.ts.map +1 -0
- package/dist/client/router-pipeline.d.ts +87 -0
- package/dist/client/router-pipeline.d.ts.map +1 -0
- package/dist/client/router-ref.d.ts +2 -2
- package/dist/client/router-ref.d.ts.map +1 -1
- package/dist/client/router-skew.d.ts +21 -0
- package/dist/client/router-skew.d.ts.map +1 -0
- package/dist/client/router-types.d.ts +272 -0
- package/dist/client/router-types.d.ts.map +1 -0
- package/dist/client/router.d.ts +1 -97
- package/dist/client/router.d.ts.map +1 -1
- package/dist/client/rsc-fetch.d.ts +104 -26
- package/dist/client/rsc-fetch.d.ts.map +1 -1
- package/dist/client/segment-cache.d.ts +161 -25
- package/dist/client/segment-cache.d.ts.map +1 -1
- package/dist/client/segment-context.d.ts +1 -1
- package/dist/client/segment-context.d.ts.map +1 -1
- package/dist/client/segment-outlet.d.ts +68 -0
- package/dist/client/segment-outlet.d.ts.map +1 -0
- package/dist/client/segment-update-context.d.ts +15 -0
- package/dist/client/segment-update-context.d.ts.map +1 -0
- package/dist/client/shallow-url.d.ts +10 -0
- package/dist/client/shallow-url.d.ts.map +1 -0
- package/dist/client/slot-content-cache-context.d.ts +35 -0
- package/dist/client/slot-content-cache-context.d.ts.map +1 -0
- package/dist/client/slot-context.d.ts +31 -0
- package/dist/client/slot-context.d.ts.map +1 -0
- package/dist/client/slot-outlet.d.ts +16 -0
- package/dist/client/slot-outlet.d.ts.map +1 -0
- package/dist/client/slot-provider.d.ts +25 -0
- package/dist/client/slot-provider.d.ts.map +1 -0
- package/dist/client/ssr-data.d.ts +29 -7
- package/dist/client/ssr-data.d.ts.map +1 -1
- package/dist/client/stale-client.d.ts +69 -0
- package/dist/client/stale-client.d.ts.map +1 -0
- package/dist/client/state.d.ts +19 -8
- package/dist/client/state.d.ts.map +1 -1
- package/dist/client/status-page-marker.d.ts +25 -0
- package/dist/client/status-page-marker.d.ts.map +1 -0
- package/dist/client/top-loader.d.ts +7 -6
- package/dist/client/top-loader.d.ts.map +1 -1
- package/dist/client/unload-guard.d.ts +5 -0
- package/dist/client/unload-guard.d.ts.map +1 -1
- package/dist/client/use-cookie.d.ts +12 -0
- package/dist/client/use-cookie.d.ts.map +1 -1
- package/dist/client/use-link-status.d.ts +5 -5
- package/dist/client/use-link-status.d.ts.map +1 -1
- package/dist/client/use-pathname.d.ts +13 -11
- package/dist/client/use-pathname.d.ts.map +1 -1
- package/dist/client/use-pending-navigation.d.ts +23 -0
- package/dist/client/use-pending-navigation.d.ts.map +1 -0
- package/dist/client/use-query-states.d.ts +10 -4
- package/dist/client/use-query-states.d.ts.map +1 -1
- package/dist/client/use-router.d.ts +2 -2
- package/dist/client/use-router.d.ts.map +1 -1
- package/dist/client/use-search-params.d.ts +15 -8
- package/dist/client/use-search-params.d.ts.map +1 -1
- package/dist/client/use-segment-params.d.ts +55 -0
- package/dist/client/use-segment-params.d.ts.map +1 -0
- package/dist/codec.d.ts +69 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +76 -0
- package/dist/codec.js.map +1 -0
- package/dist/config-types.d.ts +322 -0
- package/dist/config-types.d.ts.map +1 -0
- package/dist/config-validation.d.ts +51 -0
- package/dist/config-validation.d.ts.map +1 -0
- package/dist/cookies/define-cookie.d.ts +58 -25
- package/dist/cookies/define-cookie.d.ts.map +1 -1
- package/dist/cookies/index.d.ts +3 -2
- package/dist/cookies/index.d.ts.map +1 -1
- package/dist/cookies/index.js +256 -36
- package/dist/cookies/index.js.map +1 -1
- package/dist/cookies/json-cookie.d.ts +64 -0
- package/dist/cookies/json-cookie.d.ts.map +1 -0
- package/dist/cookies/validation.d.ts +34 -0
- package/dist/cookies/validation.d.ts.map +1 -0
- package/dist/dev-tools/404-page.d.ts +50 -0
- package/dist/dev-tools/404-page.d.ts.map +1 -0
- package/dist/dev-tools/browser-logs.d.ts +40 -0
- package/dist/dev-tools/browser-logs.d.ts.map +1 -0
- package/dist/dev-tools/dev-page-shell.d.ts +78 -0
- package/dist/dev-tools/dev-page-shell.d.ts.map +1 -0
- package/dist/dev-tools/error-page.d.ts +32 -0
- package/dist/dev-tools/error-page.d.ts.map +1 -0
- package/dist/dev-tools/holding-server.d.ts +46 -0
- package/dist/dev-tools/holding-server.d.ts.map +1 -0
- package/dist/dev-tools/hydration-overlay.d.ts +11 -0
- package/dist/dev-tools/hydration-overlay.d.ts.map +1 -0
- package/dist/dev-tools/index.d.ts +31 -0
- package/dist/dev-tools/index.d.ts.map +1 -0
- package/dist/dev-tools/instrumentation.d.ts +59 -0
- package/dist/dev-tools/instrumentation.d.ts.map +1 -0
- package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
- package/dist/dev-tools/logger.d.ts.map +1 -0
- package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +17 -3
- package/dist/dev-tools/logs.d.ts.map +1 -0
- package/dist/dev-tools/overlay.d.ts +91 -0
- package/dist/dev-tools/overlay.d.ts.map +1 -0
- package/dist/dev-tools/stack-classifier.d.ts +34 -0
- package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
- package/dist/dev-tools/terminal.d.ts +28 -0
- package/dist/dev-tools/terminal.d.ts.map +1 -0
- package/dist/fonts/ast-walk.d.ts +68 -0
- package/dist/fonts/ast-walk.d.ts.map +1 -0
- package/dist/fonts/ast.d.ts +112 -8
- package/dist/fonts/ast.d.ts.map +1 -1
- package/dist/fonts/bundle.d.ts +50 -0
- package/dist/fonts/bundle.d.ts.map +1 -0
- package/dist/fonts/css.d.ts +2 -1
- package/dist/fonts/css.d.ts.map +1 -1
- package/dist/fonts/dev-middleware.d.ts +22 -0
- package/dist/fonts/dev-middleware.d.ts.map +1 -0
- package/dist/fonts/fallbacks.d.ts +0 -7
- package/dist/fonts/fallbacks.d.ts.map +1 -1
- package/dist/fonts/google.d.ts +5 -3
- package/dist/fonts/google.d.ts.map +1 -1
- package/dist/fonts/local.d.ts +6 -4
- package/dist/fonts/local.d.ts.map +1 -1
- package/dist/fonts/paths.d.ts +43 -0
- package/dist/fonts/paths.d.ts.map +1 -0
- package/dist/fonts/pipeline.d.ts +177 -0
- package/dist/fonts/pipeline.d.ts.map +1 -0
- package/dist/fonts/transform.d.ts +82 -0
- package/dist/fonts/transform.d.ts.map +1 -0
- package/dist/fonts/types.d.ts +47 -1
- package/dist/fonts/types.d.ts.map +1 -1
- package/dist/fonts/virtual-modules.d.ts +77 -0
- package/dist/fonts/virtual-modules.d.ts.map +1 -0
- package/dist/index.d.ts +35 -153
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10488 -13975
- package/dist/index.js.map +1 -1
- package/dist/params/codec-registry.d.ts +26 -0
- package/dist/params/codec-registry.d.ts.map +1 -0
- package/dist/params/define-schema.d.ts +81 -0
- package/dist/params/define-schema.d.ts.map +1 -0
- package/dist/params/index.d.ts +5 -0
- package/dist/params/index.d.ts.map +1 -0
- package/dist/params/index.js +34 -0
- package/dist/params/index.js.map +1 -0
- package/dist/params/resolve-schema.d.ts +34 -0
- package/dist/params/resolve-schema.d.ts.map +1 -0
- package/dist/plugin-context.d.ts +276 -0
- package/dist/plugin-context.d.ts.map +1 -0
- package/dist/plugins/adapter-build.d.ts +21 -1
- package/dist/plugins/adapter-build.d.ts.map +1 -1
- package/dist/plugins/build-manifest.d.ts +7 -3
- package/dist/plugins/build-manifest.d.ts.map +1 -1
- package/dist/plugins/build-report.d.ts +54 -7
- package/dist/plugins/build-report.d.ts.map +1 -1
- package/dist/plugins/cache.d.ts +64 -0
- package/dist/plugins/cache.d.ts.map +1 -0
- package/dist/plugins/callsite-ast.d.ts +117 -0
- package/dist/plugins/callsite-ast.d.ts.map +1 -0
- package/dist/plugins/callsite-jsx.d.ts +35 -0
- package/dist/plugins/callsite-jsx.d.ts.map +1 -0
- package/dist/plugins/chunks.d.ts +11 -4
- package/dist/plugins/chunks.d.ts.map +1 -1
- package/dist/plugins/client-chunks.d.ts +40 -0
- package/dist/plugins/client-chunks.d.ts.map +1 -0
- package/dist/plugins/cloudflare-wasm.d.ts +21 -0
- package/dist/plugins/cloudflare-wasm.d.ts.map +1 -0
- package/dist/plugins/content.d.ts +1 -1
- package/dist/plugins/content.d.ts.map +1 -1
- package/dist/plugins/dev-discovery.d.ts +123 -0
- package/dist/plugins/dev-discovery.d.ts.map +1 -0
- package/dist/plugins/dev-server.d.ts +17 -1
- package/dist/plugins/dev-server.d.ts.map +1 -1
- package/dist/plugins/entries.d.ts +32 -1
- package/dist/plugins/entries.d.ts.map +1 -1
- package/dist/plugins/fonts.d.ts +16 -65
- package/dist/plugins/fonts.d.ts.map +1 -1
- package/dist/plugins/graph-endpoint.d.ts +112 -0
- package/dist/plugins/graph-endpoint.d.ts.map +1 -0
- package/dist/plugins/mdx.d.ts +24 -5
- package/dist/plugins/mdx.d.ts.map +1 -1
- package/dist/plugins/prebuilt-capture.d.ts +60 -0
- package/dist/plugins/prebuilt-capture.d.ts.map +1 -0
- package/dist/plugins/prebuilt-options-analysis.d.ts +40 -0
- package/dist/plugins/prebuilt-options-analysis.d.ts.map +1 -0
- package/dist/plugins/prebuilt.d.ts +82 -0
- package/dist/plugins/prebuilt.d.ts.map +1 -0
- package/dist/plugins/prerender-sugar.d.ts +39 -0
- package/dist/plugins/prerender-sugar.d.ts.map +1 -0
- package/dist/plugins/request-dep/analysis.d.ts +106 -0
- package/dist/plugins/request-dep/analysis.d.ts.map +1 -0
- package/dist/plugins/request-dep/index.d.ts +75 -0
- package/dist/plugins/request-dep/index.d.ts.map +1 -0
- package/dist/plugins/request-dep/origin.d.ts +61 -0
- package/dist/plugins/request-dep/origin.d.ts.map +1 -0
- package/dist/plugins/routing.d.ts +1 -1
- package/dist/plugins/routing.d.ts.map +1 -1
- package/dist/plugins/server-bundle.d.ts.map +1 -1
- package/dist/plugins/shims.d.ts +29 -5
- package/dist/plugins/shims.d.ts.map +1 -1
- package/dist/plugins/static-build.d.ts +218 -21
- package/dist/plugins/static-build.d.ts.map +1 -1
- package/dist/routing/codegen-shared.d.ts +26 -0
- package/dist/routing/codegen-shared.d.ts.map +1 -0
- package/dist/routing/codegen-types.d.ts +61 -0
- package/dist/routing/codegen-types.d.ts.map +1 -0
- package/dist/routing/codegen-write.d.ts +51 -0
- package/dist/routing/codegen-write.d.ts.map +1 -0
- package/dist/routing/codegen.d.ts +8 -3
- package/dist/routing/codegen.d.ts.map +1 -1
- package/dist/routing/collision-probe.d.ts +104 -0
- package/dist/routing/collision-probe.d.ts.map +1 -0
- package/dist/routing/collision-spaces.d.ts +26 -0
- package/dist/routing/collision-spaces.d.ts.map +1 -0
- package/dist/routing/convention-lint.d.ts +55 -0
- package/dist/routing/convention-lint.d.ts.map +1 -0
- package/dist/routing/export-detect.d.ts +72 -0
- package/dist/routing/export-detect.d.ts.map +1 -0
- package/dist/routing/file-cache.d.ts +8 -0
- package/dist/routing/file-cache.d.ts.map +1 -0
- package/dist/routing/index.d.ts +13 -7
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +5 -2
- package/dist/routing/interception-overlap.d.ts +35 -0
- package/dist/routing/interception-overlap.d.ts.map +1 -0
- package/dist/routing/interception.d.ts +234 -10
- package/dist/routing/interception.d.ts.map +1 -1
- package/dist/routing/link-codegen.d.ts +105 -0
- package/dist/routing/link-codegen.d.ts.map +1 -0
- package/dist/routing/manifest-codegen.d.ts +26 -0
- package/dist/routing/manifest-codegen.d.ts.map +1 -0
- package/dist/routing/scanner.d.ts +14 -10
- package/dist/routing/scanner.d.ts.map +1 -1
- package/dist/routing/schema-validation.d.ts +35 -0
- package/dist/routing/schema-validation.d.ts.map +1 -0
- package/dist/routing/segment-classify.d.ts +114 -0
- package/dist/routing/segment-classify.d.ts.map +1 -0
- package/dist/routing/segment-codegen.d.ts +38 -0
- package/dist/routing/segment-codegen.d.ts.map +1 -0
- package/dist/routing/segment-keys.d.ts +118 -0
- package/dist/routing/segment-keys.d.ts.map +1 -0
- package/dist/routing/slot-placement.d.ts +48 -0
- package/dist/routing/slot-placement.d.ts.map +1 -0
- package/dist/routing/types.d.ts +74 -26
- package/dist/routing/types.d.ts.map +1 -1
- package/dist/routing/walkers.d.ts +57 -0
- package/dist/routing/walkers.d.ts.map +1 -0
- package/dist/rsc-runtime/rsc.d.ts +1 -1
- package/dist/rsc-runtime/rsc.d.ts.map +1 -1
- package/dist/rsc-runtime/ssr.d.ts +14 -0
- package/dist/rsc-runtime/ssr.d.ts.map +1 -1
- package/dist/rsc-runtime/transforms.d.ts +13 -0
- package/dist/rsc-runtime/transforms.d.ts.map +1 -0
- package/dist/schema-bridge.d.ts +145 -0
- package/dist/schema-bridge.d.ts.map +1 -0
- package/dist/search-params/define.d.ts +262 -0
- package/dist/search-params/define.d.ts.map +1 -0
- package/dist/search-params/index.d.ts +3 -7
- package/dist/search-params/index.d.ts.map +1 -1
- package/dist/search-params/index.js +179 -360
- package/dist/search-params/index.js.map +1 -1
- package/dist/search-params/parse-total.d.ts +81 -0
- package/dist/search-params/parse-total.d.ts.map +1 -0
- package/dist/search-params/serialize-equal.d.ts +9 -0
- package/dist/search-params/serialize-equal.d.ts.map +1 -0
- package/dist/search-params/wrappers.d.ts +76 -0
- package/dist/search-params/wrappers.d.ts.map +1 -0
- package/dist/server/access-gate.d.ts +98 -10
- package/dist/server/access-gate.d.ts.map +1 -1
- package/dist/server/action-client.d.ts +42 -7
- package/dist/server/action-client.d.ts.map +1 -1
- package/dist/server/action-encryption.d.ts +76 -0
- package/dist/server/action-encryption.d.ts.map +1 -0
- package/dist/server/action-handler.d.ts +39 -5
- package/dist/server/action-handler.d.ts.map +1 -1
- package/dist/server/actions.d.ts +29 -35
- package/dist/server/actions.d.ts.map +1 -1
- package/dist/server/als-registry.d.ts +117 -13
- package/dist/server/als-registry.d.ts.map +1 -1
- package/dist/server/asset-headers.d.ts +8 -18
- package/dist/server/asset-headers.d.ts.map +1 -1
- package/dist/server/body-limits.d.ts.map +1 -1
- package/dist/server/build-manifest.d.ts +25 -30
- package/dist/server/build-manifest.d.ts.map +1 -1
- package/dist/server/canonicalize.d.ts +10 -0
- package/dist/server/canonicalize.d.ts.map +1 -1
- package/dist/server/chain-url-parts.d.ts +82 -0
- package/dist/server/chain-url-parts.d.ts.map +1 -0
- package/dist/server/children-interception.d.ts +49 -0
- package/dist/server/children-interception.d.ts.map +1 -0
- package/dist/server/coalesce-tick.d.ts +40 -0
- package/dist/server/coalesce-tick.d.ts.map +1 -0
- package/dist/server/compress.d.ts.map +1 -1
- package/dist/server/cookie-context.d.ts +170 -0
- package/dist/server/cookie-context.d.ts.map +1 -0
- package/dist/server/cookie-parsing.d.ts +65 -0
- package/dist/server/cookie-parsing.d.ts.map +1 -0
- package/dist/server/csp-nonce.d.ts +45 -0
- package/dist/server/csp-nonce.d.ts.map +1 -0
- package/dist/server/csrf.d.ts +3 -2
- package/dist/server/csrf.d.ts.map +1 -1
- package/dist/server/debug.d.ts +82 -0
- package/dist/server/debug.d.ts.map +1 -0
- package/dist/server/default-logger.d.ts +22 -0
- package/dist/server/default-logger.d.ts.map +1 -0
- package/dist/server/default-status-page.d.ts +45 -0
- package/dist/server/default-status-page.d.ts.map +1 -0
- package/dist/server/deny-boundary.d.ts +253 -0
- package/dist/server/deny-boundary.d.ts.map +1 -0
- package/dist/server/deny-renderer.d.ts +20 -9
- package/dist/server/deny-renderer.d.ts.map +1 -1
- package/dist/server/dev-source-map.d.ts +22 -0
- package/dist/server/dev-source-map.d.ts.map +1 -0
- package/dist/server/early-hints-sender.d.ts.map +1 -1
- package/dist/server/early-hints.d.ts +14 -12
- package/dist/server/early-hints.d.ts.map +1 -1
- package/dist/server/error-boundary-wrapper.d.ts +101 -10
- package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
- package/dist/server/error-response-headers.d.ts +3 -0
- package/dist/server/error-response-headers.d.ts.map +1 -0
- package/dist/server/fallback-error.d.ts +12 -7
- package/dist/server/fallback-error.d.ts.map +1 -1
- package/dist/server/flight-injection-state.d.ts +66 -0
- package/dist/server/flight-injection-state.d.ts.map +1 -0
- package/dist/server/flight-scripts.d.ts +45 -0
- package/dist/server/flight-scripts.d.ts.map +1 -0
- package/dist/server/form-data.d.ts +41 -0
- package/dist/server/form-data.d.ts.map +1 -1
- package/dist/server/form-flash.d.ts +1 -1
- package/dist/server/head-response.d.ts +35 -0
- package/dist/server/head-response.d.ts.map +1 -0
- package/dist/server/html-injector-core.d.ts +257 -0
- package/dist/server/html-injector-core.d.ts.map +1 -0
- package/dist/server/html-injectors.d.ts +84 -42
- package/dist/server/html-injectors.d.ts.map +1 -1
- package/dist/server/index.d.ts +18 -54
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +212 -2930
- package/dist/server/index.js.map +1 -1
- package/dist/server/instrumentation.d.ts +1 -1
- package/dist/server/internal.d.ts +50 -0
- package/dist/server/internal.d.ts.map +1 -0
- package/dist/server/internal.js +4034 -0
- package/dist/server/internal.js.map +1 -0
- package/dist/server/logger.d.ts +39 -7
- package/dist/server/logger.d.ts.map +1 -1
- package/dist/server/metadata-collector.d.ts +71 -0
- package/dist/server/metadata-collector.d.ts.map +1 -0
- package/dist/server/metadata-platform.d.ts +2 -2
- package/dist/server/metadata-render.d.ts +2 -2
- package/dist/server/metadata-render.d.ts.map +1 -1
- package/dist/server/metadata-routes.d.ts +60 -11
- package/dist/server/metadata-routes.d.ts.map +1 -1
- package/dist/server/metadata-social.d.ts +2 -2
- package/dist/server/metadata.d.ts +10 -2
- package/dist/server/metadata.d.ts.map +1 -1
- package/dist/server/middleware-runner.d.ts +20 -5
- package/dist/server/middleware-runner.d.ts.map +1 -1
- package/dist/server/node-stream-transforms.d.ts +105 -0
- package/dist/server/node-stream-transforms.d.ts.map +1 -0
- package/dist/server/nuqs-ssr-provider.d.ts +7 -3
- package/dist/server/nuqs-ssr-provider.d.ts.map +1 -1
- package/dist/server/param-coercion.d.ts +78 -0
- package/dist/server/param-coercion.d.ts.map +1 -0
- package/dist/server/pipeline-helpers.d.ts +77 -0
- package/dist/server/pipeline-helpers.d.ts.map +1 -0
- package/dist/server/pipeline-interception.d.ts +59 -9
- package/dist/server/pipeline-interception.d.ts.map +1 -1
- package/dist/server/pipeline-metadata.d.ts +7 -1
- package/dist/server/pipeline-metadata.d.ts.map +1 -1
- package/dist/server/pipeline-outcome.d.ts +49 -0
- package/dist/server/pipeline-outcome.d.ts.map +1 -0
- package/dist/server/pipeline-phases.d.ts +70 -0
- package/dist/server/pipeline-phases.d.ts.map +1 -0
- package/dist/server/pipeline.d.ts +160 -24
- package/dist/server/pipeline.d.ts.map +1 -1
- package/dist/server/port-resolution.d.ts +31 -0
- package/dist/server/port-resolution.d.ts.map +1 -0
- package/dist/server/prebuilt/cache-key.d.ts +63 -0
- package/dist/server/prebuilt/cache-key.d.ts.map +1 -0
- package/dist/server/prebuilt/capture-state.d.ts +57 -0
- package/dist/server/prebuilt/capture-state.d.ts.map +1 -0
- package/dist/server/prebuilt/key-discipline.d.ts +52 -0
- package/dist/server/prebuilt/key-discipline.d.ts.map +1 -0
- package/dist/server/prebuilt/manifest-tag-index.d.ts +27 -0
- package/dist/server/prebuilt/manifest-tag-index.d.ts.map +1 -0
- package/dist/server/prebuilt/overlay.d.ts +100 -0
- package/dist/server/prebuilt/overlay.d.ts.map +1 -0
- package/dist/server/prebuilt/payload-source.d.ts +79 -0
- package/dist/server/prebuilt/payload-source.d.ts.map +1 -0
- package/dist/server/prebuilt/slots.d.ts +99 -0
- package/dist/server/prebuilt/slots.d.ts.map +1 -0
- package/dist/server/prebuilt/synthetic-store.d.ts +67 -0
- package/dist/server/prebuilt/synthetic-store.d.ts.map +1 -0
- package/dist/server/prebuilt-builder.d.ts +121 -0
- package/dist/server/prebuilt-builder.d.ts.map +1 -0
- package/dist/server/prebuilt-runtime.d.ts +111 -0
- package/dist/server/prebuilt-runtime.d.ts.map +1 -0
- package/dist/server/primitives.d.ts +129 -45
- package/dist/server/primitives.d.ts.map +1 -1
- package/dist/server/publish-params.d.ts +33 -0
- package/dist/server/publish-params.d.ts.map +1 -0
- package/dist/server/render-timeout.d.ts +51 -0
- package/dist/server/render-timeout.d.ts.map +1 -0
- package/dist/server/render-utils.d.ts +26 -0
- package/dist/server/render-utils.d.ts.map +1 -0
- package/dist/server/request-context.d.ts +111 -107
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-dep.d.ts +15 -0
- package/dist/server/request-dep.d.ts.map +1 -0
- package/dist/server/response-cache-policy.d.ts +3 -0
- package/dist/server/response-cache-policy.d.ts.map +1 -0
- package/dist/server/route-element-builder.d.ts +57 -30
- package/dist/server/route-element-builder.d.ts.map +1 -1
- package/dist/server/route-element-helpers.d.ts +12 -0
- package/dist/server/route-element-helpers.d.ts.map +1 -0
- package/dist/server/route-handler.d.ts +1 -1
- package/dist/server/route-handler.d.ts.map +1 -1
- package/dist/server/route-matcher.d.ts +40 -38
- package/dist/server/route-matcher.d.ts.map +1 -1
- package/dist/server/route-module-loader.d.ts +37 -0
- package/dist/server/route-module-loader.d.ts.map +1 -0
- package/dist/server/rsc-cache-key-guard.d.ts +78 -0
- package/dist/server/rsc-cache-key-guard.d.ts.map +1 -0
- package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
- package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
- package/dist/server/rsc-entry/api-handler.d.ts +12 -3
- package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
- package/dist/server/rsc-entry/deny-fallback.d.ts +29 -0
- package/dist/server/rsc-entry/deny-fallback.d.ts.map +1 -0
- package/dist/server/rsc-entry/error-renderer.d.ts +38 -13
- package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/helpers.d.ts +59 -42
- package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
- package/dist/server/rsc-entry/index.d.ts +40 -6
- package/dist/server/rsc-entry/index.d.ts.map +1 -1
- package/dist/server/rsc-entry/render-route.d.ts +51 -0
- package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
- package/dist/server/rsc-entry/revalidate-renderer.d.ts +108 -0
- package/dist/server/rsc-entry/revalidate-renderer.d.ts.map +1 -0
- package/dist/server/rsc-entry/rsc-payload.d.ts +26 -6
- package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
- package/dist/server/rsc-entry/rsc-stream.d.ts +39 -3
- package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-bridge.d.ts +5 -1
- package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-renderer.d.ts +37 -5
- package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +89 -0
- package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
- package/dist/server/rsc-error-envelope.d.ts +11 -0
- package/dist/server/rsc-error-envelope.d.ts.map +1 -0
- package/dist/server/rsc-prop-warnings.d.ts.map +1 -1
- package/dist/server/safe-load.d.ts +46 -0
- package/dist/server/safe-load.d.ts.map +1 -0
- package/dist/server/sensitive-fields.d.ts +74 -0
- package/dist/server/sensitive-fields.d.ts.map +1 -0
- package/dist/server/sitemap-generator.d.ts +130 -0
- package/dist/server/sitemap-generator.d.ts.map +1 -0
- package/dist/server/sitemap-handler.d.ts +22 -0
- package/dist/server/sitemap-handler.d.ts.map +1 -0
- package/dist/server/skippable-prefix.d.ts +29 -0
- package/dist/server/skippable-prefix.d.ts.map +1 -0
- package/dist/server/slot-interception.d.ts +80 -0
- package/dist/server/slot-interception.d.ts.map +1 -0
- package/dist/server/slot-resolver.d.ts +137 -7
- package/dist/server/slot-resolver.d.ts.map +1 -1
- package/dist/server/slot-subtree-contain.d.ts +54 -0
- package/dist/server/slot-subtree-contain.d.ts.map +1 -0
- package/dist/server/ssr-bridge-types.d.ts +160 -0
- package/dist/server/ssr-bridge-types.d.ts.map +1 -0
- package/dist/server/ssr-entry.d.ts +1 -43
- package/dist/server/ssr-entry.d.ts.map +1 -1
- package/dist/server/ssr-render.d.ts +69 -22
- package/dist/server/ssr-render.d.ts.map +1 -1
- package/dist/server/ssr-wrappers.d.ts +93 -0
- package/dist/server/ssr-wrappers.d.ts.map +1 -0
- package/dist/server/state-tree-diff.d.ts +44 -9
- package/dist/server/state-tree-diff.d.ts.map +1 -1
- package/dist/server/static-generator.d.ts +112 -0
- package/dist/server/static-generator.d.ts.map +1 -0
- package/dist/server/static-not-found.d.ts +52 -0
- package/dist/server/static-not-found.d.ts.map +1 -0
- package/dist/server/status-code-resolver.d.ts +26 -15
- package/dist/server/status-code-resolver.d.ts.map +1 -1
- package/dist/server/stream-utils.d.ts +47 -0
- package/dist/server/stream-utils.d.ts.map +1 -0
- package/dist/server/tracing.d.ts +56 -11
- package/dist/server/tracing.d.ts.map +1 -1
- package/dist/server/tree-match.d.ts +49 -0
- package/dist/server/tree-match.d.ts.map +1 -0
- package/dist/server/types.d.ts +88 -7
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/utils/element-type.d.ts +50 -0
- package/dist/server/utils/element-type.d.ts.map +1 -0
- package/dist/server/utils/escape-html.d.ts +14 -0
- package/dist/server/utils/escape-html.d.ts.map +1 -0
- package/dist/server/utils/mdx-file.d.ts +17 -0
- package/dist/server/utils/mdx-file.d.ts.map +1 -0
- package/dist/server/version-skew.d.ts +61 -0
- package/dist/server/version-skew.d.ts.map +1 -0
- package/dist/server/waituntil-bridge.d.ts.map +1 -1
- package/dist/server/workers-cache-bridge.d.ts +26 -0
- package/dist/server/workers-cache-bridge.d.ts.map +1 -0
- package/dist/shared/als-slots.d.ts +42 -0
- package/dist/shared/als-slots.d.ts.map +1 -0
- package/dist/shared/base-path.d.ts +56 -0
- package/dist/shared/base-path.d.ts.map +1 -0
- package/dist/shared/href-validation.d.ts +49 -0
- package/dist/shared/href-validation.d.ts.map +1 -0
- package/dist/shared/merge-search-params.d.ts +22 -0
- package/dist/shared/merge-search-params.d.ts.map +1 -0
- package/dist/shared/param-value.d.ts +104 -0
- package/dist/shared/param-value.d.ts.map +1 -0
- package/dist/shared/payload-root.d.ts +109 -0
- package/dist/shared/payload-root.d.ts.map +1 -0
- package/dist/shared/redirect-type.d.ts +17 -0
- package/dist/shared/redirect-type.d.ts.map +1 -0
- package/dist/shared/rsc-cache-key.d.ts +163 -0
- package/dist/shared/rsc-cache-key.d.ts.map +1 -0
- package/dist/shared/rsc-error-envelope.d.ts +16 -0
- package/dist/shared/rsc-error-envelope.d.ts.map +1 -0
- package/dist/shared/rsc-manifest.d.ts +28 -0
- package/dist/shared/rsc-manifest.d.ts.map +1 -0
- package/dist/shared/rsc-media-type.d.ts +52 -0
- package/dist/shared/rsc-media-type.d.ts.map +1 -0
- package/dist/shared/rsc-payload-path.d.ts +42 -0
- package/dist/shared/rsc-payload-path.d.ts.map +1 -0
- package/dist/shared/segment-info.d.ts +66 -0
- package/dist/shared/segment-info.d.ts.map +1 -0
- package/dist/shared/slot-params.d.ts +52 -0
- package/dist/shared/slot-params.d.ts.map +1 -0
- package/dist/shared/static-platform-files.d.ts +71 -0
- package/dist/shared/static-platform-files.d.ts.map +1 -0
- package/dist/shared/status-reason-phrase.d.ts +26 -0
- package/dist/shared/status-reason-phrase.d.ts.map +1 -0
- package/dist/shims/font-google.d.ts +1 -1
- package/dist/shims/font-google.d.ts.map +1 -1
- package/dist/shims/font-google.js +42 -0
- package/dist/shims/font-google.js.map +1 -0
- package/dist/shims/font-local.d.ts +26 -0
- package/dist/shims/font-local.d.ts.map +1 -0
- package/dist/shims/font-local.js +20 -0
- package/dist/shims/font-local.js.map +1 -0
- package/dist/shims/headers.d.ts +53 -1
- package/dist/shims/headers.d.ts.map +1 -1
- package/dist/shims/image.d.ts +120 -120
- package/dist/shims/image.d.ts.map +1 -1
- package/dist/shims/navigation-client.d.ts +25 -12
- package/dist/shims/navigation-client.d.ts.map +1 -1
- package/dist/shims/navigation-rsc.d.ts +21 -0
- package/dist/shims/navigation-rsc.d.ts.map +1 -0
- package/dist/shims/navigation.d.ts +10 -5
- package/dist/shims/navigation.d.ts.map +1 -1
- package/dist/utils/state-machine.d.ts +80 -0
- package/dist/utils/state-machine.d.ts.map +1 -0
- package/docs/api/30-api-server.mdx +236 -0
- package/docs/api/31-api-client.mdx +167 -0
- package/docs/api/32-api-cache.mdx +311 -0
- package/docs/api/33-api-search-params.mdx +176 -0
- package/docs/api/34-api-config.mdx +329 -0
- package/docs/api/35-api-typescript.mdx +91 -0
- package/docs/api/36-cli.mdx +192 -0
- package/docs/learn/00-introduction.mdx +109 -0
- package/docs/learn/01-quick-start.mdx +94 -0
- package/docs/learn/02-pages-and-layouts.mdx +147 -0
- package/docs/learn/03-fetching-data.mdx +211 -0
- package/docs/learn/04-access-control.mdx +115 -0
- package/docs/learn/05-the-flush-point.mdx +175 -0
- package/docs/learn/06-typed-params.mdx +275 -0
- package/docs/learn/07-typed-routes.mdx +108 -0
- package/docs/learn/08-forms-and-actions.mdx +146 -0
- package/docs/learn/09-streaming.mdx +140 -0
- package/docs/learn/10-caching.mdx +252 -0
- package/docs/learn/11-middleware.mdx +158 -0
- package/docs/learn/12-error-handling.mdx +188 -0
- package/docs/learn/13-deploying.mdx +287 -0
- package/llms.txt +55 -0
- package/package.json +117 -29
- package/src/adapters/build-output-helper.ts +351 -0
- package/src/adapters/cloudflare-dev.ts +183 -0
- package/src/adapters/cloudflare-kv-cache.ts +207 -0
- package/src/adapters/cloudflare.ts +747 -130
- package/src/adapters/compress-module.ts +101 -88
- package/src/adapters/fs-identity.ts +156 -0
- package/src/adapters/nitro-presets.ts +139 -0
- package/src/adapters/nitro-preview.ts +340 -0
- package/src/adapters/nitro.ts +279 -418
- package/src/adapters/raw-imports.d.ts +5 -0
- package/src/adapters/shared.ts +274 -0
- package/src/adapters/types.ts +28 -7
- package/src/adapters/wrangler.d.ts +7 -0
- package/src/analyze/chains.ts +411 -0
- package/src/analyze/classify.ts +258 -0
- package/src/analyze/crawl-entry.ts +68 -0
- package/src/analyze/crawl.ts +500 -0
- package/src/analyze/graph-cache.ts +332 -0
- package/src/analyze/graph-command.ts +762 -0
- package/src/analyze/live-graph.ts +232 -0
- package/src/analyze/poison-rules.ts +165 -0
- package/src/analyze/poison-scan.ts +162 -0
- package/src/analyze/scan.ts +149 -0
- package/src/cache/cache-api.ts +107 -0
- package/src/cache/fast-hash.ts +39 -0
- package/src/cache/handler-store.ts +76 -0
- package/src/cache/index.ts +115 -22
- package/src/cache/invalidation-epoch.ts +93 -0
- package/src/cache/json-lossy-check.ts +75 -0
- package/src/cache/redis-handler.ts +198 -20
- package/src/cache/singleflight.ts +69 -6
- package/src/cache/sizeof.ts +33 -0
- package/src/cache/stable-stringify.ts +65 -2
- package/src/cache/store.ts +71 -0
- package/src/cache/stores/cloudflare-kv.ts +52 -0
- package/src/cache/stores/memory.ts +125 -0
- package/src/cache/stores/redis.ts +97 -0
- package/src/cache/stores/vercel.ts +59 -0
- package/src/cache/tag-aware-handler.ts +237 -0
- package/src/cache/timber-cache.ts +180 -48
- package/src/cdn/cloudflare-purge.ts +50 -0
- package/src/cdn/fastly-purge.ts +63 -0
- package/src/cdn/headers.ts +153 -0
- package/src/cdn/index.ts +23 -0
- package/src/cdn/purge-store.ts +34 -0
- package/src/cdn/workers-cache-purge.ts +34 -0
- package/src/cli-check.ts +507 -0
- package/src/cli-schema-sync.ts +401 -0
- package/src/cli.ts +262 -55
- package/src/client/browser-dev.ts +157 -2
- package/src/client/browser-entry/action-dispatch.ts +197 -0
- package/src/client/browser-entry/action-queue.ts +90 -0
- package/src/client/browser-entry/hmr.ts +70 -0
- package/src/client/browser-entry/hydrate.ts +148 -0
- package/src/client/browser-entry/index.ts +131 -0
- package/src/client/browser-entry/post-hydration.ts +123 -0
- package/src/client/browser-entry/router-init.ts +418 -0
- package/src/client/browser-entry/rsc-stream.ts +166 -0
- package/src/client/browser-entry/scroll.ts +50 -0
- package/src/client/deny-last-resort.tsx +54 -0
- package/src/client/error-boundary.tsx +316 -40
- package/src/client/error-reconstituter.tsx +79 -0
- package/src/client/form.tsx +36 -32
- package/src/client/global-context.ts +31 -0
- package/src/client/history.ts +81 -10
- package/src/client/index.ts +89 -53
- package/src/client/internal.ts +59 -0
- package/src/client/link.tsx +452 -159
- package/src/client/location-search.ts +15 -0
- package/src/client/navigation-api.ts +347 -0
- package/src/client/navigation-commit.ts +295 -0
- package/src/client/navigation-context.ts +67 -98
- package/src/client/navigation-root.tsx +224 -0
- package/src/client/navigation-transition.ts +327 -0
- package/src/client/nuqs-adapter.tsx +21 -9
- package/src/client/params-context.ts +187 -0
- package/src/client/react-root.ts +72 -0
- package/src/client/router-effects.ts +228 -0
- package/src/client/router-lifecycle.ts +354 -0
- package/src/client/router-pipeline.ts +490 -0
- package/src/client/router-ref.ts +3 -3
- package/src/client/router-skew.ts +30 -0
- package/src/client/router-types.ts +294 -0
- package/src/client/router.ts +436 -424
- package/src/client/rsc-fetch.ts +512 -73
- package/src/client/segment-cache.ts +327 -40
- package/src/client/segment-context.ts +13 -5
- package/src/client/segment-outlet.tsx +96 -0
- package/src/client/segment-update-context.ts +23 -0
- package/src/client/shallow-url.ts +22 -0
- package/src/client/slot-content-cache-context.ts +43 -0
- package/src/client/slot-context.ts +50 -0
- package/src/client/slot-outlet.tsx +22 -0
- package/src/client/slot-provider.tsx +32 -0
- package/src/client/ssr-data.ts +30 -9
- package/src/client/stale-client.ts +191 -0
- package/src/client/state.ts +29 -15
- package/src/client/status-page-marker.tsx +32 -0
- package/src/client/top-loader.tsx +36 -29
- package/src/client/unload-guard.ts +35 -3
- package/src/client/use-cookie.ts +70 -18
- package/src/client/use-link-status.ts +7 -7
- package/src/client/use-pathname.ts +22 -31
- package/src/client/use-pending-navigation.ts +40 -0
- package/src/client/use-query-states.ts +206 -36
- package/src/client/use-router.ts +6 -3
- package/src/client/use-search-params.ts +38 -49
- package/src/client/use-segment-params.ts +69 -0
- package/src/client/use-selected-layout-segment.ts +2 -2
- package/src/codec.ts +149 -0
- package/src/config-types.ts +322 -0
- package/src/config-validation.ts +347 -0
- package/src/cookies/define-cookie.ts +222 -53
- package/src/cookies/index.ts +13 -2
- package/src/cookies/json-cookie.ts +105 -0
- package/src/cookies/validation.ts +192 -0
- package/src/dev-tools/404-page.ts +286 -0
- package/src/dev-tools/browser-logs.ts +55 -0
- package/src/dev-tools/dev-page-shell.ts +260 -0
- package/src/dev-tools/error-page.ts +331 -0
- package/src/dev-tools/holding-server.ts +185 -0
- package/src/dev-tools/hydration-overlay.ts +158 -0
- package/src/dev-tools/index.ts +83 -0
- package/src/dev-tools/instrumentation.ts +213 -0
- package/src/{server/dev-logger.ts → dev-tools/logger.ts} +33 -51
- package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +122 -26
- package/src/dev-tools/overlay.ts +469 -0
- package/src/dev-tools/stack-classifier.ts +75 -0
- package/src/dev-tools/terminal.ts +182 -0
- package/src/fonts/ast-walk.ts +235 -0
- package/src/fonts/ast.ts +479 -128
- package/src/fonts/bundle.ts +138 -0
- package/src/fonts/css.ts +3 -2
- package/src/fonts/dev-middleware.ts +85 -0
- package/src/fonts/fallbacks.ts +0 -23
- package/src/fonts/google.ts +101 -19
- package/src/fonts/local.ts +13 -8
- package/src/fonts/paths.ts +58 -0
- package/src/fonts/pipeline.ts +348 -0
- package/src/fonts/transform.ts +311 -0
- package/src/fonts/types.ts +52 -1
- package/src/fonts/virtual-modules.ts +179 -0
- package/src/index.ts +486 -344
- package/src/params/codec-registry.ts +34 -0
- package/src/params/define-schema.ts +115 -0
- package/src/params/index.ts +17 -0
- package/src/params/resolve-schema.ts +84 -0
- package/src/plugin-context.ts +503 -0
- package/src/plugins/adapter-build.ts +229 -7
- package/src/plugins/build-manifest.ts +201 -26
- package/src/plugins/build-report.ts +275 -43
- package/src/plugins/cache.ts +243 -0
- package/src/plugins/callsite-ast.ts +472 -0
- package/src/plugins/callsite-jsx.ts +243 -0
- package/src/plugins/chunks.ts +74 -5
- package/src/plugins/client-chunks.ts +185 -0
- package/src/plugins/cloudflare-wasm.ts +141 -0
- package/src/plugins/content.ts +5 -1
- package/src/plugins/dev-discovery.ts +218 -0
- package/src/plugins/dev-server.ts +369 -96
- package/src/plugins/entries.ts +148 -18
- package/src/plugins/fonts.ts +251 -524
- package/src/plugins/graph-endpoint.ts +532 -0
- package/src/plugins/mdx.ts +116 -40
- package/src/plugins/prebuilt-capture.ts +217 -0
- package/src/plugins/prebuilt-options-analysis.ts +175 -0
- package/src/plugins/prebuilt.ts +655 -0
- package/src/plugins/prerender-sugar.ts +320 -0
- package/src/plugins/request-dep/analysis.ts +447 -0
- package/src/plugins/request-dep/index.ts +376 -0
- package/src/plugins/request-dep/origin.ts +310 -0
- package/src/plugins/routing.ts +273 -277
- package/src/plugins/server-bundle.ts +103 -14
- package/src/plugins/shims.ts +259 -97
- package/src/plugins/static-build.ts +708 -66
- package/src/react-canary.d.ts +2 -0
- package/src/routing/codegen-shared.ts +39 -0
- package/src/routing/codegen-types.ts +62 -0
- package/src/routing/codegen-write.ts +141 -0
- package/src/routing/codegen.ts +349 -232
- package/src/routing/collision-probe.ts +438 -0
- package/src/routing/collision-spaces.ts +281 -0
- package/src/routing/convention-lint.ts +623 -0
- package/src/routing/export-detect.ts +448 -0
- package/src/routing/file-cache.ts +23 -0
- package/src/routing/index.ts +16 -7
- package/src/routing/interception-overlap.ts +141 -0
- package/src/routing/interception.ts +1044 -67
- package/src/routing/link-codegen.ts +280 -0
- package/src/routing/manifest-codegen.ts +226 -0
- package/src/routing/scanner.ts +393 -219
- package/src/routing/schema-validation.ts +155 -0
- package/src/routing/segment-classify.ts +280 -0
- package/src/routing/segment-codegen.ts +98 -0
- package/src/routing/segment-keys.ts +186 -0
- package/src/routing/slot-placement.ts +97 -0
- package/src/routing/types.ts +75 -26
- package/src/routing/walkers.ts +98 -0
- package/src/rsc-runtime/rsc.ts +9 -0
- package/src/rsc-runtime/ssr.ts +51 -0
- package/src/rsc-runtime/transforms.ts +13 -0
- package/src/rsc-runtime/vendor-types.d.ts +19 -0
- package/src/schema-bridge.ts +380 -0
- package/src/search-params/define.ts +677 -0
- package/src/search-params/index.ts +14 -20
- package/src/search-params/parse-total.ts +91 -0
- package/src/search-params/serialize-equal.ts +14 -0
- package/src/search-params/wrappers.ts +150 -0
- package/src/server/access-gate.tsx +196 -57
- package/src/server/action-client.ts +136 -35
- package/src/server/action-encryption.ts +144 -0
- package/src/server/action-handler.ts +256 -56
- package/src/server/actions.ts +112 -68
- package/src/server/als-registry.ts +160 -21
- package/src/server/asset-headers.ts +15 -37
- package/src/server/body-limits.ts +10 -2
- package/src/server/build-manifest.ts +33 -57
- package/src/server/canonicalize.ts +6 -3
- package/src/server/chain-url-parts.ts +163 -0
- package/src/server/children-interception.ts +115 -0
- package/src/server/coalesce-tick.ts +75 -0
- package/src/server/compress.ts +43 -8
- package/src/server/cookie-context.ts +484 -0
- package/src/server/cookie-parsing.ts +163 -0
- package/src/server/csp-nonce.ts +70 -0
- package/src/server/csrf.ts +39 -6
- package/src/server/debug.ts +137 -0
- package/src/server/default-logger.ts +99 -0
- package/src/server/default-status-page.ts +88 -0
- package/src/server/deny-boundary.ts +533 -0
- package/src/server/deny-renderer.ts +214 -112
- package/src/server/dev-source-map.ts +31 -0
- package/src/server/early-hints-sender.ts +4 -3
- package/src/server/early-hints.ts +39 -29
- package/src/server/error-boundary-wrapper.ts +181 -44
- package/src/server/error-response-headers.ts +18 -0
- package/src/server/fallback-error.ts +79 -102
- package/src/server/flight-injection-state.ts +113 -0
- package/src/server/flight-scripts.ts +67 -0
- package/src/server/form-data.ts +124 -12
- package/src/server/form-flash.ts +2 -2
- package/src/server/head-response.ts +54 -0
- package/src/server/html-injector-core.ts +512 -0
- package/src/server/html-injectors.ts +272 -235
- package/src/server/index.ts +40 -192
- package/src/server/instrumentation.ts +1 -1
- package/src/server/internal.ts +173 -0
- package/src/server/logger.ts +73 -36
- package/src/server/metadata-collector.ts +174 -0
- package/src/server/metadata-platform.ts +2 -2
- package/src/server/metadata-render.ts +30 -8
- package/src/server/metadata-routes.ts +205 -24
- package/src/server/metadata-social.ts +2 -2
- package/src/server/metadata.ts +23 -2
- package/src/server/middleware-runner.ts +32 -5
- package/src/server/node-stream-transforms.ts +323 -0
- package/src/server/nuqs-ssr-provider.tsx +8 -7
- package/src/server/param-coercion.ts +198 -0
- package/src/server/pipeline-helpers.ts +159 -0
- package/src/server/pipeline-interception.ts +109 -33
- package/src/server/pipeline-metadata.ts +15 -1
- package/src/server/pipeline-outcome.ts +218 -0
- package/src/server/pipeline-phases.ts +606 -0
- package/src/server/pipeline.ts +343 -389
- package/src/server/port-resolution.ts +53 -0
- package/src/server/prebuilt/cache-key.ts +299 -0
- package/src/server/prebuilt/capture-state.ts +89 -0
- package/src/server/prebuilt/key-discipline.ts +122 -0
- package/src/server/prebuilt/manifest-tag-index.ts +46 -0
- package/src/server/prebuilt/overlay.ts +256 -0
- package/src/server/prebuilt/payload-source.ts +202 -0
- package/src/server/prebuilt/slots.ts +190 -0
- package/src/server/prebuilt/synthetic-store.ts +122 -0
- package/src/server/prebuilt-builder.ts +804 -0
- package/src/server/prebuilt-runtime.ts +817 -0
- package/src/server/primitives.ts +246 -97
- package/src/server/publish-params.ts +42 -0
- package/src/server/render-timeout.ts +108 -0
- package/src/server/render-utils.ts +35 -0
- package/src/server/request-context.ts +244 -333
- package/src/server/request-dep.ts +37 -0
- package/src/server/response-cache-policy.ts +45 -0
- package/src/server/route-element-builder.ts +508 -360
- package/src/server/route-element-helpers.ts +37 -0
- package/src/server/route-handler.ts +40 -13
- package/src/server/route-matcher.ts +165 -272
- package/src/server/route-module-loader.ts +161 -0
- package/src/server/rsc-cache-key-guard.ts +122 -0
- package/src/server/rsc-entry/action-middleware-runner.ts +174 -0
- package/src/server/rsc-entry/api-handler.ts +78 -34
- package/src/server/rsc-entry/deny-fallback.ts +93 -0
- package/src/server/rsc-entry/error-renderer.ts +373 -95
- package/src/server/rsc-entry/helpers.ts +226 -95
- package/src/server/rsc-entry/index.ts +405 -323
- package/src/server/rsc-entry/render-route.ts +304 -0
- package/src/server/rsc-entry/revalidate-renderer.ts +350 -0
- package/src/server/rsc-entry/rsc-payload.ts +239 -50
- package/src/server/rsc-entry/rsc-stream.ts +160 -30
- package/src/server/rsc-entry/ssr-bridge.ts +18 -5
- package/src/server/rsc-entry/ssr-renderer.ts +315 -57
- package/src/server/rsc-entry/wrap-action-dispatch.ts +186 -0
- package/src/server/rsc-error-envelope.ts +18 -0
- package/src/server/rsc-prop-warnings.ts +3 -1
- package/src/server/safe-load.ts +60 -0
- package/src/server/sensitive-fields.ts +230 -0
- package/src/server/server-only-guard-noop.js +3 -0
- package/src/server/server-timing.ts +1 -1
- package/src/server/sitemap-generator.ts +337 -0
- package/src/server/sitemap-handler.ts +157 -0
- package/src/server/skippable-prefix.ts +172 -0
- package/src/server/slot-interception.ts +168 -0
- package/src/server/slot-resolver.ts +707 -300
- package/src/server/slot-subtree-contain.ts +255 -0
- package/src/server/ssr-bridge-types.ts +165 -0
- package/src/server/ssr-entry.ts +230 -85
- package/src/server/ssr-render.ts +357 -85
- package/src/server/ssr-wrappers.tsx +162 -0
- package/src/server/state-tree-diff.ts +85 -30
- package/src/server/static-generator.ts +715 -0
- package/src/server/static-not-found.ts +134 -0
- package/src/server/status-code-resolver.ts +107 -148
- package/src/server/stream-utils.ts +292 -0
- package/src/server/tracing.ts +151 -16
- package/src/server/tree-match.ts +262 -0
- package/src/server/types.ts +95 -10
- package/src/server/utils/element-type.ts +88 -0
- package/src/server/utils/escape-html.ts +20 -0
- package/src/server/utils/mdx-file.ts +22 -0
- package/src/server/version-skew.ts +104 -0
- package/src/server/waituntil-bridge.ts +5 -2
- package/src/server/workers-cache-bridge.ts +33 -0
- package/src/shared/als-slots.ts +74 -0
- package/src/shared/base-path.ts +80 -0
- package/src/shared/href-validation.ts +159 -0
- package/src/shared/merge-search-params.ts +55 -0
- package/src/shared/param-value.ts +281 -0
- package/src/shared/payload-root.ts +152 -0
- package/src/shared/redirect-type.ts +17 -0
- package/src/shared/rsc-cache-key.ts +269 -0
- package/src/shared/rsc-error-envelope.ts +16 -0
- package/src/shared/rsc-manifest.ts +29 -0
- package/src/shared/rsc-media-type.ts +59 -0
- package/src/shared/rsc-payload-path.ts +45 -0
- package/src/shared/segment-info.ts +67 -0
- package/src/shared/slot-params.ts +109 -0
- package/src/shared/static-platform-files.ts +75 -0
- package/src/shared/status-reason-phrase.ts +61 -0
- package/src/shims/font-google.ts +1 -1
- package/src/shims/font-local.ts +34 -0
- package/src/shims/headers.ts +122 -1
- package/src/shims/navigation-client.ts +36 -32
- package/src/shims/navigation-rsc.ts +47 -0
- package/src/shims/navigation.ts +10 -7
- package/src/utils/state-machine.ts +111 -0
- package/dist/_chunks/als-registry-k-AtAQ9R.js +0 -41
- package/dist/_chunks/als-registry-k-AtAQ9R.js.map +0 -1
- package/dist/_chunks/format-DNt20Kt8.js +0 -163
- package/dist/_chunks/format-DNt20Kt8.js.map +0 -1
- package/dist/_chunks/interception-DGDIjDbR.js +0 -676
- package/dist/_chunks/interception-DGDIjDbR.js.map +0 -1
- package/dist/_chunks/metadata-routes-CQCnF4VK.js +0 -153
- package/dist/_chunks/metadata-routes-CQCnF4VK.js.map +0 -1
- package/dist/_chunks/request-context-CRj2Zh1E.js +0 -329
- package/dist/_chunks/request-context-CRj2Zh1E.js.map +0 -1
- package/dist/_chunks/ssr-data-DLnbYpj1.js.map +0 -1
- package/dist/_chunks/tracing-DF0G3FB7.js +0 -173
- package/dist/_chunks/tracing-DF0G3FB7.js.map +0 -1
- package/dist/_chunks/use-cookie-dDbpCTx-.js +0 -91
- package/dist/_chunks/use-cookie-dDbpCTx-.js.map +0 -1
- package/dist/_chunks/use-query-states-DAhgj8Gx.js +0 -109
- package/dist/_chunks/use-query-states-DAhgj8Gx.js.map +0 -1
- package/dist/adapters/cloudflare.js.map +0 -1
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/register-cached-function.d.ts +0 -17
- package/dist/cache/register-cached-function.d.ts.map +0 -1
- package/dist/client/browser-entry.d.ts +0 -21
- package/dist/client/browser-entry.d.ts.map +0 -1
- package/dist/client/error-boundary.js.map +0 -1
- package/dist/client/head.d.ts +0 -16
- package/dist/client/head.d.ts.map +0 -1
- package/dist/client/link-status-provider.d.ts +0 -11
- package/dist/client/link-status-provider.d.ts.map +0 -1
- package/dist/client/segment-merger.d.ts +0 -119
- package/dist/client/segment-merger.d.ts.map +0 -1
- package/dist/client/stale-reload.d.ts +0 -44
- package/dist/client/stale-reload.d.ts.map +0 -1
- package/dist/client/transition-root.d.ts +0 -74
- package/dist/client/transition-root.d.ts.map +0 -1
- package/dist/client/use-navigation-pending.d.ts +0 -26
- package/dist/client/use-navigation-pending.d.ts.map +0 -1
- package/dist/client/use-params.d.ts +0 -92
- package/dist/client/use-params.d.ts.map +0 -1
- package/dist/content/index.d.ts +0 -11
- package/dist/content/index.d.ts.map +0 -1
- package/dist/content/index.js +0 -2
- package/dist/plugins/cache-transform.d.ts +0 -36
- package/dist/plugins/cache-transform.d.ts.map +0 -1
- package/dist/plugins/dev-error-overlay.d.ts +0 -60
- package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
- package/dist/plugins/dev-logs.d.ts.map +0 -1
- package/dist/plugins/dynamic-transform.d.ts +0 -72
- package/dist/plugins/dynamic-transform.d.ts.map +0 -1
- package/dist/plugins/server-action-exports.d.ts +0 -26
- package/dist/plugins/server-action-exports.d.ts.map +0 -1
- package/dist/routing/status-file-lint.d.ts +0 -33
- package/dist/routing/status-file-lint.d.ts.map +0 -1
- package/dist/search-params/analyze.d.ts +0 -54
- package/dist/search-params/analyze.d.ts.map +0 -1
- package/dist/search-params/builtin-codecs.d.ts +0 -105
- package/dist/search-params/builtin-codecs.d.ts.map +0 -1
- package/dist/search-params/codecs.d.ts +0 -53
- package/dist/search-params/codecs.d.ts.map +0 -1
- package/dist/search-params/create.d.ts +0 -106
- package/dist/search-params/create.d.ts.map +0 -1
- package/dist/search-params/registry.d.ts +0 -20
- package/dist/search-params/registry.d.ts.map +0 -1
- package/dist/server/client-module-map.d.ts +0 -47
- package/dist/server/client-module-map.d.ts.map +0 -1
- package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
- package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
- package/dist/server/dev-logger.d.ts.map +0 -1
- package/dist/server/dev-span-processor.d.ts +0 -29
- package/dist/server/dev-span-processor.d.ts.map +0 -1
- package/dist/server/dev-warnings.d.ts +0 -129
- package/dist/server/dev-warnings.d.ts.map +0 -1
- package/dist/server/flush.d.ts +0 -74
- package/dist/server/flush.d.ts.map +0 -1
- package/dist/server/manifest-status-resolver.d.ts +0 -58
- package/dist/server/manifest-status-resolver.d.ts.map +0 -1
- package/dist/server/prerender.d.ts +0 -77
- package/dist/server/prerender.d.ts.map +0 -1
- package/dist/server/tree-builder.d.ts +0 -126
- package/dist/server/tree-builder.d.ts.map +0 -1
- package/dist/utils/directive-parser.d.ts +0 -70
- package/dist/utils/directive-parser.d.ts.map +0 -1
- package/src/cache/register-cached-function.ts +0 -99
- package/src/client/browser-entry.ts +0 -674
- package/src/client/head.ts +0 -61
- package/src/client/link-status-provider.tsx +0 -30
- package/src/client/segment-merger.ts +0 -345
- package/src/client/stale-reload.ts +0 -89
- package/src/client/transition-root.tsx +0 -160
- package/src/client/use-navigation-pending.ts +0 -38
- package/src/client/use-params.ts +0 -141
- package/src/content/index.ts +0 -13
- package/src/plugins/cache-transform.ts +0 -199
- package/src/plugins/dev-error-overlay.ts +0 -230
- package/src/plugins/dynamic-transform.ts +0 -161
- package/src/plugins/server-action-exports.ts +0 -220
- package/src/routing/status-file-lint.ts +0 -112
- package/src/search-params/analyze.ts +0 -192
- package/src/search-params/builtin-codecs.ts +0 -228
- package/src/search-params/codecs.ts +0 -153
- package/src/search-params/create.ts +0 -321
- package/src/search-params/registry.ts +0 -31
- package/src/server/client-module-map.ts +0 -58
- package/src/server/dev-fetch-instrumentation.ts +0 -96
- package/src/server/dev-span-processor.ts +0 -78
- package/src/server/dev-warnings.ts +0 -282
- package/src/server/flush.ts +0 -182
- package/src/server/manifest-status-resolver.ts +0 -215
- package/src/server/prerender.ts +0 -139
- package/src/server/tree-builder.ts +0 -382
- package/src/shims/server-only-noop.js +0 -6
- package/src/utils/directive-parser.ts +0 -529
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Navigation transition — the router-level hand-off of a navigation's tree to
|
|
3
|
+
* React, and the supersession that governs it.
|
|
4
|
+
*
|
|
5
|
+
* `navigateTransition` runs a navigation's fetch OUTSIDE any transition scope
|
|
6
|
+
* and hands the resulting tree to React through a `NavigationRender`, which
|
|
7
|
+
* is a synchronous `startTransition` around `root.render` (client/react-root.ts).
|
|
8
|
+
* Two React behaviours force that shape; both were measured on React 19.2.7
|
|
9
|
+
* (tests/navigation-transition-suspense.test.ts pins the observable half).
|
|
10
|
+
*
|
|
11
|
+
* 1. A transition scope does not survive an `await`. `startTransition`
|
|
12
|
+
* restores the previous scope in its `finally`, which for an async
|
|
13
|
+
* callback runs when that callback RETURNS — i.e. at its first `await`.
|
|
14
|
+
* So an update scheduled past an await inside `startTransition(async …)`
|
|
15
|
+
* is an ordinary urgent update:
|
|
16
|
+
*
|
|
17
|
+
* startTransition(() => render(x)) -> 'HOME' held
|
|
18
|
+
* startTransition(async () => { await p; render(x) }) -> fallback shown
|
|
19
|
+
*
|
|
20
|
+
* Left uncorrected, every navigation whose new tree suspends replaces the
|
|
21
|
+
* visible page with a Suspense fallback — the exact thing NavigationRoot
|
|
22
|
+
* exists to prevent (TIM-1306). React documents the caveat under
|
|
23
|
+
* `startTransition`: updates after an await need their own transition.
|
|
24
|
+
*
|
|
25
|
+
* 2. Re-wrapping *inside* the async callback is not enough. Returning a
|
|
26
|
+
* thenable from `startTransition` hands it to `ReactSharedInternals.S`,
|
|
27
|
+
* which calls react-dom's `entangleAsyncAction`. That opens an action
|
|
28
|
+
* scope: `currentEntangledLane` collects EVERY transition update
|
|
29
|
+
* scheduled while the scope is open — including one from a nested,
|
|
30
|
+
* fully synchronous `startTransition` — and rendering that lane throws
|
|
31
|
+
* `currentEntangledActionThenable`, suspending until the action settles.
|
|
32
|
+
* Which is after the promise `navigateTransition` hands back, so a caller
|
|
33
|
+
* that awaits a navigation and then reads the DOM sees the departing
|
|
34
|
+
* page, and the TIM-1301 publish (a layout effect on the commit) is just
|
|
35
|
+
* as late. (Not `ReactSharedInternals.asyncTransitions` — that counter is
|
|
36
|
+
* write-only in 19.2.7.)
|
|
37
|
+
*
|
|
38
|
+
* No async action is created here, so every navigation commits as soon as
|
|
39
|
+
* React can render its destination — where TIM-1301 put it. That holds for
|
|
40
|
+
* ALL of them. It used not to hold for `<Link>`, which wrapped
|
|
41
|
+
* `router.navigate()` in its own `useTransition`: that action scope entangled
|
|
42
|
+
* the root's updates just the same, so a Link navigation committed only once
|
|
43
|
+
* the payload had finished decoding, and with it `pushState`, the segment
|
|
44
|
+
* cache and `timber:navigation-end`. Link now calls `router.navigate()`
|
|
45
|
+
* outside any transition and tracks its own `isPending` with a plain
|
|
46
|
+
* `useState` (TIM-1307).
|
|
47
|
+
*
|
|
48
|
+
* Nothing here may reopen an action scope: no `startTransition` callback in
|
|
49
|
+
* this path may return a thenable, and no caller may invoke this from inside
|
|
50
|
+
* a React action scope. That is a rule about `startTransition`, not about
|
|
51
|
+
* `perform` — `perform` is async by contract and is awaited OUTSIDE any
|
|
52
|
+
* transition scope, which is exactly why it is safe.
|
|
53
|
+
*
|
|
54
|
+
* Standalone `startTransition` rather than `useTransition`'s is deliberate:
|
|
55
|
+
* the hook's is tied to a single fiber and tracks one async callback at a
|
|
56
|
+
* time, and two overlapping navigations through it corrupted React's hook
|
|
57
|
+
* tracking ("Rendered more hooks than during the previous render"). Each
|
|
58
|
+
* navigation needs an independent lane. This matches the Next.js pattern
|
|
59
|
+
* (TIM-625): "No useTransition in the router at all — only standalone
|
|
60
|
+
* startTransition."
|
|
61
|
+
*
|
|
62
|
+
* See design/19-client-navigation.md §"How Pending State Works"
|
|
63
|
+
*/
|
|
64
|
+
|
|
65
|
+
import type { ReactNode } from 'react';
|
|
66
|
+
import type { NavigationRender } from './navigation-root.tsx';
|
|
67
|
+
|
|
68
|
+
// ─── Transition Result ──────────────────────────────────────────
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* What a navigation's `perform()` hands back to the transition.
|
|
72
|
+
*
|
|
73
|
+
* Declared once and shared by every layer that passes it along — the router's
|
|
74
|
+
* `RouterDeps.navigateTransition` imports it too — so a field cannot be added
|
|
75
|
+
* to the producer and dropped by the adapter in between. `E` is the element
|
|
76
|
+
* type: `ReactNode` here, `unknown` in the router, which never touches it.
|
|
77
|
+
*/
|
|
78
|
+
export interface TransitionResult<E = ReactNode> {
|
|
79
|
+
/** The wrapped tree to render. */
|
|
80
|
+
element: E;
|
|
81
|
+
/** Resolves when the Flight stream finishes decoding, or null. */
|
|
82
|
+
decodePromise: Promise<void> | null;
|
|
83
|
+
/**
|
|
84
|
+
* Publishes the navigation's state — segment cache, pathname, address bar,
|
|
85
|
+
* history stack, and the client's record of the mounted tree — and
|
|
86
|
+
* announces it to listeners outside React.
|
|
87
|
+
*
|
|
88
|
+
* Run when React commits this tree, not when the tree is handed over: a
|
|
89
|
+
* tree React is still waiting on, or one a later navigation replaces first,
|
|
90
|
+
* has been given to React without being on screen. A superseded navigation
|
|
91
|
+
* never runs it and leaves every one of those consumers describing the
|
|
92
|
+
* route still on screen (TIM-1301).
|
|
93
|
+
*/
|
|
94
|
+
commit: () => void;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** What happened to this navigation's tree. */
|
|
98
|
+
export type CommitOutcome = 'committed' | 'superseded' | 'failed';
|
|
99
|
+
|
|
100
|
+
// ─── RenderOwner ────────────────────────────────────────────────
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* A per-render identity that replaces the transition counter, the
|
|
104
|
+
* `handedOffNavAborts` set, and the `AbortController`-as-owner pattern.
|
|
105
|
+
*
|
|
106
|
+
* The navigation lifecycle holds one slot (`current: RenderOwner | null`).
|
|
107
|
+
* All supersession is "take the slot":
|
|
108
|
+
*
|
|
109
|
+
* - Navigation takes unconditionally (previous owner gets settled + aborted
|
|
110
|
+
* if !handedOff).
|
|
111
|
+
* - Revalidation takes only if empty (epoch check).
|
|
112
|
+
* - Handover gate before root.render checks `current === owner`.
|
|
113
|
+
* - `settle()` is called from NavigationRoot publish (committed), slot
|
|
114
|
+
* takeover (superseded), or rejection (failed).
|
|
115
|
+
*
|
|
116
|
+
* `settle()` records the outcome and resolves `displaced` for non-committed
|
|
117
|
+
* outcomes. The `outcome` field is first-wins with one exception:
|
|
118
|
+
* `settle('superseded')` overrides a prior `'committed'`, because a
|
|
119
|
+
* committed-but-still-decoding navigation can be displaced by a successor
|
|
120
|
+
* and the post-decode check must throw rather than letting the old
|
|
121
|
+
* navigation continue.
|
|
122
|
+
*
|
|
123
|
+
* TIM-1481: replaces counter + waiters + bumpTransitionCounter +
|
|
124
|
+
* supersedeNavigationTransitions + handedOffNavAborts + globalThis singleton.
|
|
125
|
+
*/
|
|
126
|
+
export interface RenderOwner {
|
|
127
|
+
readonly kind: 'navigation' | 'revalidation';
|
|
128
|
+
readonly fetchAbort: AbortController;
|
|
129
|
+
handedOff: boolean;
|
|
130
|
+
/** Sync read for the post-perform() check. null until settled. */
|
|
131
|
+
outcome: CommitOutcome | null;
|
|
132
|
+
/**
|
|
133
|
+
* Resolves when this owner is displaced — a successor supersedes it or it
|
|
134
|
+
* fails. Does NOT resolve on commit: a committed navigation still waits
|
|
135
|
+
* for its decode to finish. Used to stop waiting on a decode that is no
|
|
136
|
+
* longer this navigation's business.
|
|
137
|
+
*/
|
|
138
|
+
readonly displaced: Promise<void>;
|
|
139
|
+
/**
|
|
140
|
+
* Record this owner's outcome and, for non-committed outcomes, resolve
|
|
141
|
+
* `displaced`. First-wins with one exception: `settle('superseded')`
|
|
142
|
+
* overrides a prior `'committed'`.
|
|
143
|
+
*/
|
|
144
|
+
settle: (outcome: CommitOutcome) => void;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Create a fresh RenderOwner. Exported so tests that call
|
|
149
|
+
* `navigateTransition` directly can construct one without a router.
|
|
150
|
+
*/
|
|
151
|
+
export function createRenderOwner(kind: 'navigation' | 'revalidation'): RenderOwner {
|
|
152
|
+
let resolveDisplaced!: () => void;
|
|
153
|
+
const displaced = new Promise<void>((r) => {
|
|
154
|
+
resolveDisplaced = r;
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
const owner: RenderOwner = {
|
|
158
|
+
kind,
|
|
159
|
+
fetchAbort: new AbortController(),
|
|
160
|
+
handedOff: false,
|
|
161
|
+
outcome: null,
|
|
162
|
+
displaced,
|
|
163
|
+
settle(outcome: CommitOutcome): void {
|
|
164
|
+
if (owner.outcome === null) {
|
|
165
|
+
owner.outcome = outcome;
|
|
166
|
+
} else if (outcome === 'superseded' && owner.outcome === 'committed') {
|
|
167
|
+
// A committed-but-still-decoding navigation can be displaced by a
|
|
168
|
+
// successor. Override so the post-decode check throws AbortError
|
|
169
|
+
// rather than letting the old navigation continue with scroll
|
|
170
|
+
// restoration while a newer navigation is active.
|
|
171
|
+
owner.outcome = 'superseded';
|
|
172
|
+
}
|
|
173
|
+
// Resolve `displaced` for any non-committed outcome, even if the
|
|
174
|
+
// outcome field was already set. A committed-but-still-decoding
|
|
175
|
+
// navigation must be woken when a successor supersedes it — the old
|
|
176
|
+
// counter-based waiter did this because the counter bumped regardless
|
|
177
|
+
// of commit state. A commit does NOT resolve displaced: that would
|
|
178
|
+
// end the decode wait early, clearing pending state before the Flight
|
|
179
|
+
// stream finishes.
|
|
180
|
+
if (outcome !== 'committed') {
|
|
181
|
+
resolveDisplaced();
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
return owner;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// ─── navigateTransition ─────────────────────────────────────────
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Run a full navigation, handing its tree to React in a transition.
|
|
192
|
+
*
|
|
193
|
+
* The `perform` callback fetches the RSC payload, updates router state, and
|
|
194
|
+
* returns the wrapped React element. `perform` is async by contract and runs
|
|
195
|
+
* OUTSIDE any transition scope — only the `render` that hands its result over
|
|
196
|
+
* is wrapped, in a synchronous `startTransition` (see the module comment).
|
|
197
|
+
*
|
|
198
|
+
* Do not call this from inside a React action scope, and never let a
|
|
199
|
+
* `startTransition` callback in this path return a thenable: either opens an
|
|
200
|
+
* action scope that entangles the update and defers the commit until the
|
|
201
|
+
* action settles (TIM-1306, TIM-1307).
|
|
202
|
+
*
|
|
203
|
+
* Returns a Promise that resolves when the async work completes — the payload
|
|
204
|
+
* is fetched, decoded, and handed to React. It does **not** wait for React to
|
|
205
|
+
* commit the tree, so the state that publishes on that commit (address bar,
|
|
206
|
+
* segment cache, history entry, pathname) may still be a beat behind when it
|
|
207
|
+
* resolves. Anything that needs the destination to be current should listen
|
|
208
|
+
* for `timber:navigation-end`, which is dispatched by the publish itself.
|
|
209
|
+
*
|
|
210
|
+
* Awaiting the publish here was tried and rejected: it makes the promise
|
|
211
|
+
* depend on a React commit, which never arrives if the root unmounts
|
|
212
|
+
* mid-navigation, and deadlocks any caller that awaits a navigation inside
|
|
213
|
+
* `act()`.
|
|
214
|
+
*
|
|
215
|
+
* Rejects with an `AbortError` when a newer transition started while this
|
|
216
|
+
* one's `perform()` was in flight — the stale tree is never handed to React
|
|
217
|
+
* and its `commit` never runs (TIM-629, TIM-1301).
|
|
218
|
+
*
|
|
219
|
+
* `onCommit` is the caller's hook on the *commit*, which the returned promise
|
|
220
|
+
* deliberately does not wait for. It runs exactly once: when React commits
|
|
221
|
+
* this navigation's tree, or — so nothing waits on a commit that will never
|
|
222
|
+
* come — when the navigation is abandoned instead: superseded by a newer
|
|
223
|
+
* transition (before or after its tree was handed to React) or failed. It is
|
|
224
|
+
* how `<Link>` keeps `isPending` up until the destination is on screen
|
|
225
|
+
* without scheduling anything against React's lanes (TIM-1418).
|
|
226
|
+
*
|
|
227
|
+
* `owner` is the `RenderOwner` for this render (TIM-1481). Supersession is
|
|
228
|
+
* detected via `owner.outcome` (sync) and `owner.displaced` (async).
|
|
229
|
+
* No module-level state; no globalThis singleton.
|
|
230
|
+
*
|
|
231
|
+
* Used for: navigate(), refresh(), popstate with fetch.
|
|
232
|
+
*/
|
|
233
|
+
export function navigateTransition(
|
|
234
|
+
owner: RenderOwner,
|
|
235
|
+
perform: () => Promise<TransitionResult>,
|
|
236
|
+
render: NavigationRender,
|
|
237
|
+
onCommit?: (outcome: CommitOutcome) => void
|
|
238
|
+
): Promise<void> {
|
|
239
|
+
const superseded = () => new DOMException('Navigation superseded', 'AbortError');
|
|
240
|
+
|
|
241
|
+
// `onCommit`, exactly once, on whichever comes first: the commit, a
|
|
242
|
+
// supersession, or a failure.
|
|
243
|
+
let commitSettled = onCommit === undefined;
|
|
244
|
+
const settleCommit = (outcome: CommitOutcome): void => {
|
|
245
|
+
if (commitSettled) return;
|
|
246
|
+
commitSettled = true;
|
|
247
|
+
onCommit?.(outcome);
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
// Watch for displacement from outside (a successor taking the slot).
|
|
251
|
+
if (!commitSettled) {
|
|
252
|
+
void owner.displaced.then(() => {
|
|
253
|
+
if (owner.outcome === 'superseded') settleCommit('superseded');
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return (async () => {
|
|
258
|
+
try {
|
|
259
|
+
const { element, decodePromise, commit } = await perform();
|
|
260
|
+
if (owner.outcome !== null) {
|
|
261
|
+
decodePromise?.catch(() => {});
|
|
262
|
+
throw superseded();
|
|
263
|
+
}
|
|
264
|
+
// Hand the tree over with its commit attached. NavigationRoot runs it if
|
|
265
|
+
// and when React commits this tree, so a navigation that is superseded
|
|
266
|
+
// while its payload streams publishes nothing (TIM-1301).
|
|
267
|
+
//
|
|
268
|
+
// This is THE update that must not hide the departing page (TIM-1306);
|
|
269
|
+
// `render` is the synchronous transition around `root.render`.
|
|
270
|
+
render(element, () => {
|
|
271
|
+
try {
|
|
272
|
+
commit();
|
|
273
|
+
} finally {
|
|
274
|
+
settleCommit('committed');
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
// React may commit the tree before this settles — that is the point:
|
|
278
|
+
// the destination reveals as React is able to render it
|
|
279
|
+
// rather than waiting for the whole Flight stream. The await is here so
|
|
280
|
+
// the promise this function hands back still means "the payload is
|
|
281
|
+
// decoded", which is what the router's scroll restoration, the
|
|
282
|
+
// Navigation API deferred and `<Link>`'s `isPending` are timed against.
|
|
283
|
+
//
|
|
284
|
+
// ...unless this navigation loses first, in which case it stops waiting
|
|
285
|
+
// on a stream that is no longer its business.
|
|
286
|
+
if (decodePromise) {
|
|
287
|
+
await settleOnDecodeOrDisplacement(decodePromise, owner);
|
|
288
|
+
}
|
|
289
|
+
if (owner.outcome !== null && owner.outcome !== 'committed') {
|
|
290
|
+
throw superseded();
|
|
291
|
+
}
|
|
292
|
+
} catch (error) {
|
|
293
|
+
settleCommit('failed');
|
|
294
|
+
throw error;
|
|
295
|
+
}
|
|
296
|
+
})();
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Wait for the payload to finish decoding, OR for this owner to be
|
|
301
|
+
* displaced — whichever happens first.
|
|
302
|
+
*
|
|
303
|
+
* A superseded navigation must stop waiting on its own stream. The stream is
|
|
304
|
+
* deliberately NOT aborted once its tree has been handed to React (the tree
|
|
305
|
+
* may be on screen with boundaries still feeding from it — see
|
|
306
|
+
* `RenderOwner.handedOff`), so there is nothing left to make `decodePromise`
|
|
307
|
+
* settle promptly. Awaiting it bare would keep the loser's
|
|
308
|
+
* `router.navigate()` promise pending for the rest of the stream — and
|
|
309
|
+
* forever if it stalls — which is what `<Link>`'s `isPending` is timed
|
|
310
|
+
* against, so the losing link would sit spinning while the winner loaded
|
|
311
|
+
* (codex on #1004).
|
|
312
|
+
*
|
|
313
|
+
* A decode *failure* still propagates: it is a real error for this
|
|
314
|
+
* navigation, and the caller's recovery is timed against it.
|
|
315
|
+
*/
|
|
316
|
+
function settleOnDecodeOrDisplacement(
|
|
317
|
+
decodePromise: Promise<void>,
|
|
318
|
+
owner: RenderOwner
|
|
319
|
+
): Promise<void> {
|
|
320
|
+
// Only bail early for displacement (superseded/failed), not for commit.
|
|
321
|
+
// A committed tree still needs to wait for its decode to finish — pending
|
|
322
|
+
// state and the Link indicator are timed against it.
|
|
323
|
+
if (owner.outcome !== null && owner.outcome !== 'committed') {
|
|
324
|
+
return Promise.resolve();
|
|
325
|
+
}
|
|
326
|
+
return Promise.race([decodePromise, owner.displaced]);
|
|
327
|
+
}
|
|
@@ -19,7 +19,9 @@ import {
|
|
|
19
19
|
type unstable_AdapterInterface as AdapterInterface,
|
|
20
20
|
type unstable_AdapterOptions as AdapterOptions,
|
|
21
21
|
} from 'nuqs/adapters/custom';
|
|
22
|
-
import { getRouter } from './router-ref.
|
|
22
|
+
import { getRouter } from './router-ref.ts';
|
|
23
|
+
import { getNavigationApi } from './navigation-api.ts';
|
|
24
|
+
import { locationSearch } from './location-search.ts';
|
|
23
25
|
|
|
24
26
|
// ─── Adapter Hook ─────────────────────────────────────────────────
|
|
25
27
|
|
|
@@ -31,15 +33,13 @@ import { getRouter } from './router-ref.js';
|
|
|
31
33
|
* (used by nuqs for selective re-rendering)
|
|
32
34
|
*/
|
|
33
35
|
function useTimberAdapter(_watchKeys: string[]): AdapterInterface {
|
|
34
|
-
const [searchParams, setSearchParams] = useState(
|
|
35
|
-
() => new URLSearchParams(window.location.search)
|
|
36
|
-
);
|
|
36
|
+
const [searchParams, setSearchParams] = useState(() => new URLSearchParams(locationSearch()));
|
|
37
37
|
|
|
38
38
|
// Sync search params on popstate (back/forward) and after
|
|
39
39
|
// timber navigations that change the URL.
|
|
40
40
|
useEffect(() => {
|
|
41
41
|
function sync() {
|
|
42
|
-
setSearchParams(new URLSearchParams(
|
|
42
|
+
setSearchParams(new URLSearchParams(locationSearch()));
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
window.addEventListener('popstate', sync);
|
|
@@ -59,9 +59,21 @@ function useTimberAdapter(_watchKeys: string[]): AdapterInterface {
|
|
|
59
59
|
|
|
60
60
|
if (options.shallow) {
|
|
61
61
|
// Shallow: update URL only, no server roundtrip.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
// When Navigation API is available, use navigation.navigate() with
|
|
63
|
+
// info: { shallow: true } so the navigate event handler knows to
|
|
64
|
+
// skip interception. Without this, the navigate event fired by
|
|
65
|
+
// history.pushState/replaceState would trigger a full RSC fetch.
|
|
66
|
+
const nav = getNavigationApi();
|
|
67
|
+
if (nav) {
|
|
68
|
+
nav.navigate(url.toString(), {
|
|
69
|
+
history: options.history === 'push' ? 'push' : 'replace',
|
|
70
|
+
info: { shallow: true },
|
|
71
|
+
});
|
|
72
|
+
} else {
|
|
73
|
+
const method =
|
|
74
|
+
options.history === 'push' ? window.history.pushState : window.history.replaceState;
|
|
75
|
+
method.call(window.history, window.history.state, '', url.toString());
|
|
76
|
+
}
|
|
65
77
|
|
|
66
78
|
// Update local state to reflect the new URL
|
|
67
79
|
setSearchParams(new URLSearchParams(url.search));
|
|
@@ -84,7 +96,7 @@ function useTimberAdapter(_watchKeys: string[]): AdapterInterface {
|
|
|
84
96
|
return {
|
|
85
97
|
searchParams,
|
|
86
98
|
updateUrl,
|
|
87
|
-
getSearchParamsSnapshot: () => new URLSearchParams(
|
|
99
|
+
getSearchParamsSnapshot: () => new URLSearchParams(locationSearch()),
|
|
88
100
|
};
|
|
89
101
|
}
|
|
90
102
|
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Segment params context — the one channel params use to reach the browser.
|
|
3
|
+
*
|
|
4
|
+
* Params ride the RSC payload's root row as a sibling of the tree
|
|
5
|
+
* (`{ tree, params, slotParams }`), rather than in four side channels that
|
|
6
|
+
* raced to seed them: a response header, an inline script, and two build-time
|
|
7
|
+
* manifest fields all previously carried the same record, each with its own
|
|
8
|
+
* `JSON.stringify` (TIM-1294).
|
|
9
|
+
*
|
|
10
|
+
* Riding the payload is what makes them *typed*. `defineSchema` takes any
|
|
11
|
+
* `Codec<T>`, so a coerced param is whatever the codec returned — a `Date`, a
|
|
12
|
+
* `bigint` — and `JSON.stringify` either flattened it to a string or threw
|
|
13
|
+
* mid-response. React Flight carries those values natively, so the client
|
|
14
|
+
* reads the value the server produced instead of a lossy copy of it. See
|
|
15
|
+
* design/41-global-params.md §"Transport".
|
|
16
|
+
*
|
|
17
|
+
* **The client owns the provider.** There is exactly one `ParamsProvider` in
|
|
18
|
+
* the browser's tree, rendered by `PayloadRoot` above the point where a
|
|
19
|
+
* partial navigation splices the new payload into the retained tree. It has to
|
|
20
|
+
* be there and it has to be alone: a provider *inside* the payload lands below
|
|
21
|
+
* the retained region, whose own root is the departing route's provider, so
|
|
22
|
+
* every reader in a skipped layout resolves to the departing record and no
|
|
23
|
+
* amount of wrapping above it helps (TIM-1297).
|
|
24
|
+
*
|
|
25
|
+
* Ordering still holds without a bootstrap contract, for the same reason it
|
|
26
|
+
* did when the provider was in the tree: a provider renders before its own
|
|
27
|
+
* descendants by construction, so `useSegmentParams()` is correct during
|
|
28
|
+
* hydration without anything having to run before `hydrateRoot()`.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
'use client';
|
|
32
|
+
|
|
33
|
+
import React, { createElement, useMemo, use } from 'react';
|
|
34
|
+
import { toNullProtoRecord, type CoercedParams } from '../shared/param-value.ts';
|
|
35
|
+
import { readPublishedParams, type PublishedParams } from '../shared/payload-root.ts';
|
|
36
|
+
import type { SlotParamsRecord } from '../shared/slot-params.ts';
|
|
37
|
+
|
|
38
|
+
// ─── Types ───────────────────────────────────────────────────────
|
|
39
|
+
|
|
40
|
+
export type ParamsContextValue = PublishedParams;
|
|
41
|
+
|
|
42
|
+
// ─── Context ─────────────────────────────────────────────────────
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* SINGLETON GUARANTEE: globalThis + `Symbol.for`, the same pattern as
|
|
46
|
+
* `NavigationContext` and `SegmentUpdateContext`.
|
|
47
|
+
*
|
|
48
|
+
* The RSC client bundler can duplicate a module across chunks, and with ESM
|
|
49
|
+
* output each chunk gets its own module scope — so a bare `createContext` at
|
|
50
|
+
* module level yields one context per chunk. This module is now reached from
|
|
51
|
+
* *both* graphs: `PayloadRoot` is imported by the browser entry, while
|
|
52
|
+
* `useParamsContext()` arrives through the client-reference graph with the
|
|
53
|
+
* app's own components. A duplicate would put the provider on instance A and
|
|
54
|
+
* every reader on instance B, so `useContext` returns `null` and every
|
|
55
|
+
* `useSegmentParams()` call throws the outside-the-timber-app-tree error
|
|
56
|
+
* even though the provider is mounted (the module-snapshot fallback it once
|
|
57
|
+
* silently landed on was deleted in TIM-1425).
|
|
58
|
+
*
|
|
59
|
+
* This module was the one client context without the guard — harmless while
|
|
60
|
+
* the provider travelled inside the payload, in the same graph as its readers,
|
|
61
|
+
* and load-bearing the moment the client started rendering it (TIM-1297).
|
|
62
|
+
*
|
|
63
|
+
* The React APIs are reached through the namespace rather than named imports,
|
|
64
|
+
* for the same reason `segment-update-context.ts` and `navigation-context.ts`
|
|
65
|
+
* do it: React's `react-server` export provides neither `createContext` nor
|
|
66
|
+
* `useContext`, and a *named* ESM import of a missing export fails at module
|
|
67
|
+
* instantiation — before any feature check could run. This module is reachable
|
|
68
|
+
* from every entry a Server Component imports, so the named form crashed
|
|
69
|
+
* those entries outright (codex, PR #992; originally reproduced against
|
|
70
|
+
* `@timber-js/app/segment-params`, an entry point since deleted by TIM-1342 —
|
|
71
|
+
* the hazard is unchanged for the entries that remain).
|
|
72
|
+
*
|
|
73
|
+
* See design/19-client-navigation.md §"Singleton Guarantee via globalThis"
|
|
74
|
+
*/
|
|
75
|
+
const PARAMS_CTX_KEY = Symbol.for('__timber_params_ctx');
|
|
76
|
+
|
|
77
|
+
function getOrCreateContext(): React.Context<ParamsContextValue | null> {
|
|
78
|
+
const store = globalThis as Record<symbol, unknown>;
|
|
79
|
+
const existing = store[PARAMS_CTX_KEY] as React.Context<ParamsContextValue | null> | undefined;
|
|
80
|
+
if (existing !== undefined) return existing;
|
|
81
|
+
if (typeof React.createContext !== 'function') {
|
|
82
|
+
// RSC environment — no contexts here. Nothing in this module runs on that
|
|
83
|
+
// side; it only has to import cleanly.
|
|
84
|
+
return undefined as unknown as React.Context<ParamsContextValue | null>;
|
|
85
|
+
}
|
|
86
|
+
const ctx = React.createContext<ParamsContextValue | null>(null);
|
|
87
|
+
store[PARAMS_CTX_KEY] = ctx;
|
|
88
|
+
return ctx;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const ParamsContext = getOrCreateContext();
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Read the params provided by the tree. Returns null only when no provider
|
|
95
|
+
* is above the caller — a component rendered outside a timber route. During
|
|
96
|
+
* SSR the wrapper chain mounts `PayloadRoot` too (TIM-1424), so both sides
|
|
97
|
+
* resolve through this context.
|
|
98
|
+
*/
|
|
99
|
+
export function useParamsContext(): ParamsContextValue | null {
|
|
100
|
+
return React.useContext(ParamsContext);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// ─── Provider ────────────────────────────────────────────────────
|
|
104
|
+
|
|
105
|
+
interface ParamsProviderProps {
|
|
106
|
+
params: CoercedParams;
|
|
107
|
+
slotParams: SlotParamsRecord | null;
|
|
108
|
+
children?: React.ReactNode;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Provides the current navigation's params to everything below it.
|
|
113
|
+
*
|
|
114
|
+
* Rendered only by `PayloadRoot`. Not exported: a second provider anywhere in
|
|
115
|
+
* the tree would shadow this one for the region below it, which is precisely
|
|
116
|
+
* the defect TIM-1297 fixed.
|
|
117
|
+
*
|
|
118
|
+
* This used to also write a module-level snapshot during render, as the
|
|
119
|
+
* fallback for `useSegmentParams()` called outside a component. That tier is
|
|
120
|
+
* gone (TIM-1425) — the provider is unconditional on every render path,
|
|
121
|
+
* browser and SSR alike, so the hook reads context or throws. Removing the
|
|
122
|
+
* write also removes render-phase shared mutation from the SSR environment,
|
|
123
|
+
* where concurrent requests rendered through this component.
|
|
124
|
+
*/
|
|
125
|
+
function ParamsProvider({ params, slotParams, children }: ParamsProviderProps) {
|
|
126
|
+
// Restore the null prototype the wire could not carry. Flight rejects a
|
|
127
|
+
// null-prototype object, so `withPublishedParams` flattens the records;
|
|
128
|
+
// rebuilding them here is what keeps `params.constructor` returning
|
|
129
|
+
// `undefined` instead of a function for a param the route does not define
|
|
130
|
+
// (design/13-security.md #36c). Memoized on the props so a re-render with
|
|
131
|
+
// the same records does not rebuild — the identity of what the hook returns
|
|
132
|
+
// is load-bearing for `useEffect` dependencies (TIM-1285).
|
|
133
|
+
const value = useMemo(
|
|
134
|
+
() => ({
|
|
135
|
+
params: toNullProtoRecord(params),
|
|
136
|
+
slotParams: toNullProtoRecord(slotParams),
|
|
137
|
+
}),
|
|
138
|
+
[params, slotParams]
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
return createElement(ParamsContext.Provider, { value }, children);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// ─── Payload root ────────────────────────────────────────────────
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* The client's root: publishes a payload's params over the tree being shown.
|
|
148
|
+
*
|
|
149
|
+
* Rendered at the same position in the wrapper chain on **every** render path
|
|
150
|
+
* — hydration, full navigation, partial navigation, popstate replay, shallow
|
|
151
|
+
* search sync, and revalidation from a server action. Being unconditional is
|
|
152
|
+
* load-bearing twice over: an element type that appears on one render and not
|
|
153
|
+
* the next remounts everything below it, destroying exactly the layout state a
|
|
154
|
+
* partial navigation exists to preserve; and a reader in a skipped layout has
|
|
155
|
+
* to have *some* provider above it on every path or it falls back to the
|
|
156
|
+
* module-level snapshot.
|
|
157
|
+
*
|
|
158
|
+
* `children` is the tree to display, which is not always `source`'s tree:
|
|
159
|
+
*
|
|
160
|
+
* - Full navigation, hydration, replay — `source` is the payload being shown,
|
|
161
|
+
* and `children` is its own tree.
|
|
162
|
+
* - **Partial navigation** — `children` is the *retained* tree and `source` is
|
|
163
|
+
* the *incoming* payload. This is the case the whole design exists for: the
|
|
164
|
+
* retained tree is not re-rendered, so the destination's params can only
|
|
165
|
+
* reach it from above, and this provider is above it.
|
|
166
|
+
*
|
|
167
|
+
* `source` may be a thenable, in which case this suspends on the payload's
|
|
168
|
+
* root row. That happens on the hydration path only, where the payload
|
|
169
|
+
* promise was going to be rendered at this position anyway. Every other path
|
|
170
|
+
* resolves the row in the router — inside the navigation transition — and
|
|
171
|
+
* hands over a settled value, so a decode rejection surfaces where React
|
|
172
|
+
* renders the tree and is caught by the error boundary *around* it, rather
|
|
173
|
+
* than here, above every boundary the app has.
|
|
174
|
+
*/
|
|
175
|
+
export function PayloadRoot({ source, children }: { source: unknown; children?: React.ReactNode }) {
|
|
176
|
+
const resolved = isThenable(source) ? use(source) : source;
|
|
177
|
+
const { params, slotParams } = readPublishedParams(resolved);
|
|
178
|
+
return createElement(ParamsProvider, { params, slotParams }, children);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
function isThenable(value: unknown): value is Promise<unknown> {
|
|
182
|
+
return (
|
|
183
|
+
typeof value === 'object' &&
|
|
184
|
+
value !== null &&
|
|
185
|
+
typeof (value as { then?: unknown }).then === 'function'
|
|
186
|
+
);
|
|
187
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React root host — the one React root the router renders the page through.
|
|
3
|
+
*
|
|
4
|
+
* The router owns the displayed tree and drives React: every render is
|
|
5
|
+
* `startTransition(() => root.render(<NavigationRoot rendered={…} />))`,
|
|
6
|
+
* synchronous, with a fresh `rendered` object whose `publish` NavigationRoot
|
|
7
|
+
* runs when React commits that tree (TIM-1301, TIM-1431).
|
|
8
|
+
*
|
|
9
|
+
* The root itself is created lazily. On the RSC-payload path `hydrate()`
|
|
10
|
+
* creates it by hydrating the server HTML. On the JS-only path (no inlined
|
|
11
|
+
* payload, TIM-600) nothing may create it at bootstrap — `createRoot(document)`
|
|
12
|
+
* followed by a render would take React ownership of the document and blank
|
|
13
|
+
* the SSR HTML — so the first `render()` (the first navigation, or a
|
|
14
|
+
* revalidation after a server action) creates it with the tree it renders.
|
|
15
|
+
* That first render carries no placeholder, and a fresh root with nothing
|
|
16
|
+
* committed leaves the container alone until it can commit, so the SSR HTML
|
|
17
|
+
* stays until the destination is ready (TIM-580).
|
|
18
|
+
*
|
|
19
|
+
* `container` is `document` in production; tests pass an element.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
import { createElement, startTransition, type ReactNode } from 'react';
|
|
23
|
+
import { createRoot, hydrateRoot, type HydrationOptions, type Root } from 'react-dom/client';
|
|
24
|
+
import { NavigationRoot, type NavigationRender, type RenderedTree } from './navigation-root.tsx';
|
|
25
|
+
import type { TopLoaderConfig } from './top-loader.tsx';
|
|
26
|
+
|
|
27
|
+
export interface ReactRootHost {
|
|
28
|
+
/**
|
|
29
|
+
* Hydrate the server HTML with `element` as the initial tree. Nothing is
|
|
30
|
+
* published on that commit — the address bar, pathname and history already
|
|
31
|
+
* describe the page the server sent.
|
|
32
|
+
*/
|
|
33
|
+
hydrate(element: ReactNode, options?: HydrationOptions): void;
|
|
34
|
+
/**
|
|
35
|
+
* Hand a tree to React in a synchronous transition; `publish` runs when
|
|
36
|
+
* React commits it. Creates the root on first use.
|
|
37
|
+
*/
|
|
38
|
+
render: NavigationRender;
|
|
39
|
+
/** Tear the root down (tests). */
|
|
40
|
+
unmount(): void;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function createReactRoot(options: {
|
|
44
|
+
container: Document | Element;
|
|
45
|
+
topLoaderConfig?: TopLoaderConfig;
|
|
46
|
+
}): ReactRootHost {
|
|
47
|
+
const { container, topLoaderConfig } = options;
|
|
48
|
+
let root: Root | null = null;
|
|
49
|
+
|
|
50
|
+
const rootElement = (rendered: RenderedTree) =>
|
|
51
|
+
createElement(NavigationRoot, { rendered, topLoaderConfig });
|
|
52
|
+
|
|
53
|
+
return {
|
|
54
|
+
hydrate(element, hydrationOptions) {
|
|
55
|
+
root = hydrateRoot(container, rootElement({ element, publish: null }), hydrationOptions);
|
|
56
|
+
},
|
|
57
|
+
render(element, publish) {
|
|
58
|
+
const target = (root ??= createRoot(container));
|
|
59
|
+
// Synchronous, and returns nothing: an async callback would drop the
|
|
60
|
+
// transition scope at its first await, and a returned thenable would
|
|
61
|
+
// open an action scope that holds the commit until it settles
|
|
62
|
+
// (TIM-1306, TIM-1307 — see client/navigation-transition.ts).
|
|
63
|
+
startTransition(() => {
|
|
64
|
+
target.render(rootElement({ element, publish }));
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
unmount() {
|
|
68
|
+
root?.unmount();
|
|
69
|
+
root = null;
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|