@timber-js/app 0.2.0-alpha.20 → 0.2.0-alpha.201
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/bin/timber.mjs +15 -1
- package/dist/_chunks/actions-HUdJADAD.js +345 -0
- package/dist/_chunks/actions-HUdJADAD.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-DWppEdLB.js +86 -0
- package/dist/_chunks/build-manifest-DWppEdLB.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-CAPbZTga.js +1149 -0
- package/dist/_chunks/cache-api-CAPbZTga.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-CBNA0Ozj.js +412 -0
- package/dist/_chunks/chains-CBNA0Ozj.js.map +1 -0
- package/dist/_chunks/cli-check-BzMGuIH6.js +293 -0
- package/dist/_chunks/cli-check-BzMGuIH6.js.map +1 -0
- package/dist/_chunks/cli-schema-sync-DnXqcIIj.js +299 -0
- package/dist/_chunks/cli-schema-sync-DnXqcIIj.js.map +1 -0
- package/dist/_chunks/cloudflare-DxX1SU0g.js +1290 -0
- package/dist/_chunks/cloudflare-DxX1SU0g.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-DHOFvX5s.js +803 -0
- package/dist/_chunks/convention-lint-DHOFvX5s.js.map +1 -0
- package/dist/_chunks/csp-nonce-hOGniaG4.js +227 -0
- package/dist/_chunks/csp-nonce-hOGniaG4.js.map +1 -0
- package/dist/_chunks/dev-server-DioP7tkQ.js +2288 -0
- package/dist/_chunks/dev-server-DioP7tkQ.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-BQKxl6EX.js +1044 -0
- package/dist/_chunks/error-boundary-BQKxl6EX.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-Cv3njEH8.js +304 -0
- package/dist/_chunks/graph-cache-Cv3njEH8.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-VjHFF5EV.js +150 -0
- package/dist/_chunks/live-graph-VjHFF5EV.js.map +1 -0
- package/dist/_chunks/logger-DqJ2VoAY.js +1476 -0
- package/dist/_chunks/logger-DqJ2VoAY.js.map +1 -0
- package/dist/_chunks/{metadata-routes-Cjmvi3rQ.js → metadata-routes-DSDjM_hJ.js} +71 -27
- package/dist/_chunks/metadata-routes-DSDjM_hJ.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-lEbz4pQE.js +101 -0
- package/dist/_chunks/poison-scan-lEbz4pQE.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-B_tnqFcF.js +1671 -0
- package/dist/_chunks/scanner-B_tnqFcF.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-D5hu1hz4.js +62 -0
- package/dist/_chunks/segment-keys-D5hu1hz4.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-MjmprTmO.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/tree-match-CdbvYTBz.js +122 -0
- package/dist/_chunks/tree-match-CdbvYTBz.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-Cm3PC5JT.js +144 -0
- package/dist/_chunks/walkers-Cm3PC5JT.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 +66 -37
- package/dist/adapters/nitro.d.ts.map +1 -1
- package/dist/adapters/nitro.js +457 -300
- 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 +5 -0
- package/dist/cache/fast-hash.d.ts.map +1 -1
- 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 -326
- 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 +81 -9
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +216 -51
- 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 +63 -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 +55 -7
- 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.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/debug-channel.d.ts +55 -0
- package/dist/dev-tools/debug-channel.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 +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 +5 -5
- 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 -181
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8462 -14279
- 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 +47 -10
- 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 +24 -1
- package/dist/plugins/dev-server.d.ts.map +1 -1
- package/dist/plugins/entries.d.ts +28 -4
- package/dist/plugins/entries.d.ts.map +1 -1
- package/dist/plugins/fonts.d.ts +16 -73
- 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 +18 -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/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 +251 -0
- package/dist/server/deny-boundary.d.ts.map +1 -0
- package/dist/server/deny-renderer.d.ts +20 -10
- 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 +94 -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 +195 -2922
- 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 +3859 -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 +161 -20
- 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 +131 -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 +34 -13
- package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/helpers.d.ts +47 -51
- 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 +52 -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 +36 -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 +38 -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/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 +46 -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/version-skew.d.ts +61 -0
- package/dist/server/version-skew.d.ts.map +1 -0
- 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 +187 -0
- package/docs/learn/13-deploying.mdx +287 -0
- package/llms.txt +55 -0
- package/package.json +116 -30
- 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 +249 -426
- 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 +5 -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 +165 -40
- 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 +323 -62
- package/src/client/browser-dev.ts +157 -2
- package/src/client/browser-entry/action-dispatch.ts +209 -0
- package/src/client/browser-entry/action-queue.ts +152 -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 +222 -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 +289 -39
- 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 +439 -151
- 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 +435 -421
- package/src/client/rsc-fetch.ts +512 -73
- package/src/client/segment-cache.ts +327 -40
- package/src/client/segment-context.ts +7 -4
- 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 +13 -10
- 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/debug-channel.ts +151 -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 +1 -1
- 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 +12 -11
- 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 +482 -377
- 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 +259 -47
- 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 +418 -94
- package/src/plugins/entries.ts +141 -16
- package/src/plugins/fonts.ts +234 -659
- package/src/plugins/graph-endpoint.ts +532 -0
- package/src/plugins/mdx.ts +108 -35
- 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 +99 -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 +516 -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 +408 -223
- 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 +194 -56
- package/src/server/action-client.ts +122 -31
- 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/default-logger.ts +99 -0
- package/src/server/default-status-page.ts +88 -0
- package/src/server/deny-boundary.ts +515 -0
- package/src/server/deny-renderer.ts +211 -113
- 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 +157 -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 -255
- 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 -37
- 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 +333 -384
- 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 +240 -98
- 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 -334
- 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 -355
- 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 +341 -91
- package/src/server/rsc-entry/helpers.ts +180 -106
- package/src/server/rsc-entry/index.ts +371 -331
- package/src/server/rsc-entry/render-route.ts +315 -0
- package/src/server/rsc-entry/revalidate-renderer.ts +350 -0
- package/src/server/rsc-entry/rsc-payload.ts +209 -55
- package/src/server/rsc-entry/rsc-stream.ts +154 -26
- package/src/server/rsc-entry/ssr-bridge.ts +18 -5
- package/src/server/rsc-entry/ssr-renderer.ts +317 -60
- 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 +1 -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 +128 -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/version-skew.ts +104 -0
- package/src/server/waituntil-bridge.ts +1 -1
- 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-B7DbZ2hS.js +0 -41
- package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
- package/dist/_chunks/debug-B3Gypr3D.js +0 -108
- package/dist/_chunks/debug-B3Gypr3D.js.map +0 -1
- package/dist/_chunks/format-RyoGQL74.js +0 -164
- package/dist/_chunks/format-RyoGQL74.js.map +0 -1
- package/dist/_chunks/interception-BOoWmLUA.js +0 -676
- package/dist/_chunks/interception-BOoWmLUA.js.map +0 -1
- package/dist/_chunks/metadata-routes-Cjmvi3rQ.js.map +0 -1
- package/dist/_chunks/request-context-BQUC8PHn.js +0 -330
- package/dist/_chunks/request-context-BQUC8PHn.js.map +0 -1
- package/dist/_chunks/ssr-data-MjmprTmO.js.map +0 -1
- package/dist/_chunks/tracing-CemImE6h.js +0 -187
- package/dist/_chunks/tracing-CemImE6h.js.map +0 -1
- package/dist/_chunks/use-cookie-DX-l1_5E.js +0 -91
- package/dist/_chunks/use-cookie-DX-l1_5E.js.map +0 -1
- package/dist/_chunks/use-query-states-D5KaffOK.js +0 -109
- package/dist/_chunks/use-query-states-D5KaffOK.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 -103
- package/src/client/browser-entry.ts +0 -678
- package/src/client/head.ts +0 -61
- package/src/client/link-status-provider.tsx +0 -30
- package/src/client/segment-merger.ts +0 -339
- package/src/client/stale-reload.ts +0 -87
- package/src/client/transition-root.tsx +0 -166
- 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 -283
- 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
|
@@ -12,6 +12,14 @@
|
|
|
12
12
|
* references. The stream is then passed to the SSR entry (in a separate
|
|
13
13
|
* Vite environment) which decodes it and renders HTML.
|
|
14
14
|
*
|
|
15
|
+
* This file is intentionally orchestration-only (audited: TIM-968). It
|
|
16
|
+
* wires virtual modules, config, and one-time startup (cache handler,
|
|
17
|
+
* instrumentation, CDN purge, prebuilt payload source) into the pipeline
|
|
18
|
+
* and delegates all rendering work to siblings in this directory
|
|
19
|
+
* (render-route.ts, error-renderer.ts, deny-fallback.ts,
|
|
20
|
+
* revalidate-renderer.ts, wrap-action-dispatch.ts, ...). Don't add
|
|
21
|
+
* rendering or response-shaping logic here — extract it to a sibling.
|
|
22
|
+
*
|
|
15
23
|
* Design docs: 18-build-system.md §"Entry Files", 02-rendering-pipeline.md
|
|
16
24
|
*/
|
|
17
25
|
|
|
@@ -23,81 +31,76 @@ import config from 'virtual:timber-config';
|
|
|
23
31
|
import buildManifest from 'virtual:timber-build-manifest';
|
|
24
32
|
// @ts-expect-error — virtual module provided by timber-entries plugin
|
|
25
33
|
import loadUserInstrumentation from 'virtual:timber-instrumentation';
|
|
26
|
-
|
|
27
|
-
import
|
|
28
|
-
|
|
29
|
-
import
|
|
30
|
-
|
|
31
|
-
import
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
} from '
|
|
39
|
-
import
|
|
40
|
-
import {
|
|
41
|
-
import {
|
|
42
|
-
import {
|
|
43
|
-
import {
|
|
44
|
-
import {
|
|
45
|
-
import
|
|
46
|
-
import {
|
|
47
|
-
|
|
48
|
-
import {
|
|
49
|
-
import {
|
|
50
|
-
import {
|
|
51
|
-
import
|
|
52
|
-
import {
|
|
53
|
-
import {
|
|
54
|
-
|
|
55
|
-
import {
|
|
56
|
-
import {
|
|
57
|
-
import {
|
|
58
|
-
import {
|
|
59
|
-
import {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
escapeHtml,
|
|
63
|
-
isRscPayloadRequest,
|
|
64
|
-
} from './helpers.js';
|
|
65
|
-
import { parseClientStateTree } from '#/server/state-tree-diff.js';
|
|
66
|
-
import { buildRscPayloadResponse } from './rsc-payload.js';
|
|
67
|
-
import { renderRscStream } from './rsc-stream.js';
|
|
68
|
-
import { renderSsrResponse } from './ssr-renderer.js';
|
|
69
|
-
import { callSsr } from './ssr-bridge.js';
|
|
70
|
-
import { isDebug, isDevMode, setDebugFromConfig } from '#/server/debug.js';
|
|
34
|
+
// @ts-expect-error — virtual module provided by timber-entries plugin
|
|
35
|
+
import loadCacheHandler from 'virtual:timber-cache-handler';
|
|
36
|
+
// @ts-expect-error — virtual module provided by timber-entries plugin
|
|
37
|
+
import { loadCdnPurgeHandler } from 'virtual:timber-cache-handler';
|
|
38
|
+
// @ts-expect-error — virtual module provided by timber-routing plugin
|
|
39
|
+
import globalSchemaCodecs from 'virtual:timber-schema';
|
|
40
|
+
|
|
41
|
+
import { wrapPipelineWithActionDispatch, buildActionDispatcher } from './wrap-action-dispatch.ts';
|
|
42
|
+
import type { BodyLimitsConfig } from '../body-limits.ts';
|
|
43
|
+
import type { BuildManifest } from '../build-manifest.ts';
|
|
44
|
+
import { resolveLogMode } from '../../dev-tools/logger.ts';
|
|
45
|
+
import { sendEarlyHints103 } from '../early-hints-sender.ts';
|
|
46
|
+
import { collectEarlyHintHeaders } from '../early-hints.ts';
|
|
47
|
+
import { buildClientScripts } from '../html-injectors.ts';
|
|
48
|
+
import type { InterceptionContext, PipelineConfig, RouteMatch } from '../pipeline.ts';
|
|
49
|
+
import { createPipeline } from '../pipeline.ts';
|
|
50
|
+
import { coerceSegmentParams, setGlobalSchemaCodecs } from '../param-coercion.ts';
|
|
51
|
+
import { createMetadataRouteMatcher, createRouteMatcher } from '../route-matcher.ts';
|
|
52
|
+
import { createInterceptedRouteMatcher } from '../children-interception.ts';
|
|
53
|
+
import { initDevTracing } from '../tracing.ts';
|
|
54
|
+
import { createRevalidateRendererFactory } from './revalidate-renderer.ts';
|
|
55
|
+
|
|
56
|
+
import { renderFallbackError as renderFallback } from '../fallback-error.ts';
|
|
57
|
+
import { loadInstrumentation } from '../instrumentation.ts';
|
|
58
|
+
import { createDenyFallbackRenderer } from './deny-fallback.ts';
|
|
59
|
+
import { renderNoMatchPage } from './error-renderer.ts';
|
|
60
|
+
import { renderRoute } from './render-route.ts';
|
|
61
|
+
import { isDebug, isDevMode, setDebugFromConfig } from '../debug.ts';
|
|
62
|
+
import { setSourceMapCallback } from '../dev-source-map.ts';
|
|
63
|
+
import { requestContextAls } from '../als-registry.ts';
|
|
64
|
+
import { capturePrebuiltPayloads } from '../prebuilt-builder.ts';
|
|
65
|
+
import { setPrebuiltPayloadSource } from '../prebuilt/payload-source.ts';
|
|
66
|
+
import { setRscFunctions, setComponentRefreshTimeout } from '../prebuilt-runtime.ts';
|
|
67
|
+
import { setKeyDisciplineStrict } from '../prebuilt/key-discipline.ts';
|
|
68
|
+
import { createAutoSitemapHandler } from '../sitemap-handler.ts';
|
|
69
|
+
import { generateStaticSite } from '../static-generator.ts';
|
|
71
70
|
|
|
72
71
|
/**
|
|
73
72
|
* Resolve the Server-Timing mode from timber.config.ts.
|
|
74
73
|
*
|
|
75
74
|
* If the user set `serverTiming` explicitly, use that value.
|
|
76
|
-
* Otherwise
|
|
75
|
+
* Otherwise default to `'total'`.
|
|
77
76
|
*/
|
|
78
77
|
function resolveServerTimingMode(
|
|
79
78
|
config: Record<string, unknown>,
|
|
80
|
-
|
|
79
|
+
_isDev: boolean
|
|
81
80
|
): 'detailed' | 'total' | false {
|
|
82
81
|
const userValue = config.serverTiming as 'detailed' | 'total' | false | undefined;
|
|
83
82
|
if (userValue !== undefined) return userValue;
|
|
84
|
-
return
|
|
83
|
+
return 'total';
|
|
85
84
|
}
|
|
86
85
|
|
|
87
|
-
// Dev-only pipeline error handler, set by the dev server after import.
|
|
88
|
-
// In production this is always undefined — no overhead.
|
|
89
|
-
let _devPipelineErrorHandler: ((error: Error, phase: string) => void) | undefined;
|
|
90
|
-
|
|
91
86
|
/**
|
|
92
|
-
* Set the dev
|
|
87
|
+
* Set the dev source-map handler.
|
|
93
88
|
*
|
|
94
|
-
* Called by the dev server after importing this module to wire
|
|
95
|
-
*
|
|
89
|
+
* Called by the dev server after importing this module to wire Vite's
|
|
90
|
+
* module graph source-mapping into the error rendering pipeline. Errors
|
|
91
|
+
* rendered by renderErrorPage / renderFallbackError will have their
|
|
92
|
+
* stack traces rewritten to show original source positions.
|
|
93
|
+
*
|
|
94
|
+
* No-op in production.
|
|
96
95
|
*/
|
|
97
|
-
export function
|
|
98
|
-
|
|
96
|
+
export function setDevSourceMapHandler(handler: (error: Error) => void): void {
|
|
97
|
+
setSourceMapCallback(handler);
|
|
99
98
|
}
|
|
100
99
|
|
|
100
|
+
// Dev-only: debug components getter is stored per-request in ALS
|
|
101
|
+
// (RequestContextStore.debugComponentsGetter) to avoid cross-request
|
|
102
|
+
// race conditions. See TIM-557.
|
|
103
|
+
|
|
101
104
|
/**
|
|
102
105
|
* Create the RSC request handler from the route manifest.
|
|
103
106
|
*
|
|
@@ -105,21 +108,84 @@ export function setDevPipelineErrorHandler(handler: (error: Error, phase: string
|
|
|
105
108
|
* 103 Early Hints → middleware.ts → render (RSC → SSR → HTML).
|
|
106
109
|
*/
|
|
107
110
|
async function createRequestHandler(manifest: typeof routeManifest, runtimeConfig: typeof config) {
|
|
108
|
-
//
|
|
109
|
-
//
|
|
110
|
-
//
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
// Initialize cookie signing secrets from config (design/29-cookies.md §"Signed Cookies")
|
|
115
|
-
const cookieSecrets = (runtimeConfig as Record<string, unknown>).cookieSecrets as
|
|
116
|
-
| string[]
|
|
111
|
+
// Initialize deployment ID for version skew detection (TIM-446).
|
|
112
|
+
// The manifest init module sets globalThis.__TIMBER_DEPLOYMENT_ID__ at startup.
|
|
113
|
+
// In dev mode this is undefined — skew checks are skipped.
|
|
114
|
+
const deploymentId = (globalThis as Record<string, unknown>).__TIMBER_DEPLOYMENT_ID__ as
|
|
115
|
+
| string
|
|
117
116
|
| undefined;
|
|
118
|
-
if (
|
|
119
|
-
const {
|
|
120
|
-
|
|
117
|
+
if (deploymentId) {
|
|
118
|
+
const { setDeploymentId } = await import('../version-skew.ts');
|
|
119
|
+
setDeploymentId(deploymentId);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Wire the CDN purge handler so revalidateTag triggers CDN purge (TIM-1166).
|
|
123
|
+
const userCdnPurge = await loadCdnPurgeHandler();
|
|
124
|
+
if (userCdnPurge) {
|
|
125
|
+
const { setCdnPurgeHandler } = await import('../../cdn/purge-store.ts');
|
|
126
|
+
setCdnPurgeHandler(userCdnPurge as Parameters<typeof setCdnPurgeHandler>[0]);
|
|
127
|
+
} else if (typeof process !== 'undefined' && process.env?.TIMBER_RUNTIME === 'cloudflare') {
|
|
128
|
+
// Auto-wire Workers Cache purge on Cloudflare — no API token needed,
|
|
129
|
+
// available on all plans via ctx.cache.purge({ tags }) (TIM-1170).
|
|
130
|
+
const { WorkersCachePurge } = await import('../../cdn/workers-cache-purge.ts');
|
|
131
|
+
const { setCdnPurgeHandler } = await import('../../cdn/purge-store.ts');
|
|
132
|
+
setCdnPurgeHandler(new WorkersCachePurge());
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Wire the prebuilt payload source so cache.component wrappers can look
|
|
136
|
+
// up cached flight payloads at request time (TIM-1122). The source is
|
|
137
|
+
// platform-aware: Node/Nitro reads from disk; Cloudflare reads from
|
|
138
|
+
// static assets via globalThis.__TIMBER_PREBUILT_SOURCE__ (set by the
|
|
139
|
+
// generated _worker.js before this module loads).
|
|
140
|
+
// In dev mode there are no prebuilt artifacts — source stays null and
|
|
141
|
+
// all cache.component wrappers render dynamically.
|
|
142
|
+
if (!isDevMode()) {
|
|
143
|
+
const platformSource = (globalThis as Record<string, unknown>).__TIMBER_PREBUILT_SOURCE__ as
|
|
144
|
+
| import('../prebuilt/payload-source.ts').PrebuiltPayloadSource
|
|
145
|
+
| undefined;
|
|
146
|
+
if (platformSource) {
|
|
147
|
+
setPrebuiltPayloadSource(platformSource);
|
|
148
|
+
} else {
|
|
149
|
+
// Default: Node/fs-based source — prebuilt/ is alongside rsc/ in the
|
|
150
|
+
// adapter output directory, so resolve relative to this entry.
|
|
151
|
+
try {
|
|
152
|
+
const { readFile: fsReadFile } = await import('node:fs/promises');
|
|
153
|
+
const { join: pathJoin, dirname } = await import('node:path');
|
|
154
|
+
const { fileURLToPath } = await import('node:url');
|
|
155
|
+
const entryDir = dirname(fileURLToPath(import.meta.url));
|
|
156
|
+
const prebuiltDir = pathJoin(entryDir, '..', 'prebuilt');
|
|
157
|
+
setPrebuiltPayloadSource({
|
|
158
|
+
async loadManifest() {
|
|
159
|
+
try {
|
|
160
|
+
const data = await fsReadFile(pathJoin(prebuiltDir, 'manifest.json'), 'utf-8');
|
|
161
|
+
return JSON.parse(data);
|
|
162
|
+
} catch {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
async readPayload(file) {
|
|
167
|
+
try {
|
|
168
|
+
return await fsReadFile(pathJoin(prebuiltDir, file));
|
|
169
|
+
} catch {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
} catch {
|
|
175
|
+
// node:fs not available (e.g. edge runtimes without the global
|
|
176
|
+
// override) — source stays null, wrappers render dynamically.
|
|
177
|
+
}
|
|
178
|
+
}
|
|
121
179
|
}
|
|
122
180
|
|
|
181
|
+
// Wire RSC flight functions so prebuilt-runtime can revive cached payloads
|
|
182
|
+
// and capture re-renders without a dynamic import (TIM-1165).
|
|
183
|
+
const rscMod = await import('../../rsc-runtime/rsc.ts');
|
|
184
|
+
setRscFunctions({
|
|
185
|
+
createFromReadableStream: rscMod.createFromReadableStream,
|
|
186
|
+
renderToReadableStream: rscMod.renderToReadableStream,
|
|
187
|
+
});
|
|
188
|
+
|
|
123
189
|
const matchRoute = createRouteMatcher(manifest);
|
|
124
190
|
const matchMetadataRoute = createMetadataRouteMatcher(manifest);
|
|
125
191
|
|
|
@@ -131,9 +197,12 @@ async function createRequestHandler(manifest: typeof routeManifest, runtimeConfi
|
|
|
131
197
|
| { disabled: boolean; enableHMRInDev: boolean }
|
|
132
198
|
| undefined;
|
|
133
199
|
const clientJsDisabled = clientJsConfig?.disabled ?? false;
|
|
200
|
+
const clientSegmentCache =
|
|
201
|
+
((runtimeConfig as Record<string, unknown>).clientSegmentCache as boolean) ?? false;
|
|
134
202
|
const clientBootstrap = buildClientScripts({
|
|
135
203
|
...runtimeConfig,
|
|
136
204
|
clientJavascript: clientJsConfig ?? { disabled: false, enableHMRInDev: false },
|
|
205
|
+
devBrowserLogs: (runtimeConfig as Record<string, unknown>).devBrowserLogs as string | undefined,
|
|
137
206
|
buildManifest: buildManifest as BuildManifest,
|
|
138
207
|
});
|
|
139
208
|
|
|
@@ -144,6 +213,18 @@ async function createRequestHandler(manifest: typeof routeManifest, runtimeConfi
|
|
|
144
213
|
setDebugFromConfig(true);
|
|
145
214
|
}
|
|
146
215
|
|
|
216
|
+
// Wire the global sensitive-field stripping config so `createActionClient`
|
|
217
|
+
// instances in user code pick up `forms.stripSensitiveFields` from
|
|
218
|
+
// `timber.config.ts` without needing to plumb config through each action.
|
|
219
|
+
// See TIM-816 and design/08-forms-and-actions.md §"Validation errors".
|
|
220
|
+
const formsConfig = (runtimeConfig as Record<string, unknown>).forms as
|
|
221
|
+
| { stripSensitiveFields?: import('../sensitive-fields.ts').SensitiveFieldsOption }
|
|
222
|
+
| undefined;
|
|
223
|
+
if (formsConfig) {
|
|
224
|
+
const { setGlobalSensitiveFieldsConfig } = await import('../sensitive-fields.ts');
|
|
225
|
+
setGlobalSensitiveFieldsConfig(formsConfig.stripSensitiveFields);
|
|
226
|
+
}
|
|
227
|
+
|
|
147
228
|
// Two separate flags for two different security levels:
|
|
148
229
|
//
|
|
149
230
|
// isDev (isDevMode) — gates client-visible behavior: dev error pages with
|
|
@@ -167,15 +248,22 @@ async function createRequestHandler(manifest: typeof routeManifest, runtimeConfi
|
|
|
167
248
|
await initDevTracing({ mode: devLogMode, slowPhaseMs });
|
|
168
249
|
// Patch globalThis.fetch to create OTEL spans for fetch calls.
|
|
169
250
|
// Spans appear as children of the active component span in the dev log tree.
|
|
170
|
-
const { instrumentDevFetch } = await import('
|
|
251
|
+
const { instrumentDevFetch } = await import('../../dev-tools/instrumentation.ts');
|
|
171
252
|
instrumentDevFetch();
|
|
172
253
|
}
|
|
173
254
|
}
|
|
174
255
|
|
|
175
256
|
const typedBuildManifest = buildManifest as BuildManifest;
|
|
176
257
|
|
|
258
|
+
// The routing plugin emits `manifest.proxy = { load, filePath }` only when
|
|
259
|
+
// the app has an `app/proxy.ts`. Convert that to the pipeline's lazy variant
|
|
260
|
+
// so HMR re-imports per request; leave it undefined when there's no proxy.
|
|
261
|
+
const proxyConfig: PipelineConfig['proxy'] = manifest.proxy?.load
|
|
262
|
+
? { kind: 'lazy', loader: manifest.proxy.load }
|
|
263
|
+
: undefined;
|
|
264
|
+
|
|
177
265
|
const pipelineConfig: PipelineConfig = {
|
|
178
|
-
|
|
266
|
+
proxy: proxyConfig,
|
|
179
267
|
matchRoute,
|
|
180
268
|
matchMetadataRoute,
|
|
181
269
|
// 103 Early Hints — fires after route match, before middleware.
|
|
@@ -183,11 +271,7 @@ async function createRequestHandler(manifest: typeof routeManifest, runtimeConfi
|
|
|
183
271
|
// so the browser starts fetching critical resources while the server renders.
|
|
184
272
|
// In dev mode the manifest is empty — no hints are sent.
|
|
185
273
|
earlyHints: (match: RouteMatch, _req: Request, responseHeaders: Headers) => {
|
|
186
|
-
const
|
|
187
|
-
layout?: { filePath: string };
|
|
188
|
-
page?: { filePath: string };
|
|
189
|
-
}>;
|
|
190
|
-
const headers = collectEarlyHintHeaders(segments, typedBuildManifest, {
|
|
274
|
+
const headers = collectEarlyHintHeaders(match.segments, typedBuildManifest, {
|
|
191
275
|
skipJs: clientJsDisabled,
|
|
192
276
|
});
|
|
193
277
|
for (const h of headers) {
|
|
@@ -208,33 +292,139 @@ async function createRequestHandler(manifest: typeof routeManifest, runtimeConfi
|
|
|
208
292
|
req,
|
|
209
293
|
match,
|
|
210
294
|
responseHeaders,
|
|
211
|
-
|
|
212
|
-
|
|
295
|
+
{
|
|
296
|
+
clientBootstrap,
|
|
297
|
+
clientJsDisabled,
|
|
298
|
+
clientSegmentCache,
|
|
299
|
+
rootSegment: manifest.root,
|
|
300
|
+
buildManifest: typedBuildManifest,
|
|
301
|
+
globalError: manifest.globalError,
|
|
302
|
+
devDebugRegistry: pipelineConfig.devDebugRegistry,
|
|
303
|
+
},
|
|
213
304
|
interception
|
|
214
305
|
);
|
|
215
306
|
},
|
|
216
307
|
renderNoMatch: async (req: Request, responseHeaders: Headers) => {
|
|
217
|
-
|
|
308
|
+
// In dev mode, when the app authored no 404 page, substitute a helpful
|
|
309
|
+
// page listing available routes and suggesting similar paths in place
|
|
310
|
+
// of the framework default. Only for GET requests that accept HTML —
|
|
311
|
+
// HEAD/API/RSC clients must not receive an HTML body (TIM-793).
|
|
312
|
+
//
|
|
313
|
+
// This is passed *into* the chain rather than applied to its result:
|
|
314
|
+
// the old version detected "no user-defined 404.tsx" by testing the
|
|
315
|
+
// response for an empty body, which stopped being true once the chain
|
|
316
|
+
// grew a real terminal (TIM-1258).
|
|
317
|
+
const acceptsHtml = (req.headers.get('accept') ?? '').includes('text/html');
|
|
318
|
+
const wantsDev404 = isDev && req.method === 'GET' && acceptsHtml;
|
|
319
|
+
|
|
320
|
+
// The dev page is loaded up front: the chain's terminal is synchronous,
|
|
321
|
+
// and dev-tools must stay out of the production bundle (dynamic import).
|
|
322
|
+
const devPage = wantsDev404
|
|
323
|
+
? await import('../../dev-tools/404-page.ts').catch(() => null)
|
|
324
|
+
: null;
|
|
325
|
+
|
|
326
|
+
const defaultPage = devPage
|
|
327
|
+
? (_status: number, headers: Headers) => {
|
|
328
|
+
const routes = devPage.collectRoutes(manifest.root);
|
|
329
|
+
const pathname = new URL(req.url).pathname;
|
|
330
|
+
// devHmrOptions is set by the dev server after this module is
|
|
331
|
+
// imported (read at request time, not closure-capture time).
|
|
332
|
+
const html = devPage.generateDev404Page(pathname, routes, pipelineConfig.devHmrOptions);
|
|
333
|
+
return new Response(html, {
|
|
334
|
+
status: 404,
|
|
335
|
+
headers: {
|
|
336
|
+
...Object.fromEntries(headers.entries()),
|
|
337
|
+
'content-type': 'text/html; charset=utf-8',
|
|
338
|
+
},
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
: undefined;
|
|
342
|
+
|
|
343
|
+
return renderNoMatchPage(req, manifest.root, responseHeaders, clientBootstrap, defaultPage);
|
|
218
344
|
},
|
|
219
345
|
interceptionRewrites: manifest.interceptionRewrites,
|
|
346
|
+
matchInterceptedRoute: createInterceptedRouteMatcher(manifest.root),
|
|
220
347
|
// Slow request threshold from timber.config.ts. Default 3000ms, 0 to disable.
|
|
221
348
|
// See design/17-logging.md §"slowRequestMs"
|
|
222
349
|
slowRequestMs: (runtimeConfig as Record<string, unknown>).slowRequestMs as number | undefined,
|
|
223
350
|
serverTiming: resolveServerTimingMode(runtimeConfig, isDev),
|
|
224
351
|
onPipelineError: isDev
|
|
225
352
|
? (error: Error, phase: string) => {
|
|
226
|
-
if (
|
|
353
|
+
if (pipelineConfig.devPipelineErrorHandler) {
|
|
354
|
+
// For render-phase errors, include RSC debug component data
|
|
355
|
+
// from the Flight debug channel (if available from the current request).
|
|
356
|
+
const store = requestContextAls.getStore();
|
|
357
|
+
const debugComponents =
|
|
358
|
+
phase === 'render' && store?.debugComponentsGetter
|
|
359
|
+
? store.debugComponentsGetter()
|
|
360
|
+
: undefined;
|
|
361
|
+
pipelineConfig.devPipelineErrorHandler(error, phase, debugComponents);
|
|
362
|
+
}
|
|
227
363
|
}
|
|
228
364
|
: undefined,
|
|
365
|
+
|
|
229
366
|
renderFallbackError: (error, req, responseHeaders) =>
|
|
230
|
-
renderFallback(
|
|
367
|
+
renderFallback(
|
|
368
|
+
error,
|
|
369
|
+
req,
|
|
370
|
+
responseHeaders,
|
|
371
|
+
isDev,
|
|
372
|
+
manifest.root,
|
|
373
|
+
clientBootstrap,
|
|
374
|
+
manifest.globalError,
|
|
375
|
+
// Project root for dev error page frame classification.
|
|
376
|
+
// Not in runtimeConfig (TIM-787: leaked to client bundles).
|
|
377
|
+
// manifest.viteRoot is the resolved Vite root string — correct even
|
|
378
|
+
// when CWD differs from project root (e.g., monorepo custom root)
|
|
379
|
+
// (TIM-807). Passing manifest.root (segment tree object) here would
|
|
380
|
+
// stringify to "[object Object]" and misclassify app frames as
|
|
381
|
+
// internal, dropping source locations from the dev error page (TIM-808).
|
|
382
|
+
isDev ? manifest.viteRoot : undefined,
|
|
383
|
+
// HMR options for the dev error page's auto-reload WebSocket —
|
|
384
|
+
// set by the dev server after import, read at request time.
|
|
385
|
+
isDev ? pipelineConfig.devHmrOptions : undefined
|
|
386
|
+
),
|
|
387
|
+
// Deny fallback — renders the deny page (403.tsx, 404.tsx, etc.) for
|
|
388
|
+
// DenySignals that escape from middleware or the render phase.
|
|
389
|
+
// See deny-fallback.ts, design/04-authorization.md, design/10-error-handling.md.
|
|
390
|
+
renderDenyFallback: createDenyFallbackRenderer({
|
|
391
|
+
rootSegment: manifest.root,
|
|
392
|
+
clientBootstrap,
|
|
393
|
+
}),
|
|
394
|
+
// Auto-generated sitemap handler — enabled when sitemap.enabled is true
|
|
395
|
+
// and no user-authored sitemap exists at the app root.
|
|
396
|
+
// See design/16-metadata.md §"Auto-generated Sitemap"
|
|
397
|
+
autoSitemapHandler: createAutoSitemapHandler(manifest.root, runtimeConfig),
|
|
398
|
+
|
|
399
|
+
// Server action dispatch — runs after proxy.ts, before route matching
|
|
400
|
+
// (TIM-1213). Moved into the pipeline so proxy.ts runs on action POSTs,
|
|
401
|
+
// matching the design doc: "proxy.ts runs on every request, no exclusions."
|
|
402
|
+
// Per-segment `middleware.ts` does NOT run on action POSTs (TIM-1134).
|
|
403
|
+
dispatchAction: buildActionDispatcher({
|
|
404
|
+
csrfConfig: {
|
|
405
|
+
csrf: runtimeConfig.csrf,
|
|
406
|
+
allowedOrigins: (runtimeConfig as Record<string, unknown>).allowedOrigins as
|
|
407
|
+
| string[]
|
|
408
|
+
| undefined,
|
|
409
|
+
},
|
|
410
|
+
bodyLimits: (runtimeConfig as Record<string, unknown>).limits as BodyLimitsConfig['limits'],
|
|
411
|
+
sensitiveFields: formsConfig?.stripSensitiveFields,
|
|
412
|
+
matchRoute,
|
|
413
|
+
buildRevalidateRenderer: createRevalidateRendererFactory({
|
|
414
|
+
matchRoute,
|
|
415
|
+
coerceSegmentParams,
|
|
416
|
+
buildManifest: buildManifest as BuildManifest,
|
|
417
|
+
}),
|
|
418
|
+
}),
|
|
231
419
|
};
|
|
232
420
|
|
|
233
421
|
const pipeline = createPipeline(pipelineConfig);
|
|
234
422
|
|
|
235
|
-
// Wrap the pipeline to
|
|
236
|
-
//
|
|
237
|
-
//
|
|
423
|
+
// Wrap the pipeline to enforce CSRF at the request boundary.
|
|
424
|
+
// CSRF validation lives in the wrapper (not inside the pipeline) so it
|
|
425
|
+
// runs before proxy.ts and covers every unsafe-method request. Server
|
|
426
|
+
// action dispatch has moved into the pipeline (TIM-1213) so proxy.ts
|
|
427
|
+
// runs on action POSTs. See LOCAL-773.
|
|
238
428
|
const csrfConfig = {
|
|
239
429
|
csrf: runtimeConfig.csrf,
|
|
240
430
|
allowedOrigins: (runtimeConfig as Record<string, unknown>).allowedOrigins as
|
|
@@ -242,268 +432,118 @@ async function createRequestHandler(manifest: typeof routeManifest, runtimeConfi
|
|
|
242
432
|
| undefined,
|
|
243
433
|
};
|
|
244
434
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
csrf: csrfConfig,
|
|
249
|
-
bodyLimits: {
|
|
250
|
-
limits: (runtimeConfig as Record<string, unknown>).limits as BodyLimitsConfig['limits'],
|
|
251
|
-
},
|
|
252
|
-
revalidateRenderer: async (path: string) => {
|
|
253
|
-
// Build the React element tree for the route at `path`.
|
|
254
|
-
// Returns the element tree (not serialized) so the action handler can
|
|
255
|
-
// combine it with the action result in a single renderToReadableStream call.
|
|
256
|
-
// Forward original request headers (cookies, session IDs, etc.).
|
|
257
|
-
const revalidateHeaders = new Headers(req.headers);
|
|
258
|
-
revalidateHeaders.set('Accept', 'text/x-component');
|
|
259
|
-
const revalidateReq = new Request(new URL(path, req.url), {
|
|
260
|
-
headers: revalidateHeaders,
|
|
261
|
-
});
|
|
262
|
-
const revalidateMatch = matchRoute(new URL(revalidateReq.url).pathname);
|
|
263
|
-
if (!revalidateMatch) {
|
|
264
|
-
throw new Error(`revalidatePath('${path}') — no matching route`);
|
|
265
|
-
}
|
|
266
|
-
const routeResult = await buildRouteElement(revalidateReq, revalidateMatch);
|
|
267
|
-
return {
|
|
268
|
-
element: routeResult.element,
|
|
269
|
-
headElements: routeResult.headElements,
|
|
270
|
-
};
|
|
271
|
-
},
|
|
272
|
-
});
|
|
273
|
-
if (actionResponse) {
|
|
274
|
-
// Check if this is a re-render signal (no-JS validation failure)
|
|
275
|
-
if ('rerender' in actionResponse) {
|
|
276
|
-
const formRerender = actionResponse as FormRerender;
|
|
277
|
-
// Re-render the page with the action result as flash data.
|
|
278
|
-
// Server components read it via getFormFlash() and pass it to
|
|
279
|
-
// client form components as the initial useActionState value.
|
|
280
|
-
const response = await runWithFormFlash(formRerender.rerender, () => pipeline(req));
|
|
281
|
-
return response;
|
|
282
|
-
}
|
|
283
|
-
return actionResponse;
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
return pipeline(req);
|
|
287
|
-
};
|
|
288
|
-
}
|
|
435
|
+
const handler = wrapPipelineWithActionDispatch(pipeline, {
|
|
436
|
+
csrfConfig,
|
|
437
|
+
});
|
|
289
438
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
* or return a raw RSC Flight stream for client-side navigation requests.
|
|
293
|
-
*
|
|
294
|
-
* 1. Load page/layout components from the segment chain
|
|
295
|
-
* 2. Resolve metadata
|
|
296
|
-
* 3. Render to RSC Flight stream (serializes "use client" as references)
|
|
297
|
-
* 4. If Accept: text/x-component → return RSC stream directly
|
|
298
|
-
* Otherwise → pass RSC stream to SSR entry for HTML rendering
|
|
299
|
-
*/
|
|
300
|
-
async function renderRoute(
|
|
301
|
-
_req: Request,
|
|
302
|
-
match: RouteMatch,
|
|
303
|
-
responseHeaders: Headers,
|
|
304
|
-
clientBootstrap: ClientBootstrapConfig,
|
|
305
|
-
clientJsDisabled: boolean,
|
|
306
|
-
interception?: InterceptionContext
|
|
307
|
-
): Promise<Response> {
|
|
308
|
-
const segments = match.segments as unknown as ManifestSegmentNode[];
|
|
309
|
-
const leaf = segments[segments.length - 1];
|
|
310
|
-
|
|
311
|
-
// API routes (route.ts) — run access.ts standalone then dispatch to handler.
|
|
312
|
-
// No React render pass — AccessGate is not used, React.cache is not active.
|
|
313
|
-
// See design/04-authorization.md §"Auth in API Routes".
|
|
314
|
-
if (leaf.route && !leaf.page) {
|
|
315
|
-
return handleApiRoute(_req, match, segments, responseHeaders);
|
|
316
|
-
}
|
|
439
|
+
return { handler, pipelineConfig };
|
|
440
|
+
}
|
|
317
441
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
// Only used for RSC requests — HTML requests always get a full render.
|
|
322
|
-
// See design/19-client-navigation.md §"X-Timber-State-Tree Header"
|
|
323
|
-
const clientStateTree = isRscPayloadRequest(_req) ? parseClientStateTree(_req) : null;
|
|
324
|
-
|
|
325
|
-
// Build the React element tree — loads modules, runs access checks,
|
|
326
|
-
// resolves metadata. DenySignal/RedirectSignal propagate for HTTP handling.
|
|
327
|
-
let routeResult;
|
|
328
|
-
try {
|
|
329
|
-
routeResult = await buildRouteElement(_req, match, interception, clientStateTree);
|
|
330
|
-
} catch (error) {
|
|
331
|
-
// RouteSignalWithContext wraps DenySignal/RedirectSignal with layout context
|
|
332
|
-
if (error instanceof RouteSignalWithContext) {
|
|
333
|
-
const { signal, layoutComponents: lc, segments: segs } = error;
|
|
334
|
-
if (signal instanceof DenySignal) {
|
|
335
|
-
if (isRscPayloadRequest(_req)) {
|
|
336
|
-
return renderDenyPageAsRsc(
|
|
337
|
-
signal,
|
|
338
|
-
segs,
|
|
339
|
-
lc as LayoutEntry[],
|
|
340
|
-
responseHeaders,
|
|
341
|
-
createDebugChannelSink
|
|
342
|
-
);
|
|
343
|
-
}
|
|
344
|
-
return renderDenyPage(
|
|
345
|
-
signal,
|
|
346
|
-
segs,
|
|
347
|
-
lc as LayoutEntry[],
|
|
348
|
-
_req,
|
|
349
|
-
match,
|
|
350
|
-
responseHeaders,
|
|
351
|
-
clientBootstrap,
|
|
352
|
-
createDebugChannelSink,
|
|
353
|
-
callSsr
|
|
354
|
-
);
|
|
355
|
-
}
|
|
356
|
-
if (signal instanceof RedirectSignal) {
|
|
357
|
-
return buildRedirectResponse(_req, signal, responseHeaders);
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
// No PageComponent found
|
|
361
|
-
if (error instanceof Error && error.message.startsWith('No page component')) {
|
|
362
|
-
return new Response(null, { status: 404 });
|
|
363
|
-
}
|
|
364
|
-
throw error;
|
|
365
|
-
}
|
|
442
|
+
// Re-export for generated entry points (e.g., Nitro node-server/bun) to wrap
|
|
443
|
+
// the handler with per-request 103 Early Hints sender via ALS.
|
|
444
|
+
export { runWithEarlyHintsSender } from '../early-hints-sender.ts';
|
|
366
445
|
|
|
367
|
-
|
|
368
|
-
|
|
446
|
+
// Re-export for generated entry points to wrap the handler with per-request
|
|
447
|
+
// waitUntil support via ALS. See design/11-platform.md §"waitUntil()".
|
|
448
|
+
export { runWithWaitUntil } from '../waituntil-bridge.ts';
|
|
369
449
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
// Link headers (for 103 Early Hints) are emitted by the earlyHints pipeline
|
|
375
|
-
// stage before middleware runs. Here we only emit the <head> HTML fallback tags
|
|
376
|
-
// — these ensure resources load even on platforms without Early Hints support.
|
|
377
|
-
const typedManifest = buildManifest as BuildManifest;
|
|
378
|
-
let headHtml = '';
|
|
379
|
-
|
|
380
|
-
const cssUrls = collectRouteCss(segments, typedManifest);
|
|
381
|
-
if (cssUrls.length > 0) {
|
|
382
|
-
headHtml += buildCssLinkTags(cssUrls);
|
|
383
|
-
}
|
|
450
|
+
// Re-export for the Cloudflare adapter's generated _worker.js to bridge
|
|
451
|
+
// ctx.cache from the ExecutionContext into the per-request ALS. The
|
|
452
|
+
// WorkersCachePurge handler reads from this ALS to call ctx.cache.purge().
|
|
453
|
+
export { runWithWorkersCachePurge } from '../workers-cache-bridge.ts';
|
|
384
454
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
const fontCss = (globalThis as Record<string, unknown>).__timber_font_css as string | undefined;
|
|
389
|
-
if (fontCss) {
|
|
390
|
-
headHtml += `<style data-timber-fonts>${fontCss}</style>`;
|
|
391
|
-
}
|
|
455
|
+
// Re-export for the Cloudflare adapter's generated _worker.js to strip the
|
|
456
|
+
// body from edge-cache hits on HEAD requests (TIM-1325). RFC 9110 §9.3.2.
|
|
457
|
+
export { stripHeadBody } from '../head-response.ts';
|
|
392
458
|
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
459
|
+
/**
|
|
460
|
+
* Post-build flight capture entry point (TIM-1119). The capture pass must
|
|
461
|
+
* run inside the built RSC bundle — the prebuilt component registry, the
|
|
462
|
+
* ALS instances, and the flight renderer are module instances in THIS
|
|
463
|
+
* bundle's graph; an outside import of the framework package would get
|
|
464
|
+
* fresh, empty copies. The timber-prebuilt plugin imports the built
|
|
465
|
+
* `rsc/index.js` after the 5-step build and calls this export.
|
|
466
|
+
* See design/44-render-at-build-time.md §Build Phase.
|
|
467
|
+
*/
|
|
468
|
+
export function __timber_capturePrebuilt(
|
|
469
|
+
options: import('../prebuilt-builder.ts').CaptureOptions
|
|
470
|
+
): Promise<import('../prebuilt-builder.ts').CaptureSummary> {
|
|
471
|
+
return capturePrebuiltPayloads(routeManifest, options);
|
|
472
|
+
}
|
|
397
473
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
474
|
+
/**
|
|
475
|
+
* Post-build static site generation entry point (TIM-1238). Renders every
|
|
476
|
+
* route in the manifest to HTML + RSC flight payloads. Must run inside the
|
|
477
|
+
* built RSC bundle — the handler, route manifest, and page module loaders
|
|
478
|
+
* are module instances in THIS bundle's graph.
|
|
479
|
+
*
|
|
480
|
+
* Unlike capture mode, this needs the full pipeline handler, so it must
|
|
481
|
+
* NOT run when __TIMBER_CAPTURE_MODE__ is set.
|
|
482
|
+
*
|
|
483
|
+
* See design/11-platform.md §"static output mode".
|
|
484
|
+
*/
|
|
485
|
+
export function __timber_generateStaticSite(
|
|
486
|
+
options: import('../static-generator.ts').StaticGenerationOptions
|
|
487
|
+
): Promise<import('../static-generator.ts').StaticGenerationSummary> {
|
|
488
|
+
if (!_handler) {
|
|
489
|
+
throw new Error(
|
|
490
|
+
'[timber] __timber_generateStaticSite requires the full request handler. ' +
|
|
491
|
+
'Do not call in capture mode (__TIMBER_CAPTURE_MODE__).'
|
|
492
|
+
);
|
|
404
493
|
}
|
|
494
|
+
return generateStaticSite(routeManifest, _handler, options);
|
|
495
|
+
}
|
|
405
496
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
497
|
+
// Schema codecs are needed by both the capture path (param coercion) and
|
|
498
|
+
// the request handler, so register them unconditionally.
|
|
499
|
+
setGlobalSchemaCodecs(globalSchemaCodecs);
|
|
500
|
+
|
|
501
|
+
// Singleflight timeout protects against deadlocked cache calls — needed
|
|
502
|
+
// in both capture mode (components may call timber.cache) and normal mode.
|
|
503
|
+
const renderTimeoutMs = (config as Record<string, unknown>).renderTimeoutMs as number | undefined;
|
|
504
|
+
if (renderTimeoutMs) {
|
|
505
|
+
const { setDefaultSingleflightTimeout } = await import('../../cache/timber-cache.ts');
|
|
506
|
+
setDefaultSingleflightTimeout(renderTimeoutMs);
|
|
507
|
+
setComponentRefreshTimeout(renderTimeoutMs);
|
|
508
|
+
}
|
|
417
509
|
|
|
418
|
-
|
|
419
|
-
|
|
510
|
+
const cacheConfig = (config as Record<string, unknown>).cache as
|
|
511
|
+
| { strictKeyDiscipline?: boolean }
|
|
512
|
+
| undefined;
|
|
513
|
+
if (cacheConfig?.strictKeyDiscipline === true) {
|
|
514
|
+
setKeyDisciplineStrict(true);
|
|
515
|
+
}
|
|
420
516
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
return buildRedirectResponse(_req, signals.redirectSignal, responseHeaders);
|
|
425
|
-
}
|
|
517
|
+
// Run instrumentation before the capture-mode guard — components may
|
|
518
|
+
// depend on globals or SDKs initialized in register().
|
|
519
|
+
await loadInstrumentation(loadUserInstrumentation);
|
|
426
520
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
layoutComponents as LayoutEntry[],
|
|
435
|
-
responseHeaders,
|
|
436
|
-
createDebugChannelSink
|
|
437
|
-
);
|
|
438
|
-
}
|
|
439
|
-
return renderDenyPage(
|
|
440
|
-
signals.denySignal,
|
|
441
|
-
segments,
|
|
442
|
-
layoutComponents as LayoutEntry[],
|
|
443
|
-
_req,
|
|
444
|
-
match,
|
|
445
|
-
responseHeaders,
|
|
446
|
-
clientBootstrap,
|
|
447
|
-
createDebugChannelSink,
|
|
448
|
-
callSsr
|
|
449
|
-
);
|
|
450
|
-
}
|
|
521
|
+
// Wire the cache handler — prebuilt components may call timber.cache
|
|
522
|
+
// during capture and must see the configured store, not the fallback.
|
|
523
|
+
const userCacheHandler = await loadCacheHandler();
|
|
524
|
+
if (userCacheHandler) {
|
|
525
|
+
const { setCacheHandler } = await import('../../cache/handler-store.ts');
|
|
526
|
+
setCacheHandler(userCacheHandler as Parameters<typeof setCacheHandler>[0]);
|
|
527
|
+
}
|
|
451
528
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
return renderErrorPage(
|
|
457
|
-
signals.renderError.error,
|
|
458
|
-
signals.renderError.status,
|
|
459
|
-
segments,
|
|
460
|
-
layoutComponents as LayoutEntry[],
|
|
461
|
-
_req,
|
|
462
|
-
match,
|
|
463
|
-
responseHeaders,
|
|
464
|
-
clientBootstrap
|
|
465
|
-
);
|
|
466
|
-
}
|
|
529
|
+
// In capture mode the plugin only calls __timber_capturePrebuilt — skip
|
|
530
|
+
// the remaining production startup (CDN purge, OTEL, route matchers)
|
|
531
|
+
// which is expensive and unnecessary.
|
|
532
|
+
const isCaptureMode = !!(globalThis as Record<string, unknown>).__TIMBER_CAPTURE_MODE__;
|
|
467
533
|
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
// See design/19-client-navigation.md §"RSC Payload Handling"
|
|
471
|
-
if (isRscPayloadRequest(_req)) {
|
|
472
|
-
return buildRscPayloadResponse(
|
|
473
|
-
_req,
|
|
474
|
-
rscStream!,
|
|
475
|
-
signals,
|
|
476
|
-
segments,
|
|
477
|
-
layoutComponents,
|
|
478
|
-
headElements,
|
|
479
|
-
match,
|
|
480
|
-
responseHeaders,
|
|
481
|
-
skippedSegments
|
|
482
|
-
);
|
|
483
|
-
}
|
|
534
|
+
let _handler: ((req: Request) => Promise<Response>) | undefined;
|
|
535
|
+
let _pipelineConfig: PipelineConfig | undefined;
|
|
484
536
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
signals,
|
|
490
|
-
segments,
|
|
491
|
-
layoutComponents,
|
|
492
|
-
match,
|
|
493
|
-
responseHeaders,
|
|
494
|
-
clientBootstrap,
|
|
495
|
-
clientJsDisabled,
|
|
496
|
-
headHtml,
|
|
497
|
-
deferSuspenseFor,
|
|
498
|
-
});
|
|
537
|
+
if (!isCaptureMode) {
|
|
538
|
+
const result = await createRequestHandler(routeManifest, config);
|
|
539
|
+
_handler = result.handler;
|
|
540
|
+
_pipelineConfig = result.pipelineConfig;
|
|
499
541
|
}
|
|
500
542
|
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
// waitUntil support via ALS. See design/11-platform.md §"waitUntil()".
|
|
507
|
-
export { runWithWaitUntil } from '#/server/waituntil-bridge.js';
|
|
543
|
+
/**
|
|
544
|
+
* The pipeline configuration object. Exported so the dev server can set
|
|
545
|
+
* `devPipelineErrorHandler` after import without a module-level singleton.
|
|
546
|
+
*/
|
|
547
|
+
export const pipelineConfig = _pipelineConfig!;
|
|
508
548
|
|
|
509
|
-
export default
|
|
549
|
+
export default _handler!;
|