@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
|
@@ -14,16 +14,47 @@
|
|
|
14
14
|
|
|
15
15
|
import type { Plugin, ViteDevServer, DevEnvironment } from 'vite';
|
|
16
16
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
17
|
-
import {
|
|
18
|
-
import
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
17
|
+
import type { TLSSocket } from 'node:tls';
|
|
18
|
+
import { existsSync, realpathSync, statSync } from 'node:fs';
|
|
19
|
+
import { basename, dirname, join } from 'node:path';
|
|
20
|
+
import { sendNodeResponse } from 'srvx/node';
|
|
21
|
+
import type { PluginContext } from '../plugin-context.ts';
|
|
22
|
+
import {
|
|
23
|
+
sendErrorToOverlay,
|
|
24
|
+
classifyErrorPhase,
|
|
25
|
+
fixErrorStacktrace,
|
|
26
|
+
parseFirstAppFrame,
|
|
27
|
+
type ErrorPhase,
|
|
28
|
+
} from '../dev-tools/overlay.ts';
|
|
29
|
+
import { generateDevErrorPage } from '../dev-tools/error-page.ts';
|
|
30
|
+
import { extractHmrOptions, type DevErrorHmrOptions } from '../dev-tools/dev-page-shell.ts';
|
|
31
|
+
import { addVirtualModuleContext } from '../config-validation.ts';
|
|
32
|
+
import { DebugChannelRegistry, DEBUG_SUBSCRIBE_EVENT } from '../dev-tools/debug-channel.ts';
|
|
33
|
+
import { registerDevDiscovery } from './dev-discovery.ts';
|
|
34
|
+
import {
|
|
35
|
+
createGraphEndpointMiddleware,
|
|
36
|
+
makeGraphUpdateChannel,
|
|
37
|
+
type GraphUpdateChannel,
|
|
38
|
+
} from './graph-endpoint.ts';
|
|
39
|
+
import { compressResponse } from '../server/compress.ts';
|
|
40
|
+
import { isSsrStreamError } from '../server/primitives.ts';
|
|
41
|
+
import { isMetadataRouteServePath } from '../server/metadata-routes.ts';
|
|
42
|
+
import { canonicalize } from '../server/canonicalize.ts';
|
|
43
|
+
import { matchUrlParts } from '../server/tree-match.ts';
|
|
44
|
+
import type { RouteTree } from '../routing/types.ts';
|
|
22
45
|
|
|
23
46
|
// ─── Constants ────────────────────────────────────────────────────────────
|
|
24
47
|
|
|
25
48
|
const RSC_ENTRY_ID = 'virtual:timber-rsc-entry';
|
|
26
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Exit code used to signal the CLI supervisor that the dev server needs
|
|
52
|
+
* a full process restart (e.g. timber.config.ts changed). The supervisor
|
|
53
|
+
* in cli.ts respawns the worker on this code. 75 = EX_TEMPFAIL (sysexits).
|
|
54
|
+
* See TIM-1444.
|
|
55
|
+
*/
|
|
56
|
+
export const RESTART_EXIT_CODE = 75;
|
|
57
|
+
|
|
27
58
|
/**
|
|
28
59
|
* Config file names that trigger a full dev server restart when changed.
|
|
29
60
|
* See 21-dev-server.md §HMR Wiring — config is loaded once at startup.
|
|
@@ -55,6 +86,10 @@ const ASSET_EXTENSIONS =
|
|
|
55
86
|
* Hook: configureServer (returns post-hook to register after Vite's middleware)
|
|
56
87
|
*/
|
|
57
88
|
export function timberDevServer(ctx: PluginContext): Plugin {
|
|
89
|
+
// Set in configureServer, consumed by hotUpdate/transform — the
|
|
90
|
+
// graph push channel emits through the server's HMR transport.
|
|
91
|
+
let graphChannel: GraphUpdateChannel | null = null;
|
|
92
|
+
|
|
58
93
|
return {
|
|
59
94
|
name: 'timber-dev-server',
|
|
60
95
|
|
|
@@ -62,6 +97,28 @@ export function timberDevServer(ctx: PluginContext): Plugin {
|
|
|
62
97
|
// See 21-dev-server.md §Plugin Registration.
|
|
63
98
|
apply: 'serve',
|
|
64
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Push channel for the graph endpoint, phase 1: `invalidated`, one
|
|
102
|
+
* per (file, environment). Emitted from hotUpdate — which runs
|
|
103
|
+
* AFTER Vite invalidates the environment module graphs — never
|
|
104
|
+
* from a raw watcher listener, which would race consumers into
|
|
105
|
+
* querying pre-invalidation memberships (design/47 §"Dev-server
|
|
106
|
+
* endpoint").
|
|
107
|
+
*/
|
|
108
|
+
hotUpdate({ file, type }) {
|
|
109
|
+
graphChannel?.onHotUpdate({ file, type, environment: this.environment.name });
|
|
110
|
+
},
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Push channel phase 2: `transformed`, when a pending-invalidated
|
|
114
|
+
* module's import edges are actually rebuilt. A Set lookup for
|
|
115
|
+
* everything without a pending invalidation — free on the hot
|
|
116
|
+
* path. Returning nothing leaves the code untouched.
|
|
117
|
+
*/
|
|
118
|
+
transform(_code, id) {
|
|
119
|
+
graphChannel?.onTransform(id, this.environment.name);
|
|
120
|
+
},
|
|
121
|
+
|
|
65
122
|
/**
|
|
66
123
|
* Register the dev server middleware and config file watcher.
|
|
67
124
|
*
|
|
@@ -71,21 +128,33 @@ export function timberDevServer(ctx: PluginContext): Plugin {
|
|
|
71
128
|
* rewritten /index.html. Vite-internal and asset requests are
|
|
72
129
|
* filtered out explicitly and passed through to Vite.
|
|
73
130
|
*/
|
|
74
|
-
configureServer(server: ViteDevServer) {
|
|
75
|
-
// Watch config files for
|
|
76
|
-
//
|
|
77
|
-
//
|
|
131
|
+
async configureServer(server: ViteDevServer) {
|
|
132
|
+
// Watch config files for changes. When running under the CLI
|
|
133
|
+
// supervisor (__TIMBER_DEV_WORKER), exit the process so the
|
|
134
|
+
// supervisor respawns with a fresh require cache. When running
|
|
135
|
+
// via `vite dev` directly (no supervisor), fall back to Vite's
|
|
136
|
+
// in-process server.restart() — it serves stale config, but at
|
|
137
|
+
// least the server stays alive. See TIM-1444.
|
|
78
138
|
const configPaths = CONFIG_FILE_NAMES.map((name) => join(ctx.root, name));
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
139
|
+
server.watcher.add(configPaths);
|
|
140
|
+
const configPathSet = new Set(configPaths);
|
|
141
|
+
const hasSupervisor = Boolean(process.env.__TIMBER_DEV_WORKER);
|
|
142
|
+
const onConfigChange = (filePath: string) => {
|
|
143
|
+
if (!configPathSet.has(filePath)) return;
|
|
144
|
+
if (hasSupervisor) {
|
|
145
|
+
console.log(`\n[timber] ${basename(filePath)} changed — restarting dev server...\n`);
|
|
146
|
+
process.exit(RESTART_EXIT_CODE);
|
|
147
|
+
} else {
|
|
148
|
+
console.log(
|
|
149
|
+
`\n[timber] ${basename(filePath)} changed — restarting dev server...` +
|
|
150
|
+
`\n[timber] Run \`timber dev\` instead of \`vite dev\` for guaranteed fresh config on restart.\n`
|
|
151
|
+
);
|
|
82
152
|
server.restart();
|
|
83
153
|
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
setViteServer(server);
|
|
154
|
+
};
|
|
155
|
+
server.watcher.on('change', onConfigChange);
|
|
156
|
+
server.watcher.on('add', onConfigChange);
|
|
157
|
+
server.watcher.on('unlink', onConfigChange);
|
|
89
158
|
|
|
90
159
|
// Listen for client-side errors forwarded from the browser.
|
|
91
160
|
// The browser entry sends 'timber:client-error' events via HMR
|
|
@@ -93,8 +162,73 @@ export function timberDevServer(ctx: PluginContext): Plugin {
|
|
|
93
162
|
// as Vite's '{ type: "error" }' payload to trigger the overlay.
|
|
94
163
|
listenForClientErrors(server, ctx.root);
|
|
95
164
|
|
|
165
|
+
// GET /__timber/graph — module-environment classification from the
|
|
166
|
+
// live env graphs, plus the timber:graph-update HMR push channel.
|
|
167
|
+
// Registered before the timber middleware so /__timber/* requests
|
|
168
|
+
// never reach the app pipeline. Dev-only by construction (this
|
|
169
|
+
// plugin is apply: 'serve'). See design/47 §"Dev-server endpoint".
|
|
170
|
+
server.middlewares.use(createGraphEndpointMiddleware(server, ctx));
|
|
171
|
+
graphChannel = makeGraphUpdateChannel(
|
|
172
|
+
ctx,
|
|
173
|
+
(payload) => server.hot.send(payload),
|
|
174
|
+
// "Edges rebuilt" signal: Vite sets a node's transformResult at
|
|
175
|
+
// the END of the transform request, after vite:import-analysis
|
|
176
|
+
// has updated the importer edges. Virtual ids (the route
|
|
177
|
+
// manifest's structural updates) have no file index — resolve
|
|
178
|
+
// them by id.
|
|
179
|
+
(file, environment) => {
|
|
180
|
+
const graph = server.environments[environment]?.moduleGraph;
|
|
181
|
+
if (!graph) return false;
|
|
182
|
+
const nodes = graph.getModulesByFile(file);
|
|
183
|
+
if (nodes) {
|
|
184
|
+
for (const node of nodes) {
|
|
185
|
+
if (node.transformResult != null) return true;
|
|
186
|
+
}
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
return graph.getModuleById(file)?.transformResult != null;
|
|
190
|
+
},
|
|
191
|
+
// Canonicalize watcher/hook paths into the module graphs' path
|
|
192
|
+
// space: under the default preserveSymlinks:false the graphs
|
|
193
|
+
// carry realpaths while watcher events can carry symlink paths
|
|
194
|
+
// — unkeyed by one canonical form, a pending entry would never
|
|
195
|
+
// match its own transform. Deleted files realpath their parent
|
|
196
|
+
// directory instead; virtual ids pass through untouched.
|
|
197
|
+
(file) => {
|
|
198
|
+
// Optional-chained: mock servers in unit tests carry a bare
|
|
199
|
+
// config object without resolve options.
|
|
200
|
+
if (server.config?.resolve?.preserveSymlinks || file.includes('virtual:')) return file;
|
|
201
|
+
try {
|
|
202
|
+
return realpathSync(file);
|
|
203
|
+
} catch {
|
|
204
|
+
try {
|
|
205
|
+
return join(realpathSync(dirname(file)), basename(file));
|
|
206
|
+
} catch {
|
|
207
|
+
return file;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
);
|
|
212
|
+
|
|
96
213
|
// Pre-hook — registers middleware before Vite's internals
|
|
97
|
-
server.middlewares.use(createTimberMiddleware(server, ctx
|
|
214
|
+
server.middlewares.use(createTimberMiddleware(server, ctx));
|
|
215
|
+
|
|
216
|
+
// Write this server's .timber/dev/<pid>-<port>-<token>.json record once
|
|
217
|
+
// the server is listening so the graph CLI / VS Code extension can
|
|
218
|
+
// discover it. See design/47-module-environment-tooling.md §5.
|
|
219
|
+
registerDevDiscovery(server.httpServer, ctx.root, server.config);
|
|
220
|
+
|
|
221
|
+
// Close the holding server and await the port release so Vite's
|
|
222
|
+
// port probe and bind see a free port. configureServer is awaited
|
|
223
|
+
// by Vite during createServer(), before startServer() runs
|
|
224
|
+
// isPortAvailable() and httpServer.listen().
|
|
225
|
+
// closeAllConnections() (in HoldingServer.close) kills keep-alive
|
|
226
|
+
// sockets from the meta-refresh page so close() resolves promptly.
|
|
227
|
+
// See design/21-dev-server.md §"Startup Holding Server", TIM-1419.
|
|
228
|
+
if (ctx.holdingServer) {
|
|
229
|
+
await ctx.holdingServer.close().catch(() => {});
|
|
230
|
+
ctx.holdingServer = null;
|
|
231
|
+
}
|
|
98
232
|
|
|
99
233
|
// Log startup timing summary. configureServer runs on all plugins
|
|
100
234
|
// before the server listens, so this captures the full cold start.
|
|
@@ -121,7 +255,33 @@ export function timberDevServer(ctx: PluginContext): Plugin {
|
|
|
121
255
|
* For non-route requests (assets, Vite internals, HMR), the middleware
|
|
122
256
|
* calls next() to let Vite handle them.
|
|
123
257
|
*/
|
|
124
|
-
function createTimberMiddleware(server: ViteDevServer,
|
|
258
|
+
function createTimberMiddleware(server: ViteDevServer, ctx: PluginContext) {
|
|
259
|
+
const projectRoot = ctx.root;
|
|
260
|
+
// Extract HMR connection options once so the error page can construct
|
|
261
|
+
// a correct WebSocket URL (TIM-789).
|
|
262
|
+
const hmrOptions = extractHmrOptions(server.config);
|
|
263
|
+
|
|
264
|
+
// Debug channel registry: buffers RSC debug rows per request and replays
|
|
265
|
+
// them when the browser subscribes via HMR. Created ONCE per server, not
|
|
266
|
+
// per request — the middleware below re-imports the RSC entry on every
|
|
267
|
+
// request, and a per-request registry + listener would leak a stale
|
|
268
|
+
// listener per request. Each stale listener answers a subscribe with
|
|
269
|
+
// `done: true` (unknown ID), closing the browser's debug readable before
|
|
270
|
+
// the real replay arrives, which blocks Flight's root on unresolved owner
|
|
271
|
+
// refs and prevents hydration entirely. See TIM-1507.
|
|
272
|
+
const debugRegistry = new DebugChannelRegistry();
|
|
273
|
+
server.hot.on(
|
|
274
|
+
DEBUG_SUBSCRIBE_EVENT,
|
|
275
|
+
(data: unknown, client: { send: (event: string, payload: unknown) => void }) => {
|
|
276
|
+
const msg = data as { id?: string };
|
|
277
|
+
if (msg?.id) {
|
|
278
|
+
debugRegistry.subscribe(msg.id, (event, payload) => {
|
|
279
|
+
client.send(event, payload);
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
);
|
|
284
|
+
|
|
125
285
|
return async (req: IncomingMessage, res: ServerResponse, next: () => void): Promise<void> => {
|
|
126
286
|
const url = req.url;
|
|
127
287
|
if (!url) {
|
|
@@ -135,8 +295,27 @@ function createTimberMiddleware(server: ViteDevServer, projectRoot: string) {
|
|
|
135
295
|
return;
|
|
136
296
|
}
|
|
137
297
|
|
|
138
|
-
//
|
|
139
|
-
|
|
298
|
+
// Files that exist in public/ are always served by Vite's static
|
|
299
|
+
// middleware, regardless of extension. Without this, extensions like
|
|
300
|
+
// .ico, .txt, .xml, .html either get caught by the metadata route
|
|
301
|
+
// check or aren't in ASSET_EXTENSIONS, so they fall through to the
|
|
302
|
+
// app router where a dynamic segment like [artistSlug] 404s them.
|
|
303
|
+
if (isPublicFile(server, url)) {
|
|
304
|
+
next();
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
// Pass through static asset requests — but not metadata routes like
|
|
309
|
+
// /favicon.ico that match asset extensions but are handled by timber,
|
|
310
|
+
// and not registered routes like app/feed.json/route.ts whose URL ends
|
|
311
|
+
// in an asset extension. Production serves these through the RSC
|
|
312
|
+
// handler, so letting them fall through to Vite would 404 in dev only
|
|
313
|
+
// (TIM-1038).
|
|
314
|
+
if (
|
|
315
|
+
isAssetRequest(url) &&
|
|
316
|
+
!isMetadataRouteServePath(url) &&
|
|
317
|
+
!isRouteOwnedAsset(ctx.routeTree, server, url)
|
|
318
|
+
) {
|
|
140
319
|
next();
|
|
141
320
|
return;
|
|
142
321
|
}
|
|
@@ -160,13 +339,54 @@ function createTimberMiddleware(server: ViteDevServer, projectRoot: string) {
|
|
|
160
339
|
handler = rscModule.default as (req: Request) => Promise<Response>;
|
|
161
340
|
|
|
162
341
|
// Wire pipeline errors into the browser error overlay.
|
|
163
|
-
//
|
|
164
|
-
|
|
165
|
-
|
|
342
|
+
// Set devPipelineErrorHandler directly on the pipeline config —
|
|
343
|
+
// no module-level singleton. The handler receives optional RSC debug
|
|
344
|
+
// component data (component names, environments, stack frames) from
|
|
345
|
+
// the Flight debug channel for render errors.
|
|
346
|
+
const config = rscModule.pipelineConfig as
|
|
347
|
+
| {
|
|
348
|
+
devPipelineErrorHandler?: (
|
|
349
|
+
error: Error,
|
|
350
|
+
phase: string,
|
|
351
|
+
debugComponents?: Array<{
|
|
352
|
+
name: string;
|
|
353
|
+
env: string | null;
|
|
354
|
+
stack: unknown[] | null;
|
|
355
|
+
}>
|
|
356
|
+
) => void;
|
|
357
|
+
devHmrOptions?: DevErrorHmrOptions;
|
|
358
|
+
devDebugRegistry?: DebugChannelRegistry;
|
|
359
|
+
}
|
|
166
360
|
| undefined;
|
|
167
|
-
if (
|
|
168
|
-
|
|
169
|
-
sendErrorToOverlay(
|
|
361
|
+
if (config) {
|
|
362
|
+
config.devPipelineErrorHandler = (error, _phase, debugComponents) => {
|
|
363
|
+
sendErrorToOverlay(
|
|
364
|
+
server,
|
|
365
|
+
error,
|
|
366
|
+
classifyErrorPhase(error, projectRoot),
|
|
367
|
+
projectRoot,
|
|
368
|
+
debugComponents
|
|
369
|
+
);
|
|
370
|
+
};
|
|
371
|
+
// Plumb the resolved HMR options into the RSC environment. The RSC
|
|
372
|
+
// entry can't read the Vite server config (separate module graph),
|
|
373
|
+
// but its dev 404 page and fallback error page need the HMR endpoint
|
|
374
|
+
// (including Vite 8's required WS token) for auto-reload (TIM-1067).
|
|
375
|
+
config.devHmrOptions = hmrOptions;
|
|
376
|
+
// Server-lifetime debug channel registry (created above). Re-assigned
|
|
377
|
+
// per request because the RSC module may be re-evaluated on HMR.
|
|
378
|
+
config.devDebugRegistry = debugRegistry;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
// Wire source-map handler so error pages show original positions.
|
|
382
|
+
// fixErrorStacktrace rewrites the error's stack trace in-place using
|
|
383
|
+
// the Vite dev server's module graph. See TIM-811.
|
|
384
|
+
const setSourceMap = rscModule.setDevSourceMapHandler as
|
|
385
|
+
| ((fn: (error: Error) => void) => void)
|
|
386
|
+
| undefined;
|
|
387
|
+
if (typeof setSourceMap === 'function') {
|
|
388
|
+
setSourceMap((error: Error) => {
|
|
389
|
+
fixErrorStacktrace(server, error);
|
|
170
390
|
});
|
|
171
391
|
}
|
|
172
392
|
} catch (error) {
|
|
@@ -174,9 +394,11 @@ function createTimberMiddleware(server: ViteDevServer, projectRoot: string) {
|
|
|
174
394
|
// Vite may already show its own overlay for these, but we still
|
|
175
395
|
// log to stderr with frame dimming for the terminal.
|
|
176
396
|
if (error instanceof Error) {
|
|
397
|
+
// Add context for virtual:timber-* module errors
|
|
398
|
+
addTimberContext(error);
|
|
177
399
|
sendErrorToOverlay(server, error, 'module-transform', projectRoot);
|
|
178
400
|
}
|
|
179
|
-
respond500(res, error);
|
|
401
|
+
respond500(res, error, 'module-transform', projectRoot, hmrOptions);
|
|
180
402
|
return;
|
|
181
403
|
}
|
|
182
404
|
|
|
@@ -191,40 +413,106 @@ function createTimberMiddleware(server: ViteDevServer, projectRoot: string) {
|
|
|
191
413
|
// Convert Node IncomingMessage → Web Request
|
|
192
414
|
const webRequest = toWebRequest(req);
|
|
193
415
|
|
|
194
|
-
//
|
|
195
|
-
|
|
416
|
+
// Check for a platform-specific request wrapper (e.g., Cloudflare
|
|
417
|
+
// dev bindings). The cloudflareDevBindings() plugin stores a wrapper
|
|
418
|
+
// function on the server instance using a well-known Symbol. The
|
|
419
|
+
// wrapper runs the handler inside an ALS context so platform APIs
|
|
420
|
+
// like getCloudflareBindings() work during dev.
|
|
421
|
+
// See design/35-cloudflare-primitives.md §"Dev Experience".
|
|
422
|
+
const wrapper = (server as any)[Symbol.for('timber:dev-request-wrapper')] as
|
|
423
|
+
| (<T>(fn: () => T) => T)
|
|
424
|
+
| undefined;
|
|
425
|
+
|
|
426
|
+
// Run the full pipeline (wrapped if a platform dev plugin is active)
|
|
427
|
+
const webResponse = wrapper
|
|
428
|
+
? await wrapper(() => handler(webRequest))
|
|
429
|
+
: await handler(webRequest);
|
|
196
430
|
|
|
197
431
|
// Compress the response if the client supports it.
|
|
198
432
|
// In dev mode, compression is always enabled for parity with production.
|
|
199
433
|
// See design/25-production-deployments.md.
|
|
200
434
|
const finalResponse = compressResponse(webRequest, webResponse);
|
|
201
435
|
|
|
202
|
-
//
|
|
203
|
-
|
|
436
|
+
// Flush headers eagerly so streaming responses (SSE, long-polling)
|
|
437
|
+
// reach the client before the first body chunk. Node.js buffers
|
|
438
|
+
// headers until write()/end() otherwise, which stalls EventSource
|
|
439
|
+
// clients that wait for the response to open. srvx's writeHead
|
|
440
|
+
// skips if headersSent is already true, so pre-flushing is safe.
|
|
441
|
+
res.writeHead(finalResponse.status, [...finalResponse.headers].flat());
|
|
442
|
+
res.flushHeaders();
|
|
443
|
+
|
|
444
|
+
// Stream the body with backpressure and disconnect handling.
|
|
445
|
+
// srvx skips its own writeHead since headers are already sent.
|
|
446
|
+
await sendNodeResponse(res, finalResponse);
|
|
204
447
|
} catch (error) {
|
|
205
448
|
// Pipeline error — classify the phase, send to overlay, respond 500.
|
|
206
449
|
// The dev server remains running for recovery on file fix + HMR.
|
|
207
450
|
if (error instanceof Error) {
|
|
208
|
-
|
|
209
|
-
|
|
451
|
+
// Unwrap SsrStreamError to show the real cause in the error overlay.
|
|
452
|
+
// SsrStreamError wraps the original RSC render error with a generic
|
|
453
|
+
// message; the developer needs to see the actual error (e.g.,
|
|
454
|
+
// "useSegmentParams is not a function"), not the wrapper.
|
|
455
|
+
const displayError =
|
|
456
|
+
isSsrStreamError(error) && error.cause instanceof Error ? error.cause : error;
|
|
457
|
+
const phase = classifyErrorPhase(displayError, projectRoot);
|
|
458
|
+
sendErrorToOverlay(server, displayError, phase, projectRoot);
|
|
459
|
+
respond500(res, displayError, phase, projectRoot, hmrOptions);
|
|
210
460
|
} else {
|
|
211
461
|
process.stderr.write(`\x1b[31m[timber] Dev server error:\x1b[0m ${String(error)}\n`);
|
|
462
|
+
respond500(res, error, 'render', projectRoot, hmrOptions);
|
|
212
463
|
}
|
|
213
|
-
respond500(res, error);
|
|
214
464
|
}
|
|
215
465
|
};
|
|
216
466
|
}
|
|
217
467
|
|
|
218
468
|
/**
|
|
219
469
|
* Send a 500 response without crashing the dev server.
|
|
470
|
+
*
|
|
471
|
+
* In dev mode, renders a styled HTML error page with source context,
|
|
472
|
+
* classified stack trace, and auto-reload on HMR. Falls back to
|
|
473
|
+
* text/plain if the HTML generator fails (must never crash).
|
|
220
474
|
*/
|
|
221
|
-
function respond500(
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
475
|
+
function respond500(
|
|
476
|
+
res: ServerResponse,
|
|
477
|
+
error: unknown,
|
|
478
|
+
phase: ErrorPhase,
|
|
479
|
+
projectRoot: string,
|
|
480
|
+
hmrOptions?: DevErrorHmrOptions
|
|
481
|
+
): void {
|
|
482
|
+
if (res.headersSent) return;
|
|
483
|
+
|
|
484
|
+
// Try to render the rich HTML error page
|
|
485
|
+
if (error instanceof Error) {
|
|
486
|
+
try {
|
|
487
|
+
const html = generateDevErrorPage(error, phase, projectRoot, hmrOptions);
|
|
488
|
+
res.statusCode = 500;
|
|
489
|
+
res.setHeader('content-type', 'text/html; charset=utf-8');
|
|
490
|
+
res.end(html);
|
|
491
|
+
return;
|
|
492
|
+
} catch (e) {
|
|
493
|
+
console.debug(
|
|
494
|
+
'[timber] dev error page generation failed, falling back to text/plain:',
|
|
495
|
+
e instanceof Error ? e.message : e
|
|
496
|
+
);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
// Fallback: plain text (same as before)
|
|
501
|
+
res.statusCode = 500;
|
|
502
|
+
res.setHeader('content-type', 'text/plain');
|
|
503
|
+
res.end(
|
|
504
|
+
`[timber] Internal server error\n\n${error instanceof Error ? (error.stack ?? error.message) : String(error)}`
|
|
505
|
+
);
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
/**
|
|
509
|
+
* Add timber-specific context to an error's message if it references
|
|
510
|
+
* internal virtual modules (virtual:timber-*). Mutates the error in place.
|
|
511
|
+
*/
|
|
512
|
+
function addTimberContext(error: Error): void {
|
|
513
|
+
const enriched = addVirtualModuleContext(error.message);
|
|
514
|
+
if (enriched !== error.message) {
|
|
515
|
+
error.message = enriched;
|
|
228
516
|
}
|
|
229
517
|
}
|
|
230
518
|
|
|
@@ -235,15 +523,30 @@ function respond500(res: ServerResponse, error: unknown): void {
|
|
|
235
523
|
*
|
|
236
524
|
* Constructs the full URL from the Host header and request URL,
|
|
237
525
|
* and forwards the method, headers, and body.
|
|
526
|
+
*
|
|
527
|
+
* The scheme comes from the socket's TLS state — with `server.https` the
|
|
528
|
+
* browser sends `Origin: https://host`, and a hardcoded `http://` would
|
|
529
|
+
* fail CSRF origin comparison on every POST. X-Forwarded-Proto is NOT
|
|
530
|
+
* consulted: dev connections are direct, so the header would be
|
|
531
|
+
* attacker-controlled. (TIM-1067, B32)
|
|
532
|
+
*
|
|
533
|
+
* Exported for tests.
|
|
238
534
|
*/
|
|
239
|
-
function toWebRequest(nodeReq: IncomingMessage): Request {
|
|
240
|
-
const protocol = 'http';
|
|
241
|
-
|
|
535
|
+
export function toWebRequest(nodeReq: IncomingMessage): Request {
|
|
536
|
+
const protocol = (nodeReq.socket as TLSSocket | undefined)?.encrypted ? 'https' : 'http';
|
|
537
|
+
// Under HTTP/2 there is no Host header — the authority lives in the
|
|
538
|
+
// `:authority` pseudo-header.
|
|
539
|
+
const host =
|
|
540
|
+
nodeReq.headers.host ?? (nodeReq.headers[':authority'] as string | undefined) ?? 'localhost';
|
|
242
541
|
const url = `${protocol}://${host}${nodeReq.url}`;
|
|
243
542
|
|
|
244
543
|
const headers = new Headers();
|
|
245
544
|
for (const [key, value] of Object.entries(nodeReq.headers)) {
|
|
246
545
|
if (value === undefined) continue;
|
|
546
|
+
// HTTP/2 pseudo-headers (:method, :path, :authority, :scheme) are not
|
|
547
|
+
// valid Headers names — Headers.set() throws on them. They're already
|
|
548
|
+
// reflected in the request URL/method above.
|
|
549
|
+
if (key.startsWith(':')) continue;
|
|
247
550
|
if (Array.isArray(value)) {
|
|
248
551
|
for (const v of value) {
|
|
249
552
|
headers.append(key, v);
|
|
@@ -252,6 +555,11 @@ function toWebRequest(nodeReq: IncomingMessage): Request {
|
|
|
252
555
|
headers.set(key, value);
|
|
253
556
|
}
|
|
254
557
|
}
|
|
558
|
+
// HTTP/2 requests carry the authority in `:authority`, not Host — but
|
|
559
|
+
// downstream consumers (CSRF origin validation) read the Host header.
|
|
560
|
+
if (!headers.has('host')) {
|
|
561
|
+
headers.set('host', host);
|
|
562
|
+
}
|
|
255
563
|
|
|
256
564
|
const method = nodeReq.method ?? 'GET';
|
|
257
565
|
const hasBody = method !== 'GET' && method !== 'HEAD';
|
|
@@ -284,53 +592,6 @@ function nodeReadableToWebStream(nodeStream: IncomingMessage): ReadableStream<Ui
|
|
|
284
592
|
});
|
|
285
593
|
}
|
|
286
594
|
|
|
287
|
-
/**
|
|
288
|
-
* Write a Web Response to a Node ServerResponse.
|
|
289
|
-
*
|
|
290
|
-
* Copies status code, headers, and streams the body.
|
|
291
|
-
*/
|
|
292
|
-
async function sendWebResponse(nodeRes: ServerResponse, webResponse: Response): Promise<void> {
|
|
293
|
-
nodeRes.statusCode = webResponse.status;
|
|
294
|
-
|
|
295
|
-
// Copy headers. Set-Cookie needs special handling: Headers.forEach()
|
|
296
|
-
// joins multiple Set-Cookie values with ", " into one entry, but each
|
|
297
|
-
// cookie must be its own header per RFC 6265 §4.1. Use getSetCookie()
|
|
298
|
-
// to preserve individual Set-Cookie headers.
|
|
299
|
-
webResponse.headers.forEach((value, key) => {
|
|
300
|
-
if (key.toLowerCase() !== 'set-cookie') {
|
|
301
|
-
nodeRes.setHeader(key, value);
|
|
302
|
-
}
|
|
303
|
-
});
|
|
304
|
-
const setCookies = webResponse.headers.getSetCookie();
|
|
305
|
-
if (setCookies.length > 0) {
|
|
306
|
-
nodeRes.setHeader('Set-Cookie', setCookies);
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
// Stream the body
|
|
310
|
-
if (!webResponse.body) {
|
|
311
|
-
nodeRes.end();
|
|
312
|
-
return;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
// Flush headers immediately so the client can start processing
|
|
316
|
-
// the response (critical for SSE and other streaming responses).
|
|
317
|
-
nodeRes.flushHeaders();
|
|
318
|
-
|
|
319
|
-
const reader = webResponse.body.getReader();
|
|
320
|
-
try {
|
|
321
|
-
while (true) {
|
|
322
|
-
const { done, value } = await reader.read();
|
|
323
|
-
if (done) break;
|
|
324
|
-
// write() returns false when the kernel buffer is full, but we
|
|
325
|
-
// don't need back-pressure here — just keep pushing chunks.
|
|
326
|
-
nodeRes.write(value);
|
|
327
|
-
}
|
|
328
|
-
} finally {
|
|
329
|
-
reader.releaseLock();
|
|
330
|
-
nodeRes.end();
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
|
|
334
595
|
// ─── URL Classification ──────────────────────────────────────────────────
|
|
335
596
|
|
|
336
597
|
/**
|
|
@@ -347,6 +608,69 @@ function isAssetRequest(url: string): boolean {
|
|
|
347
608
|
return ASSET_EXTENSIONS.test(url);
|
|
348
609
|
}
|
|
349
610
|
|
|
611
|
+
/**
|
|
612
|
+
* Check if a URL maps to a real file in the project's public/ directory.
|
|
613
|
+
* Vite serves public/ files as static assets — if a file exists there it
|
|
614
|
+
* must be passed through to Vite regardless of extension.
|
|
615
|
+
*/
|
|
616
|
+
function isPublicFile(server: ViteDevServer, url: string): boolean {
|
|
617
|
+
const { publicDir } = server.config;
|
|
618
|
+
if (!publicDir) return false;
|
|
619
|
+
const pathname = url.split('?')[0];
|
|
620
|
+
const relativePath = pathname.startsWith('/') ? pathname.slice(1) : pathname;
|
|
621
|
+
if (!relativePath) return false;
|
|
622
|
+
const fullPath = join(publicDir, relativePath);
|
|
623
|
+
try {
|
|
624
|
+
return statSync(fullPath).isFile();
|
|
625
|
+
} catch {
|
|
626
|
+
return false;
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
/**
|
|
631
|
+
* Check whether an asset-extension URL belongs to a scanned route rather
|
|
632
|
+
* than a static file.
|
|
633
|
+
*
|
|
634
|
+
* Route handlers may live at paths ending in asset-like extensions
|
|
635
|
+
* (app/feed.json/route.ts → /feed.json), which the asset bypass would
|
|
636
|
+
* otherwise hand to Vite — 404ing in dev while working in production.
|
|
637
|
+
* Uses the same canonicalization and tree walker as the runtime matcher
|
|
638
|
+
* so dev classification agrees with what the pipeline would match.
|
|
639
|
+
*
|
|
640
|
+
* A file that actually exists on disk wins over the route match: the
|
|
641
|
+
* production server serves public/ statics before the RSC handler (see
|
|
642
|
+
* adapters/nitro.ts), and Vite serves root-relative source files (e.g.
|
|
643
|
+
* /app/global.css) in dev. Without this, a broad catch-all route like
|
|
644
|
+
* app/[...slug] would shadow every static asset. Joining the canonical
|
|
645
|
+
* pathname is traversal-safe — canonicalize() resolves `..` segments and
|
|
646
|
+
* rejects root escapes and encoded separators.
|
|
647
|
+
*
|
|
648
|
+
* Reads ctx.routeTree per request — the routing plugin rescans it on
|
|
649
|
+
* file add/unlink/change, so newly created routes are picked up live.
|
|
650
|
+
*/
|
|
651
|
+
function isRouteOwnedAsset(
|
|
652
|
+
routeTree: RouteTree | null,
|
|
653
|
+
server: ViteDevServer,
|
|
654
|
+
url: string
|
|
655
|
+
): boolean {
|
|
656
|
+
if (!routeTree) return false;
|
|
657
|
+
const rawPathname = url.split('?')[0];
|
|
658
|
+
const result = canonicalize(rawPathname);
|
|
659
|
+
// Malformed URLs can't match a route — let Vite handle them as before.
|
|
660
|
+
if (!result.ok) return false;
|
|
661
|
+
const parts = result.pathname === '/' ? [] : result.pathname.slice(1).split('/');
|
|
662
|
+
if (matchUrlParts(routeTree.root, parts) === null) return false;
|
|
663
|
+
|
|
664
|
+
// Real static files win over the route match (dev/prod parity: the
|
|
665
|
+
// production server tries public/ before the RSC handler).
|
|
666
|
+
const relativePath = result.pathname.slice(1);
|
|
667
|
+
const { publicDir, root } = server.config;
|
|
668
|
+
if (publicDir && existsSync(join(publicDir, relativePath))) return false;
|
|
669
|
+
if (existsSync(join(root, relativePath))) return false;
|
|
670
|
+
|
|
671
|
+
return true;
|
|
672
|
+
}
|
|
673
|
+
|
|
350
674
|
// ─── Client Error Listener ─────────────────────────────────────────────
|
|
351
675
|
|
|
352
676
|
interface ClientErrorPayload {
|
|
@@ -392,8 +716,8 @@ function listenForClientErrors(server: ViteDevServer, projectRoot: string): void
|
|
|
392
716
|
loc: loc ? { file: loc.file, line: loc.line, column: loc.column } : undefined,
|
|
393
717
|
},
|
|
394
718
|
});
|
|
395
|
-
} catch {
|
|
396
|
-
|
|
719
|
+
} catch (e) {
|
|
720
|
+
console.debug('[timber] overlay send failed:', e instanceof Error ? e.message : e);
|
|
397
721
|
}
|
|
398
722
|
});
|
|
399
723
|
}
|